diff --git a/.env b/.env index 423d30745..df1c4a4d8 100644 --- a/.env +++ b/.env @@ -1,42 +1,26 @@ -APP_ENV=dev - -SERVER_ID=0 -SERVER_HOST=127.0.0.1 -SERVER_PORT=9999 -SERVER_CYCLE_TIMEOUT=20 -SERVER_COLLECTION_CYCLES_NUMBER=25 SERVER_START_TIME='2021-12-01 20:00:00' +SERVER_SEGMENT_SHIFT=650 +SERVER_TIME_MODE='standard' SEGMENT_SHIFT=650 -DATABASE_HOST=127.0.0.1 +DATABASE_HOST=asylamba_mariadb DATABASE_NAME=asylamba_game DATABASE_USER=asylamba DATABASE_PASSWORD=asylamba DATABASE_ADMIN_USER=root DATABASE_ADMIN_PASSWORD=asylamba -SECURITY_IV=abcdefghijklmnop SECURITY_BUFFER_KEY=123456 -SECURITY_SERVER_KEY=123456 SECURITY_SCRIPT_KEY=123456 SECURITY_API_KEY=123456 -ENVIRONMENT=dev - -APIMODE=disabled - -APP_ROOT=/ - -GETOUT_ROOT=/buffer/ # Redis REDIS_TIMEOUT=1.5 STRIPE_PUBLIC_KEY=key STRIPE_API_KEY=key -DEPLOY_SOURCES=false - CHICKENBOT_LOGIN_EMAIL=email CHICKENBOT_LOGIN_PASSWORD=password CHICKENBOT_DISCORD_TOKEN=token @@ -44,3 +28,49 @@ CHICKENBOT_DISCORD_TOKEN=token MONGO_DBNAME=asylamba_feedbacks MONGO_HOST=asylamba_mongodb MONGO_PORT=27017 + +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=doctrine://default +# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +###< symfony/messenger ### + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=da5a5677b6c493354372096ff690766a +###< symfony/framework-bundle ### + +###> sentry/sentry-symfony ### +SENTRY_DSN= +###< sentry/sentry-symfony ### + +REDIS_HOST=asylamba_redis +REDIS_PORT=6379 + +###> mixpanel/mixpanel-php ### +MIXPANEL_PROJECT_TOKEN= +###< mixpanel/mixpanel-php ### + +###> doctrine/doctrine-bundle ### +# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# +# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" +DATABASE_URL="mysql://asylamba:asylamba@asylamba_mariadb:3306/asylamba_game?serverVersion=5.7.40&charset=utf8mb4" +# DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8" +###< doctrine/doctrine-bundle ### + +RABBITMQ_DSN=amqp://guest:guest@asylamba_rabbitmq:5672 + +HIGH_LEVEL_MODE=true + +###> symfony/mercure-bundle ### +# See https://symfony.com/doc/current/mercure.html#configuration +# The URL of the Mercure hub, used by the app to publish updates (can be a local URL) +MERCURE_URL=http://kalaxia_mercure/.well-known/mercure +# The public URL of the Mercure hub, used by the browser to connect +MERCURE_PUBLIC_URL=https://kalaxia.local/.well-known/mercure +# The secret used to sign the JWTs +MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!" +###< symfony/mercure-bundle ### diff --git a/.env.test b/.env.test new file mode 100644 index 000000000..1f894dc47 --- /dev/null +++ b/.env.test @@ -0,0 +1,8 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots + +DATABASE_URL="mysql://root:asylamba@asylamba_mariadb:3306/asylamba_game?serverVersion=5.7.40&charset=utf8mb4" diff --git a/.gitignore b/.gitignore index 3809644c4..35e87fdfe 100755 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *.psd /nbproject/ -/vendor/ /node_modules/ /var/logs @@ -10,4 +9,43 @@ .idea .phpunit.result.cache -.env.local +.env.prod + +supervisord.pid + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> phpunit/phpunit ### +/phpunit.xml +/.phpunit.cache/ +###< phpunit/phpunit ### + +###> squizlabs/php_codesniffer ### +/.phpcs-cache +/phpcs.xml +###< squizlabs/php_codesniffer ### + +###> friendsofphp/php-cs-fixer ### +/.php-cs-fixer.php +/.php-cs-fixer.cache +###< friendsofphp/php-cs-fixer ### + +###> symfony/webpack-encore-bundle ### +/node_modules/ +/public/build/ +npm-debug.log +yarn-error.log +###< symfony/webpack-encore-bundle ### + +###> symfony/asset-mapper ### +/public/assets/ +/assets/vendor/ +###< symfony/asset-mapper ### diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 000000000..60c9dd418 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,17 @@ +in(__DIR__) + ->exclude('var') +; + +return (new PhpCsFixer\Config()) + ->setRules([ + '@Symfony' => true, + '@PSR2' => true, + 'indentation_type' => true, + ]) + ->setIndent("\t") + ->setLineEnding("\n") + ->setFinder($finder) +; diff --git a/.php-version b/.php-version index b8eb02635..c9dc04908 100644 --- a/.php-version +++ b/.php-version @@ -1 +1 @@ -8.1 +8.4 diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 000000000..3186f3f07 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/CONTRIBUTING.en.md b/CONTRIBUTING.en.md deleted file mode 100644 index fd30b5338..000000000 --- a/CONTRIBUTING.en.md +++ /dev/null @@ -1,67 +0,0 @@ -Guide for the contributor -========================= - -You can contribute in two different ways : - -- Open an issue : If you find something wrong or something that can be done better, just open an [*issue*](https://github.com/rtfmcorp/asylamba-game/issues) and describe as good as you can the problem. -- Propose a PR : If you want to resolve something, you can do it, just follow the precedure down below. - - -What type of problem can I solve ? ----------------------------------- - -You can search for an issue you want to solve. In this case, please comment the issue so that we know you're working on it. If there's no issues you can create it. - -Here are the things you can do : - -- correct orthograph or typing errors -- make refactoring, optimizations -- work on the interface (make it responsive for example) -- create documentation -- optimize the installation process - -If you want to add or modify game features, it's likely that the PR will be rejected. If you want to do it, please start a discussion with the dev team first, we'll talk together about what you want to do (open a topic in Asylamba's forum). - - -How to contribute ? -------------------- - -First you need to fork the repo. Then you can work on your version of the game and make commits. When it's done you can submit a pull request on the *dev* branch of the main repo. - -The main branch is *master*, the *dev* branch is used for development. We'll not accept PRs on the *master* branch. - -*Hint : Make a branch on your fork to do modifications so that you can work on another issue while waiting for the approval/rejection of your PR. Don't forget that all the commits you do on the same branch after the PR will be added to the PR.* - -An official guide for the contributions is available [here](https://guides.github.com/activities/contributing-to-open-source/#contributing). If you have any question, don't hesitate to contact us by mail, Asylamba or Discord. - - -Good practices --------------- - -- respect the code conventions (spacing, new lines, tabs, naming) -- the code must be in english (variables names, ...) -- the comments are in english or french -- the commits names must be clear (in french or english) -- a commit modifies/improves one thing, it must be clear and concise -- each modification must be unit tested to ensure the safety of the code - - -Modify the front-end --------------------- - -If you want to modify the CSS, you must edit the [LESS](http://lesscss.org) files that are located in `public/css/less`. To compile them, [Gulp](http://gulpjs.com) is used. First you need to install NPM and GULP on your system, then you have to install the dependencies of the project by typing : - - npm install - -The dependencies will be installed in the `node_modules/` folder. To compile the CSS, just type : - - gulp less - -Application testing ---------------------- - -You can use the following command to run the tests : - -```sh -make test -``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3b49378f0..d983fab49 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,67 +1,46 @@ -Guide du contributeur -===================== +Guide for the contributor +========================= -Il y a plusieurs moyens de contribuer : +You can contribute in two different ways : -- Si vous trouvez un problème dans le jeu, vous pouvez ouvrir une [*issue*](https://github.com/rtfmcorp/asylamba-game/issues) en décrivant le problème, directement dans l'interface de Github. -- Si vous voulez directement corriger un problème, vous pouvez le faire, pour cela merci de suivre la procédure ci-dessous. +- Open an issue : If you find something wrong or something that can be done better, just open an [*issue*](https://github.com/rtfmcorp/asylamba-game/issues) and describe as good as you can the problem. +- Propose a PR : If you want to resolve something, you can do it, just follow the precedure down below. -Quel type de problème régler ? ------------------------------- +What type of problem can I solve ? +---------------------------------- -Il est possible de trouver une *issue* que vous souhaitez régler. Dans ce cas, mettez un commentaire dans l'issue, ainsi on saura que vous bossez dessus. S'il n'y a pas d'issues, vous pouvez soit la créer, soit directement faire le correctif. +You can search for an issue you want to solve. In this case, please comment the issue so that we know you're working on it. If there's no issues you can create it. -Voici les différentes choses que vous pouvez faire : +Here are the things you can do : -- corriger des fautes d'orthographe ou fautes de frappe -- faire du refactoring, optimisation -- optimiser l'interface (reponsive design par exemple) -- créer de la documentation (dans ce cas, il serait mieux de discuter en premier lieu de la technique utilisée, ainsi d'autres personnes pourront vous aider, et vous aurez plus de chance que ça soit accepté) +- correct orthograph or typing errors +- make refactoring, optimizations +- work on the interface (make it responsive for example) +- create documentation +- optimize the installation process -En ce qui concerne l'ajout ou la modification de fonctionnalités, il est fort probable que ça soit refusé. Si vous souhaitez vous lancer là-dedans, il faut en discuter au préalable avec l'équipe de développement, directement sur le forum du jeu ou sur le serveur Discord d'Asylamba. Cela permettra de ne pas sortir de la ligne directrice. +If you want to add or modify game features, it's likely that the PR will be rejected. +If you want to do it, please start a discussion with the dev team first, we'll talk together about what you want to do (open an issue). -Comment contribuer ? --------------------- +How to contribute ? +------------------- -En premier lieu, vous devez *forker* le dépôt sur votre compte. A partir de là, vous pouvez faire divers *commit* pour arriver à votre but. Quand tout fonctionne vous pouvez soumettre une *pull request* sur la branche *dev* du dépôt principal. +First you need to fork the repo. Then you can work on your version of the game and make commits. When it's done you can submit a pull request on the *dev* branch of the main repo. -La branche principale est *master*, la branche *dev* sert au développement. Nous n'accepterons donc des PR que sur cette dernière. +The main branch is *master*, the *dev* branch is used for development. We'll not accept PRs on the *master* branch. -*Conseil : Nous vous conseillons de faire une branche sur votre fork pour faire vos modifications. Ainsi le temps que votre PR soit acceptée ou refusée, vous pouvez faire d'autres branches pour bosser sur d'autres issues. Pensez que tous les commits faits après une PR sur la même branche sont ajouté à la PR.* +*Hint : Make a branch on your fork to do modifications so that you can work on another issue while waiting for the approval/rejection of your PR. Don't forget that all the commits you do on the same branch after the PR will be added to the PR.* -Un guide de contribution officiel est disponible [ici](https://guides.github.com/activities/contributing-to-open-source/#contributing). Nous sommes également disponible si vous avez des questions sur la façon de faire. Vous pouvez nous contacter sur Asylamba, par mail ou sur Discord. +An official guide for the contributions is available [here](https://guides.github.com/activities/contributing-to-open-source/#contributing). +If you have any question, don't hesitate to open an issue ! -Les bonnes pratiques --------------------- +Good practices +-------------- -- respecter les conventions au niveau du code (espacement, retour à la ligne, tabulations, nommage) -- le code (nom de variables, etc.) doit être en anglais -- les commentaires sont en anglais ou en français -- les commits doivent avoir un nom clair (soit en français soit en anglais) -- un commit modifie/améliore une chose, ça doit être clair et concis -- chaque modification/ajout doit être accompagné de tests unitaires pertinents assurant le bon fonctionnement du code - - -Modifier l'interface --------------------- - -Si vous souhaitez modifier le CSS, il faudra éditer les fichiers au format [LESS](http://lesscss.org) se trouvant dans `public/css/less/`. Afin de compiler ces fichiers en CSS, il faut utiliser [Gulp](http://gulpjs.com). Vous devez d'abord installer NPM puis GULP sur votre système, ensuite il faut installer les dépendances du projet en tapant : - - npm install - -Les dépendances s'installeront dans le dossier `node_modules/`. Pour compiler le CSS, il suffit de taper : - - gulp less - - -Tester l'application ---------------------- - -Pour lancer les tests automatisés de l'application, vous pouvez lancer la commande suivante : - -```sh -make test -``` +- respect the code conventions (spacing, new lines, tabs, naming) +- the code must be in english (variables names, comments, ...) +- the commits names must be clear (in english), it modifies/improves one thing, it must be clear and concise +- each modification must be unit tested to ensure the safety of the code diff --git a/Makefile b/Makefile index 2867625a4..cd2224222 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,14 @@ +cli: + docker exec -it kalaxia_app sh + test: - php vendor/phpunit/phpunit/phpunit \ No newline at end of file + php vendor/bin/phpunit + +consume_game_scheduler: + php bin/console messenger:consume scheduler_game -vv + +consume_async: + php bin/console messenger:consume async -vv + +restart_worker: + docker compose restart supervisord diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 8aa4561e8..000000000 --- a/README.en.md +++ /dev/null @@ -1,103 +0,0 @@ -ASYLAMBA : Expansion Stellaire -============================== - -Multiplayer online strategy game. Visit [asylamba.com](http://asylamba.com) to try the game. It's only in French for the moment. - -![Asylamba logo](http://asylamba.com/public/media/files/sources/asylambacom.png) - -Read this file in other languages : [Français](README.md), [English](README.en.md) - -Dependencies ------------- - -- Apache 2.4.7 -- PHP 5.5.9 -- MySQL 5.5.49 -- Composer - -Installation ------------- - -If you wish, you can use the [Docker repository](https://github.com/rtfmcorp/asylamba-docker) to install your environment. - -This section is only about the game install and assume your environment is ready. - -First, you must clone the game repository. To do so, please use the following command : - -```sh -git clone git@github.com:rtfmcorp/asylamba-game.git -``` - -Then, go in the created folder and install the project dependencies with [Composer](https://getcomposer.org/) : - -```sh -cd asylamba-game -composer install -``` - -You're now able to follow the install procedure : - -- copy the file `config/parameters.dist.yml` and rename it `parameters.yml` -- copy the file `system/config/app.config.local.default.php` and rename it `app.config.local.php`, modify the `APP_ROOT` constant and some others if needed (connection to database, and so on.) and also the `PUBLICR` constant with your own path -- create a database (the name must be the same as the `DEFAULT_SQL_DTB` constant from the last point file) - -From there, you can access an interface that permits to create all the SQL tables of the DB : `http://localhost/[votre chemin]/script`. To do the install, click on the first button : "deploy.dbinstall". - -If no errors are displayed, you can go to `http://localhost/[votre chemin]/buffer` and create your first players. This interface allows you to connect to each and every player created. - -Three scripts are available to update the game on a daily basis, it the ones under the title "Tâches Cron" (cron tasks). You can either launch them by hand or call the related URLs with crons. - - -Structure of the project ------------------------- - -The game was developed without any framework for performance and specific needs reasons. There are not many dependencies at that time. We can notice the use of jQuery and LESS for CSS compilation. The rest is in pure HTML/CSS/JavaScript/PHP. - -The project contains mainly two folders : - -- `public/` : for images, CSS, JavaScript and logs -- `system/` : for views and game core - -The `system/` folder contains a lot of sub-folders. It's pretty easy to guess what's inside for most of them. However the `system/modules` folder requires some explanations. It contains the main classes of the game that are grouped by modules. Each one of these modules is called with a greek god name. The list with explanations is just down there. - - -| Module | Goal | -|-----------|----------| -| Ares | the war (commanders, fights, fleets) | -| Artemis | the spy | -| Athena | the orbital base (orbital base, buildings, commercial shippings, recycling, transactions) | -| Atlas | the rankings (faction, player) | -| Demeter | the factions (elections, law, forums) | -| Gaia | the galaxy (sectors, solar systems, planets) | -| Hermes | the communication (message, notification) | -| Promethee | the technology (research, technologies) | -| Zeus | the joueur (tutorial, bonus management, credit sendings) | - - -Contribute ----------- - -If you want to contribute to the project, it's possible ! Thanks to read the [instructions](CONTRIBUTING.en.md) before starting. - - -Team ----- - -Game creators: - -* [abdelaz3r](https://github.com/abdelaz3r) -* [acknowledge](https://github.com/acknowledge) -* [N03](https://github.com/N03) - -Contributors: - -* [Kern046](https://github.com/Kern046) -* [PapyRusky](https://github.com/PapyRuski) -* [Liador](https://github.com/Liador) -* You ? :) - - -License -------- - -[WIP] \ No newline at end of file diff --git a/README.md b/README.md index 596f350dc..19f40dc1a 100644 --- a/README.md +++ b/README.md @@ -1,107 +1,83 @@ -ASYLAMBA : Expansion Stellaire -============================== +# Kalaxia -[![Build Status](https://travis-ci.org/rtfmcorp/asylamba-game.svg?branch=master)](https://travis-ci.org/rtfmcorp/asylamba-game) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/rtfmcorp/asylamba-game/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/rtfmcorp/asylamba-game/?branch=master) -[![Code Coverage](https://scrutinizer-ci.com/g/rtfmcorp/asylamba-game/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/rtfmcorp/asylamba-game/?branch=master) +## Setup -Jeu de stragégie en ligne multi-joueur. Visitez [asylamba.com](http://asylamba.com) pour tester le jeu. +### Dependencies +- [Docker](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/) +- We recommend using [Symfony CLI](https://symfony.com/download) on your local environment. + Otherwise you can adapt the given commands to be executed inside your PHP-FPM container. +- If you want to do this, you will need to have PHP 8.4 installed in your host system with the following extensions : + - curl + - redis + - amqp + - xml + - dom + - simplexml + - zip + - intl + - pdo-mysql -![logo Asylamba](http://asylamba.com/public/media/files/sources/asylambacom.png) +### Procedure -For the english version, follow this link : [English version](README.en.md) - -Dépendances ------------ - -- Apache 2.4.7 -- PHP 5.5.9 -- MySQL 5.5.49 -- Composer - -Installation ------------- - -Si vous le souhaitez, vous pouvez utiliser le [dépôt Docker](https://github.com/rtfmcorp/asylamba-docker) du projet pour installer votre environnement. - -Cette section traite uniquement de l'installation du jeu et suppose que votre environnement est prêt. - -Tout d'abord, vous devez cloner le dépôt du jeu. Pour ce faire, ouvrez une invite de commandes, et entrez la commande suivante : +First, clone the repository on your local environment : ```sh -git clone git@github.com:rtfmcorp/asylamba-game.git +git clone git@github.com:Kern046/asylamba-game.git kalaxia ``` -Ensuite, rendez-vous dans le dossier nouvellement créé et installez les dépendances du projet à l'aide de [Composer](https://getcomposer.org/) : +Move to the cloned repository and then move to the adequate branch (don't hesitate to ask which one it is currently since we are not using `master` for now) -```sh -cd asylamba-game -composer install +```shell +cd kalaxia +git checkout {branch} # Insert the current main branch, which is currently changing regularly ``` -Vous pouvez ensuite suivre la procédure suivante : - -- copier `config/parameters.dist.yml` et le renommer en `parameters.yml` -- copier `system/config/app.config.local.default.php` et le renommer `app.config.local.php`, y modifier la constante `APP_ROOT` et d'autres infos (connexion à la base de données, etc.) ainsi que la constante `PUBLICR` avec votre chemin -- créer une base de données (nom correspondant à la constante `DEFAULT_SQL_DTB` du fichier du point précédent) - -A partir de là, vous pouvez accéder à une interface qui permet de créer toutes les tables de la base de données : `http://localhost/[votre chemin]/script`. Pour faire l'installation, cliquez sur le premier bouton "deploy.dbinstall". - -Si aucune erreur s'affiche, vous pouvez ensuite créer des personnages en allant sur `http://localhost/[votre chemin]/buffer`. Cette interface permet de se connecter à tous les personnages créés. - -Trois scripts permettent de mettre à jour le jeu quotidiennement, il s'agit des trois boutons sous le titre "Tâches Cron". Vous pouvez soit les lancer à la main, soit appeler leurs URLs avec des crons. - - -Structure du projet -------------------- - -Le jeu a été développé sans framework aucun, cela pour des raisons de performances et de besoins spécifiques pour un jeu de ce type. Il y a donc vraiment peu de dépendances à des librairies externes. Les dépendances sont citées plus haut, nous ajoutons à cela jQuery ainsi que LESS pour la compilation CSS. Tout le reste est en pur HTML/CSS/JavaScript/PHP. +Launch the Docker containers : -Le projet contient deux dossiers principaux : - -- `public/` : pour les images, le CSS, le JavaScript et les logs -- `system/` : pour les vues, le cœur du jeu et tout ce qui est "mécanique" - -Le dossier system est plutôt fourni mais les noms des dossiers qu'il contient sont assez explicites. Le sous-dossier `system/modules` mérite toutefois quelques précisions. Il contient toutes les classes principales du jeu qui sont regroupées en modules. Chacun de ces modules possède un nom de dieu grec. La liste se trouve ci-dessous. - - -| Module | Fonction | -|-----------|----------| -| Arès | la guerre (commandants, combats, flottes) | -| Artémis | l'espionnage | -| Athéna | la base ortibale (base orbitale, bâtiments, envois commerciaux, recyclage, constructions, transactions) | -| Atlas | les classements (faction, joueur) | -| Déméter | les factions (élections, lois, forums) | -| Gaïa | la galaxie (secteurs, systèmes solaires, planètes) | -| Hermès | la communication (messagerie, notification) | -| Prométhée | la technologie (recherches, technologies) | -| Zeus | le joueur (tutoriel, gestion des bonus, envois de crédit) | - - -Contribuer ----------- - -Si vous souhaitez contribuer au projet, c'est possible ! Merci de prendre connaissance des [instructions](CONTRIBUTING.md) avant de commencer. - - -Team ----- +```shell +docker compose up -d +``` -Créateurs du jeu : +Then, install the project dependencies and setup the database : + +```shell +# Install the PHP dependencies +symfony composer install +# Install the frontend dependencies +symfony console importmap:install +# Setup the database schema using Doctrine ORM +symfony console doctrine:schema:update --force --complete +# Initialize a new game data in Kalaxia (players, map systems, planets...) +# If you launch this on +symfony console app:hephaistos:populate-database +``` -* [abdelaz3r](https://github.com/abdelaz3r) -* [acknowledge](https://github.com/acknowledge) -* [N03](https://github.com/N03) +> If you prefer to launch the commands inside your Docker container, just type `docker exec -it kalaxia_app sh` and then replace `symfony console` with `php bin/console` in the given commands. -Contributeurs : +> Currently investigating a connection issue between Symfony CLI running on the host and the database. -* [Kern046](https://github.com/Kern046) -* [PapyRusky](https://github.com/PapyRuski) -* [Liador](https://github.com/Liador) -* Toi ? :) +If you are working on the UI, launch Tailwind watcher : +```shell +symfony console tailwind:build --watch +``` +# Troubleshooting -Licence -------- +### Failing ```symfony composer install``` : +![img.png](assets/readme-docs/img.png) +#### Solution : +```shell +mkdir config/doctrine/hephaistos +``` +--- + +### If the command `populate-database` fails, you try again and obtain this issue : ![img_1.png](assets/readme-docs/img_1.png) +#### Solution : +Increase your MEMORY_LIMIT inside php.ini if it is currently 256M and then reboot your Symfony server and Docker. Then launch : +```shell +symfony console doctrine:schema:drop --force +symfony console doctrine:schema:update --force --complete +symfony console app:hephaistos:populate-database +``` -[WIP] \ No newline at end of file +> The commmand `populate-database` may take time. diff --git a/assets/app.js b/assets/app.js new file mode 100644 index 000000000..a725fbe51 --- /dev/null +++ b/assets/app.js @@ -0,0 +1,8 @@ +import './bootstrap.js'; +/* + * Welcome to your app's main JavaScript file! + * + * This file will be included onto the page via the importmap() Twig function, + * which should already be in your base.html.twig. + */ +import './styles/app.css'; diff --git a/assets/bootstrap.js b/assets/bootstrap.js new file mode 100644 index 000000000..e7602ccc2 --- /dev/null +++ b/assets/bootstrap.js @@ -0,0 +1,7 @@ +import { startStimulusApp } from '@symfony/stimulus-bundle'; + +// Registers Stimulus controllers from controllers.json and in the controllers/ directory +export const app = startStimulusApp(); +// app.debug = false; +// register any custom, 3rd party controllers here +// app.register('some_controller_name', SomeImportedController); diff --git a/assets/controllers.json b/assets/controllers.json new file mode 100644 index 000000000..71abe9d5e --- /dev/null +++ b/assets/controllers.json @@ -0,0 +1,24 @@ +{ + "controllers": { + "@symfony/ux-live-component": { + "live": { + "enabled": true, + "fetch": "eager", + "autoimport": { + "@symfony/ux-live-component/dist/live.min.css": true + } + } + }, + "@symfony/ux-turbo": { + "turbo-core": { + "enabled": true, + "fetch": "eager" + }, + "mercure-turbo-stream": { + "enabled": true, + "fetch": "eager" + } + } + }, + "entrypoints": [] +} diff --git a/assets/controllers/fleet/ship_transfer_controller.js b/assets/controllers/fleet/ship_transfer_controller.js new file mode 100644 index 000000000..2b8de6e5a --- /dev/null +++ b/assets/controllers/fleet/ship_transfer_controller.js @@ -0,0 +1,175 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static outlets = ['fleet--squadron']; + static targets = ['base', 'squadron']; + static values = { + squadronUpdateUrl: String, + base: String, + manufactureMaxStorableShipPoints: Number, + shipyardMaxStorableShipPoints: Number, + shipPevs: Array, + }; + + initialize() { + super.initialize(); + + this.timer = null; + } + + connect() + { + this.application.element.addEventListener('fleet:squadron-selection', () => this._updateAllTiles()); + } + + disconnect() + { + this.application.element.removeEventListener('fleet:squadron-selection'); + } + + transfer(event) { + const squadron = this.fleetSquadronOutlet.squadron; + if (squadron === null) { + console.warn('No squadron selected'); + + return; + } + + const originTile = event.currentTarget; + const originTileQuantityElement = originTile.querySelector('.quantity'); + let originTileQuantity = parseInt(originTileQuantityElement.innerText); + + if (originTileQuantity === 0) { + console.warn('The desired tile has no ships left to transfer'); + + return; + } + + const shipIdentifier = originTile.dataset.shipId; + const targetSide = (originTile.dataset.side === 'base') ? 'squadron' : 'base'; + const targetTile = this._getTileByIdentifierAndSide(targetSide, shipIdentifier); + const targetTileQuantityElement = targetTile.querySelector('.quantity'); + let targetTileQuantity = parseInt(targetTileQuantityElement.innerText); + + const desiredQuantity = this._getDesiredQuantity(event, originTileQuantity); + const desiredQuantityPevs = desiredQuantity * this.shipPevsValue[shipIdentifier]; + const availableSpace = targetSide === 'base' ? this._getHangarAvailableSpace(shipIdentifier) : this._getSquadronAvailableSpace(); + + if (desiredQuantityPevs > availableSpace) { + console.warn('Not enough space to transfer the ships. Remaining space : %d', availableSpace); + + return; + } + + originTileQuantity -= desiredQuantity; + targetTileQuantity += desiredQuantity; + + this.fleetSquadronOutlet.updateSquadron(shipIdentifier, targetSide === 'squadron' ? targetTileQuantity : originTileQuantity); + + this._updateTile(originTile, originTileQuantityElement, originTileQuantity); + this._updateTile(targetTile, targetTileQuantityElement, targetTileQuantity); + + const squadronSnapshot = Object.assign({}, this.fleetSquadronOutlet.squadron); + + clearTimeout(this.timer); + this.timer = setTimeout(() => { + this._sendRequest(squadronSnapshot); + }, 1000); + } + + _getDesiredQuantity(event, maxQuantity) + { + let desiredQuantity = 1; + + if (event.ctrlKey) { + desiredQuantity = maxQuantity; + } + + if (event.shiftKey) { + desiredQuantity = 5; + } + + return Math.min(desiredQuantity, maxQuantity); + } + + _getSquadronAvailableSpace() + { + return 100 - this.fleetSquadronOutlet.squadron.pev; + } + + _getHangarAvailableSpace(shipIdentifier) + { + return (shipIdentifier < 6) + ? this._getManufactureAvailableSpace() + : this._getShipyardAvailableSpace(); + } + + _getManufactureAvailableSpace() + { + return this.manufactureMaxStorableShipPointsValue - this.baseTargets.reduce((acc, element) => { + const shipId = element.dataset.shipId; + if (shipId < 6) { + acc += parseInt(element.querySelector('.quantity').innerText) * this.shipPevsValue[shipId]; + + return acc; + } + return acc; + }, 0); + } + + _getShipyardAvailableSpace() + { + return this.shipyardMaxStorableShipPointsValue - this.baseTargets.reduce((acc, element) => { + const shipId = element.dataset.shipId; + if (shipId >= 6) { + acc += parseInt(element.querySelector('.quantity').innerText) * this.shipPevsValue[shipId]; + + return acc; + } + return acc; + }, 0); + } + + _updateTile(tile, quantityElement, quantity) + { + quantityElement.innerText = quantity; + + if (quantity === 0) { + tile.dataset.empty = ''; + } else { + delete tile.dataset['empty']; + } + } + + _updateAllTiles() + { + this.squadronTargets.forEach(element => { + this._updateTile( + element, + element.querySelector('.quantity'), + this.fleetSquadronOutlet.squadron.ships[element.dataset.shipId], + ); + }); + } + + _getTileByIdentifierAndSide(side, identifier) + { + return this[side + 'Targets'].find(element => element.dataset.shipId === identifier); + } + + _sendRequest(squadron) + { + fetch(decodeURI(this.squadronUpdateUrlValue).replace('{squadronId}', squadron.id), { + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify({ + base_id: this.baseValue, + army: squadron.ships, + }), + }); + } +} diff --git a/assets/controllers/fleet/squadron_controller.js b/assets/controllers/fleet/squadron_controller.js new file mode 100644 index 000000000..60db8682e --- /dev/null +++ b/assets/controllers/fleet/squadron_controller.js @@ -0,0 +1,50 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static targets = ['squadron']; + static values = { + shipPevs: Array, + }; + + initialize() + { + super.initialize(); + + this.squadron = null; + } + + selectSquadron(event) + { + this.squadronTargets.forEach(element => { + if (element.dataset.squadronId === event.currentTarget.dataset.squadronId) { + element.dataset.selected = ''; + + this.squadron = { + id: element.dataset.squadronId, + ships: JSON.parse(element.dataset.squadronShips), + pev: element.dataset.squadronPev, + }; + + this.application.element.dispatchEvent(new Event('fleet:squadron-selection')); + } else { + delete element.dataset['selected']; + } + }) + } + + updateSquadron(shipIdentifier, quantity) + { + this.squadron.ships[shipIdentifier] = quantity; + this.squadron.pev = this.squadron.ships.reduce( + (acc, quantity, shipId) => acc + quantity * this.shipPevsValue[shipId], + 0, + ); + + const squadronElement = this.squadronTargets.find(element => element.dataset.squadronId === this.squadron.id); + + squadronElement.dataset.squadronShips = JSON.stringify(this.squadron.ships); + squadronElement.dataset.squadronPev = this.squadron.pev; + squadronElement.querySelector('.pevs').innerText = this.squadron.pev + '/100'; + } +} diff --git a/assets/controllers/map/action_box_controller.js b/assets/controllers/map/action_box_controller.js new file mode 100644 index 000000000..aafe07648 --- /dev/null +++ b/assets/controllers/map/action_box_controller.js @@ -0,0 +1,121 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static targets = ['place', 'action']; + static outlets = ['map--commander']; + + connect() + { + this.application.element.addEventListener('map:commander-selection', () => this.applyCommander()); + } + + disconnect() + { + this.application.element.removeEventListener('map:commander-selection'); + } + + changeSystem(systemId) { + this.close(); + + fetch('/systems/' + systemId) + .then(response => response.text()) + .then(html => { + this.element.innerHTML = html; + this.open(); + // this.actionBoxOutlet.applyCommander(); + + }); + } + + applyCommander() + { + this.actionTargets.forEach(element => { + if (!('active' in element.dataset)) { + return; + } + + const commander = this.mapCommanderOutlet.commander; + const commanderDetails = element.querySelector('.commander-details'); + + if (commander === null) { + element.querySelector('.no-commander').classList.remove('hidden'); + element.querySelector('.commander-too-far').classList.add('hidden'); + element.querySelector('.confirm-button').disabled = true; + + commanderDetails.classList.add('hidden'); + + } else { + element.querySelector('.no-commander').classList.add('hidden'); + + const { distance, sectorColor } = this.element.querySelector('header').dataset; + + if (distance > commander.maxDistance && sectorColor !== commander.factionIdentifier) { + element.querySelector('.commander-too-far').classList.remove('hidden'); + + return; + } + element.querySelector('.commander-too-far').classList.add('hidden'); + element.querySelector('.confirm-button').disabled = false; + + commanderDetails.querySelector('.name').innerText = commander.name; + commanderDetails.querySelector('.rank').innerText = commander.rank; + const capacityValue = commanderDetails.querySelector('.capacity'); + + if (capacityValue !== null) { + capacityValue.innerText = commander.capacity; + } + + commanderDetails.classList.remove('hidden') + } + }); + } + + open() { + this.element.show(); + } + + close() { + this.element.close(); + } + + deployPlacePanel(event) { + this.placeTargets.forEach(element => { + delete element.dataset['active']; + }); + + event.currentTarget.dataset['active'] = ''; + + this.applyCommander(); + } + + chooseAction(event) { + this.actionTargets.forEach(element => { + if (element.dataset.id === event.currentTarget.dataset.actionId) { + element.classList.remove('hidden'); + element.dataset.active = ''; + } else { + element.classList.add('hidden'); + delete element.dataset['active']; + } + }); + + event.currentTarget.dataset.active = ''; + } + + launchAction(event) { + let actionUrl = decodeURI(event.currentTarget.dataset.url); + + if (actionUrl.includes('{id}')) { + actionUrl = actionUrl.replace('{id}', this.mapCommanderOutlet.commander.id); + } + + fetch(actionUrl, { + headers: { + Accept: 'application/json', + }, + }) + .then(response => console.debug(response)) + .catch(error => console.error(error)); + } +} diff --git a/assets/controllers/map/commander_controller.js b/assets/controllers/map/commander_controller.js new file mode 100644 index 000000000..a2d2d05c5 --- /dev/null +++ b/assets/controllers/map/commander_controller.js @@ -0,0 +1,32 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static targets = ['commander']; + + connect() + { + this.commander = null; + } + + selectCommander(event) + { + this.commanderTargets.forEach(element => { + delete element.dataset['selected']; + }); + + this.commander = { + id: event.currentTarget.dataset.id, + maxDistance: event.currentTarget.dataset.maxJump, + isAvailable: event.currentTarget.dataset.available, + name: event.currentTarget.dataset.name, + rank: event.currentTarget.dataset.rank, + capacity: event.currentTarget.dataset.capacity, + factionIdentifier: event.currentTarget.dataset.factionIdentifier, + }; + + this.application.element.dispatchEvent(new Event('map:commander-selection')); + + event.currentTarget.dataset.selected = ''; + } +} diff --git a/assets/controllers/map/loader_controller.js b/assets/controllers/map/loader_controller.js new file mode 100644 index 000000000..032f81dba --- /dev/null +++ b/assets/controllers/map/loader_controller.js @@ -0,0 +1,12 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + close() { + this.element.classList.add('opacity-0'); + + setTimeout(() => { + this.element.classList.add('hidden'); + }, 1000); + } +} diff --git a/assets/controllers/map/movements_controller.js b/assets/controllers/map/movements_controller.js new file mode 100644 index 000000000..7b4650992 --- /dev/null +++ b/assets/controllers/map/movements_controller.js @@ -0,0 +1,132 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + static outlets = ['map--loader']; + static targets = ['coordBox', 'loader']; + static values = { + beginXPosition: Number, + beginYPosition: Number, + mapSize: Number, + scale: Number, + }; + + initialize() { + super.initialize(); + + this.isLoading = true; + this.locked = false; + this.lastMovement = { + x: 0, + y: 0, + }; + this.lastPosition = { + x: 0, + y: 0, + }; + } + + connect() { + this.moveTo( + this.beginXPositionValue, + this.beginYPositionValue, + ); + + setTimeout(() => { + this.mapLoaderOutlet.close(); + + this.isLoading = false; + }, 1200); + } + + move(left, top) { + this.updateViewport( + this.lastPosition.x + left, + this.lastPosition.y + top, + ); + } + + // affiche les coordonnées actuelle + showCoord() { + this.coordBoxTarget.innerHTML = + Math.ceil(-(parseInt(this.element.style.left) - Math.ceil(window.screen.width / 2)) / this.scaleValue) + + ':' + + (Math.ceil(-(parseInt(this.element.style.top) - Math.ceil(window.screen.height / 2)) / this.scaleValue) - 2) + ; + } + + // résoud un couple de coordonnée et bouge vers celle-ci + moveTo(x, y) { + const halfScreenLength = this.getHalfScreenLength(); + + const xDiff = this.lastPosition.x - (x * this.scaleValue) + 8; + const yDiff = this.lastPosition.y - (y * this.scaleValue) + 8; + + // console.debug(halfScreenLength, x, y, xDiff, yDiff, this.scaleValue); + + const toLeft = halfScreenLength.x + xDiff; + const toTop = halfScreenLength.y + yDiff; + + // console.log('Moving to (%f;%f)', toLeft, toTop); + + this.move(toLeft, toTop); + } + + getHalfScreenLength() { + return { + x: Math.ceil(this.application.element.clientWidth / 2), + y: Math.ceil(this.application.element.clientHeight / 2), + }; + } + + onMouseDown(event) { + if (this.isLoading) { + return; + } + if (event.button !== 0) { + return; + } + + this.locked = true; + this.lastMovement.x = event.pageX; + this.lastMovement.y = event.pageY; + } + + onMouseUp(event) { + if (this.isLoading) { + return; + } + if (event.button !== 0) { + return; + } + + this.locked = false; + } + + onMouseMove(event) { + if (this.isLoading) { + return; + } + if (this.locked !== true) { + return; + } + + const newX = event.pageX - this.lastMovement.x; + const newY = event.pageY - this.lastMovement.y; + + this.move(newX, newY); + + this.lastMovement.x = event.pageX; + this.lastMovement.y = event.pageY; + } + + updateViewport(x, y, zoom) { + this.element.style.transform = `translate3d(${x}px, ${y}px, 0px)`; + + this.lastPosition.x = x; + this.lastPosition.y = y; + } + + getOverflow() { + return 200; + } +}; diff --git a/assets/controllers/map/sector_choice_controller.js b/assets/controllers/map/sector_choice_controller.js new file mode 100644 index 000000000..d8e54e69c --- /dev/null +++ b/assets/controllers/map/sector_choice_controller.js @@ -0,0 +1,10 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + static targets = ['input']; + + select(event) + { + this.inputTarget.value = event.currentTarget.dataset.sectorId; + } +}; diff --git a/assets/controllers/map/system_controller.js b/assets/controllers/map/system_controller.js new file mode 100644 index 000000000..97b7dcf05 --- /dev/null +++ b/assets/controllers/map/system_controller.js @@ -0,0 +1,14 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + static targets = ['system-details']; + static outlets = ['map--action-box']; + static values = { + id: String, + }; + + select(event) + { + this.mapActionBoxOutlet.changeSystem(this.idValue); + } +}; diff --git a/assets/controllers/map/zoom_controller.js b/assets/controllers/map/zoom_controller.js new file mode 100644 index 000000000..b29f7fd21 --- /dev/null +++ b/assets/controllers/map/zoom_controller.js @@ -0,0 +1,60 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static targets = ['map']; + + initialize() { + super.initialize(); + + this.isLoading = true; + this.minZoom = 0.4; + this.maxZoom = 2; + this.zoom = 1; + this.zoomStep = 0.2; + this.sectorOnlyZoomLevel = 0.8; + this.scrollTick = false; + } + + connect() + { + setTimeout(() => { + this.isLoading = false; + }, 1000); + } + + + onWheel(event) + { + if (this.isLoading) { + return; + } + if (!this.scrollTick) { + window.requestAnimationFrame(() => { + let zoom = this.zoom * Math.pow(1 + this.zoomStep, -event.deltaY / 125); + const previousZoom = this.zoom; + + this.zoom = Math.max(Math.min(zoom, this.maxZoom), this.minZoom); + + if (this.zoom === previousZoom) { + this.scrollTick = false; + + return; + } + + this.element.style.transform = `scale(${zoom})`; + + + if (this.zoom < this.sectorOnlyZoomLevel) { + this.mapTarget.classList.add('sector-only'); + } else { + this.mapTarget.classList.remove('sector-only'); + } + + this.scrollTick = false; + }); + + this.scrollTick = true; + } + } +} diff --git a/assets/controllers/notification_controller.js b/assets/controllers/notification_controller.js new file mode 100644 index 000000000..a651c9760 --- /dev/null +++ b/assets/controllers/notification_controller.js @@ -0,0 +1,21 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + markAsRead(event) { + const currentTarget = event.currentTarget; + + if (currentTarget.dataset.read) { + return; + } + + fetch('/notifications/' + currentTarget.dataset.id + '/read', { + method: 'PATCH', + headers: { + 'X-Requested-With': 'XMLHttpRequest', + } + }).then(() => { + currentTarget.dataset.read = ''; + }).catch(error => console.error(error)); + } +} diff --git a/assets/controllers/ui/tooltip_controller.js b/assets/controllers/ui/tooltip_controller.js new file mode 100644 index 000000000..a20ca7494 --- /dev/null +++ b/assets/controllers/ui/tooltip_controller.js @@ -0,0 +1,14 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + static targets = ['dialog']; + + toggle() + { + if (!this.dialogTarget.open) { + this.dialogTarget.show(); + } else { + this.dialogTarget.close(); + } + } +} diff --git a/assets/controllers/university_controller.js b/assets/controllers/university_controller.js new file mode 100644 index 000000000..08cc21142 --- /dev/null +++ b/assets/controllers/university_controller.js @@ -0,0 +1,81 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + static targets = ['part', 'rest', 'investment']; + static values = { + investment: Number, + }; + + increase(event) + { + const type = event.currentTarget.dataset.type; + const requiredQuantity = event.ctrlKey ? 10 : 1; + const quantity = Math.min(this._getRest(), requiredQuantity); + + if (0 === quantity) { + return; + } + + this._update(type, 'increase', quantity); + } + + decrease(event) + { + const type = event.currentTarget.dataset.type; + const requiredQuantity = event.ctrlKey ? 10 : 1; + const partQuantity = parseInt(this._getPart(type).innerText); + const quantity = Math.min(partQuantity, requiredQuantity); + + if (0 === quantity) { + return; + } + + this._update(type, 'decrease', quantity); + } + + _update(type, operation, quantity) + { + fetch('api/university/' + type + '/' + operation, { + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ quantity }), + }).then(response => { + const rest = this._getRest(); + + const newRest = (operation === 'increase') ? rest - quantity : rest + quantity; + this.restTarget.querySelector('#rest').innerText = newRest; + const part = this._getPart(type); + const partQuantity = parseInt(part.innerText); + const newPartQuantity = (operation === 'increase') ? partQuantity + quantity : partQuantity - quantity; + part.innerText = newPartQuantity; + part.parentElement.parentElement.parentElement.querySelector('.progress-bar > div').style.width = newPartQuantity + '%'; + + this.restTarget.querySelector('.progress-bar > div').style.width = newRest + '%'; + if (newRest > 0) { + this.restTarget.classList.remove('hidden'); + } else { + this.restTarget.classList.add('hidden'); + } + + this._getInvestment(type).innerText = new Intl.NumberFormat('fr-FR').format(Math.round(this.investmentValue * newPartQuantity / 100)); + }); + } + + _getRest() + { + return parseInt(this.restTarget.querySelector('#rest').innerText); + } + + _getPart(type) + { + return this.partTargets.find(part => part.dataset.type === type); + } + + _getInvestment(type) + { + return this.investmentTargets.find(part => part.dataset.type === type); + } +} diff --git a/assets/images/avatars/Adranites_punk_colo2.png b/assets/images/avatars/Adranites_punk_colo2.png new file mode 100644 index 000000000..bd209b66b Binary files /dev/null and b/assets/images/avatars/Adranites_punk_colo2.png differ diff --git a/assets/images/avatars/Hombre_v3.png b/assets/images/avatars/Hombre_v3.png new file mode 100644 index 000000000..590d99fde Binary files /dev/null and b/assets/images/avatars/Hombre_v3.png differ diff --git a/assets/images/avatars/Noble.png b/assets/images/avatars/Noble.png new file mode 100644 index 000000000..7ea38051b Binary files /dev/null and b/assets/images/avatars/Noble.png differ diff --git a/assets/images/avatars/Portrait-Mauve-v4v2.png b/assets/images/avatars/Portrait-Mauve-v4v2.png new file mode 100644 index 000000000..07530ab5b Binary files /dev/null and b/assets/images/avatars/Portrait-Mauve-v4v2.png differ diff --git a/assets/images/avatars/Punk_Serpent.png b/assets/images/avatars/Punk_Serpent.png new file mode 100644 index 000000000..688f3f279 Binary files /dev/null and b/assets/images/avatars/Punk_Serpent.png differ diff --git a/assets/images/avatars/amazone_1.jpg b/assets/images/avatars/amazone_1.jpg new file mode 100644 index 000000000..5e177d0b1 Binary files /dev/null and b/assets/images/avatars/amazone_1.jpg differ diff --git a/assets/images/avatars/cyborg_1.jpg b/assets/images/avatars/cyborg_1.jpg new file mode 100644 index 000000000..b9e51b544 Binary files /dev/null and b/assets/images/avatars/cyborg_1.jpg differ diff --git a/assets/images/avatars/mutant_1.jpg b/assets/images/avatars/mutant_1.jpg new file mode 100644 index 000000000..07d34cf88 Binary files /dev/null and b/assets/images/avatars/mutant_1.jpg differ diff --git a/assets/images/avatars/veggie_1.jpg b/assets/images/avatars/veggie_1.jpg new file mode 100644 index 000000000..96ebb9afa Binary files /dev/null and b/assets/images/avatars/veggie_1.jpg differ diff --git a/assets/images/banners/Adranites.png b/assets/images/banners/Adranites.png new file mode 100644 index 000000000..8c9920a04 Binary files /dev/null and b/assets/images/banners/Adranites.png differ diff --git a/assets/images/banners/Azures_Blason_500px.png b/assets/images/banners/Azures_Blason_500px.png new file mode 100644 index 000000000..414884ce5 Binary files /dev/null and b/assets/images/banners/Azures_Blason_500px.png differ diff --git a/assets/images/banners/Dores_Blason_500px.png b/assets/images/banners/Dores_Blason_500px.png new file mode 100644 index 000000000..bf0e09a4b Binary files /dev/null and b/assets/images/banners/Dores_Blason_500px.png differ diff --git a/assets/images/buildings/mining.png b/assets/images/buildings/mining.png new file mode 100644 index 000000000..9d9c3ea7f Binary files /dev/null and b/assets/images/buildings/mining.png differ diff --git a/assets/images/gods/SophieLaGirafe.jpg b/assets/images/gods/SophieLaGirafe.jpg new file mode 100644 index 000000000..d17e48322 Binary files /dev/null and b/assets/images/gods/SophieLaGirafe.jpg differ diff --git a/assets/images/legacy/avatars/default.svg b/assets/images/legacy/avatars/default.svg new file mode 100644 index 000000000..0e522a6bb --- /dev/null +++ b/assets/images/legacy/avatars/default.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/avatars/female/amazone.png b/assets/images/legacy/avatars/female/amazone.png new file mode 100644 index 000000000..d315eb1a1 Binary files /dev/null and b/assets/images/legacy/avatars/female/amazone.png differ diff --git a/assets/images/legacy/avatars/female/pilot.png b/assets/images/legacy/avatars/female/pilot.png new file mode 100644 index 000000000..ab8181862 Binary files /dev/null and b/assets/images/legacy/avatars/female/pilot.png differ diff --git a/assets/images/legacy/avatars/male/astronaut.png b/assets/images/legacy/avatars/male/astronaut.png new file mode 100644 index 000000000..1260caf8d Binary files /dev/null and b/assets/images/legacy/avatars/male/astronaut.png differ diff --git a/assets/images/legacy/avatars/male/cyborg.png b/assets/images/legacy/avatars/male/cyborg.png new file mode 100644 index 000000000..4ae5bd417 Binary files /dev/null and b/assets/images/legacy/avatars/male/cyborg.png differ diff --git a/assets/images/legacy/avatars/male/dark-lord.png b/assets/images/legacy/avatars/male/dark-lord.png new file mode 100644 index 000000000..3a077ac71 Binary files /dev/null and b/assets/images/legacy/avatars/male/dark-lord.png differ diff --git a/assets/images/legacy/avatars/male/mutant.png b/assets/images/legacy/avatars/male/mutant.png new file mode 100644 index 000000000..b9e994029 Binary files /dev/null and b/assets/images/legacy/avatars/male/mutant.png differ diff --git a/assets/images/legacy/avatars/male/trader.png b/assets/images/legacy/avatars/male/trader.png new file mode 100644 index 000000000..007493ebb Binary files /dev/null and b/assets/images/legacy/avatars/male/trader.png differ diff --git a/assets/images/legacy/avatars/male/veggie.png b/assets/images/legacy/avatars/male/veggie.png new file mode 100644 index 000000000..e3c527752 Binary files /dev/null and b/assets/images/legacy/avatars/male/veggie.png differ diff --git a/assets/images/legacy/buildings/area.png b/assets/images/legacy/buildings/area.png new file mode 100644 index 000000000..405784102 Binary files /dev/null and b/assets/images/legacy/buildings/area.png differ diff --git a/assets/images/legacy/buildings/bat_prod_a.png b/assets/images/legacy/buildings/bat_prod_a.png new file mode 100644 index 000000000..d375c22f8 Binary files /dev/null and b/assets/images/legacy/buildings/bat_prod_a.png differ diff --git a/assets/images/legacy/buildings/build.svg b/assets/images/legacy/buildings/build.svg new file mode 100644 index 000000000..c784e64ff --- /dev/null +++ b/assets/images/legacy/buildings/build.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/buildings/building.png b/assets/images/legacy/buildings/building.png new file mode 100644 index 000000000..15dfe5edd Binary files /dev/null and b/assets/images/legacy/buildings/building.png differ diff --git a/assets/images/legacy/buildings/constructing.svg b/assets/images/legacy/buildings/constructing.svg new file mode 100644 index 000000000..a1166d6e9 --- /dev/null +++ b/assets/images/legacy/buildings/constructing.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/buildings/governor_palace.png b/assets/images/legacy/buildings/governor_palace.png new file mode 100644 index 000000000..6e38498c0 Binary files /dev/null and b/assets/images/legacy/buildings/governor_palace.png differ diff --git a/assets/images/legacy/factions/azure.png b/assets/images/legacy/factions/azure.png new file mode 100644 index 000000000..f60a01b7f Binary files /dev/null and b/assets/images/legacy/factions/azure.png differ diff --git a/assets/images/legacy/factions/golden_companions.png b/assets/images/legacy/factions/golden_companions.png new file mode 100644 index 000000000..bf0e09a4b Binary files /dev/null and b/assets/images/legacy/factions/golden_companions.png differ diff --git a/assets/images/legacy/factions/purple_blades.png b/assets/images/legacy/factions/purple_blades.png new file mode 100644 index 000000000..8c9920a04 Binary files /dev/null and b/assets/images/legacy/factions/purple_blades.png differ diff --git a/assets/images/legacy/layout/top_menu_banner-holder_lower.png b/assets/images/legacy/layout/top_menu_banner-holder_lower.png new file mode 100644 index 000000000..50f7f7b1a Binary files /dev/null and b/assets/images/legacy/layout/top_menu_banner-holder_lower.png differ diff --git a/assets/images/legacy/layout/top_menu_banner-holder_upper.png b/assets/images/legacy/layout/top_menu_banner-holder_upper.png new file mode 100644 index 000000000..e74dd3395 Binary files /dev/null and b/assets/images/legacy/layout/top_menu_banner-holder_upper.png differ diff --git a/assets/images/legacy/layout/top_menu_diagonal_lower.png b/assets/images/legacy/layout/top_menu_diagonal_lower.png new file mode 100644 index 000000000..98da4909f Binary files /dev/null and b/assets/images/legacy/layout/top_menu_diagonal_lower.png differ diff --git a/assets/images/legacy/layout/top_menu_diagonal_upper.png b/assets/images/legacy/layout/top_menu_diagonal_upper.png new file mode 100644 index 000000000..abbe9bb50 Binary files /dev/null and b/assets/images/legacy/layout/top_menu_diagonal_upper.png differ diff --git a/assets/images/legacy/layout/top_menu_horizontal_lower.png b/assets/images/legacy/layout/top_menu_horizontal_lower.png new file mode 100644 index 000000000..fc6275498 Binary files /dev/null and b/assets/images/legacy/layout/top_menu_horizontal_lower.png differ diff --git a/assets/images/legacy/layout/top_menu_horizontal_upper.png b/assets/images/legacy/layout/top_menu_horizontal_upper.png new file mode 100644 index 000000000..fbbaca1df Binary files /dev/null and b/assets/images/legacy/layout/top_menu_horizontal_upper.png differ diff --git a/assets/images/legacy/layout/top_menu_vertical_lower.png b/assets/images/legacy/layout/top_menu_vertical_lower.png new file mode 100644 index 000000000..8a5b28f0b Binary files /dev/null and b/assets/images/legacy/layout/top_menu_vertical_lower.png differ diff --git a/assets/images/legacy/layout/top_menu_vertical_upper_empty.png b/assets/images/legacy/layout/top_menu_vertical_upper_empty.png new file mode 100644 index 000000000..854253701 Binary files /dev/null and b/assets/images/legacy/layout/top_menu_vertical_upper_empty.png differ diff --git a/assets/images/legacy/layout/top_menu_vertical_upper_full.png b/assets/images/legacy/layout/top_menu_vertical_upper_full.png new file mode 100644 index 000000000..2ed0e4bd7 Binary files /dev/null and b/assets/images/legacy/layout/top_menu_vertical_upper_full.png differ diff --git a/assets/images/legacy/picto/B_Merc_64px.png b/assets/images/legacy/picto/B_Merc_64px.png new file mode 100644 index 000000000..d8af62e31 Binary files /dev/null and b/assets/images/legacy/picto/B_Merc_64px.png differ diff --git a/assets/images/legacy/picto/B_Merc_BK_64px.png b/assets/images/legacy/picto/B_Merc_BK_64px.png new file mode 100644 index 000000000..58f28b7db Binary files /dev/null and b/assets/images/legacy/picto/B_Merc_BK_64px.png differ diff --git a/assets/images/legacy/picto/Combat.svg b/assets/images/legacy/picto/Combat.svg new file mode 100644 index 000000000..01b2b3d9e --- /dev/null +++ b/assets/images/legacy/picto/Combat.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/assets/images/legacy/picto/Defeat.svg b/assets/images/legacy/picto/Defeat.svg new file mode 100644 index 000000000..16e4ddafa --- /dev/null +++ b/assets/images/legacy/picto/Defeat.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/G_P_Arr_64px.png b/assets/images/legacy/picto/G_P_Arr_64px.png new file mode 100644 index 000000000..eb1971727 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Arr_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Arr_64px_BK.png b/assets/images/legacy/picto/G_P_Arr_64px_BK.png new file mode 100644 index 000000000..546e39ab2 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Arr_64px_BK.png differ diff --git a/assets/images/legacy/picto/G_P_Atk_64px.png b/assets/images/legacy/picto/G_P_Atk_64px.png new file mode 100644 index 000000000..82d425c4d Binary files /dev/null and b/assets/images/legacy/picto/G_P_Atk_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Atk_Outline_64px.png b/assets/images/legacy/picto/G_P_Atk_Outline_64px.png new file mode 100644 index 000000000..b9147e32f Binary files /dev/null and b/assets/images/legacy/picto/G_P_Atk_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_B_64px.png b/assets/images/legacy/picto/G_P_B_64px.png new file mode 100644 index 000000000..b3258713f Binary files /dev/null and b/assets/images/legacy/picto/G_P_B_64px.png differ diff --git a/assets/images/legacy/picto/G_P_B_Min_64px.png b/assets/images/legacy/picto/G_P_B_Min_64px.png new file mode 100644 index 000000000..34b86fc87 Binary files /dev/null and b/assets/images/legacy/picto/G_P_B_Min_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Char_BK_64px.png b/assets/images/legacy/picto/G_P_Char_BK_64px.png new file mode 100644 index 000000000..b9f768049 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Char_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Char_OL_64px.png b/assets/images/legacy/picto/G_P_Char_OL_64px.png new file mode 100644 index 000000000..d7949a719 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Char_OL_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Clas_BK_64px.png b/assets/images/legacy/picto/G_P_Clas_BK_64px.png new file mode 100644 index 000000000..524014bac Binary files /dev/null and b/assets/images/legacy/picto/G_P_Clas_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Def_64px.png b/assets/images/legacy/picto/G_P_Def_64px.png new file mode 100644 index 000000000..986218ef6 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Def_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Def_64px_BK.png b/assets/images/legacy/picto/G_P_Def_64px_BK.png new file mode 100644 index 000000000..db74cdbd5 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Def_64px_BK.png differ diff --git a/assets/images/legacy/picto/G_P_Def_Outline_64px.png b/assets/images/legacy/picto/G_P_Def_Outline_64px.png new file mode 100644 index 000000000..3cb7f2597 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Def_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Disc_BK_64px.png b/assets/images/legacy/picto/G_P_Disc_BK_64px.png new file mode 100644 index 000000000..2ad058f1d Binary files /dev/null and b/assets/images/legacy/picto/G_P_Disc_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Hexa_64px.png b/assets/images/legacy/picto/G_P_Hexa_64px.png new file mode 100644 index 000000000..4a91246a1 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Hexa_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Logout_64px.png b/assets/images/legacy/picto/G_P_Logout_64px.png new file mode 100644 index 000000000..21692957f Binary files /dev/null and b/assets/images/legacy/picto/G_P_Logout_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Lot_64px.png b/assets/images/legacy/picto/G_P_Lot_64px.png new file mode 100644 index 000000000..021cf78bb Binary files /dev/null and b/assets/images/legacy/picto/G_P_Lot_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Lot_64px_BK.png b/assets/images/legacy/picto/G_P_Lot_64px_BK.png new file mode 100644 index 000000000..6faf4c714 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Lot_64px_BK.png differ diff --git a/assets/images/legacy/picto/G_P_Map_64px.png b/assets/images/legacy/picto/G_P_Map_64px.png new file mode 100644 index 000000000..acfd13ef8 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Map_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Map_Outline_64px.png b/assets/images/legacy/picto/G_P_Map_Outline_64px.png new file mode 100644 index 000000000..0246d8064 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Map_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Mon_64px.png b/assets/images/legacy/picto/G_P_Mon_64px.png new file mode 100644 index 000000000..cff982fdd Binary files /dev/null and b/assets/images/legacy/picto/G_P_Mon_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Mon_BK_64px.png b/assets/images/legacy/picto/G_P_Mon_BK_64px.png new file mode 100644 index 000000000..9e99d54d5 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Mon_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Mon_Outline_64px.png b/assets/images/legacy/picto/G_P_Mon_Outline_64px.png new file mode 100644 index 000000000..fc4233bcc Binary files /dev/null and b/assets/images/legacy/picto/G_P_Mon_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Ov_64px.png b/assets/images/legacy/picto/G_P_Ov_64px.png new file mode 100644 index 000000000..84e85ce53 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Ov_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Ov_BK_64px.png b/assets/images/legacy/picto/G_P_Ov_BK_64px.png new file mode 100644 index 000000000..af0c7bc2a Binary files /dev/null and b/assets/images/legacy/picto/G_P_Ov_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Ov_Outline_64px.png b/assets/images/legacy/picto/G_P_Ov_Outline_64px.png new file mode 100644 index 000000000..8a2e9add1 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Ov_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Pl2_64px.png b/assets/images/legacy/picto/G_P_Pl2_64px.png new file mode 100644 index 000000000..845f0de49 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Pl2_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Pl_64px.png b/assets/images/legacy/picto/G_P_Pl_64px.png new file mode 100644 index 000000000..f20b5ab43 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Pl_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Rank_64px.png b/assets/images/legacy/picto/G_P_Rank_64px.png new file mode 100644 index 000000000..accc8fc62 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Rank_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Rank_Outline_64px.png b/assets/images/legacy/picto/G_P_Rank_Outline_64px.png new file mode 100644 index 000000000..b229627ef Binary files /dev/null and b/assets/images/legacy/picto/G_P_Rank_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_S2_64px.png b/assets/images/legacy/picto/G_P_S2_64px.png new file mode 100644 index 000000000..e6e3ce07b Binary files /dev/null and b/assets/images/legacy/picto/G_P_S2_64px.png differ diff --git a/assets/images/legacy/picto/G_P_S_64px.png b/assets/images/legacy/picto/G_P_S_64px.png new file mode 100644 index 000000000..2461b9572 Binary files /dev/null and b/assets/images/legacy/picto/G_P_S_64px.png differ diff --git a/assets/images/legacy/picto/G_P_S_BK_64px.png b/assets/images/legacy/picto/G_P_S_BK_64px.png new file mode 100644 index 000000000..dd2c0639e Binary files /dev/null and b/assets/images/legacy/picto/G_P_S_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Science_64px.png b/assets/images/legacy/picto/G_P_Science_64px.png new file mode 100644 index 000000000..b1ba18d5b Binary files /dev/null and b/assets/images/legacy/picto/G_P_Science_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Science_Outline_64px.png b/assets/images/legacy/picto/G_P_Science_Outline_64px.png new file mode 100644 index 000000000..9c86adb43 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Science_Outline_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Stat_64px.png b/assets/images/legacy/picto/G_P_Stat_64px.png new file mode 100644 index 000000000..d5ca1b214 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Stat_64px.png differ diff --git a/assets/images/legacy/picto/G_P_Time_BK_64px.png b/assets/images/legacy/picto/G_P_Time_BK_64px.png new file mode 100644 index 000000000..b93fae669 Binary files /dev/null and b/assets/images/legacy/picto/G_P_Time_BK_64px.png differ diff --git a/assets/images/legacy/picto/G_Pc_DblArr.png b/assets/images/legacy/picto/G_Pc_DblArr.png new file mode 100644 index 000000000..7c1cf8a96 Binary files /dev/null and b/assets/images/legacy/picto/G_Pc_DblArr.png differ diff --git a/assets/images/legacy/picto/PL_Gaz_200px.png b/assets/images/legacy/picto/PL_Gaz_200px.png new file mode 100644 index 000000000..62d97c36d Binary files /dev/null and b/assets/images/legacy/picto/PL_Gaz_200px.png differ diff --git a/assets/images/legacy/picto/PL_Ice_200px.png b/assets/images/legacy/picto/PL_Ice_200px.png new file mode 100644 index 000000000..9846260a4 Binary files /dev/null and b/assets/images/legacy/picto/PL_Ice_200px.png differ diff --git a/assets/images/legacy/picto/PL_Rock_200px.png b/assets/images/legacy/picto/PL_Rock_200px.png new file mode 100644 index 000000000..07456d00d Binary files /dev/null and b/assets/images/legacy/picto/PL_Rock_200px.png differ diff --git a/assets/images/legacy/picto/PL_Temp_200px.png b/assets/images/legacy/picto/PL_Temp_200px.png new file mode 100644 index 000000000..477fbd897 Binary files /dev/null and b/assets/images/legacy/picto/PL_Temp_200px.png differ diff --git a/assets/images/legacy/picto/PL_Trop_200px.png b/assets/images/legacy/picto/PL_Trop_200px.png new file mode 100644 index 000000000..396a88ad9 Binary files /dev/null and b/assets/images/legacy/picto/PL_Trop_200px.png differ diff --git a/assets/images/legacy/picto/PL_Volc_200px.png b/assets/images/legacy/picto/PL_Volc_200px.png new file mode 100644 index 000000000..889d96378 Binary files /dev/null and b/assets/images/legacy/picto/PL_Volc_200px.png differ diff --git a/assets/images/legacy/picto/PL_Wate_200px.png b/assets/images/legacy/picto/PL_Wate_200px.png new file mode 100644 index 000000000..f0ce43c27 Binary files /dev/null and b/assets/images/legacy/picto/PL_Wate_200px.png differ diff --git a/assets/images/legacy/picto/Pc_GenieCivil.png b/assets/images/legacy/picto/Pc_GenieCivil.png new file mode 100644 index 000000000..a40dc63f0 Binary files /dev/null and b/assets/images/legacy/picto/Pc_GenieCivil.png differ diff --git a/assets/images/legacy/picto/Pc_GenieMilitaire.png b/assets/images/legacy/picto/Pc_GenieMilitaire.png new file mode 100644 index 000000000..a71a2b52e Binary files /dev/null and b/assets/images/legacy/picto/Pc_GenieMilitaire.png differ diff --git a/assets/images/legacy/picto/Pc_Recherche.png b/assets/images/legacy/picto/Pc_Recherche.png new file mode 100644 index 000000000..ddc7056d9 Binary files /dev/null and b/assets/images/legacy/picto/Pc_Recherche.png differ diff --git a/assets/images/legacy/picto/Pc_SS_GR_64px.png b/assets/images/legacy/picto/Pc_SS_GR_64px.png new file mode 100644 index 000000000..c004c78d1 Binary files /dev/null and b/assets/images/legacy/picto/Pc_SS_GR_64px.png differ diff --git a/assets/images/legacy/picto/Pc_SS_Star_GR_64px.png b/assets/images/legacy/picto/Pc_SS_Star_GR_64px.png new file mode 100644 index 000000000..36af20c26 Binary files /dev/null and b/assets/images/legacy/picto/Pc_SS_Star_GR_64px.png differ diff --git a/assets/images/legacy/picto/Pc_Services.png b/assets/images/legacy/picto/Pc_Services.png new file mode 100644 index 000000000..d60fba459 Binary files /dev/null and b/assets/images/legacy/picto/Pc_Services.png differ diff --git a/assets/images/legacy/picto/Shipyard_64px.png b/assets/images/legacy/picto/Shipyard_64px.png new file mode 100644 index 000000000..a2f3f97fe Binary files /dev/null and b/assets/images/legacy/picto/Shipyard_64px.png differ diff --git a/assets/images/legacy/picto/Victory.svg b/assets/images/legacy/picto/Victory.svg new file mode 100644 index 000000000..77ffd1d26 --- /dev/null +++ b/assets/images/legacy/picto/Victory.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/Warning.svg b/assets/images/legacy/picto/Warning.svg new file mode 100644 index 000000000..5733b8527 --- /dev/null +++ b/assets/images/legacy/picto/Warning.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/arrow_right.svg b/assets/images/legacy/picto/arrow_right.svg new file mode 100644 index 000000000..f58a9a713 --- /dev/null +++ b/assets/images/legacy/picto/arrow_right.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/assets/images/legacy/picto/arrow_up.svg b/assets/images/legacy/picto/arrow_up.svg new file mode 100644 index 000000000..86376e9cd --- /dev/null +++ b/assets/images/legacy/picto/arrow_up.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/assets/images/legacy/picto/close_button.svg b/assets/images/legacy/picto/close_button.svg new file mode 100644 index 000000000..3e38045b7 --- /dev/null +++ b/assets/images/legacy/picto/close_button.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/assets/images/legacy/picto/close_button_hover.svg b/assets/images/legacy/picto/close_button_hover.svg new file mode 100644 index 000000000..670571ca8 --- /dev/null +++ b/assets/images/legacy/picto/close_button_hover.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/legacy/picto/close_cross.svg b/assets/images/legacy/picto/close_cross.svg new file mode 100644 index 000000000..e0d8b81cc --- /dev/null +++ b/assets/images/legacy/picto/close_cross.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/assets/images/legacy/picto/map/Chrono.svg b/assets/images/legacy/picto/map/Chrono.svg new file mode 100644 index 000000000..f2403796b --- /dev/null +++ b/assets/images/legacy/picto/map/Chrono.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/assets/images/legacy/picto/map/HourGlass.svg b/assets/images/legacy/picto/map/HourGlass.svg new file mode 100644 index 000000000..ce36073ea --- /dev/null +++ b/assets/images/legacy/picto/map/HourGlass.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/assets/images/legacy/picto/map/Picto_Flotte_20px.png b/assets/images/legacy/picto/map/Picto_Flotte_20px.png new file mode 100644 index 000000000..a112ff2c2 Binary files /dev/null and b/assets/images/legacy/picto/map/Picto_Flotte_20px.png differ diff --git a/assets/images/legacy/picto/map/Picto_Flotte_30px.png b/assets/images/legacy/picto/map/Picto_Flotte_30px.png new file mode 100644 index 000000000..261a7a9dc Binary files /dev/null and b/assets/images/legacy/picto/map/Picto_Flotte_30px.png differ diff --git a/assets/images/legacy/picto/map/Picto_Flotte_40px.png b/assets/images/legacy/picto/map/Picto_Flotte_40px.png new file mode 100644 index 000000000..89d2f3db9 Binary files /dev/null and b/assets/images/legacy/picto/map/Picto_Flotte_40px.png differ diff --git a/assets/images/legacy/picto/map/Star_64px.svg b/assets/images/legacy/picto/map/Star_64px.svg new file mode 100644 index 000000000..f5d8f5f9d --- /dev/null +++ b/assets/images/legacy/picto/map/Star_64px.svg @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + G_P_Mon_OL_BK_64 + + GUI_Picto_Money_OutLine_Black_64px + + Catégorie_Asset_[Caractéristique]_[Couleur]_[Format + + diff --git a/assets/images/legacy/picto/map/capital.svg b/assets/images/legacy/picto/map/capital.svg new file mode 100644 index 000000000..782ab9f61 --- /dev/null +++ b/assets/images/legacy/picto/map/capital.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/assets/images/legacy/picto/map/line_step.png b/assets/images/legacy/picto/map/line_step.png new file mode 100644 index 000000000..a2a4466ab Binary files /dev/null and b/assets/images/legacy/picto/map/line_step.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Gaz_64.png b/assets/images/legacy/picto/planet/P_PL_Gaz_64.png new file mode 100644 index 000000000..9cb68f705 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Gaz_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Gaz_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Gaz_Rv_BK_64px.png new file mode 100644 index 000000000..065bb46b6 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Gaz_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Ice_64.png b/assets/images/legacy/picto/planet/P_PL_Ice_64.png new file mode 100644 index 000000000..c295c592f Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Ice_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Ice_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Ice_Rv_BK_64px.png new file mode 100644 index 000000000..d900d4352 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Ice_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Rock_64px.png b/assets/images/legacy/picto/planet/P_PL_Rock_64px.png new file mode 100644 index 000000000..aa84f8ddc Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Rock_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Rock_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Rock_Rv_BK_64px.png new file mode 100644 index 000000000..1f0b508a2 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Rock_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Temp_64.png b/assets/images/legacy/picto/planet/P_PL_Temp_64.png new file mode 100644 index 000000000..2ce889e29 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Temp_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Temp_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Temp_Rv_BK_64px.png new file mode 100644 index 000000000..1f89c5f10 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Temp_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Trop_64.png b/assets/images/legacy/picto/planet/P_PL_Trop_64.png new file mode 100644 index 000000000..e7c9ad0dd Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Trop_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Trop_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Trop_Rv_BK_64px.png new file mode 100644 index 000000000..ef82bd3c0 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Trop_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Volc_64.png b/assets/images/legacy/picto/planet/P_PL_Volc_64.png new file mode 100644 index 000000000..990f8d2d4 Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Volc_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Volc_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Volc_Rv_BK_64px.png new file mode 100644 index 000000000..d2e09288e Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Volc_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Wate_64.png b/assets/images/legacy/picto/planet/P_PL_Wate_64.png new file mode 100644 index 000000000..36148660c Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Wate_64.png differ diff --git a/assets/images/legacy/picto/planet/P_PL_Wate_Rv_BK_64px.png b/assets/images/legacy/picto/planet/P_PL_Wate_Rv_BK_64px.png new file mode 100644 index 000000000..5eb98a77b Binary files /dev/null and b/assets/images/legacy/picto/planet/P_PL_Wate_Rv_BK_64px.png differ diff --git a/assets/images/legacy/picto/ships/Artillery.svg b/assets/images/legacy/picto/ships/Artillery.svg new file mode 100644 index 000000000..9055fe885 --- /dev/null +++ b/assets/images/legacy/picto/ships/Artillery.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Attack.svg b/assets/images/legacy/picto/ships/Attack.svg new file mode 100644 index 000000000..6636a0612 --- /dev/null +++ b/assets/images/legacy/picto/ships/Attack.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Battery.svg b/assets/images/legacy/picto/ships/Battery.svg new file mode 100644 index 000000000..378d25655 --- /dev/null +++ b/assets/images/legacy/picto/ships/Battery.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Class.svg b/assets/images/legacy/picto/ships/Class.svg new file mode 100644 index 000000000..d53727a6b --- /dev/null +++ b/assets/images/legacy/picto/ships/Class.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Damage.svg b/assets/images/legacy/picto/ships/Damage.svg new file mode 100644 index 000000000..ede27b814 --- /dev/null +++ b/assets/images/legacy/picto/ships/Damage.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Dodge.svg b/assets/images/legacy/picto/ships/Dodge.svg new file mode 100644 index 000000000..181308ec7 --- /dev/null +++ b/assets/images/legacy/picto/ships/Dodge.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Fleet.svg b/assets/images/legacy/picto/ships/Fleet.svg new file mode 100644 index 000000000..a8f46eebb --- /dev/null +++ b/assets/images/legacy/picto/ships/Fleet.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Health.svg b/assets/images/legacy/picto/ships/Health.svg new file mode 100644 index 000000000..188ffce6d --- /dev/null +++ b/assets/images/legacy/picto/ships/Health.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Multiple-shots.svg b/assets/images/legacy/picto/ships/Multiple-shots.svg new file mode 100644 index 000000000..70f7b339d --- /dev/null +++ b/assets/images/legacy/picto/ships/Multiple-shots.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Plating.svg b/assets/images/legacy/picto/ships/Plating.svg new file mode 100644 index 000000000..8a48de8a9 --- /dev/null +++ b/assets/images/legacy/picto/ships/Plating.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Precision.svg b/assets/images/legacy/picto/ships/Precision.svg new file mode 100644 index 000000000..13cdfb328 --- /dev/null +++ b/assets/images/legacy/picto/ships/Precision.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/S_Pc_Bb_BK_64px.png b/assets/images/legacy/picto/ships/S_Pc_Bb_BK_64px.png new file mode 100644 index 000000000..76f4ef398 Binary files /dev/null and b/assets/images/legacy/picto/ships/S_Pc_Bb_BK_64px.png differ diff --git a/assets/images/legacy/picto/ships/S_Pc_Ch_BK_64px.png b/assets/images/legacy/picto/ships/S_Pc_Ch_BK_64px.png new file mode 100644 index 000000000..cc4ca991b Binary files /dev/null and b/assets/images/legacy/picto/ships/S_Pc_Ch_BK_64px.png differ diff --git a/assets/images/legacy/picto/ships/Shield.svg b/assets/images/legacy/picto/ships/Shield.svg new file mode 100644 index 000000000..4c56a31f0 --- /dev/null +++ b/assets/images/legacy/picto/ships/Shield.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Tracking.svg b/assets/images/legacy/picto/ships/Tracking.svg new file mode 100644 index 000000000..904a7f46d --- /dev/null +++ b/assets/images/legacy/picto/ships/Tracking.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Weight.svg b/assets/images/legacy/picto/ships/Weight.svg new file mode 100644 index 000000000..96ca615a7 --- /dev/null +++ b/assets/images/legacy/picto/ships/Weight.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Wpn-Bullet.svg b/assets/images/legacy/picto/ships/Wpn-Bullet.svg new file mode 100644 index 000000000..550927085 --- /dev/null +++ b/assets/images/legacy/picto/ships/Wpn-Bullet.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Wpn-Energy.svg b/assets/images/legacy/picto/ships/Wpn-Energy.svg new file mode 100644 index 000000000..5608b4882 --- /dev/null +++ b/assets/images/legacy/picto/ships/Wpn-Energy.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/Wpn-Missile.svg b/assets/images/legacy/picto/ships/Wpn-Missile.svg new file mode 100644 index 000000000..c31321a3d --- /dev/null +++ b/assets/images/legacy/picto/ships/Wpn-Missile.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/ships/types/ChasseurSW.svg b/assets/images/legacy/picto/ships/types/ChasseurSW.svg new file mode 100644 index 000000000..b14f5adac --- /dev/null +++ b/assets/images/legacy/picto/ships/types/ChasseurSW.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/Intercepteur.svg b/assets/images/legacy/picto/ships/types/Intercepteur.svg new file mode 100644 index 000000000..44a15654d --- /dev/null +++ b/assets/images/legacy/picto/ships/types/Intercepteur.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/bomber.svg b/assets/images/legacy/picto/ships/types/bomber.svg new file mode 100644 index 000000000..efe48fd3d --- /dev/null +++ b/assets/images/legacy/picto/ships/types/bomber.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/corvette.svg b/assets/images/legacy/picto/ships/types/corvette.svg new file mode 100644 index 000000000..f1f087975 --- /dev/null +++ b/assets/images/legacy/picto/ships/types/corvette.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/cruiser.svg b/assets/images/legacy/picto/ships/types/cruiser.svg new file mode 100644 index 000000000..3ab16db1f --- /dev/null +++ b/assets/images/legacy/picto/ships/types/cruiser.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/fighter.svg b/assets/images/legacy/picto/ships/types/fighter.svg new file mode 100644 index 000000000..d24a40fb1 --- /dev/null +++ b/assets/images/legacy/picto/ships/types/fighter.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/freighter.svg b/assets/images/legacy/picto/ships/types/freighter.svg new file mode 100644 index 000000000..a0201e582 --- /dev/null +++ b/assets/images/legacy/picto/ships/types/freighter.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/legacy/picto/ships/types/frigate.svg b/assets/images/legacy/picto/ships/types/frigate.svg new file mode 100644 index 000000000..aad6a6444 --- /dev/null +++ b/assets/images/legacy/picto/ships/types/frigate.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/assets/images/legacy/picto/trade/Blueprint.svg b/assets/images/legacy/picto/trade/Blueprint.svg new file mode 100644 index 000000000..d26aaf8e1 --- /dev/null +++ b/assets/images/legacy/picto/trade/Blueprint.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/Discount.svg b/assets/images/legacy/picto/trade/Discount.svg new file mode 100644 index 000000000..c4803955b --- /dev/null +++ b/assets/images/legacy/picto/trade/Discount.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/DiscountMax.svg b/assets/images/legacy/picto/trade/DiscountMax.svg new file mode 100644 index 000000000..3ea25f2d9 --- /dev/null +++ b/assets/images/legacy/picto/trade/DiscountMax.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/Faction.svg b/assets/images/legacy/picto/trade/Faction.svg new file mode 100644 index 000000000..e08e14196 --- /dev/null +++ b/assets/images/legacy/picto/trade/Faction.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/Lot.svg b/assets/images/legacy/picto/trade/Lot.svg new file mode 100644 index 000000000..c547ade64 --- /dev/null +++ b/assets/images/legacy/picto/trade/Lot.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/Lots.svg b/assets/images/legacy/picto/trade/Lots.svg new file mode 100644 index 000000000..7ab3ad8d3 --- /dev/null +++ b/assets/images/legacy/picto/trade/Lots.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/picto/trade/PricePerUnit.svg b/assets/images/legacy/picto/trade/PricePerUnit.svg new file mode 100644 index 000000000..be7405fe7 --- /dev/null +++ b/assets/images/legacy/picto/trade/PricePerUnit.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + /u + + diff --git a/assets/images/legacy/picto/trade/Time.svg b/assets/images/legacy/picto/trade/Time.svg new file mode 100644 index 000000000..23b7e090d --- /dev/null +++ b/assets/images/legacy/picto/trade/Time.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/assets/images/legacy/planet/Gaz.png b/assets/images/legacy/planet/Gaz.png new file mode 100644 index 000000000..7664da802 Binary files /dev/null and b/assets/images/legacy/planet/Gaz.png differ diff --git a/assets/images/legacy/planet/Ice.png b/assets/images/legacy/planet/Ice.png new file mode 100644 index 000000000..06a7cb0f7 Binary files /dev/null and b/assets/images/legacy/planet/Ice.png differ diff --git a/assets/images/legacy/planet/Lava.png b/assets/images/legacy/planet/Lava.png new file mode 100644 index 000000000..69d8194f9 Binary files /dev/null and b/assets/images/legacy/planet/Lava.png differ diff --git a/assets/images/legacy/planet/Mountain.png b/assets/images/legacy/planet/Mountain.png new file mode 100644 index 000000000..17ee89924 Binary files /dev/null and b/assets/images/legacy/planet/Mountain.png differ diff --git a/assets/images/legacy/planet/Ocean.png b/assets/images/legacy/planet/Ocean.png new file mode 100644 index 000000000..221b2f3a8 Binary files /dev/null and b/assets/images/legacy/planet/Ocean.png differ diff --git a/assets/images/legacy/planet/Tempered.png b/assets/images/legacy/planet/Tempered.png new file mode 100644 index 000000000..bf4f849a4 Binary files /dev/null and b/assets/images/legacy/planet/Tempered.png differ diff --git a/assets/images/legacy/planet/Tropical.png b/assets/images/legacy/planet/Tropical.png new file mode 100644 index 000000000..c43c02b66 Binary files /dev/null and b/assets/images/legacy/planet/Tropical.png differ diff --git a/assets/images/legacy/resources/Pc_Crst.png b/assets/images/legacy/resources/Pc_Crst.png new file mode 100644 index 000000000..26f783f9c Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Amethyste.png b/assets/images/legacy/resources/Pc_Crst_Amethyste.png new file mode 100644 index 000000000..140365887 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Amethyste.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Blood.png b/assets/images/legacy/resources/Pc_Crst_Blood.png new file mode 100644 index 000000000..159146ee3 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Blood.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Blue.png b/assets/images/legacy/resources/Pc_Crst_Blue.png new file mode 100644 index 000000000..d7d2cb9d6 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Blue.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Green.png b/assets/images/legacy/resources/Pc_Crst_Green.png new file mode 100644 index 000000000..9cd11621b Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Green.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Red.png b/assets/images/legacy/resources/Pc_Crst_Red.png new file mode 100644 index 000000000..db0c07c01 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Red.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Topaze.png b/assets/images/legacy/resources/Pc_Crst_Topaze.png new file mode 100644 index 000000000..9f0193d37 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Topaze.png differ diff --git a/assets/images/legacy/resources/Pc_Crst_Topaze2.png b/assets/images/legacy/resources/Pc_Crst_Topaze2.png new file mode 100644 index 000000000..0141e5df9 Binary files /dev/null and b/assets/images/legacy/resources/Pc_Crst_Topaze2.png differ diff --git a/assets/images/legacy/resources/Pc_R_Cri.png b/assets/images/legacy/resources/Pc_R_Cri.png new file mode 100644 index 000000000..26f783f9c Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Cri.png differ diff --git a/assets/images/legacy/resources/Pc_R_Eme.png b/assets/images/legacy/resources/Pc_R_Eme.png new file mode 100644 index 000000000..18100a1ae Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Eme.png differ diff --git a/assets/images/legacy/resources/Pc_R_Geo.png b/assets/images/legacy/resources/Pc_R_Geo.png new file mode 100644 index 000000000..1c95395cd Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Geo.png differ diff --git a/assets/images/legacy/resources/Pc_R_Rub.png b/assets/images/legacy/resources/Pc_R_Rub.png new file mode 100644 index 000000000..5e5355152 Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Rub.png differ diff --git a/assets/images/legacy/resources/Pc_R_Vol.png b/assets/images/legacy/resources/Pc_R_Vol.png new file mode 100644 index 000000000..55ac002ba Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Vol.png differ diff --git a/assets/images/legacy/resources/Pc_R_Wat.png b/assets/images/legacy/resources/Pc_R_Wat.png new file mode 100644 index 000000000..b63a49b02 Binary files /dev/null and b/assets/images/legacy/resources/Pc_R_Wat.png differ diff --git a/assets/images/legacy/resources/credits.svg b/assets/images/legacy/resources/credits.svg new file mode 100644 index 000000000..0005933c5 --- /dev/null +++ b/assets/images/legacy/resources/credits.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/resources/cristal_a.png b/assets/images/legacy/resources/cristal_a.png new file mode 100644 index 000000000..b4134baf4 Binary files /dev/null and b/assets/images/legacy/resources/cristal_a.png differ diff --git a/assets/images/legacy/resources/crystal_a.png b/assets/images/legacy/resources/crystal_a.png new file mode 100644 index 000000000..26f783f9c Binary files /dev/null and b/assets/images/legacy/resources/crystal_a.png differ diff --git a/assets/images/legacy/resources/food_a.png b/assets/images/legacy/resources/food_a.png new file mode 100644 index 000000000..b6e00e1a4 Binary files /dev/null and b/assets/images/legacy/resources/food_a.png differ diff --git a/assets/images/legacy/resources/industry_point.svg b/assets/images/legacy/resources/industry_point.svg new file mode 100644 index 000000000..76069c6db --- /dev/null +++ b/assets/images/legacy/resources/industry_point.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/resources/liquid_a.png b/assets/images/legacy/resources/liquid_a.png new file mode 100644 index 000000000..3163e76ca Binary files /dev/null and b/assets/images/legacy/resources/liquid_a.png differ diff --git a/assets/images/legacy/resources/metal_a.png b/assets/images/legacy/resources/metal_a.png new file mode 100644 index 000000000..5c49311d9 Binary files /dev/null and b/assets/images/legacy/resources/metal_a.png differ diff --git a/assets/images/legacy/resources/ore_a.png b/assets/images/legacy/resources/ore_a.png new file mode 100644 index 000000000..67c07cac5 Binary files /dev/null and b/assets/images/legacy/resources/ore_a.png differ diff --git a/assets/images/legacy/resources/ore_b.png b/assets/images/legacy/resources/ore_b.png new file mode 100644 index 000000000..6e2144eb2 Binary files /dev/null and b/assets/images/legacy/resources/ore_b.png differ diff --git a/assets/images/legacy/shipyard/frame/battle_runner.svg b/assets/images/legacy/shipyard/frame/battle_runner.svg new file mode 100644 index 000000000..feafba4e4 --- /dev/null +++ b/assets/images/legacy/shipyard/frame/battle_runner.svg @@ -0,0 +1,1344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/frame/fray_breaker.svg b/assets/images/legacy/shipyard/frame/fray_breaker.svg new file mode 100644 index 000000000..5de8895b1 --- /dev/null +++ b/assets/images/legacy/shipyard/frame/fray_breaker.svg @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/frame/light_hunter.svg b/assets/images/legacy/shipyard/frame/light_hunter.svg new file mode 100644 index 000000000..b8dc3d467 --- /dev/null +++ b/assets/images/legacy/shipyard/frame/light_hunter.svg @@ -0,0 +1,907 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/frame/sullern_terror.svg b/assets/images/legacy/shipyard/frame/sullern_terror.svg new file mode 100644 index 000000000..7fe944f50 --- /dev/null +++ b/assets/images/legacy/shipyard/frame/sullern_terror.svg @@ -0,0 +1,831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/frame/tenium_bane.svg b/assets/images/legacy/shipyard/frame/tenium_bane.svg new file mode 100644 index 000000000..9318d958f --- /dev/null +++ b/assets/images/legacy/shipyard/frame/tenium_bane.svg @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/frame/zartanyas_eye.svg b/assets/images/legacy/shipyard/frame/zartanyas_eye.svg new file mode 100644 index 000000000..f59184f3a --- /dev/null +++ b/assets/images/legacy/shipyard/frame/zartanyas_eye.svg @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/legacy/shipyard/module.png b/assets/images/legacy/shipyard/module.png new file mode 100644 index 000000000..58191420b Binary files /dev/null and b/assets/images/legacy/shipyard/module.png differ diff --git a/assets/images/legacy/shipyard/module/engine_small_mark_1.png b/assets/images/legacy/shipyard/module/engine_small_mark_1.png new file mode 100644 index 000000000..6d8211424 Binary files /dev/null and b/assets/images/legacy/shipyard/module/engine_small_mark_1.png differ diff --git a/assets/images/legacy/shipyard/module/weapon_heavy_laser.png b/assets/images/legacy/shipyard/module/weapon_heavy_laser.png new file mode 100644 index 000000000..af0da1009 Binary files /dev/null and b/assets/images/legacy/shipyard/module/weapon_heavy_laser.png differ diff --git a/assets/images/legacy/shipyard/module/weapon_medium_laser_01.png b/assets/images/legacy/shipyard/module/weapon_medium_laser_01.png new file mode 100644 index 000000000..da2b1df85 Binary files /dev/null and b/assets/images/legacy/shipyard/module/weapon_medium_laser_01.png differ diff --git a/assets/images/legacy/shipyard/module/weapon_small_laser_01.png b/assets/images/legacy/shipyard/module/weapon_small_laser_01.png new file mode 100644 index 000000000..b047f9d7c Binary files /dev/null and b/assets/images/legacy/shipyard/module/weapon_small_laser_01.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 000000000..05a9567c5 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/map/commander.svg b/assets/images/map/commander.svg new file mode 100644 index 000000000..abdc0c48e --- /dev/null +++ b/assets/images/map/commander.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/map/conquer.svg b/assets/images/map/conquer.svg new file mode 100644 index 000000000..d57230d8c --- /dev/null +++ b/assets/images/map/conquer.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/map/recycling.svg b/assets/images/map/recycling.svg new file mode 100644 index 000000000..d58469f24 --- /dev/null +++ b/assets/images/map/recycling.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/map/spy.svg b/assets/images/map/spy.svg new file mode 100644 index 000000000..df28968fe --- /dev/null +++ b/assets/images/map/spy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/map/system-star.svg b/assets/images/map/system-star.svg new file mode 100644 index 000000000..366e7dbbc --- /dev/null +++ b/assets/images/map/system-star.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/portal/background_portal.png b/assets/images/portal/background_portal.png new file mode 100644 index 000000000..a2488ae5a Binary files /dev/null and b/assets/images/portal/background_portal.png differ diff --git a/assets/images/portal/discord-white-icon.svg b/assets/images/portal/discord-white-icon.svg new file mode 100644 index 000000000..92411200f --- /dev/null +++ b/assets/images/portal/discord-white-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/white_logo.png b/assets/images/white_logo.png new file mode 100644 index 000000000..cb1659841 Binary files /dev/null and b/assets/images/white_logo.png differ diff --git a/public/js/autocomplete.module.js b/assets/js/autocomplete.module.js similarity index 100% rename from public/js/autocomplete.module.js rename to assets/js/autocomplete.module.js diff --git a/assets/js/financial/report.js b/assets/js/financial/report.js new file mode 100644 index 000000000..b8e1ef233 --- /dev/null +++ b/assets/js/financial/report.js @@ -0,0 +1,382 @@ +import Chart from 'chart.js/auto'; + +const chart = new Chart( + document.getElementById('financial-report-chart'), + { + type: 'line', + data: { + labels: window.reports_labels.slice(), + datasets: [ + { + label: 'Taxes planétaires', + data: window.reports_data['populationTaxes'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + order: 1, + }, + { + label: 'Revenus des routes commerciales', + data: window.reports_data['commercialRoutesIncome'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + order: 2, + }, + { + label: 'Gain/Perte', + data: window.reports_data['diff'].slice(), + borderColor: 'white', + stack: 'ownCustomStack', + order: -1, + }, + { + label: 'Vente de vaisseaux', + data: window.reports_data['shipsSales'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Crédits recyclés', + data: window.reports_data['recycledCredits'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Vente de ressources', + data: window.reports_data['resourcesSales'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Dotations de la faction', + data: window.reports_data['receivedFactionsCreditTransactions'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Transferts de fonds personnels', + data: window.reports_data['receivedPlayersCreditTransactions'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Vente de commandants', + data: window.reports_data['commandersSales'].slice(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Investissements universitaires', + data: window.reports_data['universityInvestments'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Investissements école', + data: window.reports_data['schoolInvestments'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Contre-espionnage', + data: window.reports_data['antiSpyInvestments'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Redevances de faction', + data: window.reports_data['factionTaxes'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Salaires des commandants', + data: window.reports_data['commandersWages'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Entretien des vaisseaux', + data: window.reports_data['shipsCost'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Construction de routes commerciales', + data: window.reports_data['commercialRoutesConstructions'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de vaisseaux', + data: window.reports_data['shipsPurchases'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de commandants', + data: window.reports_data['commandersPurchases'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de ressources', + data: window.reports_data['resourcesPurchases'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Dons à la faction', + data: window.reports_data['sentFactionsCreditTransactions'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Dons personnels', + data: window.reports_data['sentPlayersCreditTransactions'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Recherches technologiques', + data: window.reports_data['technologiesInvestments'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Redevances de faction', + data: window.reports_data['factionTaxes'].slice(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + ] + }, + options: { + responsive: true, + fill: 'origin', + fillOpacity: 1, + interaction: { + intersect: false, + mode: 'index', + }, + plugins: { + legend: { + display: false, + } + }, + scales: { + y: { + stacked: true, + display: true, + } + } + } + } +); + +new Chart( + document.getElementById('commercial-report-chart'), + { + type: 'bar', + data: { + labels: window.reports_labels.reverse(), + datasets: [ + { + label: 'Revenus des routes commerciales', + data: window.reports_data['commercialRoutesIncome'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Vente de vaisseaux', + data: window.reports_data['shipsSales'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Vente de ressources', + data: window.reports_data['resourcesSales'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Vente de commandants', + data: window.reports_data['commandersSales'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Construction de routes commerciales', + data: window.reports_data['commercialRoutesConstructions'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de vaisseaux', + data: window.reports_data['shipsPurchases'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de commandants', + data: window.reports_data['commandersPurchases'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Achat de ressources', + data: window.reports_data['resourcesPurchases'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + ] + }, + options: { + responsive: false, + aspectRatio: 0.5, + interaction: { + intersect: false, + mode: 'index', + }, + plugins: { + legend: { + display: false, + }, + }, + indexAxis: 'y', + barThickness: 10, + } + } +) + + +new Chart( + document.getElementById('investments-report-chart'), + { + type: 'bar', + data: { + labels: window.reports_labels, + datasets: [ + { + label: 'Crédits recyclés', + data: window.reports_data['recycledCredits'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Taxes planétaires', + data: window.reports_data['populationTaxes'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Redevances de faction', + data: window.reports_data['factionTaxes'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Contre-espionnage', + data: window.reports_data['antiSpyInvestments'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Investissements universitaires', + data: window.reports_data['universityInvestments'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Recherches technologiques', + data: window.reports_data['technologiesInvestments'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Ecole de commandement', + data: window.reports_data['schoolInvestments'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Salaires des commandants', + data: window.reports_data['commandersWages'], + backgroundColor: '#9D1F0E', + }, + { + label: 'Entretien des vaisseaux', + data: window.reports_data['shipsCost'], + backgroundColor: '#8F1C0D', + }, + ] + }, + options: { + responsive: false, + aspectRatio: 0.5, + interaction: { + intersect: false, + mode: 'index', + }, + plugins: { + legend: { + display: false, + }, + }, + indexAxis: 'y', + barThickness: 10, + } + } +) + + + +new Chart( + document.getElementById('transfer-report-chart'), + { + type: 'bar', + data: { + labels: window.reports_labels, + datasets: [ + { + label: 'Transferts de fonds personnels', + data: window.reports_data['receivedPlayersCreditTransactions'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Dotations de la faction', + data: window.reports_data['receivedFactionsCreditTransactions'].reverse(), + backgroundColor: '#89C43A', + borderColor: '#74C136', + }, + { + label: 'Dons personnels', + data: window.reports_data['sentPlayersCreditTransactions'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + { + label: 'Dons à la faction', + data: window.reports_data['sentFactionsCreditTransactions'].reverse(), + borderColor: '#9D1F0E', + backgroundColor: '#8F1C0D', + }, + ] + }, + options: { + responsive: false, + aspectRatio: 0.5, + interaction: { + intersect: false, + mode: 'index', + }, + plugins: { + legend: { + display: false, + }, + }, + indexAxis: 'y', + barThickness: 10, + } + } +) diff --git a/assets/js/jquery1.8.2.min.js b/assets/js/jquery1.8.2.min.js new file mode 100755 index 000000000..c6b433858 --- /dev/null +++ b/assets/js/jquery1.8.2.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(h![i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(h!){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(h!)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/public/js/main.desktop.js b/assets/js/main.desktop.js similarity index 90% rename from public/js/main.desktop.js rename to assets/js/main.desktop.js index 06f83fabb..128e9d38f 100755 --- a/public/js/main.desktop.js +++ b/assets/js/main.desktop.js @@ -27,27 +27,28 @@ jQuery(document).ready(function($) { render.viewport.w = parseInt($('body').css('width')); // hauteur du #conteneur - var hBar = parseInt($('#nav').css('height')); - var hContent = render.viewport.h - (2 * (hBar + 3)); + const headerColumn = document.querySelector('.component .head'); - $('#container').css('height', hContent); + if (null !== headerColumn) { + var hContent = render.viewport.h - headerColumn.offsetHeight; - // traitement des colonnes - $('.component').each(function(i) { - var currentColumn = $(this); - render.column.number += parseInt(parseInt(currentColumn.css('width')) / render.column.defaultSize); + // traitement des colonnes + $('.component').each(function(i) { + var currentColumn = $(this); + render.column.number += parseInt(parseInt(currentColumn.css('width')) / render.column.defaultSize); - currentColumn.css('height', hContent); - currentColumn.find('.fix-body').css('height', hContent - parseInt(currentColumn.find('.head').css('height'))); + currentColumn.css('height', hContent); + currentColumn.find('.fix-body').css('height', hContent - parseInt(currentColumn.find('.head').css('height'))); - if ($('body').hasClass('no-scrolling') && !currentColumn.hasClass('hasMover')) { - currentColumn.find('.fix-body').append(''); - currentColumn.find('.fix-body').append(''); - currentColumn.addClass('hasMover'); + if ($('body').hasClass('no-scrolling') && !currentColumn.hasClass('hasMover')) { + currentColumn.find('.fix-body').append(''); + currentColumn.find('.fix-body').append(''); + currentColumn.addClass('hasMover'); - columnController.move(currentColumn.find('.fix-body'), 'top'); - } - }); + columnController.move(currentColumn.find('.fix-body'), 'top'); + } + }); + } $('#content').css('width', ((render.column.number * render.column.defaultSize) + 500 + (3 * render.column.defaultSize))); @@ -151,12 +152,12 @@ jQuery(document).ready(function($) { $('.addInfoPanel').on('click', function() { var that = $(this); var index = parseInt(that.parents('.component').index()) + 1; - var query = game.path + 'ajax/a-'; + var query = game.path; switch (that.data('info-type')) { - case 'building': query += 'buildingpanel/building-' + that.data('building-id') + '/lvl-' + that.data('building-current-level'); break; - case 'ship': query += 'shippanel/ship-' + that.data('ship-id'); break; - case 'techno': query += 'technopanel/techno-' + that.data('techno-id'); break; + case 'building': query += 'buildings/' + that.data('building-id') + '/panel'; break; + case 'ship': query += 'ships/' + that.data('ship-id') + '/panel'; break; + case 'techno': query += 'technologies/' + that.data('techno-id') + '/panel'; break; } $.get(query) @@ -640,57 +641,12 @@ jQuery(document).ready(function($) { // ################################# // actionbox = { obj: $('#action-box'), - relatedPlace: $('#map').data('related-place'), opened: true, - applyCommander: function() { - if (actionbox.opened) { - if (mapController.commanders.active) { - actionbox.obj.find('.commander-tile .item').hide(); - - if (actionbox.obj.find('.header').data('distance') > mapController.commanders.maxJump && actionbox.obj.find('.header').data('sector-color') != mapController.commanders.color) { - actionbox.obj.find('.commander-tile .item.too-far').show(); - } else { - var items = actionbox.obj.find('.commander-tile .item.move'); - - items.find('a').each(function() { - var url = $(this).data('url'); - $(this).attr('href', url.replace('{id}', mapController.commanders.id)); - }); - - items.show(); - items.find('.name').text(mapController.commanders.name); - items.find('.wedge').text(mapController.commanders.wedge); - } - } else { - actionbox.obj.find('.commander-tile .item').hide(); - actionbox.obj.find('.commander-tile .item.no-commander').show(); - } - } - }, - - // affiche la box - open: function() { - actionbox.opened = true; - actionbox.obj.animate({ - bottom: 0 - }, 300); - }, - - // masque la box - close: function() { - actionbox.opened = false; - actionbox.obj.animate({ - bottom: -300 - }, 300); - - $('.loadSystem.active').removeClass('active'); - }, - // masque la box, charge le contenu et affiche la box load: function(systemid) { actionbox.close(); - $.get(game.path + 'ajax/a-loadsystem/systemid-' + systemid + '/relatedplace-' + actionbox.relatedPlace) + $.get(game.path + 'systems/' + systemid) .done(function(data) { actionbox.obj.html(data); actionbox.open(); @@ -873,8 +829,8 @@ jQuery(document).ready(function($) { wswBox.container.append(data); wswBox.box = container.find('.modal'); - $('.autocomplete-player').autocomplete(game.path + 'ajax/a-autocompleteplayer/'); - $('.autocomplete-orbitalbase').autocomplete(game.path + 'ajax/a-autocompleteorbitalbase/'); + $('.autocomplete-player').autocomplete(game.path + 'api/players/search'); + $('.autocomplete-orbitalbase').autocomplete(game.path + 'api/bases/search'); }).fail(function() { alertController.add(101, 'chargement des données interrompu'); }); @@ -989,7 +945,7 @@ jQuery(document).ready(function($) { })(); /* HIDE SPLASH-SCREEN */ - $('.hide-slpash').live('click', function(e) { + $('.hide-splash').live('click', function(e) { var dom = $('.splash-screen'); var mod = dom.find('.modal'); @@ -1087,4 +1043,4 @@ jQuery(document).ready(function($) { $('.army-bull').remove(); }); }); -}); \ No newline at end of file +}); diff --git a/public/js/main.js b/assets/js/main.js similarity index 93% rename from public/js/main.js rename to assets/js/main.js index 6b885f660..f43177da6 100755 --- a/public/js/main.js +++ b/assets/js/main.js @@ -10,11 +10,11 @@ jQuery(document).ready(function($) { speed: 300, // ressources du modules - imgPath: game.path + 'public/media/alert/', + imgPath: game.path + 'build/media/alert/', resources: { '100': ['information', 'info.png'], - '101': ['erreur', 'error.png'], - '102': ['réussite', 'success.png'], + 'error': ['erreur', 'error.png'], + 'success': ['réussite', 'success.png'], '103': ['erreur utilisateur', 'fillform.png'], '200': ['information', 'bug.png'], @@ -34,7 +34,7 @@ jQuery(document).ready(function($) { '310': ['messagerie', 'message.png'], '311': ['contre-espionnage', 'antispy.png'], '312': ['combat', 'fight.png'], - '313': ['transaction effectuée', 'market.png'] + 'market_success': ['transaction effectuée', 'market.png'] }, // initialisation : parse et lance le runtime @@ -173,8 +173,12 @@ jQuery(document).ready(function($) { uniInvest.percent[type] -= quantity; uniInvest.percent.rest += quantity; - if (quantity != 0) { - $.get(game.path + 'ajax/a-decreaseinvestuni/category-' + type + '/quantity-' + quantity); + if (quantity !== 0) { + $.ajax({ + type: 'PATCH', + url: game.path + 'api/university/' + type + '/decrease', + data: JSON.stringify({ quantity }), + }); } } else { if (uniInvest.percent[type] + quantity > 100) { @@ -187,8 +191,12 @@ jQuery(document).ready(function($) { uniInvest.percent[type] += quantity; uniInvest.percent.rest -= quantity; - if (quantity != 0) { - $.get(game.path + 'ajax/a-increaseinvestuni/category-' + type + '/quantity-' + quantity); + if (quantity !== 0) { + $.ajax({ + type: 'PATCH', + url: game.path + 'api/university/' + type + '/increase', + data: JSON.stringify({ quantity }), + }); } } @@ -250,7 +258,7 @@ jQuery(document).ready(function($) { // ref data this.ref.commander = $('.baseTransfer').data('commander'); this.ref.base = $('.baseTransfer').data('base'); - + // @TODO Avoid an infinite setInterval call and stop it at some point setInterval(function() { squadronTransfer.sendRequest(); }, 500); @@ -422,20 +430,22 @@ jQuery(document).ready(function($) { }, isSquadronsDifferents: function() { - return (this.squadronShipsOld.join('-') != this.squadronShipsNew.join('-')) - ? true : false; + return (this.squadronShipsOld.join('-') != this.squadronShipsNew.join('-')); }, sendRequest: function() { if (this.squadronSelected != undefined) { if (Math.abs(Date.now() - squadronTransfer.lastClick) > 300) { if (this.isSquadronsDifferents()) { - $.get(game.path - + 'ajax/a-updatesquadron/base-' + this.ref.base - + '/commander-' + this.ref.commander - + '/squadron-' + this.squadronSelected - + '/army-' + this.squadronShipsNew.join('_') - ); + // @TODO handle errors + $.ajax({ + type: 'PATCH', + url: game.path + 'api/fleets/' + this.ref.commander + '/squadrons/' + this.squadronSelected, + data: JSON.stringify({ + base_id: this.ref.base, + army: this.squadronShipsNew, + }), + }); for (var i = 0; i < this.squadronShipsOld.length; i++) { this.squadronShipsOld[i] = this.squadronShipsNew[i]; @@ -660,7 +670,11 @@ jQuery(document).ready(function($) { if (count == 0) { notifs.removeClass('active'); } - $.get(game.path + 'ajax/a-readnotif/notif-' + notif.data('notif-id')); + $.ajax({ + type: 'PATCH', + url: game.path + 'notifications/' + notif.data('notif-id') + '/read', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + }); }); // STD AJAX ACTION LINK @@ -763,29 +777,29 @@ jQuery(document).ready(function($) { var cost = container.data('ship-cost'); var duration = container.data('ship-second'); var target = ''; + const button = container.find('.button'); + + link = new URL(button.attr('href')); + link.searchParams.set('quantity', input); - link = container.find('.button').attr('href').split('/'); - for (var i = 0; i < link.length - 1; i++) { - target += link[i] + '/'; - }; - target += 'quantity-' + input; + target = link.href; cost = cost * input; duration = time.secondToFormat((duration * input), 'lite'); - if (input > maxShip || input == 0) { - container.find('.button').addClass('disable'); + if (input > maxShip || input === 0) { + button.addClass('disable'); } else { - container.find('.button').removeClass('disable'); + button.removeClass('disable'); } // format number cost = cost.toString(); - var arrayCost = new Array(); + var arrayCost = []; var formatCost = ''; for (var i = cost.length - 1; i >= 0; i--) { arrayCost.push(cost[i]); - if ((i - cost.length) % 3 == 0) { + if ((i - cost.length) % 3 === 0) { arrayCost.push(' '); }} arrayCost = arrayCost.reverse(); @@ -852,8 +866,8 @@ jQuery(document).ready(function($) { }); // using module - $('.autocomplete-player').autocomplete(game.path + 'ajax/a-autocompleteplayer/'); - $('.autocomplete-orbitalbase').autocomplete(game.path + 'ajax/a-autocompleteorbitalbase/'); + $('.autocomplete-player').autocomplete(game.path + 'api/players/search'); + $('.autocomplete-orbitalbase').autocomplete(game.path + 'api/bases/search'); // confirm box $('.confirm').live('click', function(e) { @@ -866,4 +880,4 @@ jQuery(document).ready(function($) { e.preventDefault(); } }); -}); \ No newline at end of file +}); diff --git a/assets/readme-docs/img.png b/assets/readme-docs/img.png new file mode 100644 index 000000000..154d26348 Binary files /dev/null and b/assets/readme-docs/img.png differ diff --git a/assets/readme-docs/img_1.png b/assets/readme-docs/img_1.png new file mode 100644 index 000000000..03b38b6f9 Binary files /dev/null and b/assets/readme-docs/img_1.png differ diff --git a/assets/readme-docs/img_2.png b/assets/readme-docs/img_2.png new file mode 100644 index 000000000..32ffc47fd Binary files /dev/null and b/assets/readme-docs/img_2.png differ diff --git a/assets/styles/app.css b/assets/styles/app.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/assets/styles/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/assets/styles/faction_colors/all.css b/assets/styles/faction_colors/all.css new file mode 100644 index 000000000..9667a926e --- /dev/null +++ b/assets/styles/faction_colors/all.css @@ -0,0 +1,53 @@ +:root{ + --color-light-0: #EFEFEF; + --color-dark-0: #4F4F4F; + --color-medium-0: #CCCCCC; + + --color-light-1: #b01e2d; + --color-dark-1: #510816; + --color-medium-1: #6e161b; + + --color-light-2: #2f23c0; + --color-dark-2: #0c0d44; + --color-medium-2: #1f1471; + + --color-light-3: #ffdb0f; + --color-dark-3: #b17a00; + --color-medium-3: #dbb200; + + --color-light-4: #a935c7; + --color-dark-4: #310948; + --color-medium-4: #5a1072; + + --color-light-5: #57c632; + --color-dark-5: #24500a; + --color-medium-5: #2c7915; + + --color-light-6: #05bed7; + --color-dark-6: #004948; + --color-medium-6: #076b87; + + --color-light-7: #ac5832; + --color-dark-7: #401b13; + --color-medium-7: #67331d; + + --color-light-8: #f2b636; + --color-dark-8: #c3590b; + --color-medium-8: #d87913; + + --color-light-9: #57c632; + --color-dark-9: #24500a; + --color-medium-9: #2c7915; + + --color-light-10: #a92859; + --color-dark-10: #4d0621; + --color-medium-10:#760f36; + + --color-light-11: #34b089; + --color-dark-11: #10684c; + --color-medium-11:#219772; + + --color-light-12: #ffdb0f; + --color-dark-12: #b17a00; + --color-medium-12:#dbb200; +} diff --git a/assets/styles/faction_colors/color1.css b/assets/styles/faction_colors/color1.css new file mode 100644 index 000000000..4aa87fbb5 --- /dev/null +++ b/assets/styles/faction_colors/color1.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #b01e2d; + --color-dark: #510816; + --color-medium: #6e161b; +} diff --git a/assets/styles/faction_colors/color10.css b/assets/styles/faction_colors/color10.css new file mode 100644 index 000000000..3c6925d81 --- /dev/null +++ b/assets/styles/faction_colors/color10.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #a92859; + --color-dark: #4d0621; + --color-medium:#760f36; +} diff --git a/assets/styles/faction_colors/color11.css b/assets/styles/faction_colors/color11.css new file mode 100644 index 000000000..832583958 --- /dev/null +++ b/assets/styles/faction_colors/color11.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #34b089; + --color-dark: #10684c; + --color-medium:#219772; +} diff --git a/assets/styles/faction_colors/color12.css b/assets/styles/faction_colors/color12.css new file mode 100644 index 000000000..eb5cb93d0 --- /dev/null +++ b/assets/styles/faction_colors/color12.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #ffdb0f; + --color-dark: #b17a00; + --color-medium:#dbb200; +} diff --git a/assets/styles/faction_colors/color2.css b/assets/styles/faction_colors/color2.css new file mode 100644 index 000000000..1a8a1e1f4 --- /dev/null +++ b/assets/styles/faction_colors/color2.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #2f23c0; + --color-dark: #0c0d44; + --color-medium: #1f1471; +} diff --git a/assets/styles/faction_colors/color3.css b/assets/styles/faction_colors/color3.css new file mode 100644 index 000000000..6dd00b693 --- /dev/null +++ b/assets/styles/faction_colors/color3.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #ffdb0f; + --color-dark: #b17a00; + --color-medium: #dbb200; +} diff --git a/assets/styles/faction_colors/color4.css b/assets/styles/faction_colors/color4.css new file mode 100644 index 000000000..71303bc8d --- /dev/null +++ b/assets/styles/faction_colors/color4.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #a935c7; + --color-dark: #310948; + --color-medium: #5a1072; +} diff --git a/assets/styles/faction_colors/color5.css b/assets/styles/faction_colors/color5.css new file mode 100644 index 000000000..815dd2cb9 --- /dev/null +++ b/assets/styles/faction_colors/color5.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #57c632; + --color-dark: #24500a; + --color-medium: #2c7915; +} diff --git a/assets/styles/faction_colors/color6.css b/assets/styles/faction_colors/color6.css new file mode 100644 index 000000000..bd317d145 --- /dev/null +++ b/assets/styles/faction_colors/color6.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #05bed7; + --color-dark: #004948; + --color-medium: #076b87; +} diff --git a/assets/styles/faction_colors/color7.css b/assets/styles/faction_colors/color7.css new file mode 100644 index 000000000..a60e9d638 --- /dev/null +++ b/assets/styles/faction_colors/color7.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #ac5832; + --color-dark: #401b13; + --color-medium: #67331d; +} diff --git a/assets/styles/faction_colors/color8.css b/assets/styles/faction_colors/color8.css new file mode 100644 index 000000000..702224794 --- /dev/null +++ b/assets/styles/faction_colors/color8.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #f2b636; + --color-dark: #c3590b; + --color-medium: #d87913; +} diff --git a/assets/styles/faction_colors/color9.css b/assets/styles/faction_colors/color9.css new file mode 100644 index 000000000..815dd2cb9 --- /dev/null +++ b/assets/styles/faction_colors/color9.css @@ -0,0 +1,5 @@ +:root{ + --color-light: #57c632; + --color-dark: #24500a; + --color-medium: #2c7915; +} diff --git a/bin/console b/bin/console new file mode 100755 index 000000000..c933dc535 --- /dev/null +++ b/bin/console @@ -0,0 +1,17 @@ +#!/usr/bin/env php + symfony/mercure-bundle ### + mercure: + environment: + # Uncomment the following line to disable HTTPS, + SERVER_NAME: ':80' + #SERVER_NAME: 'mercure.kalaxia.local' + MERCURE_PUBLISHER_JWT_KEY: '2eeDS20V0ySXnFwZFZMTp2B0aoCLqVdDzadiazjdaizd' + MERCURE_SUBSCRIBER_JWT_KEY: '2eeDS20V0ySXnFwZFZMTp2B0aoCLqVdDzadiazjdaizd' + MERCURE_EXTRA_DIRECTIVES: | + cors_origins https://kalaxia.local + # command: /usr/bin/caddy run --config /etc/caddy/dev.Caddyfile + ###< symfony/mercure-bundle ### diff --git a/composer.json b/composer.json index 345a6a202..a083be62c 100644 --- a/composer.json +++ b/composer.json @@ -1,47 +1,121 @@ { "name": "rtfmcorp/asylamba-game", "type": "project", - "autoload": { - "psr-4": { - "Asylamba\\": "system/", - "Tests\\Asylamba\\": "tests/" - } - }, - "require": { - "php": "~8.1", - "ext-curl": "*", - "ext-pdo": "*", - "ext-redis": "*", - "ext-openssl": "*", - "symfony/config": "~6.0", - "symfony/yaml": "~6.0", - "symfony/dotenv": "^6.0", - "symfony/var-dumper": "^6.0", - "symfony/dependency-injection": "^6.0", - "symfony/event-dispatcher": "^6.0", - "symfony/messenger": "^6.0", - "symfony/amqp-messenger": "^6.0", + "php": "~8.4", + "ext-curl": "*", + "ext-openssl": "*", + "ext-pdo": "*", + "ext-redis": "*", + "doctrine/doctrine-bundle": "^2.10", + "doctrine/doctrine-migrations-bundle": "^3.2", + "doctrine/orm": "^2.16", + "dragonmantank/cron-expression": "^3.3", + "mixpanel/mixpanel-php": "^2.11", "psr/log": "^3.0", - "sentry/sdk": "^3.1" - }, - - "scripts": { - "post-install-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" - ], - "post-update-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" - ] + "sentry/sdk": "^4.0", + "sentry/sentry-symfony": "^5.2", + "symfony/amqp-messenger": "^7.2", + "symfony/asset": "^7.2", + "symfony/asset-mapper": "^7.2", + "symfony/config": "^7.2", + "symfony/console": "^7.2", + "symfony/dependency-injection": "^7.2", + "symfony/dotenv": "^7.2", + "symfony/event-dispatcher": "^7.2", + "symfony/expression-language": "^7.2", + "symfony/flex": "^2.5", + "symfony/form": "^7.2", + "symfony/framework-bundle": "^7.2", + "symfony/http-kernel": "^7.2", + "symfony/mercure-bundle": "^0.3.9", + "symfony/messenger": "^7.2", + "symfony/monolog-bundle": "^3.10", + "symfony/property-access": "^7.2", + "symfony/psr-http-message-bridge": "^7.2", + "symfony/routing": "^7.2", + "symfony/runtime": "^7.2", + "symfony/scheduler": "^7.2", + "symfony/security-bundle": "^7.2", + "symfony/serializer": "^7.2", + "symfony/twig-bundle": "^7.2", + "symfony/uid": "^7.2", + "symfony/ux-live-component": "^2.24", + "symfony/ux-turbo": "^2.24", + "symfony/ux-twig-component": "^2.23", + "symfony/validator": "^7.2", + "symfony/var-dumper": "^7.2", + "symfony/yaml": "^7.2", + "symfonycasts/tailwind-bundle": "^0.6.1", + "twig/extra-bundle": "^3.7", + "twig/intl-extra": "^3.7", + "twig/twig": "^3.7" }, - - "extra": { - "incenteev-parameters": { - "file": "config/parameters.yml", - "dist-file": "config/parameters.dist.yml" - } + "require-dev": { + "doctrine/doctrine-fixtures-bundle": "^3.4", + "friendsofphp/php-cs-fixer": "^3.71", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-doctrine": "^2.0", + "phpunit/phpunit": "^10.3", + "rector/rector": "^2.0", + "squizlabs/php_codesniffer": "^3.11", + "symfony/debug-bundle": "^7.2", + "symfony/phpunit-bridge": "^7.2", + "symfony/stopwatch": "^7.2", + "symfony/web-profiler-bundle": "^7.2", + "zenstruck/foundry": "^1.35" }, - "require-dev": { - "phpunit/phpunit": "^9.5" - } + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "dotenv:dump": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd", + "importmap:install": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "^7.2" + } + }, + "config": { + "allow-plugins": { + "symfony/flex": true, + "symfony/runtime": true, + "php-http/discovery": true + }, + "optimize-autoloader": true, + "preferred-install": { + "*": "dist" + }, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-ctype": "*", + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php72": "*", + "symfony/polyfill-php73": "*", + "symfony/polyfill-php74": "*", + "symfony/polyfill-php80": "*" + } } diff --git a/composer.lock b/composer.lock index f757feded..40bd16c7a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,36 +4,39 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "afafabad9225c1457f8c547461c0f258", + "content-hash": "2ccf6aba57c5066c8eca98c2d91ab6dd", "packages": [ { - "name": "clue/stream-filter", - "version": "v1.5.0", + "name": "composer/semver", + "version": "3.4.3", "source": { "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320" + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/aeb7d8ea49c7963d3b581378955dbf5bc49aa320", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { - "php": ">=5.3" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -41,70 +44,82 @@ ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.5.0" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { - "url": "https://clue.engineering/support", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/clue", + "url": "https://github.com/composer", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "time": "2020-10-02T12:38:20+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { - "name": "guzzlehttp/promises", - "version": "1.5.1", + "name": "doctrine/cache", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -112,91 +127,89 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Guzzle promises library", + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", "keywords": [ - "promise" + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" }, { - "url": "https://github.com/Nyholm", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.1.0", + "name": "doctrine/collections", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + "url": "https://github.com/doctrine/collections.git", + "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "url": "https://api.github.com/repos/doctrine/collections/zipball/2eb07e5953eed811ce1b309a7478a3b236f2273d", + "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "doctrine/deprecations": "^1", + "php": "^8.1", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^10.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -205,105 +218,86 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "array", + "collections", + "iterators", + "php" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.1.0" + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/2.3.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" }, { - "url": "https://github.com/Nyholm", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", "type": "tidelift" } ], - "time": "2021-10-06T17:43:30+00:00" + "time": "2025-03-22T10:17:19+00:00" }, { - "name": "http-interop/http-factory-guzzle", - "version": "1.2.0", + "name": "doctrine/common", + "version": "3.5.0", "source": { "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "8f06e92b95405216b237521cc64c804dd44c4a81" + "url": "https://github.com/doctrine/common.git", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81", - "reference": "8f06e92b95405216b237521cc64c804dd44c4a81", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", "shasum": "" }, "require": { - "guzzlehttp/psr7": "^1.7||^2.0", - "php": ">=7.3", - "psr/http-factory": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^9.5" - }, - "suggest": { - "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0" + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^6.1", + "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -312,57 +306,102 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "An HTTP Factory using Guzzle PSR7", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ - "factory", - "http", - "psr-17", - "psr-7" + "common", + "doctrine", + "php" ], "support": { - "issues": "https://github.com/http-interop/http-factory-guzzle/issues", - "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0" + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.5.0" }, - "time": "2021-07-21T13:50:14+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2025-01-01T22:12:03+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "name": "doctrine/dbal", + "version": "3.9.4", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "url": "https://github.com/doctrine/dbal.git", + "reference": "ec16c82f20be1a7224e65ac67144a29199f87959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/ec16c82f20be1a7224e65ac67144a29199f87959", + "reference": "ec16c82f20be1a7224e65ac67144a29199f87959", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "9.6.22", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.10.2", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", "autoload": { "psr-4": { - "Jean85\\": "src/" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -371,137 +410,182 @@ ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", "keywords": [ - "composer", - "package", - "release", - "versions" + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" ], "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.9.4" }, - "time": "2021-10-08T21:21:46+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2025-01-16T08:28:55+00:00" }, { - "name": "php-http/client-common", - "version": "2.5.0", + "name": "doctrine/deprecations", + "version": "1.1.5", "source": { "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.17" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" }, "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { - "Http\\Client\\Common\\": "src/" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", "support": { - "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.5.0" + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2021-11-26T15:01:24+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { - "name": "php-http/discovery", - "version": "1.14.1", + "name": "doctrine/doctrine-bundle", + "version": "2.14.0", "source": { "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "de90ab2b41d7d61609f504e031339776bc8c7223" + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "ca6a7350b421baf7fbdefbf9f4993292ed18effb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223", - "reference": "de90ab2b41d7d61609f504e031339776bc8c7223", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/ca6a7350b421baf7fbdefbf9f4993292ed18effb", + "reference": "ca6a7350b421baf7fbdefbf9f4993292ed18effb", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^3.1 || ^4", + "doctrine/sql-formatter": "^1.0.1", + "php": "^8.1", + "symfony/cache": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/service-contracts": "^2.5 || ^3" }, "conflict": { - "nyholm/psr7": "<1.0" + "doctrine/annotations": ">=3.0", + "doctrine/cache": "< 1.11", + "doctrine/orm": "<2.17 || >=4.0", + "symfony/var-exporter": "< 6.4.1 || 7.0.0", + "twig/twig": "<2.13 || >=3.0 <3.0.4" }, "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1", - "puli/composer-plugin": "1.0.0-beta10" + "doctrine/annotations": "^1 || ^2", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.17 || ^3.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9.6.22", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/doctrine-messenger": "^6.4 || ^7.0", + "symfony/messenger": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^7.2", + "symfony/property-info": "^6.4 || ^7.0", + "symfony/security-bundle": "^6.4 || ^7.0", + "symfony/stopwatch": "^6.4 || ^7.0", + "symfony/string": "^6.4 || ^7.0", + "symfony/twig-bridge": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/var-exporter": "^6.4.1 || ^7.0.1", + "symfony/web-profiler-bundle": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0", + "twig/twig": "^2.13 || ^3.0.4" }, "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", + "symfony/web-profiler-bundle": "To use the data collector." }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Http\\Discovery\\": "src/" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -510,60 +594,89 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org/" } ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", + "description": "Symfony DoctrineBundle", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" + "database", + "dbal", + "orm", + "persistence" ], "support": { - "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.1" + "issues": "https://github.com/doctrine/DoctrineBundle/issues", + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.14.0" }, - "time": "2021-09-18T07:57:46+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2025-03-22T17:28:21+00:00" }, { - "name": "php-http/httplug", - "version": "2.2.0", + "name": "doctrine/doctrine-migrations-bundle", + "version": "3.4.1", "source": { "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "e858ce0f5c12b266dce7dce24834448355155da7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/e858ce0f5c12b266dce7dce24834448355155da7", + "reference": "e858ce0f5c12b266dce7dce24834448355155da7", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" + "doctrine/doctrine-bundle": "^2.4", + "doctrine/migrations": "^3.2", + "php": "^7.2 || ^8.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, + "composer/semver": "^3.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3", + "phpstan/phpstan": "^1.4 || ^2", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1.1 || ^2", + "phpstan/phpstan-symfony": "^1.3 || ^2", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7" + }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Http\\Client\\": "src/" + "Doctrine\\Bundle\\MigrationsBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -572,77 +685,76 @@ ], "authors": [ { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", + "description": "Symfony DoctrineMigrationsBundle", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "client", - "http" + "dbal", + "migrations", + "schema" ], "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/master" + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.1" }, - "time": "2020-07-13T15:43:23+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2025-01-27T22:48:22+00:00" }, { - "name": "php-http/message", - "version": "1.12.0", + "name": "doctrine/event-manager", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "39eb7548be982a81085fe5a6e2a44268cd586291" + "url": "https://github.com/doctrine/event-manager.git", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/39eb7548be982a81085fe5a6e2a44268cd586291", - "reference": "39eb7548be982a81085fe5a6e2a44268cd586291", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", "shasum": "" }, "require": { - "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" + "php": "^8.1" }, - "provide": { - "php-http/message-factory-implementation": "1.0" + "conflict": { + "doctrine/common": "<2.9" }, "require-dev": { - "ergebnis/composer-normalize": "^2.6", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "laminas/laminas-diactoros": "^2.0", - "phpspec/phpspec": "^5.1 || ^6.3", - "slim/slim": "^3.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "laminas/laminas-diactoros": "Used with Diactoros Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] + "Doctrine\\Common\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -650,50 +762,88 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", "keywords": [ - "http", - "message", - "psr-7" + "event", + "event dispatcher", + "event manager", + "event system", + "events" ], "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.12.0" + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" }, - "time": "2021-08-29T09:13:12+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2024-05-22T20:47:39+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "doctrine/inflector", + "version": "2.0.10", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "php": "^7.2 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, + "type": "library", "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -702,55 +852,91 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, - "time": "2015-12-19T14:08:53+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" }, { - "name": "php-http/promise", - "version": "1.1.0", + "name": "doctrine/instantiator", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -759,51 +945,65 @@ ], "authors": [ { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "promise" + "constructor", + "instantiate" ], "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, - "time": "2020-07-07T09:29:14+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" }, { - "name": "psr/container", - "version": "2.0.2", + "name": "doctrine/lexer", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": "^8.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -812,51 +1012,103 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "annotations", + "docblock", + "lexer", + "parser", + "php" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, - "time": "2021-11-05T16:47:00+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "doctrine/migrations", + "version": "3.9.0", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/doctrine/migrations.git", + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", "shasum": "" }, "require": { - "php": ">=7.2.0" + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.6 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", + "psr/log": "^1.1.3 || ^2 || ^3", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "conflict": { + "doctrine/orm": "<2.12 || >=4" }, + "require-dev": { + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", + "doctrine/sql-formatter": "^1.0", + "ext-pdo_sqlite": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", "autoload": { "psr-4": { - "Psr\\EventDispatcher\\": "src/" + "Doctrine\\Migrations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -865,49 +1117,107 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" } ], - "description": "Standard interfaces for event handling.", + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", "keywords": [ - "events", - "psr", - "psr-14" + "database", + "dbal", + "migrations" ], "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.9.0" }, - "time": "2019-01-08T18:20:26+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2025-03-26T06:48:45+00:00" }, { - "name": "psr/http-client", - "version": "1.0.1", + "name": "doctrine/orm", + "version": "2.20.2", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "url": "https://github.com/doctrine/orm.git", + "reference": "19912de9270fa6abb3d25a1a37784af6b818d534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/doctrine/orm/zipball/19912de9270fa6abb3d25a1a37784af6b818d534", + "reference": "19912de9270fa6abb3d25a1a37784af6b818d534", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.12.1 || ^2.1.1", + "doctrine/collections": "^1.5 || ^2.1", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", + "doctrine/inflector": "^1.4 || ^2.0", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2 || ^3", + "doctrine/persistence": "^2.4 || ^3", + "ext-ctype": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "conflict": { + "doctrine/annotations": "<1.13 || >= 3.0" + }, + "require-dev": { + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", + "phpbench/phpbench": "^0.16.10 || ^1.0", + "phpstan/extension-installer": "~1.1.0 || ^1.4", + "phpstan/phpstan": "~1.4.10 || 2.0.3", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psr/log": "^1 || ^2 || ^3", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, + "bin": [ + "bin/doctrine" + ], + "type": "library", "autoload": { "psr-4": { - "Psr\\Http\\Client\\": "src/" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -916,50 +1226,224 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "https://www.doctrine-project.org/projects/orm.html", + "keywords": [ + "database", + "orm" + ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.20.2" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2025-02-04T19:17:01+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.1", + "name": "doctrine/persistence", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/doctrine/persistence.git", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^1 || ^2", + "php": "^7.2 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0" + }, + "conflict": { + "doctrine/common": "<2.10" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "doctrine/common": "^3.0", + "phpstan/phpstan": "1.12.7", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5.38 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Persistence\\": "src/Persistence" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/3.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2024-10-30T19:48:12+00:00" + }, + { + "name": "doctrine/sql-formatter", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "ergebnis/phpunit-slow-test-detector": "^2.14", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5" + }, + "bin": [ + "bin/sql-formatter" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\SqlFormatter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "https://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/doctrine/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" + }, + "time": "2025-01-24T11:45:48+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", @@ -968,52 +1452,179 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "factory", "http", "message", - "psr", - "psr-17", "psr-7", "request", - "response" + "response", + "stream", + "uri", + "url" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.1" }, - "time": "2019-04-30T12:38:16+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:30:47+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "jean85/pretty-package-versions", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", "shasum": "" }, "require": { - "php": ">=5.3.0" + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1022,52 +1633,6578 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" + }, + "time": "2025-03-19T14:43:43+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "5.5.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "a835af59b030d3f2967725697cf88300f579088e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a835af59b030d3f2967725697cf88300f579088e", + "reference": "a835af59b030d3f2967725697cf88300f579088e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-sodium": "*", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/clock": "^1.0" + }, + "require-dev": { + "infection/infection": "^0.29", + "lcobucci/clock": "^3.2", + "lcobucci/coding-standard": "^11.0", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.10.7", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.10", + "phpstan/phpstan-strict-rules": "^1.5.0", + "phpunit/phpunit": "^11.1" + }, + "suggest": { + "lcobucci/clock": ">= 3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/5.5.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2025-01-26T21:29:45+00:00" + }, + { + "name": "mixpanel/mixpanel-php", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/mixpanel/mixpanel-php.git", + "reference": "4b0fafacf2129eff5d50721e129b07f0c32687e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mixpanel/mixpanel-php/zipball/4b0fafacf2129eff5d50721e129b07f0c32687e7", + "reference": "4b0fafacf2129eff5d50721e129b07f0c32687e7", + "shasum": "" + }, + "require": { + "php": ">=5.0" + }, + "require-dev": { + "phpdocumentor/phpdocumentor": "2.9.*", + "phpunit/phpunit": "5.6.*" + }, + "type": "library", + "autoload": { + "files": [ + "lib/Mixpanel.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Mixpanel ", + "homepage": "https://mixpanel.com/" + } + ], + "description": "The Official PHP library for Mixpanel", + "homepage": "https://mixpanel.com/help/reference/php", + "keywords": [ + "mixpanel", + "mixpanel php" + ], + "support": { + "issues": "https://github.com/mixpanel/mixpanel-php/issues", + "source": "https://github.com/mixpanel/mixpanel-php/tree/2.11.0" + }, + "time": "2023-04-11T23:03:57+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/link", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "84b159194ecfd7eaa472280213976e96415433f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/84b159194ecfd7eaa472280213976e96415433f7", + "reference": "84b159194ecfd7eaa472280213976e96415433f7", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "suggest": { + "fig/link-util": "Provides some useful PSR-13 utilities" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/2.0.1" + }, + "time": "2021-03-11T23:00:27+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sentry/sdk", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-php-sdk.git", + "reference": "fcbca864e8d1dc712f3ecfaa95ea89d024fb2e53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/fcbca864e8d1dc712f3ecfaa95ea89d024fb2e53", + "reference": "fcbca864e8d1dc712f3ecfaa95ea89d024fb2e53", + "shasum": "" + }, + "require": { + "sentry/sentry": "^4.0" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "This is a meta package of sentry/sentry. We recommend using sentry/sentry directly.", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-php-sdk/issues", + "source": "https://github.com/getsentry/sentry-php-sdk/tree/4.0.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2023-11-06T10:23:19+00:00" + }, + { + "name": "sentry/sentry", + "version": "4.11.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-php.git", + "reference": "ebf67deb9902b6da58a4b3383cbd12fed3f4f555" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/ebf67deb9902b6da58a4b3383cbd12fed3f4f555", + "reference": "ebf67deb9902b6da58a4b3383cbd12fed3f4f555", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "jean85/pretty-package-versions": "^1.5|^2.0.4", + "php": "^7.2|^8.0", + "psr/log": "^1.0|^2.0|^3.0", + "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0" + }, + "conflict": { + "raven/raven": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.4", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "monolog/monolog": "^1.6|^2.0|^3.0", + "phpbench/phpbench": "^1.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^8.5|^9.6", + "symfony/phpunit-bridge": "^5.2|^6.0|^7.0", + "vimeo/psalm": "^4.17" + }, + "suggest": { + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Sentry\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "PHP SDK for Sentry (http://sentry.io)", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "profiling", + "sentry", + "tracing" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/4.11.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2025-04-14T09:04:23+00:00" + }, + { + "name": "sentry/sentry-symfony", + "version": "5.2.0", + "source": { + "type": "git", + "url": "https://github.com/getsentry/sentry-symfony.git", + "reference": "394576244d8ac03fd2f305b82d23a6fd7a083b45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/394576244d8ac03fd2f305b82d23a6fd7a083b45", + "reference": "394576244d8ac03fd2f305b82d23a6fd7a083b45", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^2.1.1", + "jean85/pretty-package-versions": "^1.5||^2.0", + "php": "^7.2||^8.0", + "sentry/sentry": "^4.10.0", + "symfony/cache-contracts": "^1.1||^2.4||^3.0", + "symfony/config": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/console": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-kernel": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/polyfill-php80": "^1.22", + "symfony/psr-http-message-bridge": "^1.2||^2.0||^6.4||^7.0" + }, + "require-dev": { + "doctrine/dbal": "^2.13||^3.3||^4.0", + "doctrine/doctrine-bundle": "^2.6", + "friendsofphp/php-cs-fixer": "^2.19||^3.40", + "masterminds/html5": "^2.8", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "1.12.5", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-symfony": "1.4.10", + "phpunit/phpunit": "^8.5.40||^9.6.21", + "symfony/browser-kit": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/cache": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-client": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/messenger": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/monolog-bundle": "^3.4", + "symfony/phpunit-bridge": "^5.2.6||^6.0||^7.0", + "symfony/process": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/security-core": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/yaml": "^4.4.20||^5.0.11||^6.0||^7.0", + "vimeo/psalm": "^4.3||^5.16.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.", + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler.", + "symfony/cache": "Allow distributed tracing of cache pools using Sentry.", + "symfony/twig-bundle": "Allow distributed tracing of Twig template rendering using Sentry." + }, + "type": "symfony-bundle", + "autoload": { + "files": [ + "src/aliases.php" + ], + "psr-4": { + "Sentry\\SentryBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sentry", + "email": "accounts@sentry.io" + } + ], + "description": "Symfony integration for Sentry (http://getsentry.com)", + "homepage": "http://getsentry.com", + "keywords": [ + "errors", + "logging", + "sentry", + "symfony" + ], + "support": { + "issues": "https://github.com/getsentry/sentry-symfony/issues", + "source": "https://github.com/getsentry/sentry-symfony/tree/5.2.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], + "time": "2025-03-03T07:47:12+00:00" + }, + { + "name": "symfony/amqp-messenger", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/amqp-messenger.git", + "reference": "a90a95cef8e8290157aa97a74e4f03c34b575e12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/a90a95cef8e8290157aa97a74e4f03c34b575e12", + "reference": "a90a95cef8e8290157aa97a74e4f03c34b575e12", + "shasum": "" + }, + "require": { + "ext-amqp": "*", + "php": ">=8.2", + "symfony/messenger": "^6.4|^7.0" + }, + "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "type": "symfony-messenger-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony AMQP extension Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/amqp-messenger/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T10:56:55+00:00" + }, + { + "name": "symfony/asset", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/cb926cd59fefa1f9b4900b3695f0f846797ba5c0", + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/http-foundation": "<6.4" + }, + "require-dev": { + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-25T15:15:23+00:00" + }, + { + "name": "symfony/asset-mapper", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset-mapper.git", + "reference": "6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8", + "reference": "6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^7.1", + "symfony/http-client": "^6.4|^7.0" + }, + "conflict": { + "symfony/framework-bundle": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/event-dispatcher-contracts": "^3.0", + "symfony/finder": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\AssetMapper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset-mapper/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-26T11:29:07+00:00" + }, + { + "name": "symfony/cache", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/9131e3018872d2ebb6fe8a9a4d6631273513d42c", + "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.4|^7.0" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-25T15:54:33+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/config", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "7716594aaae91d9141be080240172a92ecca4d44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/7716594aaae91d9141be080240172a92ecca4d44", + "reference": "7716594aaae91d9141be080240172a92ecca4d44", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-22T12:07:01+00:00" + }, + { + "name": "symfony/console", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "e51498ea18570c062e7df29d05a7003585b19b88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", + "reference": "e51498ea18570c062e7df29d05a7003585b19b88", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-12T08:11:12+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "58ab71379f14a741755717cece2868bf41ed45d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/58ab71379f14a741755717cece2868bf41ed45d8", + "reference": "58ab71379f14a741755717cece2868bf41ed45d8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^3.5", + "symfony/var-exporter": "^6.4.20|^7.2.5" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "symfony/config": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T12:21:46+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "f8a298bbb8eaca08d787bf4d4c74728f1cf98922" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f8a298bbb8eaca08d787bf4d4c74728f1cf98922", + "reference": "f8a298bbb8eaca08d787bf4d4c74728f1cf98922", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^2", + "doctrine/persistence": "^3.1|^4", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/collections": "<1.8", + "doctrine/dbal": "<3.6", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.15", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/form": "<6.4.6|>=7,<7.0.6", + "symfony/http-foundation": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/lock": "<6.4", + "symfony/messenger": "<6.4", + "symfony/property-info": "<6.4", + "symfony/security-bundle": "<6.4", + "symfony/security-core": "<6.4", + "symfony/validator": "<6.4" + }, + "require-dev": { + "doctrine/collections": "^1.8|^2.0", + "doctrine/data-fixtures": "^1.1|^2", + "doctrine/dbal": "^3.6|^4", + "doctrine/orm": "^2.15|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/doctrine-messenger": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4.6|^7.0.6", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Doctrine with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-25T15:54:33+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "28347a897771d0c28e99b75166dd2689099f3045" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/28347a897771d0c28e99b75166dd2689099f3045", + "reference": "28347a897771d0c28e99b75166dd2689099f3045", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/process": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-27T11:18:42+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-03T07:12:39+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "26f4884a455e755e630a5fc372df124a3578da2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/26f4884a455e755e630a5fc372df124a3578da2e", + "reference": "26f4884a455e755e630a5fc372df124a3578da2e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-15T11:52:45+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-25T15:15:23+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.2.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.2.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-30T19:00:17+00:00" + }, + { + "name": "symfony/flex", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "8ce1acd9842abe0e9b4c4a0bd3f259859516c018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/8ce1acd9842abe0e9b4c4a0bd3f259859516c018", + "reference": "8ce1acd9842abe0e9b4c4a0bd3f259859516c018", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.1", + "php": ">=8.0" + }, + "conflict": { + "composer/semver": "<1.7.2" + }, + "require-dev": { + "composer/composer": "^2.1", + "symfony/dotenv": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v2.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-03T07:50:46+00:00" + }, + { + "name": "symfony/form", + "version": "v7.2.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "e4e75b930d7a1ccd47bd3273c859c28e13d89b08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/e4e75b930d7a1ccd47bd3273c859c28e13d89b08", + "reference": "e4e75b930d7a1ccd47bd3273c859c28e13d89b08", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/options-resolver": "^6.4|^7.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/error-handler": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows to easily create, process and reuse HTML forms", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/form/tree/v7.2.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-30T07:52:47+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "c1c6ee8946491b698b067df2258e07918c25da02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c1c6ee8946491b698b067df2258e07918c25da02", + "reference": "c1c6ee8946491b698b067df2258e07918c25da02", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^7.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/filesystem": "^7.1", + "symfony/finder": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^7.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^6.4|^7.0" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/asset": "<6.4", + "symfony/asset-mapper": "<6.4", + "symfony/clock": "<6.4", + "symfony/console": "<6.4", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/lock": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", + "symfony/security-core": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.2.5", + "symfony/stopwatch": "<6.4", + "symfony/translation": "<6.4", + "symfony/twig-bridge": "<6.4", + "symfony/twig-bundle": "<6.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/webhook": "<7.2", + "symfony/workflow": "<6.4" + }, + "require-dev": { + "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^6.4|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/scheduler": "^6.4.4|^7.0.4", + "symfony/security-bundle": "^6.4|^7.0", + "symfony/semaphore": "^6.4|^7.0", + "symfony/serializer": "^7.2.5", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/webhook": "^7.2", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-24T12:37:32+00:00" + }, + { + "name": "symfony/http-client", + "version": "v7.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "78981a2ffef6437ed92d4d7e2a86a82f256c6dc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/78981a2ffef6437ed92d4d7e2a86a82f256c6dc6", + "reference": "78981a2ffef6437ed92d4d7e2a86a82f256c6dc6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "amphp/amp": "<2.5", + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-13T10:27:23+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ee8d807ab20fcb51267fdace50fbe3494c31e645", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-07T08:49:48+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-25T15:54:33+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-28T13:32:50+00:00" + }, + { + "name": "symfony/intl", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/76bb3462c6c308f8bd97d3c178c2626ae44d4dea", + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/Resources/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides access to the localization data of the ICU library", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "support": { + "source": "https://github.com/symfony/intl/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-25T14:26:33+00:00" + }, + { + "name": "symfony/mercure", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mercure.git", + "reference": "304cf84609ef645d63adc65fc6250292909a461b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mercure/zipball/304cf84609ef645d63adc65fc6250292909a461b", + "reference": "304cf84609ef645d63adc65fc6250292909a461b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.0|^3.0|^4.0", + "symfony/http-client": "^4.4|^5.0|^6.0|^7.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0|^7.0", + "symfony/polyfill-php80": "^1.22", + "symfony/web-link": "^4.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "lcobucci/jwt": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0|^7.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0|^7.0", + "symfony/phpunit-bridge": "^5.2|^6.0|^7.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0|^7.0", + "twig/twig": "^2.0|^3.0|^4.0" + }, + "suggest": { + "symfony/stopwatch": "Integration with the profiler performances" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/dunglas/mercure", + "name": "dunglas/mercure" + }, + "branch-alias": { + "dev-main": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mercure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Mercure Component", + "homepage": "https://symfony.com", + "keywords": [ + "mercure", + "push", + "sse", + "updates" + ], + "support": { + "issues": "https://github.com/symfony/mercure/issues", + "source": "https://github.com/symfony/mercure/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/dunglas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/mercure", + "type": "tidelift" + } + ], + "time": "2024-04-08T12:51:34+00:00" + }, + { + "name": "symfony/mercure-bundle", + "version": "v0.3.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/mercure-bundle.git", + "reference": "77435d740b228e9f5f3f065b6db564f85f2cdb64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mercure-bundle/zipball/77435d740b228e9f5f3f065b6db564f85f2cdb64", + "reference": "77435d740b228e9f5f3f065b6db564f85f2cdb64", + "shasum": "" + }, + "require": { + "lcobucci/jwt": "^3.4|^4.0|^5.0", + "php": ">=7.1.3", + "symfony/config": "^4.4|^5.0|^6.0|^7.0", + "symfony/dependency-injection": "^4.4|^5.4|^6.0|^7.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0|^7.0", + "symfony/mercure": "^0.6.1", + "symfony/web-link": "^4.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.3.7|^5.0|^6.0|^7.0", + "symfony/stopwatch": "^4.3.7|^5.0|^6.0|^7.0", + "symfony/ux-turbo": "*", + "symfony/var-dumper": "^4.3.7|^5.0|^6.0|^7.0" + }, + "suggest": { + "symfony/messenger": "To use the Messenger integration" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MercureBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MercureBundle", + "homepage": "https://symfony.com", + "keywords": [ + "mercure", + "push", + "sse", + "updates" + ], + "support": { + "issues": "https://github.com/symfony/mercure-bundle/issues", + "source": "https://github.com/symfony/mercure-bundle/tree/v0.3.9" + }, + "funding": [ + { + "url": "https://github.com/dunglas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/mercure-bundle", + "type": "tidelift" + } + ], + "time": "2024-05-31T09:07:18+00:00" + }, + { + "name": "symfony/messenger", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/messenger.git", + "reference": "3ea7cdba88df1f36dad96289291a32cd9ab1862f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/messenger/zipball/3ea7cdba88df1f36dad96289291a32cd9ab1862f", + "reference": "3ea7cdba88df1f36dad96289291a32cd9ab1862f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/clock": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<7.2", + "symfony/event-dispatcher": "<6.4", + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/serializer": "<6.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/console": "^7.2", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Roze", + "email": "samuel.roze@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps applications send and receive messages to/from other applications or via message queues", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/messenger/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-04T12:34:02+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d", + "reference": "bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d", + "shasum": "" + }, + "require": { + "monolog/monolog": "^3", + "php": ">=8.2", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/security-core": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-14T18:16:08+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-06T17:08:13+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-20T11:17:29+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/security-core": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "763d2a91fea5681509ca01acbc1c5e450d127811" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811", + "reference": "763d2a91fea5681509ca01acbc1c5e450d127811", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance and support of other locales than \"en\"" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-21T18:38:29+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T12:04:04+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T12:21:46+00:00" + }, + { + "name": "symfony/property-access", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b28732e315d81fbec787f838034de7d6c9b2b902", + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" + }, + "require-dev": { + "symfony/cache": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T10:56:55+00:00" + }, + { + "name": "symfony/property-info", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "f00fd9685ecdbabe82ca25c7b739ce7bba99302c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/f00fd9685ecdbabe82ca25c7b739ce7bba99302c", + "reference": "f00fd9685ecdbabe82ca25c7b739ce7bba99302c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "~7.1.9|^7.2.2" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-06T16:27:19+00:00" + }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/03f2f72319e7acaf2a9f6fcbe30ef17eec51594f", + "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/http-message": "^1.0|^2.0", + "symfony/http-foundation": "^6.4|^7.0" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "php-http/discovery": "^1.15", + "psr/log": "^1.1.4|^2|^3", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "https://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-26T08:57:56+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T10:56:55+00:00" + }, + { + "name": "symfony/runtime", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/runtime.git", + "reference": "8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/runtime/zipball/8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad", + "reference": "8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=8.2" + }, + "conflict": { + "symfony/dotenv": "<6.4" + }, + "require-dev": { + "composer/composer": "^2.6", + "symfony/console": "^6.4|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Enables decoupling PHP applications from global state", + "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], + "support": { + "source": "https://github.com/symfony/runtime/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-29T21:39:47+00:00" + }, + { + "name": "symfony/scheduler", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/scheduler.git", + "reference": "9c23765119e5a373ea88dc1efa0c85ce933957f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/scheduler/zipball/9c23765119e5a373ea88dc1efa0c85ce933957f4", + "reference": "9c23765119e5a373ea88dc1efa0c85ce933957f4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/clock": "^6.4|^7.0" + }, + "require-dev": { + "dragonmantank/cron-expression": "^3.1", + "symfony/cache": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Scheduler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sergey Rabochiy", + "email": "upyx.00@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides scheduling through Symfony Messenger", + "homepage": "https://symfony.com", + "keywords": [ + "cron", + "schedule", + "scheduler" + ], + "support": { + "source": "https://github.com/symfony/scheduler/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T10:56:55+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/721de227035c6e4c322fb7dd4839586d58bc0cf5", + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.2", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0", + "symfony/security-core": "^7.2", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/console": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-client": "<6.4", + "symfony/ldap": "<6.4", + "symfony/serializer": "<6.4", + "symfony/twig-bundle": "<6.4", + "symfony/validator": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12", + "web-token/jwt-library": "^3.3.2|^4.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-bundle/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-07T09:39:55+00:00" + }, + { + "name": "symfony/security-core", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/466784ffcd0b5a16e05394335897f790b17d07e4", + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/ldap": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/validator": "<6.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/validator": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-core/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-27T11:08:17+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/security-core": "^6.4|^7.0" + }, + "conflict": { + "symfony/http-foundation": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-csrf/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T18:42:10+00:00" + }, + { + "name": "symfony/security-http", + "version": "v7.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "8478e95e273f8daa23bf4860dbad2a09d3fb3722" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/8478e95e273f8daa23bf4860dbad2a09d3fb3722", + "reference": "8478e95e273f8daa23bf4860dbad2a09d3fb3722", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/security-core": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/clock": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<6.4", + "symfony/security-csrf": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "web-token/jwt-library": "^3.3.2|^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-http/tree/v7.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-11T16:46:20+00:00" + }, + { + "name": "symfony/serializer", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "d8b75b2c8144c29ac43b235738411f7cca6d584d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d8b75b2c8144c29ac43b235738411f7cca6d584d", + "reference": "d8b75b2c8144c29ac43b235738411f7cca6d584d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/uid": "<6.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^7.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-24T12:37:32+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/stimulus-bundle", + "version": "v2.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stimulus-bundle.git", + "reference": "e09840304467cda3324cc116c7f4ee23c8ff227c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/e09840304467cda3324cc116c7f4ee23c8ff227c", + "reference": "e09840304467cda3324cc116c7f4ee23c8ff227c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.0|^3.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "twig/twig": "^2.15.3|^3.8" + }, + "require-dev": { + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "zenstruck/browser": "^1.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\UX\\StimulusBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Integration with your Symfony app & Stimulus!", + "keywords": [ + "symfony-ux" + ], + "support": { + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-09T21:10:04+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v7.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-24T10:49:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-13T13:31:26+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "b1942d5515b7f0a18e16fd668a04ea952db2b0f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/b1942d5515b7f0a18e16fd668a04ea952db2b0f2", + "reference": "b1942d5515b7f0a18e16fd668a04ea952db2b0f2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^3.12" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<6.4", + "symfony/form": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/mime": "<6.4", + "symfony/serializer": "<6.4", + "symfony/translation": "<6.4", + "symfony/workflow": "<6.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^6.4|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/emoji": "^7.1", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/form": "^6.4.20|^7.2.5", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-28T13:15:09+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "cd2be4563afaef5285bb6e0a06c5445e644a5c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/cd2be4563afaef5285bb6e0a06c5445e644a5c01", + "reference": "cd2be4563afaef5285bb6e0a06c5445e644a5c01", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.2", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "conflict": { + "symfony/framework-bundle": "<6.4", + "symfony/translation": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bundle/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-23T08:11:15+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "c4824a6b658294c828e609d3d8dbb4e87f6a375d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/c4824a6b658294c828e609d3d8dbb4e87f6a375d", + "reference": "c4824a6b658294c828e609d3d8dbb4e87f6a375d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.0|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-24T09:03:36+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/ux-live-component", + "version": "v2.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-live-component.git", + "reference": "ee1a8e5d01f5b3f2f8e6856941fa8c944677e41c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/ee1a8e5d01f5b3f2f8e6856941fa8c944677e41c", + "reference": "ee1a8e5d01f5b3f2f8e6856941fa8c944677e41c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/property-access": "^5.4.5|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/stimulus-bundle": "^2.9", + "symfony/ux-twig-component": "^2.8", + "twig/twig": "^3.8.0" + }, + "conflict": { + "symfony/config": "<5.4.0" + }, + "require-dev": { + "doctrine/annotations": "^1.0", + "doctrine/collections": "^1.6.8|^2.0", + "doctrine/doctrine-bundle": "^2.4.3", + "doctrine/orm": "^2.9.4", + "doctrine/persistence": "^2.5.2|^3.0", + "phpdocumentor/reflection-docblock": "5.x-dev", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/options-resolver": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0", + "zenstruck/browser": "^1.2.0", + "zenstruck/foundry": "^2.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\LiveComponent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Live components for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "components", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-live-component/tree/v2.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-12T08:41:47+00:00" + }, + { + "name": "symfony/ux-turbo", + "version": "v2.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-turbo.git", + "reference": "22954300bd0b01ca46f17c7890ea15138d9cf67f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/22954300bd0b01ca46f17c7890ea15138d9cf67f", + "reference": "22954300bd0b01ca46f17c7890ea15138d9cf67f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/stimulus-bundle": "^2.9.1" + }, + "conflict": { + "symfony/flex": "<1.13" + }, + "require-dev": { + "dbrekelmans/bdi": "dev-main", + "doctrine/doctrine-bundle": "^2.4.3", + "doctrine/orm": "^2.8 | 3.0", + "phpstan/phpstan": "^1.10", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/debug-bundle": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/mercure-bundle": "^0.3.7", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/panther": "^2.1", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|6.3.*|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "symfony/ux-twig-component": "^2.21", + "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\Turbo\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Hotwire Turbo integration for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "hotwire", + "javascript", + "mercure", + "symfony-ux", + "turbo", + "turbo-stream" + ], + "support": { + "source": "https://github.com/symfony/ux-turbo/tree/v2.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-04T17:29:20+00:00" + }, + { + "name": "symfony/ux-twig-component", + "version": "v2.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-twig-component.git", + "reference": "48a46e4c6215d41cc97ba8dff0cff21ea9b255a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/48a46e4c6215d41cc97ba8dff0cff21ea9b255a8", + "reference": "48a46e4c6215d41cc97ba8dff0cff21ea9b255a8", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "twig/twig": "^3.8" + }, + "conflict": { + "symfony/config": "<5.4.0" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^6.0|^7.0", + "symfony/stimulus-bundle": "^2.9.1", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/webpack-encore-bundle": "^1.15" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\TwigComponent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Twig components for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "components", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-twig-component/tree/v2.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-21T20:14:36+00:00" + }, + { + "name": "symfony/validator", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "d7edd7f44defbc4e0230512f929b5f4c067bb93e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/d7edd7f44defbc4e0230512f929b5f4c067bb93e", + "reference": "d7edd7f44defbc4e0230512f929b5f4c067bb93e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/lexer": "<1.1", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<7.0", + "symfony/expression-language": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/intl": "<6.4", + "symfony/property-info": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/type-info": "^7.1", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/Resources/bin/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-21T15:05:21+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-17T11:39:41+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "c37b301818bd7288715d40de634f05781b686ace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c37b301818bd7288715d40de634f05781b686ace", + "reference": "c37b301818bd7288715d40de634f05781b686ace", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T12:21:46+00:00" + }, + { + "name": "symfony/web-link", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/f537556a885e14a1d28f6c759d41e57e93d0a532", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/link": "^1.1|^2.0" + }, + "conflict": { + "symfony/http-kernel": "<6.4" + }, + "provide": { + "psr/link-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { - "name": "psr/log", - "version": "3.0.0", + "name": "symfony/yaml", + "version": "v7.2.5", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "url": "https://github.com/symfony/yaml.git", + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", "autoload": { "psr-4": { - "Psr\\Log\\": "src" - } + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1075,48 +8212,68 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/symfony/yaml/tree/v7.2.5" }, - "time": "2021-07-14T16:46:02+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-03T07:12:39+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "symfonycasts/tailwind-bundle", + "version": "v0.6.1", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/SymfonyCasts/tailwind-bundle.git", + "reference": "28db7cfe23758cffc79f25a7c75cdb2fca52e9d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/SymfonyCasts/tailwind-bundle/zipball/28db7cfe23758cffc79f25a7c75cdb2fca52e9d9", + "reference": "28db7cfe23758cffc79f25a7c75cdb2fca52e9d9", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=8.1", + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/cache": "^6.3|^7.0", + "symfony/console": "^5.4|^6.3|^7.0", + "symfony/http-client": "^5.4|^6.3|^7.0", + "symfony/process": "^5.4|^6.3|^7.0" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "phpunit/phpunit": "^9.6", + "symfony/filesystem": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3.9|^7.0" }, "type": "library", "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "Symfonycasts\\TailwindBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1124,288 +8281,273 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Ryan Weaver", + "homepage": "https://symfonycasts.com" } ], - "description": "A polyfill for getallheaders.", + "description": "Delightful Tailwind Support for Symfony + AssetMapper", + "keywords": [ + "asset-mapper", + "tailwind" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/SymfonyCasts/tailwind-bundle/issues", + "source": "https://github.com/SymfonyCasts/tailwind-bundle/tree/v0.6.1" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2024-11-06T18:41:22+00:00" }, { - "name": "sentry/sdk", - "version": "3.1.1", + "name": "twig/extra-bundle", + "version": "v3.20.0", "source": { "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "2de7de3233293f80d1e244bd950adb2121a3731c" + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "9df5e1dbb6a68c0665ae5603f6f2c20815647876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/2de7de3233293f80d1e244bd950adb2121a3731c", - "reference": "2de7de3233293f80d1e244bd950adb2121a3731c", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/9df5e1dbb6a68c0665ae5603f6f2c20815647876", + "reference": "9df5e1dbb6a68c0665ae5603f6f2c20815647876", "shasum": "" }, "require": { - "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.1", - "symfony/http-client": "^4.3|^5.0|^6.0" + "php": ">=8.1.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "twig/twig": "^3.2|^4.0" + }, + "require-dev": { + "league/commonmark": "^1.0|^2.0", + "symfony/phpunit-bridge": "^6.4|^7.0", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^3.0", + "twig/html-extra": "^3.0", + "twig/inky-extra": "^3.0", + "twig/intl-extra": "^3.0", + "twig/markdown-extra": "^3.0", + "twig/string-extra": "^3.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Sentry", - "email": "accounts@sentry.io" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], - "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", - "homepage": "http://sentry.io", + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" + "bundle", + "extra", + "twig" ], "support": { - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.1.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.20.0" }, "funding": [ { - "url": "https://sentry.io/", - "type": "custom" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://sentry.io/pricing/", - "type": "custom" + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" } ], - "time": "2021-11-30T11:54:41+00:00" + "time": "2025-02-08T09:47:15+00:00" }, { - "name": "sentry/sentry", - "version": "3.3.5", + "name": "twig/intl-extra", + "version": "v3.20.0", "source": { "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "c186c44c32899ad0cf5b4e942d71035f01b87b64" + "url": "https://github.com/twigphp/intl-extra.git", + "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/c186c44c32899ad0cf5b4e942d71035f01b87b64", - "reference": "c186c44c32899ad0cf5b4e942d71035f01b87b64", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/05bc5d46b9df9e62399eae53e7c0b0633298b146", + "reference": "05bc5d46b9df9e62399eae53e7c0b0633298b146", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7|^2.0", - "jean85/pretty-package-versions": "^1.5|^2.0.4", - "php": "^7.2|^8.0", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.6.1", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", - "psr/log": "^1.0|^2.0|^3.0", - "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-uuid": "^1.13.1" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" + "php": ">=8.1.0", + "symfony/intl": "^5.4|^6.4|^7.0", + "twig/twig": "^3.13|^4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "http-interop/http-factory-guzzle": "^1.0", - "monolog/monolog": "^1.3|^2.0", - "nikic/php-parser": "^4.10.3", - "php-http/mock-client": "^1.3", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5.14|^9.4", - "symfony/phpunit-bridge": "^5.2|^6.0", - "vimeo/psalm": "^4.2" - }, - "suggest": { - "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Sentry\\": "src/" - } + "Twig\\Extra\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sentry", - "email": "accounts@sentry.io" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" } ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", + "description": "A Twig extension for Intl", + "homepage": "https://twig.symfony.com", "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" + "intl", + "twig" ], "support": { - "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.3.5" + "source": "https://github.com/twigphp/intl-extra/tree/v3.20.0" }, "funding": [ { - "url": "https://sentry.io/", - "type": "custom" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://sentry.io/pricing/", - "type": "custom" + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" } ], - "time": "2021-12-27T12:31:24+00:00" + "time": "2025-01-31T20:45:36+00:00" }, { - "name": "symfony/amqp-messenger", - "version": "v6.0.1", + "name": "twig/twig", + "version": "v3.20.0", "source": { "type": "git", - "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "03ce5a12ea2d48f2bf2833e123b68cf5d3056fa5" + "url": "https://github.com/twigphp/Twig.git", + "reference": "3468920399451a384bef53cf7996965f7cd40183" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/03ce5a12ea2d48f2bf2833e123b68cf5d3056fa5", - "reference": "03ce5a12ea2d48f2bf2833e123b68cf5d3056fa5", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183", + "reference": "3468920399451a384bef53cf7996965f7cd40183", "shasum": "" }, "require": { - "ext-amqp": "*", - "php": ">=8.0.2", - "symfony/messenger": "^5.4|^6.0" + "php": ">=8.1.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "phpstan/phpstan": "^2.0", + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, - "type": "symfony-messenger-bridge", + "type": "library", "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Twig\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" } ], - "description": "Symfony AMQP extension Messenger Bridge", - "homepage": "https://symfony.com", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v6.0.1" + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.20.0" }, "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/twig/twig", "type": "tidelift" } ], - "time": "2021-12-08T15:13:44+00:00" + "time": "2025-02-13T08:34:43+00:00" }, { - "name": "symfony/config", - "version": "v6.0.2", + "name": "webmozart/assert", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "990e6d603da7b9556645e5689c7b082f564790e7" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/990e6d603da7b9556645e5689c7b082f564790e7", - "reference": "990e6d603da7b9556645e5689c7b082f564790e7", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^5.4|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php81": "^1.22" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { - "symfony/finder": "<4.4" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Webmozart\\Assert\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1413,87 +8555,51 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], "support": { - "source": "https://github.com/symfony/config/tree/v6.0.2" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-12-28T14:01:53+00:00" - }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ { - "name": "symfony/dependency-injection", - "version": "v6.0.2", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "a9346ef44ea8a7b60f1f1edc8d802ffb91baa6a8" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a9346ef44ea8a7b60f1f1edc8d802ffb91baa6a8", - "reference": "a9346ef44ea8a7b60f1f1edc8d802ffb91baa6a8", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<5.4", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "symfony/service-implementation": "1.1|2.0|3.0" + "php": ">=5.3", + "react/stream": "^1.2" }, "require-dev": { - "symfony/config": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Clue\\React\\NDJson\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1501,66 +8607,76 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Christian Lück", + "email": "christian@clue.engineering" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.0.2" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://clue.engineering/support", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/clue", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-12-29T10:14:09+00:00" + "time": "2022-12-23T10:58:28+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", + "name": "composer/pcre", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" + "phpstan": { + "includes": [ + "extension.neon" + ] }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "branch-alias": { + "dev-main": "3.x-dev" } }, "autoload": { - "files": [ - "function.php" - ] + "psr-4": { + "Composer\\Pcre\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1568,64 +8684,67 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2021-11-01T23:48:49+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { - "name": "symfony/dotenv", - "version": "v6.0.2", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "5c43c5515e549a8c2c426be36d40f47daf196968" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/5c43c5515e549a8c2c426be36d40f47daf196968", - "reference": "5c43c5515e549a8c2c426be36d40f47daf196968", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": ">=8.0.2" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1633,87 +8752,83 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", + "description": "Restarts a process without Xdebug.", "keywords": [ - "dotenv", - "env", - "environment" + "Xdebug", + "performance" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.0.2" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/composer", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2021-12-16T22:05:41+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v6.0.2", + "name": "doctrine/data-fixtures", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "7093f25359e2750bfe86842c80c4e4a6a852d05c" + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7093f25359e2750bfe86842c80c4e4a6a852d05c", - "reference": "7093f25359e2750bfe86842c80c4e4a6a852d05c", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" + "doctrine/persistence": "^3.1 || ^4.0", + "php": "^8.1", + "psr/log": "^1.1 || ^2 || ^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5.3", + "symfony/cache": "^6.4 || ^7", + "symfony/var-exporter": "^6.4 || ^7" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Doctrine\\Common\\DataFixtures\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1721,69 +8836,76 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.2" + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/2.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures", "type": "tidelift" } ], - "time": "2021-12-21T10:43:13+00:00" + "time": "2025-01-21T13:21:31+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", + "name": "doctrine/doctrine-fixtures-bundle", + "version": "3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "bd59519a7532b9e1a41cef4049d5326dfac7def9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/bd59519a7532b9e1a41cef4049d5326dfac7def9", + "reference": "bd59519a7532b9e1a41cef4049d5326dfac7def9", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" + "doctrine/data-fixtures": "^1.5 || ^2.0", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4 || ^3.0", + "php": "^7.4 || ^8.0", + "psr/log": "^1 || ^2 || ^3", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.48 || ^6.4.16 || ^7.1.9", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" + "conflict": { + "doctrine/dbal": "< 3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6" }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" + "Doctrine\\Bundle\\FixturesBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1792,70 +8914,69 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "Fixture", + "persistence" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.7.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle", "type": "tidelift" } ], - "time": "2021-07-15T12:33:35+00:00" + "time": "2024-12-03T17:07:51+00:00" }, { - "name": "symfony/filesystem", - "version": "v6.0.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "52b3c9cce673b014915445a432339f282e002ce6" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/52b3c9cce673b014915445a432339f282e002ce6", - "reference": "52b3c9cce673b014915445a432339f282e002ce6", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Evenement\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1863,83 +8984,62 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" } ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.0.0" + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-29T07:35:21+00:00" + "time": "2023-08-08T05:53:35+00:00" }, { - "name": "symfony/http-client", - "version": "v6.0.2", + "name": "fakerphp/faker", + "version": "v1.24.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "7f1cbd44590cb0acc6208c1711a52733e9a91663" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/7f1cbd44590cb0acc6208c1711a52733e9a91663", - "reference": "7f1cbd44590cb0acc6208c1711a52733e9a91663", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" + "conflict": { + "fzaninotto/faker": "*" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0" + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Faker\\": "src/Faker/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1947,68 +9047,53 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "François Zaninotto" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.0.2" + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-12-29T10:14:09+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v3.0.0", + "name": "fidry/cpu-core-counter", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/265f03fed057044a8e4dc159aa33596d0f48ed3f", - "reference": "265f03fed057044a8e4dc159aa33596d0f48ed3f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" + "Fidry\\CpuCoreCounter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2017,91 +9102,96 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" } ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", + "description": "Tiny utility to get the number of CPU cores.", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "CPU", + "core" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.0" + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/theofidry", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-11-03T13:44:55+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { - "name": "symfony/messenger", - "version": "v6.0.2", + "name": "friendsofphp/php-cs-fixer", + "version": "v3.75.0", "source": { "type": "git", - "url": "https://github.com/symfony/messenger.git", - "reference": "d06af83ca257e905e43d341ecabc031efb85ead6" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/d06af83ca257e905e43d341ecabc031efb85ead6", - "reference": "d06af83ca257e905e43d341ecabc031efb85ead6", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/399a128ff2fdaf4281e4e79b755693286cdf325c", + "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/event-dispatcher": "<5.4", - "symfony/framework-bundle": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/serializer": "<5.4" + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.2", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", + "symfony/polyfill-mbstring": "^1.31", + "symfony/polyfill-php80": "^1.31", + "symfony/polyfill-php81": "^1.31", + "symfony/process": "^5.4 || ^6.4 || ^7.2", + "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0" + "facile-it/paraunit": "^1.3.1 || ^2.6", + "infection/infection": "^0.29.14", + "justinrainbow/json-schema": "^5.3 || ^6.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.12", + "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.3", + "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.3" }, "suggest": { - "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." }, - "type": "library", + "bin": [ + "php-cs-fixer" + ], + "type": "application", "autoload": { "psr-4": { - "Symfony\\Component\\Messenger\\": "" + "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "/Tests/" + "src/Fixer/Internal/*" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2110,1071 +9200,1070 @@ ], "authors": [ { - "name": "Samuel Roze", - "email": "samuel.roze@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" } ], - "description": "Helps applications send and receive messages to/from other applications or via message queues", - "homepage": "https://symfony.com", + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { - "source": "https://github.com/symfony/messenger/tree/v6.0.2" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.75.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/keradus", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-12-16T22:05:41+00:00" + "time": "2025-03-31T18:40:42+00:00" }, { - "name": "symfony/options-resolver", - "version": "v6.0.0", + "name": "myclabs/deep-copy", + "version": "1.13.0", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "be0facf48a42a232d6c0daadd76e4eb5657a4798" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/be0facf48a42a232d6c0daadd76e4eb5657a4798", - "reference": "be0facf48a42a232d6c0daadd76e4eb5657a4798", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "config", - "configuration", - "options" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.0.0" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", "type": "tidelift" } ], - "time": "2021-11-23T19:05:29+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "nikic/php-parser", + "version": "v5.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] + "PhpParser\\": "lib/PhpParser" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Nikita Popov" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "A PHP parser written in PHP", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "parser", + "php" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/theseer", "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2021-05-27T12:26:48+00:00" + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "name": "phpstan/phpstan", + "version": "2.1.12", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", + "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.4|^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "dev", + "static analysis" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/ondrejmirtes", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://github.com/phpstan", + "type": "github" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2025-04-16T13:19:18+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "name": "phpstan/phpstan-doctrine", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "url": "https://github.com/phpstan/phpstan-doctrine.git", + "reference": "a61a04a361b60014ec04881ccb87252d3bf02e94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/a61a04a361b60014ec04881ccb87252d3bf02e94", + "reference": "a61a04a361b60014ec04881ccb87252d3bf02e94", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0.3" }, - "type": "library", + "conflict": { + "doctrine/collections": "<1.0", + "doctrine/common": "<2.7", + "doctrine/mongodb-odm": "<1.2", + "doctrine/orm": "<2.5", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "cache/array-adapter": "^1.1", + "composer/semver": "^3.3.2", + "cweagans/composer-patches": "^1.7.3", + "doctrine/annotations": "^2.0", + "doctrine/collections": "^1.6 || ^2.1", + "doctrine/common": "^2.7 || ^3.0", + "doctrine/dbal": "^3.3.8", + "doctrine/lexer": "^2.0 || ^3.0", + "doctrine/mongodb-odm": "^2.4.3", + "doctrine/orm": "^2.16.0", + "doctrine/persistence": "^2.2.1 || ^3.2", + "gedmo/doctrine-extensions": "^3.8", + "nesbot/carbon": "^2.49", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6.20", + "ramsey/uuid": "^4.2", + "symfony/cache": "^5.4" + }, + "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "PHPStan\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "description": "Doctrine extensions for PHPStan", "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "issues": "https://github.com/phpstan/phpstan-doctrine/issues", + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2025-03-03T09:29:16+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.24.0", + "name": "phpunit/php-code-coverage", + "version": "10.1.16", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "7529922412d23ac44413d0f308861d50cf68d3ee" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/7529922412d23ac44413d0f308861d50cf68d3ee", - "reference": "7529922412d23ac44413d0f308861d50cf68d3ee", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, - "provide": { - "ext-uuid": "*" + "require-dev": { + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-uuid": "For best performance" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-main": "10.1.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" + "coverage", + "testing", + "xunit" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.24.0" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { - "name": "symfony/service-contracts", - "version": "v3.0.0", + "name": "phpunit/php-file-iterator", + "version": "4.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", - "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" + "php": ">=8.1" }, - "suggest": { - "symfony/service-implementation": "" + "require-dev": { + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-main": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "filesystem", + "iterator" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.0.0" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-11-04T17:53:12+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { - "name": "symfony/var-dumper", - "version": "v6.0.2", + "name": "phpunit/php-invoker", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "41e46f64084a205459a862751158ce2190bd5cb5" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41e46f64084a205459a862751158ce2190bd5cb5", - "reference": "41e46f64084a205459a862751158ce2190bd5cb5", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" + "php": ">=8.1" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "ext-pcntl": "*" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "debug", - "dump" + "process" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.0.2" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, + "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-12-29T10:14:09+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { - "name": "symfony/yaml", - "version": "v6.0.2", + "name": "phpunit/php-text-template", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "ed602f38b8636a2ea21af760d2578f3d2f92fc60" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/ed602f38b8636a2ea21af760d2578f3d2f92fc60", - "reference": "ed602f38b8636a2ea21af760d2578f3d2f92fc60", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" + "php": ">=8.1" }, "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "phpunit/phpunit": "^10.0" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/v6.0.2" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-12-16T22:13:01+00:00" - } - ], - "packages-dev": [ + "time": "2023-08-31T14:07:24+00:00" + }, { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "phpunit/php-timer", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "constructor", - "instantiate" + "timer" ], "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "phpunit/phpunit", + "version": "10.5.45", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bd68a781d8e30348bc297449f5234b3458267ae8", + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" }, + "bin": [ + "phpunit" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ - "src/DeepCopy/deep_copy.php" + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.45" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2025-02-06T16:08:12+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.13.2", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "React\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "A PHP parser written in PHP", + "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ - "parser", - "php" + "cache", + "caching", + "promise", + "reactphp" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" }, - "time": "2021-11-30T19:35:32+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "react/child-process", + "version": "v0.6.6", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/reactphp/child-process.git", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\ChildProcess\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-01-01T16:37:48+00:00" }, { - "name": "phar-io/version", - "version": "3.1.0", + "name": "react/dns", + "version": "v1.13.0", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Dns\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Library for handling version information and constraints", + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" }, - "time": "2021-02-23T14:00:09+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "react/event-loop", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.3.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "React\\EventLoop\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3183,59 +10272,71 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "asynchronous", + "event-loop" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "react/promise", + "version": "v3.2.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "php": ">=7.1.0" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "React\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3244,52 +10345,75 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" }, { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" }, - "time": "2021-10-19T17:43:47+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.5.1", + "name": "react/socket", + "version": "v1.16.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + "url": "https://github.com/reactphp/socket.git", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" }, "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "React\\Socket\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3298,51 +10422,73 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.16.0" }, - "time": "2021-10-02T14:08:47+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-07-26T10:38:09+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "react/stream", + "version": "v1.4.0", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "React\\Stream\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3351,132 +10497,132 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" }, - "time": "2021-12-08T12:19:24+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", + "name": "rector/rector", + "version": "2.0.12", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + "url": "https://github.com/rectorphp/rector.git", + "reference": "a7f9b968f6c15abfd0d2a1442c9dcd9ade677192" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/a7f9b968f6c15abfd0d2a1442c9dcd9ade677192", + "reference": "a7f9b968f6c15abfd0d2a1442c9dcd9ade677192", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.12" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" }, + "bin": [ + "bin/rector" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "MIT" ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Instant Upgrade and Automated Refactoring of any PHP code", "keywords": [ - "coverage", - "testing", - "xunit" + "automation", + "dev", + "migration", + "refactoring" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.0.12" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/tomasvotruba", "type": "github" } ], - "time": "2021-12-05T09:12:13+00:00" + "time": "2025-04-22T12:47:33+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "name": "sebastian/cli-parser", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -3495,15 +10641,12 @@ "role": "lead" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -3511,36 +10654,32 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "sebastian/code-unit", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -3559,14 +10698,11 @@ "role": "lead" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -3574,32 +10710,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3614,18 +10750,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -3633,32 +10765,36 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { - "name": "phpunit/php-timer", + "name": "sebastian/comparator", "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3673,18 +10809,32 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "timer" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -3692,75 +10842,38 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.11", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2406855036db1102126125537adb1406f7242fdd" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", - "reference": "2406855036db1102126125537adb1406f7242fdd", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "phpunit/phpunit": "^10.0" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-main": "3.2-dev" } }, "autoload": { "classmap": [ "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3774,53 +10887,46 @@ "role": "lead" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2021-12-25T07:07:57+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "sebastian/diff", + "version": "5.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -3834,16 +10940,26 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -3851,32 +10967,35 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "sebastian/environment", + "version": "6.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -3891,15 +11010,20 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -3907,32 +11031,34 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "sebastian/exporter", + "version": "5.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -3948,13 +11074,34 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -3962,34 +11109,35 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.6", + "name": "sebastian/global-state", + "version": "6.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "ext-dom": "*", + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4005,30 +11153,17 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ - "comparator", - "compare", - "equality" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -4036,33 +11171,33 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { - "name": "sebastian/complexity", + "name": "sebastian/lines-of-code", "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -4081,11 +11216,12 @@ "role": "lead" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -4093,33 +11229,34 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.4", + "name": "sebastian/object-enumerator", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4135,23 +11272,13 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -4159,35 +11286,32 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "sebastian/object-reflector", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -4205,16 +11329,11 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -4222,34 +11341,32 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.4", + "name": "sebastian/recursion-context", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4270,28 +11387,16 @@ "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -4299,38 +11404,32 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.3", + "name": "sebastian/type", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4345,17 +11444,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -4363,33 +11460,29 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "sebastian/version", + "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4408,11 +11501,11 @@ "role": "lead" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -4420,264 +11513,427 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "squizlabs/php_codesniffer", + "version": "3.12.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } + ], + "time": "2025-04-13T04:10:18+00:00" + }, + { + "name": "symfony/debug-bundle", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "2dade0d1415c08b627379b5ec214ec8424cb2e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/2dade0d1415c08b627379b5ec214ec8424cb2e32", + "reference": "2dade0d1415c08b627379b5ec214ec8424cb2e32", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=8.2", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4" + }, + "require-dev": { + "symfony/config": "^6.4|^7.0", + "symfony/web-profiler-bundle": "^6.4|^7.0" }, + "type": "symfony-bundle", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/symfony/debug-bundle/tree/v7.2.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "symfony/phpunit-bridge", + "version": "v7.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "2bbde92ab25a0e2c88160857af7be9db5da0d145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2bbde92ab25a0e2c88160857af7be9db5da0d145", + "reference": "2bbde92ab25a0e2c88160857af7be9db5da0d145", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.2.5" + }, + "conflict": { + "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.4|^7.0", + "symfony/polyfill-php81": "^1.27" }, - "type": "library", + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", "extra": { - "branch-alias": { - "dev-master": "2.0-dev" + "thanks": { + "url": "https://github.com/sebastianbergmann/phpunit", + "name": "phpunit/phpunit" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/bin/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.2.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2024-11-13T16:15:23+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "symfony/polyfill-php81", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.0-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "symfony/web-profiler-bundle", + "version": "v7.2.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "4ffde1c860a100533b02697d9aaf5f45759ec26a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4ffde1c860a100533b02697d9aaf5f45759ec26a", + "reference": "4ffde1c860a100533b02697d9aaf5f45759ec26a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.2", + "symfony/config": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "twig/twig": "^3.12" }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "conflict": { + "symfony/form": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/serializer": "<7.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "require-dev": { + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" }, + "type": "symfony-bundle", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.4" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2025-02-14T14:27:24+00:00" }, { - "name": "sebastian/type", - "version": "2.3.4", + "name": "theseer/tokenizer", + "version": "1.2.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "classmap": [ "src/" @@ -4689,162 +11945,198 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/theseer", "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "zenstruck/assert", + "version": "v1.5.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/zenstruck/assert.git", + "reference": "39554ce3a275fbf8c870b251e620101f644e9277" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/zenstruck/assert/zipball/39554ce3a275fbf8c870b251e620101f644e9277", + "reference": "39554ce3a275fbf8c870b251e620101f644e9277", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.0", + "symfony/polyfill-php81": "^1.23", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5.21", + "symfony/phpunit-bridge": "^6.3|^7.0" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Zenstruck\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Standalone, lightweight, framework agnostic, test assertion library.", + "homepage": "https://github.com/zenstruck/assert", + "keywords": [ + "assertion", + "phpunit", + "test" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "issues": "https://github.com/zenstruck/assert/issues", + "source": "https://github.com/zenstruck/assert/tree/v1.5.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/kbond", "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2024-10-28T18:08:12+00:00" }, { - "name": "theseer/tokenizer", - "version": "1.2.1", + "name": "zenstruck/callback", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "url": "https://github.com/zenstruck/callback.git", + "reference": "eed9a532fd8974368e60c4a2550ed65eab7e5432" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/zenstruck/callback/zipball/eed9a532fd8974368e60c4a2550ed65eab7e5432", + "reference": "eed9a532fd8974368e60c4a2550ed65eab7e5432", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.14" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.2" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Zenstruck\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" } ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "description": "Callable wrapper to validate and inject arguments.", + "homepage": "https://github.com/zenstruck/callback", + "keywords": [ + "callable", + "callback", + "utility" + ], "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "issues": "https://github.com/zenstruck/callback/issues", + "source": "https://github.com/zenstruck/callback/tree/v1.5.0" }, "funding": [ { - "url": "https://github.com/theseer", + "url": "https://github.com/kbond", "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2022-08-31T14:56:15+00:00" }, { - "name": "webmozart/assert", - "version": "1.10.0", + "name": "zenstruck/foundry", + "version": "v1.38.6", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "url": "https://github.com/zenstruck/foundry.git", + "reference": "774956af2d7ccb17ffa5e9ed385c786849c84bb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/zenstruck/foundry/zipball/774956af2d7ccb17ffa5e9ed385c786849c84bb2", + "reference": "774956af2d7ccb17ffa5e9ed385c786849c84bb2", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "doctrine/persistence": "^1.3.3|^2.0|^3.0|^4.0", + "fakerphp/faker": "^1.10", + "php": ">=8.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "zenstruck/assert": "^1.0", + "zenstruck/callback": "^1.1" }, "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "doctrine/mongodb-odm": "2.5.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.13" + "bamarni/composer-bin-plugin": "^1.8", + "dama/doctrine-test-bundle": "^7.0|^8.0", + "doctrine/doctrine-bundle": "^2.5", + "doctrine/doctrine-migrations-bundle": "^2.2|^3.0", + "doctrine/mongodb-odm": "^2.4", + "doctrine/mongodb-odm-bundle": "^4.4.0|^5.0", + "doctrine/orm": "^2.11|^3.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.1|^5.0", + "phpunit/phpunit": "^9.5.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/maker-bundle": "^1.49", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.10-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false, + "target-directory": "bin/tools" } }, "autoload": { + "files": [ + "src/functions.php", + "src/Persistence/functions.php" + ], "psr-4": { - "Webmozart\\Assert\\": "src/" + "Zenstruck\\Foundry\\": "src/", + "Zenstruck\\Foundry\\Utils\\Rector\\": "utils/rector/src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4853,35 +12145,46 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "A model factory library for creating expressive, auto-completable, on-demand dev/test fixtures with Symfony and Doctrine.", + "homepage": "https://github.com/zenstruck/foundry", "keywords": [ - "assert", - "check", - "validate" + "Fixture", + "dev", + "doctrine", + "factory", + "faker", + "symfony", + "test" ], "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "issues": "https://github.com/zenstruck/foundry/issues", + "source": "https://github.com/zenstruck/foundry/tree/v1.38.6" }, - "time": "2021-03-09T10:59:23+00:00" + "funding": [ + { + "url": "https://github.com/kbond", + "type": "github" + } + ], + "time": "2025-04-02T11:40:23+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.1", + "php": "~8.4", "ext-curl": "*", + "ext-openssl": "*", "ext-pdo": "*", - "ext-redis": "*", - "ext-openssl": "*" + "ext-redis": "*" }, - "platform-dev": [], - "plugin-api-version": "2.1.0" + "platform-dev": {}, + "plugin-api-version": "2.6.0" } diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 000000000..f8166c3ec --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,22 @@ + ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], + Sentry\SentryBundle\SentryBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Zenstruck\Foundry\ZenstruckFoundryBundle::class => ['dev' => true, 'test' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MercureBundle\MercureBundle::class => ['all' => true], + Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true], + Symfony\UX\Turbo\TurboBundle::class => ['all' => true], + Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true], + Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], + Symfony\UX\LiveComponent\LiveComponentBundle::class => ['all' => true], +]; diff --git a/config/doctrine/ares/Commander.orm.xml b/config/doctrine/ares/Commander.orm.xml new file mode 100644 index 000000000..c7c86e334 --- /dev/null +++ b/config/doctrine/ares/Commander.orm.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/ares/Report.orm.xml b/config/doctrine/ares/Report.orm.xml new file mode 100644 index 000000000..edf528889 --- /dev/null +++ b/config/doctrine/ares/Report.orm.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/ares/Squadron.orm.xml b/config/doctrine/ares/Squadron.orm.xml new file mode 100644 index 000000000..631124896 --- /dev/null +++ b/config/doctrine/ares/Squadron.orm.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/artemis/SpyReport.orm.xml b/config/doctrine/artemis/SpyReport.orm.xml new file mode 100644 index 000000000..fc746627b --- /dev/null +++ b/config/doctrine/artemis/SpyReport.orm.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/BuildingQueue.orm.xml b/config/doctrine/athena/BuildingQueue.orm.xml new file mode 100644 index 000000000..837d435c1 --- /dev/null +++ b/config/doctrine/athena/BuildingQueue.orm.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/CommercialRoute.orm.xml b/config/doctrine/athena/CommercialRoute.orm.xml new file mode 100644 index 000000000..981c0a105 --- /dev/null +++ b/config/doctrine/athena/CommercialRoute.orm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/CommercialShipping.orm.xml b/config/doctrine/athena/CommercialShipping.orm.xml new file mode 100644 index 000000000..346d5e963 --- /dev/null +++ b/config/doctrine/athena/CommercialShipping.orm.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/CommercialTax.orm.xml b/config/doctrine/athena/CommercialTax.orm.xml new file mode 100644 index 000000000..e0bf2b0a9 --- /dev/null +++ b/config/doctrine/athena/CommercialTax.orm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/OrbitalBase.orm.xml b/config/doctrine/athena/OrbitalBase.orm.xml new file mode 100644 index 000000000..8fd3cc84e --- /dev/null +++ b/config/doctrine/athena/OrbitalBase.orm.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/RecyclingLog.orm.xml b/config/doctrine/athena/RecyclingLog.orm.xml new file mode 100644 index 000000000..a75d955c9 --- /dev/null +++ b/config/doctrine/athena/RecyclingLog.orm.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/RecyclingMission.orm.xml b/config/doctrine/athena/RecyclingMission.orm.xml new file mode 100644 index 000000000..d682a83cb --- /dev/null +++ b/config/doctrine/athena/RecyclingMission.orm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/ShipQueue.orm.xml b/config/doctrine/athena/ShipQueue.orm.xml new file mode 100644 index 000000000..036a660cc --- /dev/null +++ b/config/doctrine/athena/ShipQueue.orm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/config/doctrine/athena/Transaction.orm.xml b/config/doctrine/athena/Transaction.orm.xml new file mode 100644 index 000000000..0d95f2c9f --- /dev/null +++ b/config/doctrine/athena/Transaction.orm.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/atlas/FactionRanking.orm.xml b/config/doctrine/atlas/FactionRanking.orm.xml new file mode 100644 index 000000000..f08a2e54a --- /dev/null +++ b/config/doctrine/atlas/FactionRanking.orm.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/atlas/PlayerRanking.orm.xml b/config/doctrine/atlas/PlayerRanking.orm.xml new file mode 100644 index 000000000..93e3cf48e --- /dev/null +++ b/config/doctrine/atlas/PlayerRanking.orm.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/atlas/Ranking.orm.xml b/config/doctrine/atlas/Ranking.orm.xml new file mode 100644 index 000000000..ada7e7394 --- /dev/null +++ b/config/doctrine/atlas/Ranking.orm.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/config/doctrine/demeter/Color.orm.xml b/config/doctrine/demeter/Color.orm.xml new file mode 100644 index 000000000..7b1945fcd --- /dev/null +++ b/config/doctrine/demeter/Color.orm.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Election.Candidate.orm.xml b/config/doctrine/demeter/Election.Candidate.orm.xml new file mode 100644 index 000000000..b6e318d87 --- /dev/null +++ b/config/doctrine/demeter/Election.Candidate.orm.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Election.Election.orm.xml b/config/doctrine/demeter/Election.Election.orm.xml new file mode 100644 index 000000000..f16c01670 --- /dev/null +++ b/config/doctrine/demeter/Election.Election.orm.xml @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/config/doctrine/demeter/Election.Vote.orm.xml b/config/doctrine/demeter/Election.Vote.orm.xml new file mode 100644 index 000000000..e28176051 --- /dev/null +++ b/config/doctrine/demeter/Election.Vote.orm.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Forum.FactionNews.orm.xml b/config/doctrine/demeter/Forum.FactionNews.orm.xml new file mode 100644 index 000000000..ade36db0b --- /dev/null +++ b/config/doctrine/demeter/Forum.FactionNews.orm.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Forum.ForumMessage.orm.xml b/config/doctrine/demeter/Forum.ForumMessage.orm.xml new file mode 100644 index 000000000..bb2bcc79d --- /dev/null +++ b/config/doctrine/demeter/Forum.ForumMessage.orm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Forum.ForumTopic.orm.xml b/config/doctrine/demeter/Forum.ForumTopic.orm.xml new file mode 100644 index 000000000..17e915e8e --- /dev/null +++ b/config/doctrine/demeter/Forum.ForumTopic.orm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Forum.ForumTopicLastView.orm.xml b/config/doctrine/demeter/Forum.ForumTopicLastView.orm.xml new file mode 100644 index 000000000..4b502989b --- /dev/null +++ b/config/doctrine/demeter/Forum.ForumTopicLastView.orm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Law.Law.orm.xml b/config/doctrine/demeter/Law.Law.orm.xml new file mode 100644 index 000000000..965c4124d --- /dev/null +++ b/config/doctrine/demeter/Law.Law.orm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/demeter/Law.VoteLaw.orm.xml b/config/doctrine/demeter/Law.VoteLaw.orm.xml new file mode 100644 index 000000000..a367b18a3 --- /dev/null +++ b/config/doctrine/demeter/Law.VoteLaw.orm.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/gaia/Place.orm.xml b/config/doctrine/gaia/Place.orm.xml new file mode 100644 index 000000000..0ef016dae --- /dev/null +++ b/config/doctrine/gaia/Place.orm.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/gaia/Sector.orm.xml b/config/doctrine/gaia/Sector.orm.xml new file mode 100644 index 000000000..f36261807 --- /dev/null +++ b/config/doctrine/gaia/Sector.orm.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/gaia/System.orm.xml b/config/doctrine/gaia/System.orm.xml new file mode 100644 index 000000000..ad127cbcb --- /dev/null +++ b/config/doctrine/gaia/System.orm.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/hermes/Conversation.orm.xml b/config/doctrine/hermes/Conversation.orm.xml new file mode 100644 index 000000000..ce7bd0b57 --- /dev/null +++ b/config/doctrine/hermes/Conversation.orm.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/config/doctrine/hermes/ConversationMessage.orm.xml b/config/doctrine/hermes/ConversationMessage.orm.xml new file mode 100644 index 000000000..9426a33da --- /dev/null +++ b/config/doctrine/hermes/ConversationMessage.orm.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/config/doctrine/hermes/ConversationUser.orm.xml b/config/doctrine/hermes/ConversationUser.orm.xml new file mode 100644 index 000000000..220449937 --- /dev/null +++ b/config/doctrine/hermes/ConversationUser.orm.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/config/doctrine/hermes/Notification.orm.xml b/config/doctrine/hermes/Notification.orm.xml new file mode 100644 index 000000000..9c8239240 --- /dev/null +++ b/config/doctrine/hermes/Notification.orm.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/config/doctrine/promethee/Research.orm.xml b/config/doctrine/promethee/Research.orm.xml new file mode 100644 index 000000000..404060cd1 --- /dev/null +++ b/config/doctrine/promethee/Research.orm.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/promethee/Technology.orm.xml b/config/doctrine/promethee/Technology.orm.xml new file mode 100644 index 000000000..07e3e1e43 --- /dev/null +++ b/config/doctrine/promethee/Technology.orm.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/promethee/TechnologyQueue.orm.xml b/config/doctrine/promethee/TechnologyQueue.orm.xml new file mode 100644 index 000000000..bc9bc4060 --- /dev/null +++ b/config/doctrine/promethee/TechnologyQueue.orm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/zeus/CreditTransaction.orm.xml b/config/doctrine/zeus/CreditTransaction.orm.xml new file mode 100644 index 000000000..c7d77a40b --- /dev/null +++ b/config/doctrine/zeus/CreditTransaction.orm.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/zeus/Player.orm.xml b/config/doctrine/zeus/Player.orm.xml new file mode 100644 index 000000000..c1555c4d2 --- /dev/null +++ b/config/doctrine/zeus/Player.orm.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/doctrine/zeus/PlayerFinancialReport.orm.xml b/config/doctrine/zeus/PlayerFinancialReport.orm.xml new file mode 100644 index 000000000..c89a60983 --- /dev/null +++ b/config/doctrine/zeus/PlayerFinancialReport.orm.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/packages/asset_mapper.yaml b/config/packages/asset_mapper.yaml new file mode 100644 index 000000000..f7653e97f --- /dev/null +++ b/config/packages/asset_mapper.yaml @@ -0,0 +1,11 @@ +framework: + asset_mapper: + # The paths to make available to the asset mapper. + paths: + - assets/ + missing_import_mode: strict + +when@prod: + framework: + asset_mapper: + missing_import_mode: warn diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml new file mode 100644 index 000000000..6899b7200 --- /dev/null +++ b/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/config/packages/csrf.yaml b/config/packages/csrf.yaml new file mode 100644 index 000000000..40d40405e --- /dev/null +++ b/config/packages/csrf.yaml @@ -0,0 +1,11 @@ +# Enable stateless CSRF protection for forms and logins/logouts +framework: + form: + csrf_protection: + token_id: submit + + csrf_protection: + stateless_token_ids: + - submit + - authenticate + - logout diff --git a/config/packages/dev/debug.yaml b/config/packages/dev/debug.yaml new file mode 100644 index 000000000..26d4e53d2 --- /dev/null +++ b/config/packages/dev/debug.yaml @@ -0,0 +1,4 @@ +debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml new file mode 100644 index 000000000..e92166a7f --- /dev/null +++ b/config/packages/dev/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: true + intercept_redirects: false + +framework: + profiler: { only_exceptions: false } diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 000000000..67c7dfa0f --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,94 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + profiling_collect_backtrace: true + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '13' + orm: + auto_generate_proxy_classes: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + auto_mapping: true + validate_xml_mapping: false # Will have to be true for Doctrine 4.0 but actually bugged + enable_lazy_ghost_objects: true + mappings: + Ares: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/ares' + prefix: 'App\Modules\Ares\Model' + Artemis: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/artemis' + prefix: 'App\Modules\Artemis\Model' + Athena: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/athena' + prefix: 'App\Modules\Athena\Model' + Atlas: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/atlas' + prefix: 'App\Modules\Atlas\Model' + Demeter: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/demeter' + prefix: 'App\Modules\Demeter\Model' + Gaia: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/gaia' + prefix: 'App\Modules\Gaia\Model' + Hephaistos: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/hephaistos' + prefix: 'App\Modules\Hephaistos\Model' + Hermes: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/hermes' + prefix: 'App\Modules\Hermes\Model' + Portal: + is_bundle: false + type: 'attribute' + dir: '%kernel.project_dir%/src/Modules/Portal/Domain/Entity' + prefix: 'App\Modules\Portal\Domain\Entity' + Promethee: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/promethee' + prefix: 'App\Modules\Promethee\Model' + Zeus: + is_bundle: false + type: 'xml' + dir: '%kernel.project_dir%/config/doctrine/zeus' + prefix: 'App\Modules\Zeus\Model' + +when@test: + doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 000000000..a0a17a084 --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,6 @@ +doctrine_migrations: + migrations_paths: + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + 'DoctrineMigrations': '%kernel.project_dir%/migrations' + enable_profiler: '%kernel.debug%' diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 000000000..7853e9ed5 --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,24 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + http_method_override: false + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + storage_factory_id: session.storage.factory.native + + #esi: true + #fragments: true + php_errors: + log: true + +when@test: + framework: + test: true + session: + storage_factory_id: session.storage.factory.mock_file diff --git a/config/packages/mercure.yaml b/config/packages/mercure.yaml new file mode 100644 index 000000000..f2a739540 --- /dev/null +++ b/config/packages/mercure.yaml @@ -0,0 +1,8 @@ +mercure: + hubs: + default: + url: '%env(MERCURE_URL)%' + public_url: '%env(MERCURE_PUBLIC_URL)%' + jwt: + secret: '%env(MERCURE_JWT_SECRET)%' + publish: '*' diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml new file mode 100644 index 000000000..edfd3b6b1 --- /dev/null +++ b/config/packages/messenger.yaml @@ -0,0 +1,23 @@ +framework: + messenger: + # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. + # failure_transport: failed + + transports: + # https://symfony.com/doc/current/messenger.html#transport-configuration + async_high_priority: + dsn: '%env(MESSENGER_TRANSPORT_DSN)%' + options: + exchange: + name: high + queues: + messages_high: ~ + async: + dsn: '%env(MESSENGER_TRANSPORT_DSN)%' + # failed: 'doctrine://default?queue_name=failed' + # sync: 'sync://' + + routing: + # Route your messages to the transports + App\Shared\Domain\Message\AsyncMessage: async + App\Shared\Domain\Message\AsyncHighPriorityMessage: async_high_priority diff --git a/config/packages/mixpanel.yaml b/config/packages/mixpanel.yaml new file mode 100644 index 000000000..08a625617 --- /dev/null +++ b/config/packages/mixpanel.yaml @@ -0,0 +1,7 @@ +services: + Mixpanel: + class: \Mixpanel + factory: ['Mixpanel', 'getInstance'] + arguments: + - '%env(MIXPANEL_PROJECT_TOKEN)%' + - { 'host': 'api-eu.mixpanel.com' } diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml new file mode 100644 index 000000000..e444646c5 --- /dev/null +++ b/config/packages/monolog.yaml @@ -0,0 +1,62 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] + +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: debug + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: rotating_file + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + formatter: monolog.formatter.json + max_files: 10 + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 000000000..4b766ce57 --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,12 @@ +framework: + router: + utf8: true + + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + #default_uri: http://localhost + +when@prod: + framework: + router: + strict_requirements: null diff --git a/config/packages/security.yaml b/config/packages/security.yaml new file mode 100644 index 000000000..42a3c366c --- /dev/null +++ b/config/packages/security.yaml @@ -0,0 +1,49 @@ +security: + # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords + password_hashers: + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' + # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider + providers: + portal_user_provider: + entity: + class: App\Modules\Portal\Domain\Entity\User + property: email + users_in_memory: { memory: null } + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + lazy: true + provider: portal_user_provider + form_login: + login_path: login + check_path: login + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#the-firewall + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + - { route: 'homepage', roles: PUBLIC_ACCESS } + - { path: ^/login/*, roles: PUBLIC_ACCESS } + - { path: ^/registration/*, roles: PUBLIC_ACCESS } + - { path: ^/*, roles: IS_AUTHENTICATED_FULLY } + +when@test: + security: + password_hashers: + # By default, password hashers are resource intensive and take time. This is + # important to generate secure password hashes. In tests however, secure hashes + # are not important, waste resources and increase test times. The following + # reduces the work factor to the lowest possible values. + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: + algorithm: auto + cost: 4 # Lowest possible value for bcrypt + time_cost: 3 # Lowest possible value for argon + memory_cost: 10 # Lowest possible value for argon diff --git a/config/packages/sentry.yaml b/config/packages/sentry.yaml new file mode 100644 index 000000000..342036fe4 --- /dev/null +++ b/config/packages/sentry.yaml @@ -0,0 +1,2 @@ +sentry: + dsn: '%env(SENTRY_DSN)%' diff --git a/config/packages/symfonycasts_tailwind.yaml b/config/packages/symfonycasts_tailwind.yaml new file mode 100644 index 000000000..84c1bff7f --- /dev/null +++ b/config/packages/symfonycasts_tailwind.yaml @@ -0,0 +1,2 @@ +symfonycasts_tailwind: + binary_version: 'v3.4.0' diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml new file mode 100644 index 000000000..03752de21 --- /dev/null +++ b/config/packages/test/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: false + intercept_redirects: false + +framework: + profiler: { collect: false } diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 000000000..d564b137c --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,7 @@ +twig: + default_path: '%kernel.project_dir%/templates' + debug: '%kernel.debug%' + +when@test: + twig: + strict_variables: true diff --git a/config/packages/twig_component.yaml b/config/packages/twig_component.yaml new file mode 100644 index 000000000..06b69e253 --- /dev/null +++ b/config/packages/twig_component.yaml @@ -0,0 +1,6 @@ +twig_component: + anonymous_template_directory: 'components/' + defaults: + # Namespace & directory for components + App\Modules\Shared\Infrastructure\Twig\Components\: 'components/' + App\Modules\Demeter\Infrastructure\Twig\Components\: 'components/Faction/' diff --git a/config/packages/uid.yaml b/config/packages/uid.yaml new file mode 100644 index 000000000..01520944f --- /dev/null +++ b/config/packages/uid.yaml @@ -0,0 +1,4 @@ +framework: + uid: + default_uuid_version: 7 + time_based_uuid_version: 7 diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml new file mode 100644 index 000000000..0201281d3 --- /dev/null +++ b/config/packages/validator.yaml @@ -0,0 +1,13 @@ +framework: + validation: + email_validation_mode: html5 + + # Enables validator auto-mapping support. + # For instance, basic validation constraints will be inferred from Doctrine's metadata. + #auto_mapping: + # App\Entity\: [] + +when@test: + framework: + validation: + not_compromised_password: false diff --git a/config/packages/zenstruck_foundry.yaml b/config/packages/zenstruck_foundry.yaml new file mode 100644 index 000000000..0657d2c3c --- /dev/null +++ b/config/packages/zenstruck_foundry.yaml @@ -0,0 +1,7 @@ +when@dev: &dev + # See full configuration: https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#full-default-bundle-configuration + zenstruck_foundry: + # Whether to auto-refresh proxies by default (https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#auto-refresh) + auto_refresh_proxies: true + +when@test: *dev diff --git a/config/preload.php b/config/preload.php new file mode 100644 index 000000000..e22201b5c --- /dev/null +++ b/config/preload.php @@ -0,0 +1,5 @@ +} + controller: App\Modules\Athena\Infrastructure\Controller\Base\Building\TradeMarketController + defaults: + mode: market + +spatioport: + path: /spatioport + controller: App\Modules\Athena\Infrastructure\Controller\Base\Building\ViewSpatioport + +school: + path: /school + controller: App\Modules\Athena\Infrastructure\Controller\Base\Building\ViewSchool + +view_building_panel: + path: /buildings/{identifier}/panel + controller: App\Modules\Athena\Infrastructure\Controller\Base\Building\ViewBuildingPanel + +create_recycling_mission: + path: /recycling-missions/create/{targetId} + controller: App\Modules\Athena\Infrastructure\Controller\Recycling\CreateMission + methods: 'POST' + +add_recyclers_to_mission: + path: /recycling-missions/{id}/add-recyclers + controller: App\Modules\Athena\Infrastructure\Controller\Recycling\AddToMission + methods: 'POST' + +cancel_recycling_mission: + path: /recycling-missions/{id}/cancel + controller: App\Modules\Athena\Infrastructure\Controller\Recycling\CancelMission + +recycle_ships: + path: /ships/recycle + controller: App\Modules\Athena\Infrastructure\Controller\Ship\Recycle + +build_ships: + path: /ships/build + controller: App\Modules\Athena\Infrastructure\Controller\Ship\BuildShips + +load_ship_panel: + path: /ships/{shipNumber}/panel + controller: App\Modules\Athena\Infrastructure\Controller\Ship\ViewShipPanel + +cancel_ship_queue: + path: /ship-queues/{id}/cancel + controller: App\Modules\Athena\Infrastructure\Controller\Ship\CancelQueue + +autocomplete_base: + path: /api/bases/{search} + controller: App\Modules\Athena\Infrastructure\Controller\Base\AutocompleteBase diff --git a/config/routes/athena/financial.yaml b/config/routes/athena/financial.yaml new file mode 100644 index 000000000..3624d3b29 --- /dev/null +++ b/config/routes/athena/financial.yaml @@ -0,0 +1,34 @@ +financial_investments: + path: /investments + controller: App\Modules\Athena\Infrastructure\Controller\Financial\ViewInvestments + methods: 'GET' + +financial_transfers: + path: /transfers + controller: App\Modules\Athena\Infrastructure\Controller\Financial\ViewTransfers + methods: 'GET' + +financial_reports: + path: /reports + controller: App\Modules\Athena\Infrastructure\Controller\Financial\ViewReports + methods: 'GET' + +send_credits_to_player: + path: /send-credits-to-player + controller: App\Modules\Athena\Infrastructure\Controller\Financial\SendCreditsToPlayer + methods: 'POST' + +send_credits_to_faction: + path: /send-credits-to-faction + controller: App\Modules\Athena\Infrastructure\Controller\Financial\SendCreditsToFaction + methods: 'POST' + +update_university_investments: + path: /university-investments + controller: App\Modules\Athena\Infrastructure\Controller\Financial\UpdateUniversityInvestments + methods: 'POST' + +update_base_investments: + path: /bases/{baseId}/investments/{category} + controller: App\Modules\Athena\Infrastructure\Controller\Financial\UpdateBaseInvestments + methods: 'POST' diff --git a/config/routes/athena/trade.yaml b/config/routes/athena/trade.yaml new file mode 100644 index 000000000..b0cdb9f70 --- /dev/null +++ b/config/routes/athena/trade.yaml @@ -0,0 +1,46 @@ +# Routes +propose_route: + path: /routes/propose + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Route\Propose + +cancel_route: + path: /bases/{baseId}/routes/{id}/cancel + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Route\Cancel + +delete_route: + path: /bases/{baseId}/routes/{id}/cancel + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Route\Delete + +accept_commercial_route: + path: /bases/{baseId}/routes/{id}/accept + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Route\Accept + +refuse_commercial_route: + path: /bases/{baseId}/routes/{id}/refuse + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Route\Refuse + +# Offers +propose_offer: + path: /offers/ + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Offer\Propose + methods: 'POST' + +accept_offer: + path: /offers/{id}/accept + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Offer\Accept + methods: 'GET' + +cancel_offer: + path: /offers/{id}/cancel + controller: App\Modules\Athena\Infrastructure\Controller\Trade\Offer\Cancel + methods: 'POST' + +give_ships: + path: /give-ships + controller: App\Modules\Athena\Infrastructure\Controller\Trade\GiveShips + methods: 'POST' + +give_resources: + path: /give-resources + controller: App\Modules\Athena\Infrastructure\Controller\Trade\GiveResources + methods: 'POST' diff --git a/config/routes/atlas.yaml b/config/routes/atlas.yaml new file mode 100644 index 000000000..1fbb3b5c3 --- /dev/null +++ b/config/routes/atlas.yaml @@ -0,0 +1,15 @@ +map: + path: /map + controller: App\Modules\Atlas\Infrastructure\Controller\MapController + +player_rankings: + path: /rankings/player + controller: App\Modules\Atlas\Infrastructure\Controller\ViewPlayerRankings + +faction_rankings: + path: /rankings/faction + controller: App\Modules\Atlas\Infrastructure\Controller\ViewFactionRankings + +view_more_rankings: + path: /rankings/more + controller: App\Modules\Atlas\Infrastructure\Controller\ViewMore diff --git a/config/routes/demeter.yaml b/config/routes/demeter.yaml new file mode 100644 index 000000000..9fe9e099d --- /dev/null +++ b/config/routes/demeter.yaml @@ -0,0 +1,116 @@ +embassy: + path: /embassy + controller: App\Modules\Demeter\Infrastructure\Controller\ViewEmbassy + +faction_overview: + path: /faction + controller: App\Modules\Demeter\Infrastructure\Controller\ViewOverview + +faction_members: + path: /faction/members + controller: App\Modules\Demeter\Infrastructure\Controller\ViewMembers + +faction_government: + path: /faction/government + controller: App\Modules\Demeter\Infrastructure\Controller\ViewGovernment + +faction_data: + path: /faction/data + controller: App\Modules\Demeter\Infrastructure\Controller\ViewData + +faction_forum: + path: /faction/forum/{forumId} + controller: App\Modules\Demeter\Infrastructure\Controller\ViewForum + defaults: + forumId: null + +view_forum_topic: + path: /faction/forum/{forumId}/topics/{topicId} + controller: App\Modules\Demeter\Infrastructure\Controller\Forum\ViewTopic + +write_forum_message: + path: /faction/forum/{forumId}/topics/{topicId}/messages + controller: App\Modules\Demeter\Infrastructure\Controller\Forum\WriteMessage + methods: ['POST'] + +edit_forum_message: + path: /faction/forum/{forumId}/topics/{topicId}/messages/{messageId} + controller: App\Modules\Demeter\Infrastructure\Controller\Forum\EditMessage + methods: ['POST'] + +create_forum_topic: + path: /faction/forum/{forumId}/topics + controller: App\Modules\Demeter\Infrastructure\Controller\Forum\CreateTopic + methods: ['POST'] + +faction_senate: + path: /faction/senate + controller: App\Modules\Demeter\Infrastructure\Controller\ViewSenate + +view_faction_election: + path: /faction/election + controller: App\Modules\Demeter\Infrastructure\Controller\ViewElection + +initiate_faction_coup: + path: /faction/coup + controller: App\Modules\Demeter\Infrastructure\Controller\MakeACoup + +abdicate: + path: /abdicate + controller: App\Modules\Demeter\Infrastructure\Controller\Government\Ruler\Abdicate + +resign: + path: /resign + controller: App\Modules\Demeter\Infrastructure\Controller\Government\Resign + +write_faction_conversation: + path: /faction/write-conversation + controller: App\Modules\Demeter\Infrastructure\Controller\Government\WriteToFaction + +create_law: + path: /faction/law/create + controller: App\Modules\Demeter\Infrastructure\Controller\Government\CreateLaw + +send_credits_from_faction: + path: /faction/send-credits + controller: App\Modules\Demeter\Infrastructure\Controller\Government\SendCredits + +update_faction_description: + path: /faction/update-description + controller: App\Modules\Demeter\Infrastructure\Controller\Government\UpdateDescription + +pin_faction_news: + path: /faction/news/{id}/pin + controller: App\Modules\Demeter\Infrastructure\Controller\News\Pin + +create_faction_news: + path: /faction/news/create + controller: App\Modules\Demeter\Infrastructure\Controller\News\Create + +edit_faction_news: + path: /faction/news/{id}/edit + controller: App\Modules\Demeter\Infrastructure\Controller\News\Edit + +delete_faction_news: + path: /faction/news/{id}/delete + controller: App\Modules\Demeter\Infrastructure\Controller\News\Delete + +choose_minister: + path: /faction/government/{department}/choose-minister + controller: App\Modules\Demeter\Infrastructure\Controller\Government\Ruler\ChooseMinister + +fire_minister: + path: /faction/government/ministers/{id}/fire + controller: App\Modules\Demeter\Infrastructure\Controller\Government\Ruler\FireMinister + +postulate: + path: /faction/elections/{id}/postulate + controller: App\Modules\Demeter\Infrastructure\Controller\Postulate + +vote_for_candidate: + path: /faction/elections/{electionId}/candidates/{candidateId}/vote + controller: App\Modules\Demeter\Infrastructure\Controller\VoteForCandidate + +vote_for_law: + path: /faction/laws/{id}/vote + controller: App\Modules\Demeter\Infrastructure\Controller\VoteForLaw diff --git a/config/routes/dev/web_profiler.yaml b/config/routes/dev/web_profiler.yaml new file mode 100644 index 000000000..c82beff2f --- /dev/null +++ b/config/routes/dev/web_profiler.yaml @@ -0,0 +1,7 @@ +web_profiler_wdt: + resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml' + prefix: /_wdt + +web_profiler_profiler: + resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml' + prefix: /_profiler diff --git a/config/routes/framework.yaml b/config/routes/framework.yaml new file mode 100644 index 000000000..0fc74bbac --- /dev/null +++ b/config/routes/framework.yaml @@ -0,0 +1,4 @@ +when@dev: + _errors: + resource: '@FrameworkBundle/Resources/config/routing/errors.xml' + prefix: /_error diff --git a/config/routes/gaia.yaml b/config/routes/gaia.yaml new file mode 100644 index 000000000..d32fbd2c7 --- /dev/null +++ b/config/routes/gaia.yaml @@ -0,0 +1,7 @@ +load_system: + path: /systems/{id} + controller: App\Modules\Gaia\Ui\Http\LoadSystem + +map_sandbox: + path: /map-sandbox + controller: App\Modules\Gaia\Ui\Http\ViewMapSandbox diff --git a/config/routes/promethee.yaml b/config/routes/promethee.yaml new file mode 100644 index 000000000..92648465a --- /dev/null +++ b/config/routes/promethee.yaml @@ -0,0 +1,21 @@ +university: + path: /university + controller: App\Modules\Promethee\Infrastructure\Controller\ViewUniversity + +update_university_category_investments: + path: /api/university/{category}/{operation} + methods: 'PATCH' + controller: App\Modules\Promethee\Infrastructure\Controller\UpdateUniversityInvestments + +search_technology: + path: /technologies/{identifier}/search + controller: App\Modules\Promethee\Infrastructure\Controller\SearchTechnology + +cancel_technology_queue: + path: /technology-queues/{identifier}/cancel + controller: App\Modules\Promethee\Infrastructure\Controller\CancelTechnologyQueue + +view_technology_panel: + path: /technologies/{identifier}/panel + controller: App\Modules\Promethee\Infrastructure\Controller\ViewTechnologyPanel + diff --git a/config/routes/routes.yaml b/config/routes/routes.yaml new file mode 100644 index 000000000..84e51cf42 --- /dev/null +++ b/config/routes/routes.yaml @@ -0,0 +1,29 @@ +ares: + resource: + path: ../../src/Modules/Ares/Infrastructure/Controller/ + namespace: App\Modules\Ares\Infrastructure\Controller + type: attribute + +zeus: + resource: '../../src/Modules/Zeus/Infrastructure/Controller/' + type: attribute + +portal: + resource: '../../src/Modules/Portal/Infrastructure/Controller/' + type: attribute + +connect: + path: /connect/{playerId} + controller: App\Shared\Infrastructure\Controller\ConnectController + +logout: + path: /logout + controller: App\Shared\Infrastructure\Controller\LogoutController + +params: + path: /params + controller: App\Shared\Infrastructure\Controller\ParamsController + +switch_param: + path: /param + controller: App\Shared\Infrastructure\Controller\SwitchParam diff --git a/config/routes/security.yaml b/config/routes/security.yaml new file mode 100644 index 000000000..f853be15c --- /dev/null +++ b/config/routes/security.yaml @@ -0,0 +1,3 @@ +_security_logout: + resource: security.route_loader.logout + type: service diff --git a/config/routes/ux_live_component.yaml b/config/routes/ux_live_component.yaml new file mode 100644 index 000000000..e56523abf --- /dev/null +++ b/config/routes/ux_live_component.yaml @@ -0,0 +1,5 @@ +live_component: + resource: '@LiveComponentBundle/config/routes.php' + prefix: '/_components' + # adjust prefix to add localization to your components + #prefix: '/{_locale}/_components' diff --git a/config/routes/zeus.yaml b/config/routes/zeus.yaml new file mode 100644 index 000000000..7cba27e12 --- /dev/null +++ b/config/routes/zeus.yaml @@ -0,0 +1,24 @@ +profile: + path: /profile + controller: App\Modules\Zeus\Infrastructure\Controller\ProfileController + +tutorial_validatestep: + path: /tutorial/validate-step + controller: App\Modules\Zeus\Infrastructure\Controller\Tutorial\ValidateStep + +sponsorship: + path: /sponsorship + controller: App\Modules\Zeus\Infrastracture\Controller\SponsorController + +autocomplete_player: + path: /api/players/search + controller: App\Modules\Zeus\Infrastructure\Controller\AutocompletePlayers + +switch_param: + path: /switch_param + controller: App\Modules\Zeus\Infrastructure\Controller\AutocompletePlayers + +search_player: + path: /players/search + controller: App\Modules\Zeus\Infrastructure\Controller\SearchPlayer + diff --git a/config/services.yaml b/config/services.yaml new file mode 100644 index 000000000..802337118 --- /dev/null +++ b/config/services.yaml @@ -0,0 +1,152 @@ +imports: + - { resource: ../src/Modules/Ares/Resource/config/config.yml } + - { resource: ../src/Modules/Artemis/Resource/config/config.yml } + - { resource: ../src/Modules/Athena/Resource/config/config.yml } + - { resource: ../src/Modules/Atlas/Resource/config/config.yml } + - { resource: ../src/Modules/Demeter/Resource/config/config.yml } + - { resource: ../src/Modules/Gaia/Resource/config/config.yml } + - { resource: ../src/Modules/Hephaistos/Resource/config/config.yml } + - { resource: ../src/Modules/Hermes/Resource/config/config.yml } + - { resource: ../src/Modules/Promethee/Resource/config/config.yml } + - { resource: ../src/Modules/Zeus/Resource/config/config.yml } + +parameters: + session_lifetime: 1800 + log_directory: var/logs + log_rotation: 3 + daily_script_hour: 3 + gaia.galaxy_configuration.class: App\Modules\Gaia\Galaxy\GalaxyConfigurationV6 + game.available_factions: [1, 2, 3, 4, 7] + + apimode: 'disabled' + + server_id: 0 + server_start_time: '%env(SERVER_START_TIME)%' + server_segment_shift: '%env(SERVER_SEGMENT_SHIFT)%' + server_time_mode: '%env(enum:App\\Modules\\Shared\\Domain\\Server\\TimeMode:SERVER_TIME_MODE)%' + + security_api_key: '%env(SECURITY_API_KEY)%' + + redis_timeout: '%env(REDIS_TIMEOUT)%' + + facebook_link: 'https://www.facebook.com/asylamba' + google_plus_link: 'https://plus.google.com/+Asylamba-game' + twitter_link: 'https://twitter.com/asylamba' + + # asm constantes + asm_umode: true + + # event constantes + event_base: 0 # correspond à une construction (batiment ou vaisseau) dans une base + event_outgoing_attack: 1 + event_incoming_attack: 2 + + # constante de temps pour la mise à jour des événements dans loadEvent.php + # 300 s = 5 minutes + time_event_update: 300 + + # constantes pour le contre-espionnage + antispy_out_of_circle: 0 + antispy_big_circle: 1 + antispy_middle_circle: 2 + antispy_little_circle: 3 + + # pour Game::antiSpyRadius() + antispy_display_mode: 0 + antispy_game_mode: 1 + + pam_coeftax: 1 + rsm_researchquantity: 10 + + # durée en heures avant que le classement total démarre + # 2 semaines = 336 h + # 20 jours = 480h + hours_before_start_of_ranking: 480 + points_to_win: 2000 + + media: '/media/' + # active les APIs de confirmation + # active la création de personnage au niveau 5 + highmode: '%env(bool:HIGH_LEVEL_MODE)%' + # MISCELLANEOUS # + ################# + # définition des ids des différants joueurs systèmes + id_gaia: 1 + id_jeanmi: 2 + shift_faction: 2 + # date de début du serveur + messenger_logs: '%env(default::MESSENGER_LOGS)%' + sentry_dsn: '%env(default::SENTRY_DSN)%' + database_host: '%env(DATABASE_HOST)%' + database_name: '%env(DATABASE_NAME)%' + database_user: '%env(DATABASE_USER)%' + database_password: '%env(DATABASE_PASSWORD)%' + database_admin_user: '%env(DATABASE_ADMIN_USER)%' + database_admin_password: '%env(DATABASE_PASSWORD)%' + + env(MESSENGER_TRANSPORT_DSN): '%env(RABBITMQ_DSN)%' + +services: + # default configuration for services in *this* file + _defaults: + autowire: true # Automatically injects dependencies in your services. + autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. + + # makes classes in src/ available to be used as services + # this creates a service per class whose id is the fully-qualified class name + App\: + resource: '../src/' + exclude: + - '../src/Kernel.php' + - '../src/action/' + - '../src/api/' + - '../src/buffer/' + - '../src/connection/' + - '../src/event/' + - '../src/inscription/' + - '../src/script/' + - '../src/views/' + - '../src/Modules/' + + App\Modules\Portal\: + resource: '../src/Modules/Portal/' + exclude: + - '../src/Modules/Shared/Domain/{!Service}' + + App\Modules\Shared\: + resource: '../src/Modules/Shared/' + exclude: + - '../src/Modules/Shared/Application/PercentageApplier' + - '../src/Modules/Shared/Domain/{!Service}' + + Symfony\Component\Dotenv\Command\DotenvDumpCommand: ~ + + # add more service definitions when explicit configuration is needed + # please note that last definitions always *replace* previous ones + + App\Shared\Infrastructure\Controller\: + resource: '../src/Shared/Infrastructure/Controller/' + tags: ['controller.service_arguments'] + + App\Modules\Portal\Infrastructure\Controller\: + resource: '../src/Modules/Portal/Infrastructure/Controller/' + tags: ['controller.service_arguments'] + + App\Classes\Library\Parser: + arguments: + $mediaPath: '%media%' + + App\Classes\Redis\RedisManager: + arguments: + $host: '%env(REDIS_HOST)%' + $port: '%env(int:REDIS_PORT)%' + $password: '%env(default::REDIS_PASSWORD)%' + $timeout: "%redis_timeout%" + + App\Shared\Infrastructure\EventListener\MixpanelListener: + arguments: + $environment: '%kernel.environment%' + + App\Modules\Travel\Domain\Service\CalculateTravelTime: + + App\Modules\Travel\Domain\Service\GetTravelDuration: diff --git a/config/services.yml b/config/services.yml deleted file mode 100644 index c02088fbf..000000000 --- a/config/services.yml +++ /dev/null @@ -1,251 +0,0 @@ ---- -# This file is auto-generated during the composer install -parameters: - # définition des ROOT - system_path: '%root_path%/system' - classes_path: '%system_path%/Classes' - - modules: '%system_path%/Modules/' - lib: '%classes_path%/lib/' - config: '%system_path%/config/' - event: '%system_path%/event/' - - inscription: '%system_path%/inscription/' - connection: '%system_path%/connection/' - - action: '%system_path%/action/std/' - ajax: '%system_path%/action/ajax/' - - api: '%system_path%/api/' - script: '%system_path%/script/' - buffer: '%system_path%/buffer/' - - template: '%system_path%/views/templates/' - pages: '%system_path%/views/pages/' - component: '%system_path%/views/components/' - session_lifetime: 1800 - log_directory: var/logs - log_rotation: 3 - daily_script_hour: 3 - gaia.galaxy_configuration.class: Asylamba\Modules\Gaia\Galaxy\GalaxyConfigurationV6 - game.available_factions: [1, 2, 3, 4, 7] - - - facebook_link: 'https://www.facebook.com/asylamba' - google_plus_link: 'https://plus.google.com/+Asylamba-game' - twitter_link: 'https://twitter.com/asylamba' - - # asm constantes - asm_umode: true - - # event constantes - event_base: 0 # correspond à une construction (batiment ou vaisseau) dans une base - event_outgoing_attack: 1 - event_incoming_attack: 2 - - # constante de temps pour la mise à jour des événements dans loadEvent.php - # 300 s = 5 minutes - time_event_update: 300 - - # constantes pour le contre-espionnage - antispy_out_of_circle: 0 - antispy_big_circle: 1 - antispy_middle_circle: 2 - antispy_little_circle: 3 - - # pour Game::antiSpyRadius() - antispy_display_mode: 0 - antispy_game_mode: 1 - - nb_avatar: 80 - pam_coeftax: 1 - rsm_researchquantity: 10 - - # durée en heures avant que le classement total démarre - # 2 semaines = 336 h - # 20 jours = 480h - hours_before_start_of_ranking: 480 - points_to_win: 2000 - - - publicr: '/public/' - css: '%publicr%css/' - js: '%publicr%js/' - media: '%publicr%media/' - log: '%publicr%log/' - # active les APIs de confirmation - # active la création de personnage au niveau 5 - highmode: true - # active les feuilles de style multiples par faction - # note : les style peuvent ne pas être à jour - color_style: true - # active l'ajout du script analytics - analytics: false - # active la captation des données d'analyse (TB) - data_analysis: false - ######### - # INFOS # - ######### - # défini le nom du tableau de session - # note : utile si plusieurs instances cohabitent sur la même machine - server_sess: 'server' - # défini le titre du serveur (affiché comme titre) - app_name: 'Asylamba' - # défini le sous-titre du serveur (affiché comme titre) - app_subname: 'Expansion Stellaire' - # numéro de version de l'app - app_version: '2.0.0' - # créateurs du projet - app_creator: 'Gil Clavien, Jacky Casas, Noé Zufferey' - # défini la description du serveur (affichée dans la page) - app_description: 'Asylamba, jeu par navigateur' - ################# - # MISCELLANEOUS # - ################# - # définition des ids des différants joueurs systèmes - id_gaia: 1 - id_jeanmi: 2 - shift_faction: 2 - # date de début du serveur - messenger_logs: '%env(default::MESSENGER_LOGS)%' - sentry_dsn: '%env(default::SENTRY_DSN)%' - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - bind: - $container: '@container' - - Asylamba\Classes\Database\Database: - public: true - arguments: - $host: "%database_host%" - $name: "%database_name%" - $user: "%database_user%" - $password: "%database_password%" - - Asylamba\Classes\Database\DatabaseAdmin: - arguments: - $host: "%database_host%" - $name: "%database_name%" - $user: "%database_admin_user%" - $password: "%database_admin_password%" - - Asylamba\Classes\EventListener\MessengerInitListener: - tags: - - { name: 'kernel.event_listener', event: 'app.server_init', method: 'onServerInit', priority: 10 } - - Asylamba\Classes\EventListener\SchedulerInitListener: - tags: - - { name: 'kernel.event_listener', event: 'app.server_init', method: 'onServerInit', priority: 5 } - - Symfony\Component\Messenger\Bridge\Amqp\Transport\Connection: - factory: ['Symfony\Component\Messenger\Bridge\Amqp\Transport\Connection', 'fromDsn'] - arguments: ['%env(RABBITMQ_DSN)%'] - - Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpReceiver: ~ - - Asylamba\Classes\Messenger\SendersLocator: - factory: ['Asylamba\Classes\Messenger\SendersLocator', 'instanciate'] - - messenger.default_bus: - class: Symfony\Component\Messenger\MessageBus - factory: ['Asylamba\Classes\Messenger\BusFactory', 'createBus'] - arguments: - $handlersLocator: '@messenger.default_bus.messenger.handlers_locator' - $enableLogs: '%messenger_logs%' - tags: - - { name: 'messenger.bus' } - - Symfony\Component\Messenger\MessageBusInterface: - alias: 'messenger.default_bus' - - Symfony\Component\Messenger\Worker: - public: true - arguments: - $receivers: ['@Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpReceiver'] - - Asylamba\Classes\Library\Session\SessionWrapper: ~ - - Asylamba\Classes\Scheduler\CyclicActionScheduler: - public: true - arguments: - $dailyScriptHour: "%daily_script_hour%" - - Asylamba\Classes\Router\Router: - arguments: - $appRoot: '%app_root%' - $rootPath: '%root_path%' - $getOutRoot: "%getout_root%" - $actionPath: '%action%' - $ajaxPath: '%ajax%' - $connectionPath: '%connection%' - $registrationPath: '%inscription%' - $bufferPath: '%buffer%' - $apiPath: '%api%' - $templatePath: '%template%' - $scriptPath: '%script%' - $pagesPath: '%pages%' - $eventPath: '%event%' - - Asylamba\Classes\Library\Http\RequestFactory: ~ - - Asylamba\Classes\Library\Http\ResponseFactory: - - Asylamba\Classes\Daemon\ClientManager: - arguments: - $sessionLifetime: "%session_lifetime%" - - Asylamba\Classes\Templating\Renderer: ~ - - Asylamba\Classes\Daemon\Server: - public: true - arguments: - $statefulManagers: !tagged_iterator app.stateful_manager - $serverCycleTimeout: '%server_cycle_timeout%' - $port: '%server_port%' - $collectionCyclesNumber: '%server_collection_cycles_number%' - - Asylamba\Classes\Entity\EntityManager: - public: true - - Asylamba\Classes\Logger\ConsoleLogger: ~ - - Asylamba\Classes\Logger\FileLogger: - arguments: - $logDirectory: "%log_directory%" - $logRotation: "%log_rotation%" - - Psr\Log\LoggerInterface: '@Asylamba\Classes\Logger\ConsoleLogger' - - Asylamba\Classes\Library\Parser: - arguments: - $appRoot: '%app_root%' - $mediaPath: '%media%' - - Asylamba\Classes\Worker\API: - arguments: - $serverId: "%server_id%" - $apiKey: "%security_api_key%" - $getOutRoot: "%getout_root%" - - Asylamba\Classes\Library\Security: - arguments: - $serverKey: "%security_server_key%" - $iv: "%security_iv%" - - Asylamba\Classes\Memory\MemoryManager: ~ - - Asylamba\Classes\Redis\RedisManager: - arguments: - $host: '%env(REDIS_HOST)%' - $port: '%env(int:REDIS_PORT)%' - $password: '%env(default::REDIS_PASSWORD)%' - $timeout: "%redis_timeout%" - - Asylamba\Classes\EventSubscriber\ExceptionSubscriber: - arguments: - $templatePath: '%template%' - tags: ['kernel.event_subscriber'] diff --git a/config/services_prod.yaml b/config/services_prod.yaml new file mode 100644 index 000000000..adb2fee99 --- /dev/null +++ b/config/services_prod.yaml @@ -0,0 +1,8 @@ +services: + _defaults: + autowire: true + autoconfigure: true + + App\Shared\Infrastructure\Log\DatadogLogProcessor: + tags: + - { name: monolog.processor, handler: nested } diff --git a/docker-compose.yml b/docker-compose.yml index 095fc6754..814e06e5e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3" networks: asylamba: driver: bridge @@ -9,28 +8,32 @@ volumes: db-data: rabbitmq-data: redis-data: + caddy_data: + caddy_config: + mercure_data: + mercure_config: services: - phpmyadmin: - container_name: asylamba_phpmyadmin - image: nazarpc/phpmyadmin - environment: - SESSION_TIMEOUT: 86400 - ABSOLUTE_URI: "https://local.asylamba.com" + phpfpm: + container_name: kalaxia_app + build: docker/fpm + logging: + driver: "json-file" + options: + max-size: "50m" + volumes: + - "./:/srv/app" networks: - asylamba - ports: - - "8082:80" - # MYSQL Database - mysql: - container_name: asylamba_mysql - image: mysql:5.7 + mariadb: + container_name: asylamba_mariadb + image: mariadb:10 environment: - MYSQL_DATABASE: ${MYSQL_DATABASE:-asylamba_game} - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-asylamba} - MYSQL_USER: ${MYSQL_USER:-asylamba} - MYSQL_PASSWORD: ${MYSQL_PASSWORD:-asylamba} + MARIADB_DATABASE: ${MARIADB_DATABASE:-asylamba_game} + MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-asylamba} + MARIADB_USER: ${MARIADB_USER:-asylamba} + MARIADB_PASSWORD: ${MARIADB_PASSWORD:-asylamba} networks: - asylamba ports: @@ -44,42 +47,17 @@ services: image: redis networks: - asylamba - volumes: - - redis-data:/data ports: - "6379:6379" - redisCommander: - container_name: asylamba_redis_commander - image: rediscommander/redis-commander - command: --redis-host redis - depends_on: - - redis - networks: - - asylamba - ports: - - "8081:8081" - - mongodb: - container_name: asylamba_mongodb - image: mongo - networks: - - mongo - - feedback-manager: - container_name: asylamba_feedback_manager - image: citadeltechnologies/feedback-manager - environment: - MONGO_DBNAME: ${MONGO_DBNAME:-asylamba_feedbacks} - MONGO_HOST: ${MONGO_HOST:-asylamba_mongodb} - MONGO_PORT: ${MONGO_PORT:-27017} - networks: - - asylamba - - mongo - rabbitmq: container_name: asylamba_rabbitmq image: rabbitmq:3.9-management-alpine + healthcheck: + test: rabbitmq-diagnostics -q ping + interval: 30s + timeout: 30s + retries: 3 ports: - "5672:5672" - "15672:15672" @@ -87,3 +65,61 @@ services: - rabbitmq-data:/var/lib/rabbitmq networks: - asylamba + + caddy: + container_name: kalaxia_caddy_webserver + image: caddy + depends_on: + phpfpm: + condition: service_started + ports: + - '80:80' + - '443:443' + volumes: + - './docker/caddy/Caddyfile:/etc/caddy/Caddyfile' + - './:/srv/app' + - './var/log/caddy/:/var/log/caddy' + - caddy_data:/data + - caddy_config:/config + networks: + - asylamba + + supervisord: + container_name: kalaxia_worker + build: docker/supervisord + depends_on: + rabbitmq: + condition: service_healthy + logging: + driver: "json-file" + options: + max-size: "50m" + volumes: + - "./:/srv/app" + - "./var/logs/supervisord/:/var/log/supervisord/" + - "./supervisord.conf:/etc/supervisor/supervisord.conf" + networks: + - asylamba + + mercure: + container_name: kalaxia_mercure + image: dunglas/mercure + restart: unless-stopped + environment: + # Uncomment the following line to disable HTTPS, + SERVER_NAME: ':80' + #SERVER_NAME: 'mercure.kalaxia.local' + # Set the URL of your Symfony project (without trailing slash!) as value of the cors_origins directive + # Comment the following line to disable the development mode + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "https://localhost/healthz"] + timeout: 5s + retries: 5 + start_period: 60s + networks: + - asylamba + volumes: + - mercure_data:/data + - mercure_config:/config + ports: + - '80' diff --git a/docker/caddy/Caddyfile b/docker/caddy/Caddyfile new file mode 100644 index 000000000..8ea830fac --- /dev/null +++ b/docker/caddy/Caddyfile @@ -0,0 +1,29 @@ +(game) { + log { + output file /var/log/caddy/access.log + } + + handle /.well-known/mercure* { + reverse_proxy * http://kalaxia_mercure { + header_up -Authorization + } + } + + handle { + root * /srv/app/public + php_fastcgi /* kalaxia_app:9000 + file_server + } +} + +kalaxia.local { + import game +} + +kalaxia.com, api.kalaxia.com { + import game + + basicauth /* { + kalaxia JDJhJDE0JDlWOXN6OEF1Q1NIbmdVU29ySEJTL3V1U2suY1JSb2xLL3lCRnlaVkNZOU9uanlKMTVmZnNt + } +} diff --git a/docker/fpm/Dockerfile b/docker/fpm/Dockerfile new file mode 100644 index 000000000..b4f171c8c --- /dev/null +++ b/docker/fpm/Dockerfile @@ -0,0 +1,17 @@ +FROM php:8.4-fpm-alpine + +# Install SUPERVISOR and dependencies +RUN apk add --update rabbitmq-c-dev icu-dev nodejs npm + +# Install PHP extensions +RUN apk --no-cache add pcre-dev ${PHPIZE_DEPS} \ + && docker-php-ext-configure intl \ + && docker-php-ext-install pdo_mysql intl opcache \ + && pecl install amqp redis \ + && docker-php-ext-enable amqp pdo_mysql redis \ + && apk del pcre-dev ${PHPIZE_DEPS} + +RUN curl -s https://getcomposer.org/installer | php +RUN mv /var/www/html/composer.phar /usr/bin/composer + +WORKDIR /srv/app diff --git a/docker/supervisord/Dockerfile b/docker/supervisord/Dockerfile new file mode 100644 index 000000000..cabe386df --- /dev/null +++ b/docker/supervisord/Dockerfile @@ -0,0 +1,18 @@ +FROM php:8.4-cli-alpine + +# Install SUPERVISOR and dependencies +RUN apk update + +RUN apk add supervisor wget rabbitmq-c-dev icu-dev + +# Install PHP etxensions +RUN apk --no-cache add pcre-dev ${PHPIZE_DEPS} \ + && docker-php-ext-configure intl \ + && docker-php-ext-install pdo_mysql intl opcache \ + && pecl install amqp redis \ + && docker-php-ext-enable amqp pdo_mysql redis \ + && apk del pcre-dev ${PHPIZE_DEPS} + +WORKDIR /srv/app + +CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 258b75437..000000000 --- a/gulpfile.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -// Include Gulp & tools we'll use -var gulp = require('gulp'); -var gutil = require('gulp-util'); -var less = require('gulp-less'); -var rename = require('gulp-rename'); -var replace = require('gulp-replace'); -var imagemin = require('gulp-imagemin'); -var jshint = require('gulp-jshint'); - - -// -------------------- GULP TASKS -------------------- - -gulp.task('default', ['less'], () => { - return gutil.log('Gulp is running!') -}); - -// Build CSS with LESS sources -gulp.task('less', () => { - // specific faction files - for (var i = 1; i < 13; i++) { - gulp.src(['./public/css/less/main.desktop.v3.less']) - .pipe(replace('@color-type: 1;', '@color-type: '.concat(i, ';'))) - .pipe(less()) - .pipe(rename('main.desktop.v3.color' + i + '.css')) - .pipe(gulp.dest('./public/css/')); - } - // general file - gulp.src(['./public/css/less/main.desktop.v3.less']) - .pipe(less()) - .pipe(gulp.dest('./public/css/')); -}); - -// Optimize images -gulp.task('images', () => { - gulp.src('public/css/src/desktop-src/**/*') - .pipe(imagemin({ progressive: true})) - .pipe(gulp.dest('public/css/src/desktop')) - gulp.src('public/media-src/**/*') - .pipe(imagemin({ progressive: true })) - .pipe(gulp.dest('public/media')) -}); - -// JS hint report -gulp.task('jshint', function() { - gulp.src('./public/js/main.desktop.js') - .pipe(jshint()) - .pipe(jshint.reporter('default')); - gulp.src('./public/js/main.js') - .pipe(jshint()) - .pipe(jshint.reporter('default')); -}); \ No newline at end of file diff --git a/importmap.php b/importmap.php new file mode 100644 index 000000000..8e9d5032c --- /dev/null +++ b/importmap.php @@ -0,0 +1,31 @@ + [ + 'path' => './assets/app.js', + 'entrypoint' => true, + ], + '@symfony/stimulus-bundle' => [ + 'path' => './vendor/symfony/stimulus-bundle/assets/dist/loader.js', + ], + '@symfony/ux-live-component' => [ + 'path' => './vendor/symfony/ux-live-component/assets/dist/live_controller.js', + ], + '@hotwired/stimulus' => [ + 'version' => '3.2.2', + ], + '@hotwired/turbo' => [ + 'version' => '8.0.13', + ], +]; diff --git a/index.php b/index.php deleted file mode 100644 index 03d7235ba..000000000 --- a/index.php +++ /dev/null @@ -1,20 +0,0 @@ -usePutenv(false); -$dotenv->load($projectDir.'/.env'); - -$application = new ApplicationKernel($projectDir); -$application->boot(); diff --git a/public/css/src/desktop-src/map/common-v1/chuteDesArcontes b/migrations/.gitignore similarity index 100% rename from public/css/src/desktop-src/map/common-v1/chuteDesArcontes rename to migrations/.gitignore diff --git a/migrations/Version20230524232834.php b/migrations/Version20230524232834.php new file mode 100644 index 000000000..17723889b --- /dev/null +++ b/migrations/Version20230524232834.php @@ -0,0 +1,231 @@ +addSql('CREATE TABLE buildingQueue (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', building_number INT NOT NULL, target_level INT NOT NULL, started_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_453D57286967DF41 (base_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE candidate (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', election_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, chief_choice SMALLINT NOT NULL, treasurer_choice SMALLINT NOT NULL, warlord_choice SMALLINT NOT NULL, minister_choice SMALLINT NOT NULL, program LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_C8B28E44A708DAFF (election_id), INDEX IDX_C8B28E4499E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE color (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', identifier SMALLINT NOT NULL, alive TINYINT(1) DEFAULT 0 NOT NULL, is_winner TINYINT(1) DEFAULT 0 NOT NULL, credits INT UNSIGNED DEFAULT 0 NOT NULL, ranking_points INT UNSIGNED DEFAULT 0 NOT NULL, points INT UNSIGNED DEFAULT 0 NOT NULL, election_statement SMALLINT DEFAULT 0 NOT NULL, regime SMALLINT NOT NULL, is_closed TINYINT(1) DEFAULT 1 NOT NULL, is_in_game TINYINT(1) DEFAULT 0 NOT NULL, description TEXT DEFAULT NULL, victory_claimed_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', last_election_held_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', relations JSON NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE commander (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, base_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', start_place_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', destination_place_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', name VARCHAR(45) NOT NULL, comment LONGTEXT DEFAULT NULL, sexe SMALLINT DEFAULT 1 NOT NULL, age INT UNSIGNED DEFAULT 20 NOT NULL, avatar VARCHAR(20) NOT NULL, level SMALLINT UNSIGNED DEFAULT 1 NOT NULL, experience INT UNSIGNED DEFAULT 1 NOT NULL, palmares INT UNSIGNED DEFAULT 0 NOT NULL, statement SMALLINT UNSIGNED DEFAULT 0 NOT NULL, line SMALLINT UNSIGNED DEFAULT NULL, departed_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', arrived_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', enlisted_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', assigned_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', died_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', resources INT UNSIGNED DEFAULT 0 NOT NULL, travelType SMALLINT UNSIGNED DEFAULT NULL, travelLength SMALLINT UNSIGNED DEFAULT NULL, INDEX IDX_42D318BA99E6F5DF (player_id), INDEX IDX_42D318BA6967DF41 (base_id), INDEX IDX_42D318BA128CE42B (start_place_id), INDEX IDX_42D318BA53166228 (destination_place_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE commercialRoute (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', origin_base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', destination_base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', image_link VARCHAR(255) NOT NULL, distance INT NOT NULL, price INT NOT NULL, income INT NOT NULL, statement INT NOT NULL, proposed_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', accepted_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_8F5ED95ADC10CA2C (origin_base_id), INDEX IDX_8F5ED95A75EE039 (destination_base_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE commercialShipping (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', transaction_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, origin_base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', destination_base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', resource_transported INT NOT NULL, ship_quantity INT NOT NULL, statement INT NOT NULL, departure_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', arrival_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_C2B3CFBE2FC0CB0F (transaction_id), INDEX IDX_C2B3CFBE99E6F5DF (player_id), INDEX IDX_C2B3CFBEDC10CA2C (origin_base_id), INDEX IDX_C2B3CFBE75EE039 (destination_base_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE commercialTax (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', related_faction_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', import_tax SMALLINT NOT NULL, export_tax SMALLINT NOT NULL, INDEX IDX_A8D93EBA4448F8DA (faction_id), INDEX IDX_A8D93EBACE85F06A (related_faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE conversation (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', title VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', last_message_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', messages_count SMALLINT NOT NULL, type SMALLINT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE conversationMessage (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', conversation_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, content LONGTEXT NOT NULL, type SMALLINT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_B2FF54A09AC0396 (conversation_id), INDEX IDX_B2FF54A099E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE conversationUser (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', conversation_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, last_viewed_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', player_status SMALLINT NOT NULL, conversation_status SMALLINT NOT NULL, INDEX IDX_127B926C9AC0396 (conversation_id), INDEX IDX_127B926C99E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE creditTransaction (id INT UNSIGNED AUTO_INCREMENT NOT NULL, player_sender INT UNSIGNED DEFAULT NULL, player_receiver INT UNSIGNED DEFAULT NULL, faction_receiver BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', faction_sender BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', amount INT UNSIGNED NOT NULL, createdAt DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', comment LONGTEXT NOT NULL, discr VARCHAR(25) NOT NULL, INDEX IDX_6498C1C0C000DC11 (player_sender), INDEX IDX_6498C1C03B6FCD76 (player_receiver), INDEX IDX_6498C1C0BBD75021 (faction_receiver), INDEX IDX_6498C1C037E0807E (faction_sender), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE election (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', d_election DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_DCA038004448F8DA (faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE factionNews (uuid INT NOT NULL, faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', title VARCHAR(255) NOT NULL, o_content VARCHAR(255) NOT NULL, p_content VARCHAR(255) NOT NULL, pinned TINYINT(1) NOT NULL, statement SMALLINT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_FD1C34354448F8DA (faction_id), PRIMARY KEY(uuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE factionRanking (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', points SMALLINT NOT NULL, points_position SMALLINT NOT NULL, points_variation SMALLINT NOT NULL, new_points SMALLINT NOT NULL, general SMALLINT NOT NULL, general_position SMALLINT NOT NULL, general_variation SMALLINT NOT NULL, wealth SMALLINT NOT NULL, wealth_position SMALLINT NOT NULL, wealth_variation SMALLINT NOT NULL, territorial SMALLINT NOT NULL, territorial_position SMALLINT NOT NULL, territorial_variation SMALLINT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_DED62D7E4448F8DA (faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE forumMessage (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, topic_id INT UNSIGNED DEFAULT NULL, o_content LONGTEXT NOT NULL, p_content LONGTEXT NOT NULL, statement SMALLINT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_989CDDB199E6F5DF (player_id), INDEX IDX_989CDDB11F55203D (topic_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE forumTopic (id INT UNSIGNED NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE law (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', type SMALLINT NOT NULL, statement SMALLINT NOT NULL, vote_ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', for_vote SMALLINT NOT NULL, against_vote SMALLINT NOT NULL, options JSON NOT NULL, INDEX IDX_C0B552F4448F8DA (faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE notification (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, title VARCHAR(255) NOT NULL, content LONGTEXT NOT NULL, sent_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', is_read TINYINT(1) NOT NULL, archived TINYINT(1) NOT NULL, INDEX IDX_BF5476CA99E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE orbitalBase (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', place_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, name VARCHAR(45) NOT NULL COLLATE `utf8_bin`, typeOfBase SMALLINT UNSIGNED DEFAULT 0 NOT NULL, levelGenerator SMALLINT UNSIGNED DEFAULT 0, levelRefinery SMALLINT UNSIGNED DEFAULT 0, levelDock1 SMALLINT UNSIGNED DEFAULT 0, levelDock2 SMALLINT UNSIGNED DEFAULT 0, levelDock3 SMALLINT UNSIGNED DEFAULT 0, levelTechnosphere SMALLINT UNSIGNED DEFAULT 0, levelCommercialPlateforme SMALLINT UNSIGNED DEFAULT 0, levelStorage SMALLINT UNSIGNED DEFAULT 0, levelRecycling SMALLINT UNSIGNED DEFAULT 0, levelSpatioport SMALLINT UNSIGNED DEFAULT 0, points INT UNSIGNED DEFAULT 0, iSchool INT UNSIGNED DEFAULT 0, iAntiSpy INT UNSIGNED DEFAULT 0, antiSpyAverage INT UNSIGNED DEFAULT 0, ship_storage JSON NOT NULL, resourcesStorage INT UNSIGNED DEFAULT 0, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_21A9A8CDDA6A219 (place_id), INDEX IDX_21A9A8CD99E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE place (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, system_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', typeOfPlace SMALLINT UNSIGNED NOT NULL, position SMALLINT UNSIGNED NOT NULL, population SMALLINT UNSIGNED NOT NULL, coefResources DOUBLE PRECISION UNSIGNED NOT NULL, coefHistory SMALLINT UNSIGNED NOT NULL, resources INT UNSIGNED DEFAULT 0 NOT NULL, danger SMALLINT UNSIGNED DEFAULT 0 NOT NULL, maxDanger SMALLINT UNSIGNED DEFAULT 0 NOT NULL, updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_741D53CD99E6F5DF (player_id), INDEX IDX_741D53CDD0952FA5 (system_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE player (id INT UNSIGNED AUTO_INCREMENT NOT NULL, faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', god_father_id INT UNSIGNED DEFAULT NULL, bind VARCHAR(50) DEFAULT NULL, name VARCHAR(25) NOT NULL, avatar VARCHAR(12) NOT NULL, sex SMALLINT DEFAULT 1 NOT NULL, status SMALLINT UNSIGNED DEFAULT 1 NOT NULL, credit BIGINT UNSIGNED DEFAULT 0 NOT NULL, experience INT UNSIGNED DEFAULT 0 NOT NULL, factionPoint INT UNSIGNED DEFAULT 0 NOT NULL, level SMALLINT UNSIGNED DEFAULT 0 NOT NULL, victory INT UNSIGNED DEFAULT 0 NOT NULL, defeat INT UNSIGNED DEFAULT 0 NOT NULL, premium TINYINT(1) DEFAULT 0 NOT NULL, statement SMALLINT UNSIGNED DEFAULT 0 NOT NULL, description TEXT DEFAULT NULL, iUniversity INT UNSIGNED DEFAULT 0 NOT NULL, stepTutorial SMALLINT UNSIGNED NOT NULL, stepDone TINYINT(1) DEFAULT 0 NOT NULL, partNaturalSciences SMALLINT UNSIGNED DEFAULT 0 NOT NULL, partLifeSciences SMALLINT UNSIGNED DEFAULT 0 NOT NULL, partSocialPoliticalSciences SMALLINT UNSIGNED DEFAULT 0 NOT NULL, partInformaticEngineering SMALLINT UNSIGNED DEFAULT 0 NOT NULL, dInscription DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', dLastConnection DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', dLastActivity DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', uPlayer DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_98197A655E237E06 (name), INDEX IDX_98197A654448F8DA (faction_id), INDEX IDX_98197A65487CFC8E (god_father_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE playerRanking (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, general SMALLINT NOT NULL, general_position SMALLINT NOT NULL, general_variation SMALLINT NOT NULL, experience SMALLINT NOT NULL, experience_position SMALLINT NOT NULL, experience_variation SMALLINT NOT NULL, butcher SMALLINT NOT NULL, butcher_destroyed_pev SMALLINT NOT NULL, butcher_lost_pev SMALLINT NOT NULL, butcher_position SMALLINT NOT NULL, butcher_variation SMALLINT NOT NULL, trader SMALLINT NOT NULL, trader_position SMALLINT NOT NULL, trader_variation SMALLINT NOT NULL, fight SMALLINT NOT NULL, victories SMALLINT NOT NULL, defeat SMALLINT NOT NULL, fight_position SMALLINT NOT NULL, fight_variation SMALLINT NOT NULL, armies SMALLINT NOT NULL, armies_position SMALLINT NOT NULL, armies_variation SMALLINT NOT NULL, resources SMALLINT NOT NULL, resources_position SMALLINT NOT NULL, resources_variation SMALLINT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_2936711199E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE player_financial_report (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', initial_wallet INT NOT NULL, population_taxes INT NOT NULL, commercial_routes_income INT NOT NULL, faction_taxes INT NOT NULL, anti_spy_investments INT NOT NULL, university_investments INT NOT NULL, school_investments INT NOT NULL, commanders_wages INT NOT NULL, ships_cost INT NOT NULL, INDEX IDX_8E58A9AC99E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE recyclingLog (id INT UNSIGNED NOT NULL, mission_id INT UNSIGNED NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', resources INT NOT NULL, credits INT NOT NULL, ship0 INT NOT NULL, ship1 INT NOT NULL, ship2 INT NOT NULL, ship3 INT NOT NULL, ship4 INT NOT NULL, ship5 INT NOT NULL, ship6 INT NOT NULL, ship7 INT NOT NULL, ship8 INT NOT NULL, ship9 INT NOT NULL, ship10 INT NOT NULL, ship11 INT NOT NULL, INDEX IDX_1BE0779BE6CAE90 (mission_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE recyclingMission (id INT UNSIGNED NOT NULL, base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', target_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', cycle_time SMALLINT NOT NULL, recycler_quantity SMALLINT NOT NULL, add_to_next_mission SMALLINT NOT NULL, statement SMALLINT NOT NULL, ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_ACD0882E6967DF41 (base_id), INDEX IDX_ACD0882E158E0B66 (target_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE report (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', attacker_id INT UNSIGNED DEFAULT NULL, defender_id INT UNSIGNED DEFAULT NULL, winner_id INT UNSIGNED DEFAULT NULL, attacker_commander_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', defender_commander_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', place_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', type SMALLINT NOT NULL, attacker_level INT NOT NULL, defender_level INT NOT NULL, attacker_experience INT NOT NULL, defender_experience INT NOT NULL, attacker_palmares INT NOT NULL, defender_palmares INT NOT NULL, resources INT NOT NULL, attacker_commander_experience INT NOT NULL, defender_commander_experience INT NOT NULL, earned_experience INT NOT NULL, is_legal TINYINT(1) NOT NULL, has_been_punished TINYINT(1) NOT NULL, round SMALLINT NOT NULL, attacker_pev_at_beginning SMALLINT NOT NULL, defender_pev_at_beginning SMALLINT NOT NULL, attacker_pev_at_end SMALLINT NOT NULL, defender_pev_at_end SMALLINT NOT NULL, attacker_statement SMALLINT NOT NULL, defender_statement SMALLINT NOT NULL, fought_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', squadrons JSON NOT NULL, attacker_army_in_begin JSON NOT NULL, defender_army_in_begin JSON NOT NULL, attacker_army_at_end JSON NOT NULL, defender_army_at_end JSON NOT NULL, attacker_total_in_begin JSON NOT NULL, defender_total_in_begin JSON NOT NULL, attacker_total_at_end JSON NOT NULL, defender_total_at_end JSON NOT NULL, attacker_difference JSON NOT NULL, defender_difference JSON NOT NULL, armies_done TINYINT(1) NOT NULL, INDEX IDX_C42F778465F8CAE3 (attacker_id), INDEX IDX_C42F77844A3E3B6F (defender_id), INDEX IDX_C42F77845DFCD4B8 (winner_id), INDEX IDX_C42F7784FADCEBA0 (attacker_commander_id), INDEX IDX_C42F7784254D233 (defender_commander_id), INDEX IDX_C42F7784DA6A219 (place_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE research (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, natural_to_pay INT NOT NULL, life_to_pay INT NOT NULL, social_to_pay INT NOT NULL, informatic_to_pay INT NOT NULL, math_level INT NOT NULL, phys_level INT NOT NULL, chem_level INT NOT NULL, bio_level INT NOT NULL, medi_level INT NOT NULL, econo_level INT NOT NULL, psycho_level INT NOT NULL, network_level INT NOT NULL, algo_level INT NOT NULL, stat_level INT NOT NULL, natural_tech INT NOT NULL, life_tech INT NOT NULL, social_tech INT NOT NULL, informatic_tech INT NOT NULL, INDEX IDX_57EB50C299E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE sector (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', identifier SMALLINT NOT NULL, xPosition SMALLINT UNSIGNED DEFAULT NULL, yPosition SMALLINT UNSIGNED DEFAULT NULL, xBarycentric SMALLINT UNSIGNED DEFAULT 0, yBarycentric SMALLINT UNSIGNED DEFAULT 0, tax SMALLINT UNSIGNED DEFAULT 0 NOT NULL, population INT UNSIGNED NOT NULL, lifePlanet INT UNSIGNED DEFAULT NULL, points INT UNSIGNED DEFAULT 1 NOT NULL, name VARCHAR(255) DEFAULT NULL, prime SMALLINT DEFAULT 0 NOT NULL, INDEX IDX_4BA3D9E84448F8DA (faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE shipQueue (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', base_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', started_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', dock_type SMALLINT NOT NULL, ship_number SMALLINT NOT NULL, quantity SMALLINT NOT NULL, INDEX IDX_413BF33D6967DF41 (base_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE spyReport (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, place_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', place_faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', target_player_id INT UNSIGNED DEFAULT NULL, price INT NOT NULL, place_type INT NOT NULL, base_type INT DEFAULT NULL, place_name VARCHAR(124) DEFAULT NULL, resources INT NOT NULL, points INT NOT NULL, success_rate SMALLINT NOT NULL, type SMALLINT NOT NULL, target_player_level SMALLINT DEFAULT NULL, anti_spy_invest INT DEFAULT NULL, commercial_route_income INT DEFAULT NULL, ship_storage JSON NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', commanders JSON NOT NULL, INDEX IDX_88C63CC799E6F5DF (player_id), INDEX IDX_88C63CC7DA6A219 (place_id), INDEX IDX_88C63CC76A886ED2 (place_faction_id), INDEX IDX_88C63CC7AD5287F3 (target_player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE squadron (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', commander_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', position SMALLINT UNSIGNED NOT NULL, line_coord SMALLINT UNSIGNED NOT NULL, ship0 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship1 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship2 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship3 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship4 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship5 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship6 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship7 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship8 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship9 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship10 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, ship11 SMALLINT UNSIGNED DEFAULT 0 NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_5901B7573349A583 (commander_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE system (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', sector_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', faction_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', xPosition SMALLINT UNSIGNED DEFAULT NULL, yPosition SMALLINT UNSIGNED DEFAULT NULL, typeOfSystem SMALLINT UNSIGNED DEFAULT NULL, INDEX IDX_C94D118BDE95C867 (sector_id), INDEX IDX_C94D118B4448F8DA (faction_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE technology (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, com_plat_unblock SMALLINT NOT NULL, dock2_unblock SMALLINT NOT NULL, dock3_unblock SMALLINT NOT NULL, recycling_unblock SMALLINT NOT NULL, spatioport_unblock SMALLINT NOT NULL, ship0_unblock SMALLINT NOT NULL, ship1_unblock SMALLINT NOT NULL, ship2_unblock SMALLINT NOT NULL, ship3_unblock SMALLINT NOT NULL, ship4_unblock SMALLINT NOT NULL, ship5_unblock SMALLINT NOT NULL, ship6_unblock SMALLINT NOT NULL, ship7_unblock SMALLINT NOT NULL, ship8_unblock SMALLINT NOT NULL, ship9_unblock SMALLINT NOT NULL, ship10_unblock SMALLINT NOT NULL, ship11_unblock SMALLINT NOT NULL, colonization SMALLINT NOT NULL, conquest SMALLINT NOT NULL, generator_speed SMALLINT NOT NULL, refinery_refining SMALLINT NOT NULL, refinery_storage SMALLINT NOT NULL, dock1_speed SMALLINT NOT NULL, dock2_speed SMALLINT NOT NULL, technosphere_speed SMALLINT NOT NULL, commercial_income_up SMALLINT NOT NULL, gravit_module_up SMALLINT NOT NULL, dock3_speed SMALLINT NOT NULL, population_tax_up SMALLINT NOT NULL, commander_invest_up SMALLINT NOT NULL, uni_invest_up SMALLINT NOT NULL, anti_spy_invest_up SMALLINT NOT NULL, space_ships_speed SMALLINT NOT NULL, space_ships_container SMALLINT NOT NULL, base_quantity SMALLINT NOT NULL, fighter_speed SMALLINT NOT NULL, fighter_attack SMALLINT NOT NULL, fighter_defense SMALLINT NOT NULL, corvette_speed SMALLINT NOT NULL, corvette_attack SMALLINT NOT NULL, corvette_defense SMALLINT NOT NULL, frigate_speed SMALLINT NOT NULL, frigate_attack SMALLINT NOT NULL, frigate_defense SMALLINT NOT NULL, destroyer_speed SMALLINT NOT NULL, destroyer_attack SMALLINT NOT NULL, destroyer_defense SMALLINT NOT NULL, INDEX IDX_F463524D99E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE technologyQueue (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, place_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', technology SMALLINT NOT NULL, target_level SMALLINT NOT NULL, started_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', ended_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_451A5A7699E6F5DF (player_id), INDEX IDX_451A5A76DA6A219 (place_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE transaction (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED NOT NULL, base_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', type SMALLINT NOT NULL, identifier SMALLINT NOT NULL, quantity INT NOT NULL, price INT NOT NULL, commercial_ship_quantity SMALLINT NOT NULL, statement SMALLINT NOT NULL, current_rate DOUBLE PRECISION NOT NULL, published_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', validated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_723705D199E6F5DF (player_id), INDEX IDX_723705D16967DF41 (base_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE vote (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', candidate_id BINARY(16) DEFAULT NULL COMMENT \'(DC2Type:uuid)\', player_id INT UNSIGNED DEFAULT NULL, voted_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_5A10856491BD8781 (candidate_id), INDEX IDX_5A10856499E6F5DF (player_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE voteLaw (id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\', PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('ALTER TABLE buildingQueue ADD CONSTRAINT FK_453D57286967DF41 FOREIGN KEY (base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE candidate ADD CONSTRAINT FK_C8B28E44A708DAFF FOREIGN KEY (election_id) REFERENCES election (id)'); + $this->addSql('ALTER TABLE candidate ADD CONSTRAINT FK_C8B28E4499E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE commander ADD CONSTRAINT FK_42D318BA99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE commander ADD CONSTRAINT FK_42D318BA6967DF41 FOREIGN KEY (base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE commander ADD CONSTRAINT FK_42D318BA128CE42B FOREIGN KEY (start_place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE commander ADD CONSTRAINT FK_42D318BA53166228 FOREIGN KEY (destination_place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE commercialRoute ADD CONSTRAINT FK_8F5ED95ADC10CA2C FOREIGN KEY (origin_base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE commercialRoute ADD CONSTRAINT FK_8F5ED95A75EE039 FOREIGN KEY (destination_base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE commercialShipping ADD CONSTRAINT FK_C2B3CFBE2FC0CB0F FOREIGN KEY (transaction_id) REFERENCES transaction (id)'); + $this->addSql('ALTER TABLE commercialShipping ADD CONSTRAINT FK_C2B3CFBE99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE commercialShipping ADD CONSTRAINT FK_C2B3CFBEDC10CA2C FOREIGN KEY (origin_base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE commercialShipping ADD CONSTRAINT FK_C2B3CFBE75EE039 FOREIGN KEY (destination_base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE commercialTax ADD CONSTRAINT FK_A8D93EBA4448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE commercialTax ADD CONSTRAINT FK_A8D93EBACE85F06A FOREIGN KEY (related_faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE conversationMessage ADD CONSTRAINT FK_B2FF54A09AC0396 FOREIGN KEY (conversation_id) REFERENCES conversation (id)'); + $this->addSql('ALTER TABLE conversationMessage ADD CONSTRAINT FK_B2FF54A099E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE conversationUser ADD CONSTRAINT FK_127B926C9AC0396 FOREIGN KEY (conversation_id) REFERENCES conversation (id)'); + $this->addSql('ALTER TABLE conversationUser ADD CONSTRAINT FK_127B926C99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE creditTransaction ADD CONSTRAINT FK_6498C1C0C000DC11 FOREIGN KEY (player_sender) REFERENCES player (id)'); + $this->addSql('ALTER TABLE creditTransaction ADD CONSTRAINT FK_6498C1C03B6FCD76 FOREIGN KEY (player_receiver) REFERENCES player (id)'); + $this->addSql('ALTER TABLE creditTransaction ADD CONSTRAINT FK_6498C1C0BBD75021 FOREIGN KEY (faction_receiver) REFERENCES color (id)'); + $this->addSql('ALTER TABLE creditTransaction ADD CONSTRAINT FK_6498C1C037E0807E FOREIGN KEY (faction_sender) REFERENCES color (id)'); + $this->addSql('ALTER TABLE election ADD CONSTRAINT FK_DCA038004448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE factionNews ADD CONSTRAINT FK_FD1C34354448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE factionRanking ADD CONSTRAINT FK_DED62D7E4448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE forumMessage ADD CONSTRAINT FK_989CDDB199E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE forumMessage ADD CONSTRAINT FK_989CDDB11F55203D FOREIGN KEY (topic_id) REFERENCES forumTopic (id)'); + $this->addSql('ALTER TABLE law ADD CONSTRAINT FK_C0B552F4448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE notification ADD CONSTRAINT FK_BF5476CA99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE orbitalBase ADD CONSTRAINT FK_21A9A8CDDA6A219 FOREIGN KEY (place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE orbitalBase ADD CONSTRAINT FK_21A9A8CD99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE place ADD CONSTRAINT FK_741D53CD99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE place ADD CONSTRAINT FK_741D53CDD0952FA5 FOREIGN KEY (system_id) REFERENCES system (id)'); + $this->addSql('ALTER TABLE player ADD CONSTRAINT FK_98197A654448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE player ADD CONSTRAINT FK_98197A65487CFC8E FOREIGN KEY (god_father_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE playerRanking ADD CONSTRAINT FK_2936711199E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE player_financial_report ADD CONSTRAINT FK_8E58A9AC99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE recyclingLog ADD CONSTRAINT FK_1BE0779BE6CAE90 FOREIGN KEY (mission_id) REFERENCES recyclingMission (id)'); + $this->addSql('ALTER TABLE recyclingMission ADD CONSTRAINT FK_ACD0882E6967DF41 FOREIGN KEY (base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE recyclingMission ADD CONSTRAINT FK_ACD0882E158E0B66 FOREIGN KEY (target_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F778465F8CAE3 FOREIGN KEY (attacker_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F77844A3E3B6F FOREIGN KEY (defender_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F77845DFCD4B8 FOREIGN KEY (winner_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F7784FADCEBA0 FOREIGN KEY (attacker_commander_id) REFERENCES commander (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F7784254D233 FOREIGN KEY (defender_commander_id) REFERENCES commander (id)'); + $this->addSql('ALTER TABLE report ADD CONSTRAINT FK_C42F7784DA6A219 FOREIGN KEY (place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE research ADD CONSTRAINT FK_57EB50C299E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE sector ADD CONSTRAINT FK_4BA3D9E84448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE shipQueue ADD CONSTRAINT FK_413BF33D6967DF41 FOREIGN KEY (base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE spyReport ADD CONSTRAINT FK_88C63CC799E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE spyReport ADD CONSTRAINT FK_88C63CC7DA6A219 FOREIGN KEY (place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE spyReport ADD CONSTRAINT FK_88C63CC76A886ED2 FOREIGN KEY (place_faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE spyReport ADD CONSTRAINT FK_88C63CC7AD5287F3 FOREIGN KEY (target_player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE squadron ADD CONSTRAINT FK_5901B7573349A583 FOREIGN KEY (commander_id) REFERENCES commander (id)'); + $this->addSql('ALTER TABLE system ADD CONSTRAINT FK_C94D118BDE95C867 FOREIGN KEY (sector_id) REFERENCES sector (id)'); + $this->addSql('ALTER TABLE system ADD CONSTRAINT FK_C94D118B4448F8DA FOREIGN KEY (faction_id) REFERENCES color (id)'); + $this->addSql('ALTER TABLE technology ADD CONSTRAINT FK_F463524D99E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE technologyQueue ADD CONSTRAINT FK_451A5A7699E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE technologyQueue ADD CONSTRAINT FK_451A5A76DA6A219 FOREIGN KEY (place_id) REFERENCES place (id)'); + $this->addSql('ALTER TABLE transaction ADD CONSTRAINT FK_723705D199E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + $this->addSql('ALTER TABLE transaction ADD CONSTRAINT FK_723705D16967DF41 FOREIGN KEY (base_id) REFERENCES orbitalBase (id)'); + $this->addSql('ALTER TABLE vote ADD CONSTRAINT FK_5A10856491BD8781 FOREIGN KEY (candidate_id) REFERENCES candidate (id)'); + $this->addSql('ALTER TABLE vote ADD CONSTRAINT FK_5A10856499E6F5DF FOREIGN KEY (player_id) REFERENCES player (id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE buildingQueue DROP FOREIGN KEY FK_453D57286967DF41'); + $this->addSql('ALTER TABLE candidate DROP FOREIGN KEY FK_C8B28E44A708DAFF'); + $this->addSql('ALTER TABLE candidate DROP FOREIGN KEY FK_C8B28E4499E6F5DF'); + $this->addSql('ALTER TABLE commander DROP FOREIGN KEY FK_42D318BA99E6F5DF'); + $this->addSql('ALTER TABLE commander DROP FOREIGN KEY FK_42D318BA6967DF41'); + $this->addSql('ALTER TABLE commander DROP FOREIGN KEY FK_42D318BA128CE42B'); + $this->addSql('ALTER TABLE commander DROP FOREIGN KEY FK_42D318BA53166228'); + $this->addSql('ALTER TABLE commercialRoute DROP FOREIGN KEY FK_8F5ED95ADC10CA2C'); + $this->addSql('ALTER TABLE commercialRoute DROP FOREIGN KEY FK_8F5ED95A75EE039'); + $this->addSql('ALTER TABLE commercialShipping DROP FOREIGN KEY FK_C2B3CFBE2FC0CB0F'); + $this->addSql('ALTER TABLE commercialShipping DROP FOREIGN KEY FK_C2B3CFBE99E6F5DF'); + $this->addSql('ALTER TABLE commercialShipping DROP FOREIGN KEY FK_C2B3CFBEDC10CA2C'); + $this->addSql('ALTER TABLE commercialShipping DROP FOREIGN KEY FK_C2B3CFBE75EE039'); + $this->addSql('ALTER TABLE commercialTax DROP FOREIGN KEY FK_A8D93EBA4448F8DA'); + $this->addSql('ALTER TABLE commercialTax DROP FOREIGN KEY FK_A8D93EBACE85F06A'); + $this->addSql('ALTER TABLE conversationMessage DROP FOREIGN KEY FK_B2FF54A09AC0396'); + $this->addSql('ALTER TABLE conversationMessage DROP FOREIGN KEY FK_B2FF54A099E6F5DF'); + $this->addSql('ALTER TABLE conversationUser DROP FOREIGN KEY FK_127B926C9AC0396'); + $this->addSql('ALTER TABLE conversationUser DROP FOREIGN KEY FK_127B926C99E6F5DF'); + $this->addSql('ALTER TABLE creditTransaction DROP FOREIGN KEY FK_6498C1C0C000DC11'); + $this->addSql('ALTER TABLE creditTransaction DROP FOREIGN KEY FK_6498C1C03B6FCD76'); + $this->addSql('ALTER TABLE creditTransaction DROP FOREIGN KEY FK_6498C1C0BBD75021'); + $this->addSql('ALTER TABLE creditTransaction DROP FOREIGN KEY FK_6498C1C037E0807E'); + $this->addSql('ALTER TABLE election DROP FOREIGN KEY FK_DCA038004448F8DA'); + $this->addSql('ALTER TABLE factionNews DROP FOREIGN KEY FK_FD1C34354448F8DA'); + $this->addSql('ALTER TABLE factionRanking DROP FOREIGN KEY FK_DED62D7E4448F8DA'); + $this->addSql('ALTER TABLE forumMessage DROP FOREIGN KEY FK_989CDDB199E6F5DF'); + $this->addSql('ALTER TABLE forumMessage DROP FOREIGN KEY FK_989CDDB11F55203D'); + $this->addSql('ALTER TABLE law DROP FOREIGN KEY FK_C0B552F4448F8DA'); + $this->addSql('ALTER TABLE notification DROP FOREIGN KEY FK_BF5476CA99E6F5DF'); + $this->addSql('ALTER TABLE orbitalBase DROP FOREIGN KEY FK_21A9A8CDDA6A219'); + $this->addSql('ALTER TABLE orbitalBase DROP FOREIGN KEY FK_21A9A8CD99E6F5DF'); + $this->addSql('ALTER TABLE place DROP FOREIGN KEY FK_741D53CD99E6F5DF'); + $this->addSql('ALTER TABLE place DROP FOREIGN KEY FK_741D53CDD0952FA5'); + $this->addSql('ALTER TABLE player DROP FOREIGN KEY FK_98197A654448F8DA'); + $this->addSql('ALTER TABLE player DROP FOREIGN KEY FK_98197A65487CFC8E'); + $this->addSql('ALTER TABLE playerRanking DROP FOREIGN KEY FK_2936711199E6F5DF'); + $this->addSql('ALTER TABLE player_financial_report DROP FOREIGN KEY FK_8E58A9AC99E6F5DF'); + $this->addSql('ALTER TABLE recyclingLog DROP FOREIGN KEY FK_1BE0779BE6CAE90'); + $this->addSql('ALTER TABLE recyclingMission DROP FOREIGN KEY FK_ACD0882E6967DF41'); + $this->addSql('ALTER TABLE recyclingMission DROP FOREIGN KEY FK_ACD0882E158E0B66'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F778465F8CAE3'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F77844A3E3B6F'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F77845DFCD4B8'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F7784FADCEBA0'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F7784254D233'); + $this->addSql('ALTER TABLE report DROP FOREIGN KEY FK_C42F7784DA6A219'); + $this->addSql('ALTER TABLE research DROP FOREIGN KEY FK_57EB50C299E6F5DF'); + $this->addSql('ALTER TABLE sector DROP FOREIGN KEY FK_4BA3D9E84448F8DA'); + $this->addSql('ALTER TABLE shipQueue DROP FOREIGN KEY FK_413BF33D6967DF41'); + $this->addSql('ALTER TABLE spyReport DROP FOREIGN KEY FK_88C63CC799E6F5DF'); + $this->addSql('ALTER TABLE spyReport DROP FOREIGN KEY FK_88C63CC7DA6A219'); + $this->addSql('ALTER TABLE spyReport DROP FOREIGN KEY FK_88C63CC76A886ED2'); + $this->addSql('ALTER TABLE spyReport DROP FOREIGN KEY FK_88C63CC7AD5287F3'); + $this->addSql('ALTER TABLE squadron DROP FOREIGN KEY FK_5901B7573349A583'); + $this->addSql('ALTER TABLE system DROP FOREIGN KEY FK_C94D118BDE95C867'); + $this->addSql('ALTER TABLE system DROP FOREIGN KEY FK_C94D118B4448F8DA'); + $this->addSql('ALTER TABLE technology DROP FOREIGN KEY FK_F463524D99E6F5DF'); + $this->addSql('ALTER TABLE technologyQueue DROP FOREIGN KEY FK_451A5A7699E6F5DF'); + $this->addSql('ALTER TABLE technologyQueue DROP FOREIGN KEY FK_451A5A76DA6A219'); + $this->addSql('ALTER TABLE transaction DROP FOREIGN KEY FK_723705D199E6F5DF'); + $this->addSql('ALTER TABLE transaction DROP FOREIGN KEY FK_723705D16967DF41'); + $this->addSql('ALTER TABLE vote DROP FOREIGN KEY FK_5A10856491BD8781'); + $this->addSql('ALTER TABLE vote DROP FOREIGN KEY FK_5A10856499E6F5DF'); + $this->addSql('DROP TABLE buildingQueue'); + $this->addSql('DROP TABLE candidate'); + $this->addSql('DROP TABLE color'); + $this->addSql('DROP TABLE commander'); + $this->addSql('DROP TABLE commercialRoute'); + $this->addSql('DROP TABLE commercialShipping'); + $this->addSql('DROP TABLE commercialTax'); + $this->addSql('DROP TABLE conversation'); + $this->addSql('DROP TABLE conversationMessage'); + $this->addSql('DROP TABLE conversationUser'); + $this->addSql('DROP TABLE creditTransaction'); + $this->addSql('DROP TABLE election'); + $this->addSql('DROP TABLE factionNews'); + $this->addSql('DROP TABLE factionRanking'); + $this->addSql('DROP TABLE forumMessage'); + $this->addSql('DROP TABLE forumTopic'); + $this->addSql('DROP TABLE law'); + $this->addSql('DROP TABLE notification'); + $this->addSql('DROP TABLE orbitalBase'); + $this->addSql('DROP TABLE place'); + $this->addSql('DROP TABLE player'); + $this->addSql('DROP TABLE playerRanking'); + $this->addSql('DROP TABLE player_financial_report'); + $this->addSql('DROP TABLE recyclingLog'); + $this->addSql('DROP TABLE recyclingMission'); + $this->addSql('DROP TABLE report'); + $this->addSql('DROP TABLE research'); + $this->addSql('DROP TABLE sector'); + $this->addSql('DROP TABLE shipQueue'); + $this->addSql('DROP TABLE spyReport'); + $this->addSql('DROP TABLE squadron'); + $this->addSql('DROP TABLE system'); + $this->addSql('DROP TABLE technology'); + $this->addSql('DROP TABLE technologyQueue'); + $this->addSql('DROP TABLE transaction'); + $this->addSql('DROP TABLE vote'); + $this->addSql('DROP TABLE voteLaw'); + } +} diff --git a/migrations/Version20230528091817.php b/migrations/Version20230528091817.php new file mode 100644 index 000000000..cd27ca3a2 --- /dev/null +++ b/migrations/Version20230528091817.php @@ -0,0 +1,37 @@ +addSql('SET FOREIGN_KEY_CHECKS = 0'); + $this->addSql('ALTER TABLE recyclingLog CHANGE mission_id mission_id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\''); + $this->addSql('ALTER TABLE recyclingMission CHANGE id id BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid)\''); + $this->addSql('SET FOREIGN_KEY_CHECKS = 1'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('SET FOREIGN_KEY_CHECKS = 0'); + $this->addSql('ALTER TABLE recyclingLog CHANGE mission_id mission_id INT UNSIGNED NOT NULL'); + $this->addSql('ALTER TABLE recyclingMission CHANGE id id INT UNSIGNED NOT NULL'); + $this->addSql('SET FOREIGN_KEY_CHECKS = 1'); + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..8ad9bc74f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2779 @@ +{ + "name": "kalaxia", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "license": "UNLICENSED", + "dependencies": { + "@hotwired/turbo": "^8.0.13", + "@tailwindcss/forms": "^0.5", + "chart.js": "^4.4.3" + }, + "devDependencies": { + "@hotwired/stimulus": "^3.0.0", + "@symfony/stimulus-bridge": "^3.2.0", + "@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/assets", + "autoprefixer": "^10.4", + "core-js": "^3.37", + "file-loader": "^6.2.0", + "postcss": "^8.4", + "postcss-loader": "^8.1", + "raw-loader": "^4.0", + "regenerator-runtime": "^0.14", + "tailwindcss": "^4.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@hotwired/stimulus": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz", + "integrity": "sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@hotwired/stimulus-webpack-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz", + "integrity": "sha512-wa/zupVG0eWxRYJjC1IiPBdt3Lruv0RqGN+/DTMmUWUyMAEB27KXmVY6a8YpUVTM7QwVuaLNGW4EqDgrS2upXQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@hotwired/stimulus": ">= 3.0" + } + }, + "node_modules/@hotwired/turbo": { + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.13.tgz", + "integrity": "sha512-M7qXUqcGab6G5PKOiwhgbByTtrPgKPFCTMNQ52QhzUEXEqmp0/ApEguUesh/FPiUjrmFec+3lq98KsWnYY2C7g==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@symfony/stimulus-bridge": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@symfony/stimulus-bridge/-/stimulus-bridge-3.2.3.tgz", + "integrity": "sha512-36rQTihQ2MGOn8EmdOYCr3DQfP3WS1CNcUUXKTPY5ghtFOeb7OVuhbc32AjRowE2/vaVDOUCPOTv3VLf5VtXBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hotwired/stimulus-webpack-helpers": "^1.0.1", + "@types/webpack-env": "^1.16.4", + "acorn": "^8.0.5", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || >=12.0.0" + }, + "peerDependencies": { + "@hotwired/stimulus": "^3.0" + } + }, + "node_modules/@symfony/ux-turbo": { + "resolved": "vendor/symfony/ux-turbo/assets", + "link": true + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.1.tgz", + "integrity": "sha512-QSwsFORnC2BAP0lRzQkz1pw+EzIiiPdk4e27vGQjyXkwJPeC7iLIRVndJzf9CJVbcrrIcirb/TfxF3gRTyFEVA==", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "peer": true + }, + "node_modules/@types/webpack-env": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", + "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001695", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chart.js": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz", + "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/core-js": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.85", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.85.tgz", + "integrity": "sha512-UgTI7ZHxtSjOUwV0vZLpqT604U1Z8L3bq8mAtAKtuRPlMZ/6dLFMYgYnLdXSi/urbVTP2ykDb9EDDUrdIzw4Qg==", + "dev": true, + "license": "ISC" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "peer": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.0.tgz", + "integrity": "sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "vendor/symfony/ux-turbo/assets": { + "name": "@symfony/ux-turbo", + "version": "0.1.0", + "dev": true, + "license": "MIT", + "devDependencies": { + "@hotwired/stimulus": "^3.0.0", + "@hotwired/turbo": "^7.1.0 || ^8.0" + }, + "peerDependencies": { + "@hotwired/stimulus": "^3.0.0", + "@hotwired/turbo": "^7.1.1 || ^8.0" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true + }, + "@hotwired/stimulus": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz", + "integrity": "sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==", + "dev": true + }, + "@hotwired/stimulus-webpack-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz", + "integrity": "sha512-wa/zupVG0eWxRYJjC1IiPBdt3Lruv0RqGN+/DTMmUWUyMAEB27KXmVY6a8YpUVTM7QwVuaLNGW4EqDgrS2upXQ==", + "dev": true, + "requires": {} + }, + "@hotwired/turbo": { + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.13.tgz", + "integrity": "sha512-M7qXUqcGab6G5PKOiwhgbByTtrPgKPFCTMNQ52QhzUEXEqmp0/ApEguUesh/FPiUjrmFec+3lq98KsWnYY2C7g==" + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "peer": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "peer": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==" + }, + "@symfony/stimulus-bridge": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@symfony/stimulus-bridge/-/stimulus-bridge-3.2.3.tgz", + "integrity": "sha512-36rQTihQ2MGOn8EmdOYCr3DQfP3WS1CNcUUXKTPY5ghtFOeb7OVuhbc32AjRowE2/vaVDOUCPOTv3VLf5VtXBA==", + "dev": true, + "requires": { + "@hotwired/stimulus-webpack-helpers": "^1.0.1", + "@types/webpack-env": "^1.16.4", + "acorn": "^8.0.5", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "@symfony/ux-turbo": { + "version": "file:vendor/symfony/ux-turbo/assets", + "requires": { + "@hotwired/stimulus": "^3.0.0", + "@hotwired/turbo": "^7.1.0 || ^8.0" + } + }, + "@tailwindcss/forms": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.1.tgz", + "integrity": "sha512-QSwsFORnC2BAP0lRzQkz1pw+EzIiiPdk4e27vGQjyXkwJPeC7iLIRVndJzf9CJVbcrrIcirb/TfxF3gRTyFEVA==", + "requires": { + "mini-svg-data-uri": "^1.2.3" + } + }, + "@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "peer": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", + "dev": true, + "peer": true + }, + "@types/webpack-env": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", + "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "peer": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001695", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", + "dev": true + }, + "chart.js": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz", + "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==", + "requires": { + "@kurkle/color": "^0.3.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true + }, + "core-js": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", + "dev": true + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "electron-to-chromium": { + "version": "1.5.85", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.85.tgz", + "integrity": "sha512-UgTI7ZHxtSjOUwV0vZLpqT604U1Z8L3bq8mAtAKtuRPlMZ/6dLFMYgYnLdXSi/urbVTP2ykDb9EDDUrdIzw4Qg==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "peer": true + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "peer": true + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "peer": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "peer": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "peer": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "peer": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" + }, + "nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, + "node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "postcss": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "requires": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "peer": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "tailwindcss": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.0.tgz", + "integrity": "sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true + }, + "terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true + } + } + } + } +} diff --git a/package.json b/package.json index a114149e8..39827de45 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,22 @@ { - "name": "asylamba-game", - "version": "1.0.0", - "description": "ASYLAMBA : Expansion Stellaire", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/rtfmcorp/asylamba-game.git" - }, - "author": "RTFM Corp.", - "license": "ISC", - "bugs": { - "url": "https://github.com/rtfmcorp/asylamba-game/issues" - }, - "homepage": "https://github.com/rtfmcorp/asylamba-game#readme", - "devDependencies": { - "gulp": "^3.9.1", - "gulp-imagemin": "^3.1.1", - "gulp-jshint": "^2.0.4", - "gulp-less": "^3.1.0", - "gulp-rename": "^1.2.2", - "gulp-replace": "^0.5.4", - "gulp-util": "^3.0.7", - "jshint": "^2.9.4" - } + "devDependencies": { + "@hotwired/stimulus": "^3.0.0", + "@symfony/stimulus-bridge": "^3.2.0", + "@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/assets", + "autoprefixer": "^10.4", + "core-js": "^3.37", + "file-loader": "^6.2.0", + "postcss": "^8.4", + "postcss-loader": "^8.1", + "raw-loader": "^4.0", + "regenerator-runtime": "^0.14", + "tailwindcss": "^4.0.0" + }, + "license": "UNLICENSED", + "private": true, + "dependencies": { + "@hotwired/turbo": "^8.0.13", + "@tailwindcss/forms": "^0.5", + "chart.js": "^4.4.3" + } } diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 000000000..6b4869df3 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + bin/ + config/ + public/ + src/ + tests/ + + diff --git a/public/css/src/desktop-src/map/common-v2/revolteSeldarine b/phpstan-baseline.neon similarity index 100% rename from public/css/src/desktop-src/map/common-v2/revolteSeldarine rename to phpstan-baseline.neon diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 000000000..d3c30dcf6 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,9 @@ +includes: + - phpstan-baseline.neon + - vendor/phpstan/phpstan-doctrine/extension.neon + +parameters: + level: 1 + paths: + - src + - tests diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 22bbebc1d..64c8740fe 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,25 +1,29 @@ - - - - - - - - - - - - - - - - tests - - + + + + + + + + + + + + + tests + + + + + + + + src + + diff --git a/public/css/_oldstylesheet.css b/public/css/_oldstylesheet.css deleted file mode 100755 index d088b1d83..000000000 --- a/public/css/_oldstylesheet.css +++ /dev/null @@ -1,4487 +0,0 @@ -/* ------ COLOR TABLE ------ - clear dark normal -color1 #b01e2d #510816 #6e161b -color2 #2f23c0 #0c0d44 #1f1471 -color3 #ffdb0f #b17a00 #dbb200 -color4 #a935c7 #310948 #5a1072 -color5 #57c632 #24500a #2c7915 -color6 #05bed7 #004948 #076b87 -color7 #ac5832 #401b13 #67331d ------- */ - -body { - width: 100%; height: 100%; - overflow: hidden; - background: black; -} - -/* MAIN PAGE OBJECT */ - -#nav, #tools { - position: fixed; - width: 100%; height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; -} -#nav { - top: 0; left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -.color1 #nav, .color1 #tools { border-color: #b01e2d; } -.color2 #nav, .color2 #tools { border-color: #2f23c0; } -.color3 #nav, .color3 #tools { border-color: #ffdb0f; } -.color4 #nav, .color4 #tools { border-color: #a935c7; } -.color5 #nav, .color5 #tools { border-color: #57c632; } -.color6 #nav, .color6 #tools { border-color: #05bed7; } -.color7 #nav, .color7 #tools { border-color: #ac5832; } - -#container { - position: absolute; - top: 29px; left: 0; - margin: 0; padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; -} - -.icon, .icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - border-radius: 100%; -} -.color1 .icon-color { background: #b01e2d !important; } -.color2 .icon-color { background: #2f23c0 !important; } -.color3 .icon-color { background: #ffdb0f !important; } -.color4 .icon-color { background: #a935c7 !important; } -.color5 .icon-color { background: #57c632 !important; } -.color6 .icon-color { background: #05bed7 !important; } -.color7 .icon-color { background: #ac5832 !important; } - -/* NAV */ - -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; left: -15px; - width: 15px; height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; right: -15px; - width: 15px; height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} - -#nav .box.left { top: 0; left: 25px; } -#nav .box.left-2 { top: 0; left: 375px; } -#nav .box.left-3 { top: 0; left: 645px; } -#nav .box.right { top: 0; right: 25px; } - -#tools .box a, -#nav .box a { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before { - content: ''; - position: absolute; - top: 0; left: 0; - width: 20px; height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after { - content: ''; - position: absolute; - top: 0; right: 0; - width: 20px; height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#nav .box a.current-base { - margin-left: 56px; -} -#nav .box a.current-base img { - position: absolute; - top: -16px; left: -54px; - background: black; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} - -#tools .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:hover:before, -#nav .box a:focus.before { background: url('src/desktop/button/bButtonLeftHover.png') repeat; } -#tools .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:hover:after, -#nav .box a:focus.after { background: url('src/desktop/button/bButtonRightHover.png') repeat; } - -#nav .box a.active { background: url('src/desktop/button/bButtonMiddleActive.png') repeat; } -#nav .box a.active:before { background: url('src/desktop/button/bButtonLeftActive.png') repeat; } -#nav .box a.active:after { background: url('src/desktop/button/bButtonRightActive.png') repeat; } - -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; margin: 5px 2px; - height: 32px; width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#nav .box a.square:before, #tools .box a.square:before { display: none; } -#nav .box a.square:after, #tools .box a.square:after { display: none; } - -#tools .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:hover, -#nav .box a.square:focus { background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; } -#nav .box a.square.active { background: url('src/desktop/button/bLittleButtonActive.png') no-repeat; } - -.color1 #nav .box a.square.active, .color1 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c1.png') no-repeat; } -.color2 #nav .box a.square.active, .color2 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c2.png') no-repeat; } -.color3 #nav .box a.square.active, .color3 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c3.png') no-repeat; } -.color4 #nav .box a.square.active, .color4 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c4.png') no-repeat; } -.color5 #nav .box a.square.active, .color5 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c5.png') no-repeat; } -.color6 #nav .box a.square.active, .color6 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c6.png') no-repeat; } -.color7 #nav .box a.square.active, .color7 #tools .box a.square.active { background: url('src/desktop/button/bLittleButtonActive-c7.png') no-repeat; } - -#nav .box a.square.active.flashy { - border-radius: 3px; -} -.color1 #nav .box a.square.active.flashy, .color1 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #b01e2d; } -.color2 #nav .box a.square.active.flashy, .color2 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #2f23c0; } -.color3 #nav .box a.square.active.flashy, .color3 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #ffdb0f; } -.color4 #nav .box a.square.active.flashy, .color4 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #a935c7; } -.color5 #nav .box a.square.active.flashy, .color5 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #57c632; } -.color6 #nav .box a.square.active.flashy, .color6 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #05bed7; } -.color7 #nav .box a.square.active.flashy, .color7 #tools .box a.square.active.flashy { box-shadow: inset 0 0 12px #ac5832; } - -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; left: 8px; -} -#tools .box a.square img { - top: 4px; -} -#nav .box a.square span.number, -#tools .box a.square span.number { - position: absolute; - top: -5px; right: -5px; - width: 18px; line-height: 18px; - text-align: center; - font-size: 11px; - border-radius: 100%; - background: #202020; -} -#nav .box a.square span.number { - bottom: -5px; top: auto; -} - -.color1 #tools .box a.square span.number, .color1 #nav .box a.square span.number { background: #510816; } -.color2 #tools .box a.square span.number, .color2 #nav .box a.square span.number { background: #0c0d44; } -.color3 #tools .box a.square span.number, .color3 #nav .box a.square span.number { background: #b17a00; } -.color4 #tools .box a.square span.number, .color4 #nav .box a.square span.number { background: #310948; } -.color5 #tools .box a.square span.number, .color5 #nav .box a.square span.number { background: #24500a; } -.color6 #tools .box a.square span.number, .color6 #nav .box a.square span.number { background: #004948; } -.color7 #tools .box a.square span.number, .color7 #nav .box a.square span.number { background: #401b13; } - -#tools .box a.resource-link { - width: 110px; - font-size: 18px; -} - -#tools .box a.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; padding: 1px; -} - -/* overbox */ -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} - -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - border-radius: 3px; -} - -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} - -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; right: 10px; - line-height: 20px; - font-size: 11px; padding: 0 5px; - background: #202020; - border-radius: 3px; - text-decoration: none; - color: white; -} - -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; right: 30px; -} - -#nav .overbox#change-bases { - top: 50px; left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { left: 30px; right: auto; } -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} - -#nav .overbox#disconnect-box { - top: 50px; right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} - -#nav .overbox#bug-tracker { - width: 350px; - top: 50px; right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} - -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} - -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; height: 200px; - min-width: 318px; max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} - -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} - -#nav .overbox#roadmap { - width: 350px; - top: 50px; right: 143px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} - -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} - -#nav .overbox#tutorial { - width: 350px; - top: 50px; right: 188px; - color: white; -} - -#nav .overbox#tutorial form { - padding: 10px 15px; margin: 0; - border-top: solid 1px #202020; -} - -#nav .overbox#tutorial .overflow { - padding: 15px; -} - -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; padding: 0 0 0 36px; -} - -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; left: 0; - display: block; - width: 26px; line-height: 26px; - text-align: center; - background: #202020; - border-radius: 100%; - margin-right: 10px; -} -.color1 #nav .overbox#tutorial .overflow h3 .number { background: #510816; } -.color2 #nav .overbox#tutorial .overflow h3 .number { background: #0c0d44; } -.color3 #nav .overbox#tutorial .overflow h3 .number { background: #b17a00; } -.color4 #nav .overbox#tutorial .overflow h3 .number { background: #310948; } -.color5 #nav .overbox#tutorial .overflow h3 .number { background: #24500a; } -.color6 #nav .overbox#tutorial .overflow h3 .number { background: #004948; } -.color7 #nav .overbox#tutorial .overflow h3 .number { background: #401b13; } - -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} - -#nav .overbox#new-notifications { - top: 50px; - left: 540px; - width: 300px; -} - -/* TOOLS */ -#tools .box.left { - bottom: 0; right: 340px; -} -#tools .box.right { - bottom: 0; right: 25px; -} - -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; left: -15px; - width: 15px; height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; right: -15px; - width: 15px; height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} - -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - border-radius: 3px; - width: 300px; - bottom: 45px; right: 15px; -} - -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; right: auto; -} - -.overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} - -.overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} - -.overbox a.more-link:focus, -.overbox a.more-link:hover { - color: #CCC; -} - -#tools .overbox#tools-refinery { right: 401px; bottom: 45px; } -#tools .overbox#tools-generator { right: 237px; bottom: 45px; } -#tools .overbox#tools-technosphere { right: 193px; bottom: 45px; } - -#tools .overbox#tools-credit { right: 140px; bottom: 45px; } - -#tools .overbox#tools-incoming-attack { right: 230px; bottom: 45px; } -#tools .overbox#tools-outgoing-attack { right: 185px; bottom: 45px; } - -/* SUBNAV */ -#subnav { - position: fixed; - top: 29px; left: 2px; bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav .overflow { - position: relative; - height: 100%; -} -#subnav .item { - position: relative; - display: block; - height: 50px; width: 50px; - margin: 0 0 10px 0; padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item:before { - content: ''; position: absolute; - right: -6px; bottom: 0; - width: 12px; height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} - -#subnav .item .picto { - display: block; - height: 30px; width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; width: 30px; -} - -#subnav .item .picto .number { - position: absolute; - bottom: -5px; right: -18px; - display: block; - width: 28px; height: 28px; line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} - -#subnav .item .content { - display: none; - position: absolute; - top: 0; left: 75px; - width: 230px; -} -#subnav .item:hover > .content { - display: block; -} - -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; top: 22px; -} - -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { opacity: .5; } -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; right: -2px; - width: 18px; height: 18px; line-height: 18px; - border-radius: 100%; - text-align: center; -} -.color1 #subnav .item .content.skin-2 .sub-content .ship .number { background: #b01e2d; } -.color2 #subnav .item .content.skin-2 .sub-content .ship .number { background: #2f23c0; } -.color3 #subnav .item .content.skin-2 .sub-content .ship .number { background: #ffdb0f; } -.color4 #subnav .item .content.skin-2 .sub-content .ship .number { background: #a935c7; } -.color5 #subnav .item .content.skin-2 .sub-content .ship .number { background: #57c632; } -.color6 #subnav .item .content.skin-2 .sub-content .ship .number { background: #05bed7; } -.color7 #subnav .item .content.skin-2 .sub-content .ship .number { background: #ac5832; } - -/* COMPOSANT DE LA PAGE PROFIL */ -#background-paralax { - position: absolute; - top: 0; left: 0; - width: 100%; height: 100%; - background: no-repeat bottom left black; - z-index: 100; -} - -#background-paralax.profil { background-image: url('src/desktop/screen/profil.jpg'); } -#background-paralax.message { background-image: url('src/desktop/screen/message.jpg'); } -#background-paralax.fleet { background-image: url('src/desktop/screen/fleet.jpg'); } -#background-paralax.financial { background-image: url('src/desktop/screen/financial.jpg'); } -#background-paralax.technology { background-image: url('src/desktop/screen/profil.jpg'); } -#background-paralax.rank { background-image: url('src/desktop/screen/profil.jpg'); } -#background-paralax.params { background-image: url('src/desktop/screen/profil.jpg'); } - -#background-paralax.bases { background-image: url('src/desktop/screen/base.jpg'); } - -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} - -#movers a:hover, #movers a:focus { background-color: rgba(255, 255, 255, .05); } -#movers a:active { background-color: rgba(255, 255, 255, .15); } - -#movers .toLeft { - top: 0; left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} - -/* GENERAL RULES FOR ALERT */ -#alert-content { - display: none; -} - -#alert { - position: absolute; - bottom: 18px; left: 0; - width: 100%; - padding: 0; - text-align: left; - list-style: inset none; -} - -#alert li { - display: inline-block; - margin: 0 0 0 5px -} - -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - border-radius: 100%; -} - -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} - -.alert-bull .title { - display: block; - padding: 0 0 5px 0; margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} - -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} - -/* GENERAL RULES FOR COMPONENTS */ -#content { - position: absolute; - width: 6000px; /* a modifier */ - height: 100%; - top: 0; left: 300px; - z-index: 200; -} - -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, .92); -} -#content .component.size2 { width: 600px; } -#content .component.size3 { width: 900px; } -#content .component:nth-child(1) { background: rgba(0, 0, 0, .60); } -#content .component:nth-child(2) { background: rgba(0, 0, 0, .75); } -#content .component:nth-child(3) { background: rgba(0, 0, 0, .85); } -#content .component:nth-child(4) { background: rgba(0, 0, 0, .90); } - -#content .component .head { - position: relative; - display: inline-block; - height: 120px; width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} - -#content .component .head h1 { - position: absolute; - top: 10px; left: 10px; - font-size: 38px; line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} - -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} - -#content .component .fix-body .body { position: relative; } - -.no-scrolling #content .component .fix-body { overflow: hidden; } -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; height: 40px; - left: 0; - opacity: 0; -} - -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} - -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, .8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, .8), transparent); - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, .8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, .8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, .8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, .8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, .8), black); - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, .8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, .8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, .8), black); -} - -/* GENERAL ELEMENTS FOR COMPONENTS */ -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; -} - -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span a { - position: relative; - display: block; - padding: 0; - width: 30px; - line-height: 30px; - font-size: 14px; - color: white; - text-decoration: none; - font-variant: small-caps; - text-align: center; - background: #202020; - border: solid 1px #4F4F4F; -} -.color1 .component .tool > span a.active { background: #b01e2d; } -.color2 .component .tool > span a.active { background: #2f23c0; } -.color3 .component .tool > span a.active { background: #ffdb0f; } -.color4 .component .tool > span a.active { background: #a935c7; } -.color5 .component .tool > span a.active { background: #57c632; } -.color6 .component .tool > span a.active { background: #05bed7; } -.color7 .component .tool > span a.active { background: #ac5832; } -.component .tool > span a.active.down { box-shadow: 0 2px 0 0 #CCC; } -.component .tool > span a.active.up { box-shadow: 0 -2px 0 0 #CCC; } - -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component .tool > span:first-child a { width: auto; } -.component .tool > span a:focus, -.component .tool > span a:hover { - background: #4F4F4F; -} -.component .tool > span a img { - width: 18px; position: relative; - top: -4px; -} - -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-size: 14px; - color: white; - text-decoration: none; - font-variant: small-caps; -} - -.color1 .component .tool, .color1 .component h3 { border-bottom: solid 1px #b01e2d; } -.color2 .component .tool, .color2 .component h3 { border-bottom: solid 1px #2f23c0; } -.color3 .component .tool, .color3 .component h3 { border-bottom: solid 1px #ffdb0f; } -.color4 .component .tool, .color4 .component h3 { border-bottom: solid 1px #a935c7; } -.color5 .component .tool, .color5 .component h3 { border-bottom: solid 1px #57c632; } -.color6 .component .tool, .color6 .component h3 { border-bottom: solid 1px #05bed7; } -.color7 .component .tool, .color7 .component h3 { border-bottom: solid 1px #ac5832; } - -.component h4 { - margin: 10px; -} - -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} - -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, .8); -} - -.component .body p.info a { - color: white; -} - -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} - -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} - -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; -} -.color1 .component .body p .alone-button { background: #510816; } -.color2 .component .body p .alone-button { background: #0c0d44; } -.color3 .component .body p .alone-button { background: #b17a00; } -.color4 .component .body p .alone-button { background: #310948; } -.color5 .component .body p .alone-button { background: #24500a; } -.color6 .component .body p .alone-button { background: #004948; } -.color7 .component .body p .alone-button { background: #401b13; } -.color1 .component .body p .alone-button:hover { background: #6e161b; } -.color2 .component .body p .alone-button:hover { background: #1f1471; } -.color3 .component .body p .alone-button:hover { background: #dbb200; } -.color4 .component .body p .alone-button:hover { background: #5a1072; } -.color5 .component .body p .alone-button:hover { background: #2c7915; } -.color6 .component .body p .alone-button:hover { background: #076b87; } -.color7 .component .body p .alone-button:hover { background: #67331d; } - -.component .head.skin-1 img { - position: absolute; - top: 22px; left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} - -.component .head.skin-1 img:before { - content: ''; - width: 100px; height: 100px; -} - -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; padding: 0; -} - -.component .head.skin-1 em { - position: absolute; - top: 62px; left: 105px; - font-size: 13px; - line-height: 16px; -} - -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; padding: 0 10px; - background: black; -} - -.component .head.skin-3 img { - position: absolute; - width: 50px; padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { left: 40px;} -.component .head.skin-3 img.right { right: 40px;} - -.component .head.skin-4 img.main { - position: absolute; - width: 30px; height: 30px; padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} - -.component .head.skin-4 h2 { - position: absolute; - top: 35px; left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; padding: 0; -} - -.component .head.skin-4 em { - position: absolute; - top: 65px; left: 60px; - font-size: 13px; - line-height: 16px; -} - -.component .head.skin-5 h2 { - position: absolute; - top: 50px; left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; padding: 0 20px; - background: black; -} - -.component .head.skin-5 h2:before { - content: ''; - position: absolute; display: block; - top: 5px; left: 0; - width: 8px; height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} - -.color1 .component .border-bottom { border-bottom: solid 3px #b01e2d; } -.color2 .component .border-bottom { border-bottom: solid 3px #2f23c0; } -.color3 .component .border-bottom { border-bottom: solid 3px #ffdb0f; } -.color4 .component .border-bottom { border-bottom: solid 3px #a935c7; } -.color5 .component .border-bottom { border-bottom: solid 3px #57c632; } -.color6 .component .border-bottom { border-bottom: solid 3px #05bed7; } -.color7 .component .border-bottom { border-bottom: solid 3px #ac5832; } - -.component .list-type-1 { - margin: 10px; padding: 0; - list-style: none; -} - -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, .8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} - -.component .list-type-1 li.empty { - background: none; - border: none; - height: 48px; -} - -.component .list-type-1 li ul li { - height: auto; -} - -.component .list-type-1 .label { - display: block; - font-size: 13px; -} - -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; line-height: 30px; - font-weight: bold; -} - -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} - -.component .list-type-1 .hide { color: #4F4F4F; } -.component .list-type-1 .buttons { - position: absolute; - top: 28px; left: 5px; -} - -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: black; -} -.color1 .component .list-type-1 .buttons a { background: #6e161b; } -.color2 .component .list-type-1 .buttons a { background: #1f1471; } -.color3 .component .list-type-1 .buttons a { background: #dbb200; } -.color4 .component .list-type-1 .buttons a { background: #5a1072; } -.color5 .component .list-type-1 .buttons a { background: #2c7915; } -.color6 .component .list-type-1 .buttons a { background: #076b87; } -.color7 .component .list-type-1 .buttons a { background: #67331d; } - -.component .sub-list-type-1 { - display: none; - margin: 0; padding: 0; - list-style: none; -} - -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} - -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} - -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} - -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; font-weight: normal; - color: white; - background: white; - border-radius: 3px; -} -.component .sub-list-type-1 .label .button { - position: relative; left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.color1 .component .sub-list-type-1 .button { background: #b01e2d; } -.color2 .component .sub-list-type-1 .button { background: #2f23c0; } -.color3 .component .sub-list-type-1 .button { background: #ffdb0f; } -.color4 .component .sub-list-type-1 .button { background: #a935c7; } -.color5 .component .sub-list-type-1 .button { background: #57c632; } -.color6 .component .sub-list-type-1 .button { background: #05bed7; } -.color7 .component .sub-list-type-1 .button { background: #ac5832; } - -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; right: 3px; -} - -.component .sub-list-type-1 form { - right: -6px; -} - -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; margin: 0; - width: 200px; height: 35px; -} - -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} - -.component .list-type-1 form input { - border: none; background: none; - line-height: 35px; height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { width: 140px; } -.component .list-type-1 form input[type='submit'] { width: 40px; } - -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.color1 .number-box { border-left: solid 10px #6e161b; } -.color2 .number-box { border-left: solid 10px #1f1471; } -.color3 .number-box { border-left: solid 10px #dbb200; } -.color4 .number-box { border-left: solid 10px #5a1072; } -.color5 .number-box { border-left: solid 10px #2c7915; } -.color6 .number-box { border-left: solid 10px #076b87; } -.color7 .number-box { border-left: solid 10px #67331d; } - -.number-box .label { display: block; } -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} - -.number-box .progress-bar { - margin: 5px 0; -} - -.number-box .group-link { - position: absolute; - top: 5px; right: 5px; -} - -.number-box .group-link a { - display: inline-block; - line-height: 18px; width: 18px; - text-align: center; - color: white; text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: black; -} -.color1 .number-box .group-link a { background: #6e161b; } -.color2 .number-box .group-link a { background: #1f1471; } -.color3 .number-box .group-link a { background: #dbb200; } -.color4 .number-box .group-link a { background: #5a1072; } -.color5 .number-box .group-link a { background: #2c7915; } -.color6 .number-box .group-link a { background: #076b87; } -.color7 .number-box .group-link a { background: #67331d; } - -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; height: 3px; - background: #4F4F4F; - overflow: hidden; -} - -.progress-bar .content { - position: relative; - top: -9px; - display: inline-block; - height: 5px; -} -.color1 .progress-bar .content:nth-child(n) { background: #b01e2d; } -.color2 .progress-bar .content:nth-child(n) { background: #2f23c0; } -.color3 .progress-bar .content:nth-child(n) { background: #ffdb0f; } -.color4 .progress-bar .content:nth-child(n) { background: #a935c7; } -.color5 .progress-bar .content:nth-child(n) { background: #57c632; } -.color6 .progress-bar .content:nth-child(n) { background: #05bed7; } -.color7 .progress-bar .content:nth-child(n) { background: #ac5832; } -.color1 .progress-bar .content:nth-child(2n) { background: #510816; } -.color2 .progress-bar .content:nth-child(2n) { background: #0c0d44; } -.color3 .progress-bar .content:nth-child(2n) { background: #b17a00; } -.color4 .progress-bar .content:nth-child(2n) { background: #310948; } -.color5 .progress-bar .content:nth-child(2n) { background: #24500a; } -.color6 .progress-bar .content:nth-child(2n) { background: #004948; } -.color7 .progress-bar .content:nth-child(2n) { background: #401b13; } - -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: black; -} -.color1 .bonus { background: #510816; } -.color2 .bonus { background: #0c0d44; } -.color3 .bonus { background: #b17a00; } -.color4 .bonus { background: #310948; } -.color5 .bonus { background: #24500a; } -.color6 .bonus { background: #004948; } -.color7 .bonus { background: #401b13; } - -/* RULES FOR COMPONENTS */ - -/* profil */ -.component.profil .main-avatar, -.component.profil .diary-avatar { - display: block; - background: black; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; -} - -.color1 .component.profil .main-avatar { box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; } -.color2 .component.profil .main-avatar { box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; } -.color3 .component.profil .main-avatar { box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; } -.color4 .component.profil .main-avatar { box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; } -.color5 .component.profil .main-avatar { box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; } -.color6 .component.profil .main-avatar { box-shadow: 0 0 0 4px #076b87, 0 0 20px black; } -.color7 .component.profil .main-avatar { box-shadow: 0 0 0 4px #67331d, 0 0 20px black; } - -.component.profil form { - display: block !important; -} - -.component.profil p.input:before { - left: 130px !important; - top: -20px !important; - border-width: 10px !important; -} - -.component.profil textarea { - height: 100px !important; -} - -.component.profil .diary-content { - margin: 10px; padding: 0; - background: #0A0A0A; - border-radius: 3px; - border-top: solid 10px white; -} -.component.profil .diary-content h4 { - border-bottom: solid 1px #4F4F4F; - padding: 10px 0; margin: 0 10px; -} -.component.profil .diary-content h4 strong { - display: block; - font-size: 22px; - line-height: 28px; -} -.component.profil .diary-content p { - font-size: #CCC; -} -.component.profil .diary-content form { - background: white; - border-radius: 0 0 3px 3px; - padding: 0 0 1px 0; -} -.component.profil .diary-content form textarea { - display: block; - border: none; padding: 5px 0; - width: 258px; - max-width: 500px; -} - -/* diary */ -.component.search-player { - position: relative; - background: transparent !important; -} - -.component.search-player .box { - position: absolute; - top: 60px; left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, .4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .center { - background: rgba(0, 0, 0, .8); - padding: 10px 25px 10px 10px; - min-height: 140px; -} -.component.search-player .bottom { - background: rgba(0, 0, 0, .4); - border-radius: 0 0 3px 3px; -} - -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; width: 400px; - padding: 0 10px; margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} - -.component.search-player .center .avatar { - float: left; position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} - -.component.search-player.color1 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; } -.component.search-player.color2 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; } -.component.search-player.color3 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; } -.component.search-player.color4 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; } -.component.search-player.color5 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; } -.component.search-player.color6 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #076b87; } -.component.search-player.color7 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px #67331d; } - -.component.search-player .center h1 { margin: 10px 0 0 0; padding: 0; } -.component.search-player .center hr { margin: 10px 0; border-color: #4F4F4F; } -.component.search-player .center p { margin: 5px 0; padding: 0; } - -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; padding: 0 10px; - border: solid 1px rgba(255, 255, 255, .5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, .5); -} -.component.search-player.color1 .center p span { background: #6e161b; } -.component.search-player.color2 .center p span { background: #1f1471; } -.component.search-player.color3 .center p span { background: #dbb200; } -.component.search-player.color4 .center p span { background: #5a1072; } -.component.search-player.color5 .center p span { background: #2c7915; } -.component.search-player.color6 .center p span { background: #076b87; } -.component.search-player.color7 .center p span { background: #67331d; } - -.component.search-player .bottom .overflow { - overflow: hidden; - padding: 10px; height: 70px; -} -.component.search-player .bottom .overflow .container { - position: relative; left: 0; - width: 10000px; -} -.component.search-player .bottom .base { - display: inline-block; - vertical-align: top; - margin: 0 10px 0 0; - height: 70px; -} -.component.search-player .bottom .base img { - width: 70px; - float: left; - background: #0A0A0A; - border-radius: 100%; -} -.component.search-player .bottom .base .right { - display: none; - width: 185px; height: 100%; - border-radius: 80px; - padding: 0 0 0 75px; - background: rgba(0, 0, 0 ,.5); -} -.component.search-player .bottom .base .right * { - display: block; - line-height: 18px; -} -.component.search-player .bottom .base .right strong { - padding: 8px 0 0 0; -} -.component.search-player .bottom .base .right a { - color: white; -} - -/* thread */ -.component.thread .message { - position: relative; - margin: 20px 10px 10px 10px; padding: 6px 8px; - background: black; - line-height: 140%; - text-align: justify; - color: #efefef; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; - border-bottom: solid 3px #4F4F4F; -} -.component.thread .message:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent #4F4F4F transparent; -} -.component.thread .message.left:before { left: 20px; } -.component.thread .message.right:before { right: 20px; } -.component.thread .message.color1 { border-bottom: solid 3px #b01e2d; } -.component.thread .message.color2 { border-bottom: solid 3px #2f23c0; } -.component.thread .message.color3 { border-bottom: solid 3px #ffdb0f; } -.component.thread .message.color4 { border-bottom: solid 3px #a935c7; } -.component.thread .message.color5 { border-bottom: solid 3px #57c632; } -.component.thread .message.color6 { border-bottom: solid 3px #05bed7; } -.component.thread .message.color7 { border-bottom: solid 3px #ac5832; } - -.component.thread .message em.name { - padding: 0 0 5px 0; - display: block; - color: #CCC; -} -.component.thread .message em.option { - padding: 5px 0 0 0; - text-align: right; - display: block; - color: #CCC; -} - -.component.thread .message .icon-color { - width: 15px; -} - -.component.thread .message a { - color: #EFEFEF; -} - -.component.thread .message a.color1 { color: #b01e2d; } -.component.thread .message a.color2 { color: #2f23c0; } -.component.thread .message a.color3 { color: #ffdb0f; } -.component.thread .message a.color4 { color: #a935c7; } -.component.thread .message a.color5 { color: #57c632; } -.component.thread .message a.color6 { color: #05bed7; } -.component.thread .message a.color7 { color: #ac5832; } - -.component.thread form { - display: none; -} - -.component.thread p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} - -.component.thread p.input:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} - -.component.thread textarea { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: 'Trebuchet MS'; - font-size: 13px; - max-width: 100%; min-width: 100%; - height: 120px; -} - -.component.thread .more-message { - display: block; - margin: 10px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} - -.component.thread .more-message:hover, -.component.thread .more-message:focus, -.component.thread .more-message:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} - -/* new-message */ -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} - -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} - -.component.new-message label { - display: block; - font-size: 13px; -} - -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: 'Trebuchet MS'; - font-size: 13px; -} - -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: 'Trebuchet MS'; - font-size: 13px; - max-width: 100%; min-width: 100%; - height: 200px; -} - -/* last-notif */ -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} - -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} - -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; height: 40px; - background: white; - top: -5px; right: -15px; - - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} - -.color1 .notif.unreaded h4:before { background: #b01e2d; } -.color2 .notif.unreaded h4:before { background: #2f23c0; } -.color3 .notif.unreaded h4:before { background: #ffdb0f; } -.color4 .notif.unreaded h4:before { background: #a935c7; } -.color5 .notif.unreaded h4:before { background: #57c632; } -.color6 .notif.unreaded h4:before { background: #05bed7; } -.color7 .notif.unreaded h4:before { background: #ac5832; } - -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} - -.notif .content p { margin: 0; } -.notif .content hr { - border: none; background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} - -.notif .content a { - color: white; -} - -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; padding: 5px 5px 5px 40px; -} - -.notif .content .box-resource img { - position: absolute; - top: 6px; left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; -} -.color1 .notif .content .box-resource img { border-color: #6e161b; } -.color2 .notif .content .box-resource img { border-color: #1f1471; } -.color3 .notif .content .box-resource img { border-color: #dbb200; } -.color4 .notif .content .box-resource img { border-color: #5a1072; } -.color5 .notif .content .box-resource img { border-color: #2c7915; } -.color6 .notif .content .box-resource img { border-color: #076b87; } -.color7 .notif .content .box-resource img { border-color: #67331d; } - -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} - -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} - - -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} - -.notif .footer a { color: #CCC; } -.notif.open .content { display: block; } -.notif.open .footer { display: block; } - -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} - -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} - -/* techno */ -.component.techno .build-item .name strong { font-size: 16px; } - -/* school */ -.component.school .build-item .name strong { font-size: 18px; } - -/* nav */ -.component .nav-element { - position: relative; - display: block; - margin: 10px; height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} - -.component .nav-element img { - position: absolute; - top: 5px; left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} - -.color1 .component .nav-element.active { background: #6e161b; } -.color2 .component .nav-element.active { background: #1f1471; } -.color3 .component .nav-element.active { background: #dbb200; } -.color4 .component .nav-element.active { background: #5a1072; } -.color5 .component .nav-element.active { background: #2c7915; } -.color6 .component .nav-element.active { background: #076b87; } -.color7 .component .nav-element.active { background: #67331d; } -.component .nav-element.active img { background: black; } - -.component .nav-element strong { - position: absolute; - top: 8px; left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} - -.component .nav-element em { - position: absolute; - top: 32px; left: 70px; - color: white; - font-weight: bold; - font-size: 12px; - font-style: normal; - color: #efefef; -} - -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} - -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} - -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} - -.component.rc .rc a, .component.rc .rc strong { - color: white; -} - - -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} - -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} - -.component.rc .rc .place { - position: absolute; - top: 0px; left: -50px; - width: 78px; height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} - -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; padding: 0; -} - -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} - -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} - -/* list-fleet */ -.component.list-fleet hr { - margin: 10px 0; - border: none; - border-top: solid 1px #202020; -} - -.component.list-fleet .fleet-element { - position: relative; - margin: 10px 10px 0 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - height: 45px; - background: black; - line-height: 18px; -} - -.component.list-fleet .fleet-element.active { - background: #0A0A0A; - border: solid 1px #202020; -} - -.component.list-fleet .fleet-element strong { - display: block; -} - -.component.list-fleet .fleet-element .status { - position: absolute; - display: block; - top: 7px; left: 7px; - width: 29px; height: 29px; - padding: 1px; - background: red; - border-radius: 3px; -} - -.color1 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color1 .status { background: #6e161b; } -.color2 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color2 .status { background: #1f1471; } -.color3 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color3 .status { background: #dbb200; } -.color4 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color4 .status { background: #5a1072; } -.color5 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color5 .status { background: #2c7915; } -.color6 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color6 .status { background: #076b87; } -.color7 .component.list-fleet .fleet-element .status, .component.list-fleet .fleet-element.color7 .status { background: #67331d; } - -.component.list-fleet .fleet-element .name { - position: absolute; - display: block; - top: 0; left: 45px; - width: 80px; height: 35px; - padding: 5px; -} - -.component.list-fleet .fleet-element .pev { - position: absolute; - display: block; - top: 14px; left: 135px; - width: 80px; height: 20px; - font-size: 18px; - text-align: right; -} -.component.list-fleet .fleet-element .pev img { width: 15px; } - -.component.list-fleet .fleet-element .location { - position: absolute; - display: block; - top: 0; left: 235px; - width: 290px; height: 35px; - padding: 5px; -} -.component.list-fleet .fleet-element .location a { color: white; } - -.component.list-fleet .fleet-element .duration { - position: absolute; - display: block; - bottom: 1px; right: 5px; -} - -.component.list-fleet .fleet-element .button { - position: absolute; - display: block; - top: 5px; right: 5px; - padding: 3px; - width: 14px; height: 14px; - background: #4F4F4F; - border: none; - color: white; - text-decoration: none; - line-height: 14px; text-align: center; - font-size: 20px; -} -.color1 .component.list-fleet .fleet-element .button { background: #510816; } -.color2 .component.list-fleet .fleet-element .button { background: #0c0d44; } -.color3 .component.list-fleet .fleet-element .button { background: #b17a00; } -.color4 .component.list-fleet .fleet-element .button { background: #310948; } -.color5 .component.list-fleet .fleet-element .button { background: #24500a; } -.color6 .component.list-fleet .fleet-element .button { background: #004948; } -.color7 .component.list-fleet .fleet-element .button { background: #401b13; } -.component.list-fleet .fleet-element .button img { - width: 14px; height: 14px; - border: none; -} - -.component.list-fleet .fleet-element .progress-bar { - position: absolute; - bottom: -3px; left: 0; -} - -/* squadron */ -.component.commander-fleet .fleet { - vertical-align: top; - display: inline-block; -} - -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} - -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} - -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} - -.component.commander-fleet .army { - margin: 10px; - border-collapse: collapse; - width: 578px; -} -.component.commander-fleet .army td { - width: 65px; padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; -} -.component.commander-fleet .army tr:first-child td:first-child { - text-align: left; - font-weight: normal; -} - -.component.commander-fleet .army .block { - display: block; - width: 54px; height: 54px; - margin: 0 0 5px 0; padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} - -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} - -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} - -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer;< -} -.component.commander-fleet .army .block.squadron.full0 { background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px; } -.component.commander-fleet .army .block.squadron.full1 { background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px; } -.component.commander-fleet .army .block.squadron.full2 { background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px; } -.component.commander-fleet .army .block.squadron.full3 { background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px; } -.color1 .component.commander-fleet .army .block.squadron { background-color: #6e161b; } -.color2 .component.commander-fleet .army .block.squadron { background-color: #1f1471; } -.color3 .component.commander-fleet .army .block.squadron { background-color: #dbb200; } -.color4 .component.commander-fleet .army .block.squadron { background-color: #5a1072; } -.color5 .component.commander-fleet .army .block.squadron { background-color: #2c7915; } -.color6 .component.commander-fleet .army .block.squadron { background-color: #076b87; } -.color7 .component.commander-fleet .army .block.squadron { background-color: #67331d; } - -.component.commander-fleet .army .block.squadron.active { - box-shadow: - inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} - -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} - -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} - -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} - -.component .build-item.large { - width: 578px; -} - -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; left: 5px; - width: 60px; padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item.disable .name img { opacity: .50; } - -.component .build-item .name strong { - display: block; - font-size: 20px; -} - -.component .build-item.disable .name strong { - color: #4F4F4F; -} - -.component .build-item .level { - display: block; - position: absolute; - width: 22px; line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; left: 58px; - border: solid 1px white; - z-index: 22; - background: black; -} - -.color1 .component .build-item .level { background: #6e161b; } -.color2 .component .build-item .level { background: #1f1471; } -.color3 .component .build-item .level { background: #dbb200; } -.color4 .component .build-item .level { background: #5a1072; } -.color5 .component .build-item .level { background: #2c7915; } -.color6 .component .build-item .level { background: #076b87; } -.color7 .component .build-item .level { background: #67331d; } - -.component .build-item .info { - display: none; - position: absolute; - width: 20px; line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; right: 5px; - background: black; - color: white; -} -.component .build-item.large .info { - top: 75px; right: 25px; -} -.color1 .component .build-item .info { background: #6e161b; } -.color2 .component .build-item .info { background: #1f1471; } -.color3 .component .build-item .info { background: #dbb200; } -.color4 .component .build-item .info { background: #5a1072; } -.color5 .component .build-item .info { background: #2c7915; } -.color6 .component .build-item .info { background: #076b87; } -.color7 .component .build-item .info { background: #67331d; } - -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} - -.component .build-item .button { - display: block; - margin: 10px; padding: 5px 10px; - width: 240px; line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #202020; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item.large .button { - display: block; - top: -3px; right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item .button:hover { box-shadow: inset 0 0 6px black; } -.color1 .component .build-item .button { background: #6e161b; } -.color2 .component .build-item .button { background: #1f1471; } -.color3 .component .build-item .button { background: #dbb200; } -.color4 .component .build-item .button { background: #5a1072; } -.color5 .component .build-item .button { background: #2c7915; } -.color6 .component .build-item .button { background: #076b87; } -.color7 .component .build-item .button { background: #67331d; } -.color1 .component .build-item .button:hover { background: #b01e2d; } -.color2 .component .build-item .button:hover { background: #2f23c0; } -.color3 .component .build-item .button:hover { background: #ffdb0f; } -.color4 .component .build-item .button:hover { background: #a935c7; } -.color5 .component .build-item .button:hover { background: #57c632; } -.color6 .component .build-item .button:hover { background: #05bed7; } -.color7 .component .build-item .button:hover { background: #ac5832; } -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item.disable .button.disable { - color: #696969; -} -.component .build-item .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item .button .icon-color { - width: 14px; -} - -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; left: 15px; - width: 60px; height: 40px; - padding: 0; margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} - -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} - -.component .build-item .ship-illu img { - width: 100%; -} - -.queue { - margin: 10px; - color: white; -} - -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; -} - -.queue .item a.button { - position: absolute; - display: block; - top: 2px; right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} - -.queue .item .picto { - float: left; - width: 40px; - margin: 5px; padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} - -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} - -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { display: block; } -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; height: 3px; - background: #4F4F4F; -} - -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #202020; -} -.color1 .queue .item .progress-bar { background: #b01e2d; } -.color2 .queue .item .progress-bar { background: #2f23c0; } -.color3 .queue .item .progress-bar { background: #ffdb0f; } -.color4 .queue .item .progress-bar { background: #a935c7; } -.color5 .queue .item .progress-bar { background: #57c632; } -.color6 .queue .item .progress-bar { background: #05bed7; } -.color7 .queue .item .progress-bar { background: #ac5832; } - -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} - -.component .situation-content { - display: block; - width: 100%; height: 500px; - border-bottom: solid 1px #0A0A0A; -} - -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; height: 25px; line-height: 25px; - text-align: center; - background: black; - border-radius: 100%; -} -.color1 .component .situation-content .line-help { background: #510816; } -.color2 .component .situation-content .line-help { background: #0c0d44; } -.color3 .component .situation-content .line-help { background: #b17a00; } -.color4 .component .situation-content .line-help { background: #310948; } -.color5 .component .situation-content .line-help { background: #24500a; } -.color6 .component .situation-content .line-help { background: #004948; } -.color7 .component .situation-content .line-help { background: #401b13; } - -.component .situation-content .line-help.line-1 { top: 55px; left: 190px; } -.component .situation-content .line-help.line-2 { top: 145px; left: 406px; } - -.component .situation-content .toolbar { - position: absolute; - top: 30px; right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, .1); - border-radius: 3px; -} -.color1 .component .situation-content .toolbar { background: #6e161b; } -.color2 .component .situation-content .toolbar { background: #1f1471; } -.color3 .component .situation-content .toolbar { background: #dbb200; } -.color4 .component .situation-content .toolbar { background: #5a1072; } -.color5 .component .situation-content .toolbar { background: #2c7915; } -.color6 .component .situation-content .toolbar { background: #076b87; } -.color7 .component .situation-content .toolbar { background: #67331d; } - -.component .situation-content .toolbar a { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} - -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, .25); -} - -.component .situation-content .toolbar form { - display: inline-block; -} - -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, .25); -} - -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, .25); -} - -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} - -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { top: 135px; left: 127px; } -.component .situation-content .commander.position-1-2 { top: 272px; left: 100px; } -.component .situation-content .commander.position-1-3 { top: 415px; left: 127px; } - -.component .situation-content .commander.position-2-1 { top: 215px; left: 352px; } -.component .situation-content .commander.position-2-2 { top: 272px; left: 345px; } -.component .situation-content .commander.position-2-3 { top: 330px; left: 352px; } - -.component .situation-content .commander img { - width: 40px; padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - - -moz-transition: all linear 250ms; - -webkit-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.color1 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; } -.color2 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; } -.color3 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; } -.color4 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; } -.color5 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; } -.color6 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #076b87; } -.color7 .component .situation-content .commander.full img { box-shadow: 0 0 4px white, 0 0 0 2px #67331d; } -.color1 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; } -.color2 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; } -.color3 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; } -.color4 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; } -.color5 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; } -.color6 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #076b87; } -.color7 .component .situation-content .commander.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #67331d; } - -.component .situation-content .commander .info { - top: 8px; left: 65px; - width: 160px; -} - -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; left: 560px; -} -.component .situation-content .stellar img { - width: 220px; padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} - -.component .situation-content .stellar .info.top { - bottom: 215px; left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} - -.component .situation-content .stellar .info.bottom { - top: 225px; left: 160px; - padding: 10px 0 0 10px; -} - -.component .situation-content .stellar .info.middle { - top: 20px; left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} - -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} - -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-top: solid 8px #202020; - border-left: solid 1px #202020; -} - -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} - -/* composant report */ -.component.report .small-report { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} - -.component.report .small-report .open-button { - position: absolute; - display: block; - top: 5px; right: 5px; - line-height: 20px; width: 20px; - text-align: center; - border-radius: 3px; - text-decoration: none; - color: white; - background: black; - z-index: 1; -} - -.color1 .component.report .small-report .open-button { background: #510816; } -.color2 .component.report .small-report .open-button { background: #0c0d44; } -.color3 .component.report .small-report .open-button { background: #b17a00; } -.color4 .component.report .small-report .open-button { background: #310948; } -.color5 .component.report .small-report .open-button { background: #24500a; } -.color6 .component.report .small-report .open-button { background: #004948; } -.color7 .component.report .small-report .open-button { background: #401b13; } - -.component.report .small-report h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; -} - -.component.report .small-report .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} - -.component.report .small-report .content p { margin: 0; } -.component.report .small-report .content hr { - border: none; background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} - -.component.report .small-report .content a { - color: white; -} - -.component.report .small-report .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} - -.component.report .small-report .footer a { color: #CCC; } -.component.report .small-report.open .content { display: block; } -.component.report .small-report.open .footer { display: block; } - -.component.report .commander { - position: relative; - display: block; - margin: 10px; padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} - -.component.report .commander img { - position: absolute; - top: 5px; left: 5px; - padding: 8px; width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} - -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} - -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} - -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} - -.component.report .dammage { - margin: 10px; - background: black; -} - -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} - -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; height: 22px; -} - -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} - -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; width: 22px; - border-radius: 3px; - color: white; -} - -.color1 .component.report .dammage td span { background: #510816; } -.color2 .component.report .dammage td span { background: #0c0d44; } -.color3 .component.report .dammage td span { background: #b17a00; } -.color4 .component.report .dammage td span { background: #310948; } -.color5 .component.report .dammage td span { background: #24500a; } -.color6 .component.report .dammage td span { background: #004948; } -.color7 .component.report .dammage td span { background: #401b13; } - -/* composant topic */ -.component.topic .topic { - display: block; - position: relative; - margin: 10px; - background: black; - border: solid 1px #202020; - border-left: solid 5px #4F4F4F; - color: white; - text-decoration: none; -} - -.color1 .component.topic .topic.new { border-left: solid 5px #b01e2d; } -.color2 .component.topic .topic.new { border-left: solid 5px #2f23c0; } -.color3 .component.topic .topic.new { border-left: solid 5px #ffdb0f; } -.color4 .component.topic .topic.new { border-left: solid 5px #a935c7; } -.color5 .component.topic .topic.new { border-left: solid 5px #57c632; } -.color6 .component.topic .topic.new { border-left: solid 5px #05bed7; } -.color7 .component.topic .topic.new { border-left: solid 5px #ac5832; } - -.component.topic .topic strong { - display: inline-block; - padding: 7px 10px; -} - -.component.topic .topic .button { - position: absolute; - display: block; - top: 5px; right: 5px; - line-height: 20px; - padding: 0 5px; - text-align: center; - border-radius: 3px; -} - -.color1 .component.topic .topic .button { background: #510816; } -.color2 .component.topic .topic .button { background: #0c0d44; } -.color3 .component.topic .topic .button { background: #b17a00; } -.color4 .component.topic .topic .button { background: #310948; } -.color5 .component.topic .topic .button { background: #24500a; } -.color6 .component.topic .topic .button { background: #004948; } -.color7 .component.topic .topic .button { background: #401b13; } - -.component.topic .message { - position: relative; - padding: 0 0 0 80px; margin: 10px; - min-height: 70px; -} - -.component.topic .message .avatar { - position: absolute; - top: 0; left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} - -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} - -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message.write .content:before { - left: -17px; - border-color: transparent white transparent transparent; -} - -.component.topic .message .content .text { - margin: 0; padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} - -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} - -.component.topic .message .content .text a.color1 { color: #b01e2d; } -.component.topic .message .content .text a.color2 { color: #2f23c0; } -.component.topic .message .content .text a.color3 { color: #ffdb0f; } -.component.topic .message .content .text a.color4 { color: #a935c7; } -.component.topic .message .content .text a.color5 { color: #57c632; } -.component.topic .message .content .text a.color6 { color: #05bed7; } -.component.topic .message .content .text a.color7 { color: #ac5832; } - -.component.topic .message .content .text .icon-color { - width: 15px; -} - -.component.topic .message .content .footer { - margin: 0; padding: 6px 10px; - text-align: right; - font-size: 12px; - color: #CCC; -} - -.component.topic .message .content .footer a { - color: #CCC; -} - -.component.topic .message.write .content textarea { - border: none; padding: 5px; - width: 487px; height: 150px; - max-width: 487px; min-width: 487px; - min-height: 50px; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} - -.component.topic .message.write .content input { - margin: 6px; -} - -.component.topic .message.write .content .title { - border: none; - margin: 12px 0 12px 0; padding: 5px; - width: 487px; height: 30px; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} - -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} - -/* panel-info */ -.component.panel-info h4 { - font-size: 20px; -} - -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; right: 10px; - line-height: 20px; width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; -} -.color1 .component.panel-info .remove-info { background: #510816; } -.color2 .component.panel-info .remove-info { background: #0c0d44; } -.color3 .component.panel-info .remove-info { background: #b17a00; } -.color4 .component.panel-info .remove-info { background: #310948; } -.color5 .component.panel-info .remove-info { background: #24500a; } -.color6 .component.panel-info .remove-info { background: #004948; } -.color7 .component.panel-info .remove-info { background: #401b13; } - -.component.panel-info .table { - margin: 10px; -} - -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} - -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} - -.component.panel-info .table .icon-color { - width: 12px; -} - -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} - -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} - -.component.panel-info .skill-box .label { display: block; } -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} - -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} - -/* player */ -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} - -.component.player.rank .player { - border-left: solid 10px red; - width: 190px; -} -.component.player.rank .player.color1 { border-left-color: #b01e2d; } -.component.player.rank .player.color2 { border-left-color: #2f23c0; } -.component.player.rank .player.color3 { border-left-color: #ffdb0f; } -.component.player.rank .player.color4 { border-left-color: #a935c7; } -.component.player.rank .player.color5 { border-left-color: #57c632; } -.component.player.rank .player.color6 { border-left-color: #05bed7; } -.component.player.rank .player.color7 { border-left-color: #ac5832; } -.component.player.rank .player .position { - display: block; - position: absolute; - top: -10px; right: -10px; - border: solid 1px #202020; - background: black; - width: 30px; height: 30px; line-height: 30px; - text-align: center; - border-radius: 100%; -} - -.component.player .player img { - position: absolute; - top: 5px; left: 5px; - width: 50px; padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} - -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} - -.component.player .player strong { - font-size: 18px; -} - -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; height: 18px; - background: white; - top: 5px; right: 5px; - border-radius: 100%; -} -.color1 .component.player .player .online { background: #b01e2d; } -.color2 .component.player .player .online { background: #2f23c0; } -.color3 .component.player .player .online { background: #ffdb0f; } -.color4 .component.player .player .online { background: #a935c7; } -.color5 .component.player .player .online { background: #57c632; } -.color6 .component.player .player .online { background: #05bed7; } -.color7 .component.player .player .online { background: #ac5832; } - -.component.player .player .inactive { - background: #4F4F4F; -} - -/* TRANSACTION */ - -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} - -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} - -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; left: -20px; - width: 60px; height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} - -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; right: 8px; -} - -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} - -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} - -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} - -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} - -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; top: -2px; - padding: 1px; -} - -.component.transaction .transaction .hidden { - display: none; -} - -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} - -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} - -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; width: 50%; bottom: 0; -} - -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} - -.component.transaction .transaction .info .seller .color1 { color: #b01e2d; } -.component.transaction .transaction .info .seller .color2 { color: #2f23c0; } -.component.transaction .transaction .info .seller .color3 { color: #ffdb0f; } -.component.transaction .transaction .info .seller .color4 { color: #a935c7; } -.component.transaction .transaction .info .seller .color5 { color: #57c632; } -.component.transaction .transaction .info .seller .color6 { color: #05bed7; } -.component.transaction .transaction .info .seller .color7 { color: #ac5832; } - - -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; width: 50%; bottom: 0; right: 0; -} - -.component.transaction .transaction .info .price-detail p { - text-align: right; -} - -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} - -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} - -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} - -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a:hover { box-shadow: inset 0 0 6px black; } -.color1 .component.transaction .transaction .button a { background: #6e161b; } -.color2 .component.transaction .transaction .button a { background: #1f1471; } -.color3 .component.transaction .transaction .button a { background: #dbb200; } -.color4 .component.transaction .transaction .button a { background: #5a1072; } -.color5 .component.transaction .transaction .button a { background: #2c7915; } -.color6 .component.transaction .transaction .button a { background: #076b87; } -.color7 .component.transaction .transaction .button a { background: #67331d; } -.color1 .component.transaction .transaction .button a:hover { background: #b01e2d; } -.color2 .component.transaction .transaction .button a:hover { background: #2f23c0; } -.color3 .component.transaction .transaction .button a:hover { background: #ffdb0f; } -.color4 .component.transaction .transaction .button a:hover { background: #a935c7; } -.color5 .component.transaction .transaction .button a:hover { background: #57c632; } -.color6 .component.transaction .transaction .button a:hover { background: #05bed7; } -.color7 .component.transaction .transaction .button a:hover { background: #ac5832; } -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component .build-item.disable .button span { - color: #696969; -} - -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; left: 0; bottom: 0; width: 50px; - padding: 0 5px; line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; right: 0; bottom: 0; width: 50px; - padding: 0 5px; line-height: 30px; - text-align: center; - font-size: 12px; -} - -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; clear: both; - margin: 0 60px; height: 3px; - top: 13px; - background: #4F4F4F; -} - -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #202020; -} -.color1 .component.transaction .transaction .shipping .progress-bar { background: #b01e2d; } -.color2 .component.transaction .transaction .shipping .progress-bar { background: #2f23c0; } -.color3 .component.transaction .transaction .shipping .progress-bar { background: #ffdb0f; } -.color4 .component.transaction .transaction .shipping .progress-bar { background: #a935c7; } -.color5 .component.transaction .transaction .shipping .progress-bar { background: #57c632; } -.color6 .component.transaction .transaction .shipping .progress-bar { background: #05bed7; } -.color7 .component.transaction .transaction .shipping .progress-bar { background: #ac5832; } - -/* BASE TYPE COMPONENT */ -.component .build-item.base-type .desc { - margin: 10px 0 0 0; padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} - -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} - -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { top: 35px; left: 5px; } -.component .build-item.base-type .list-choice button.item-2 { top: 5px; left: 107px; } -.component .build-item.base-type .list-choice button.item-3 { bottom: 5px; left: 107px; } -.component .build-item.base-type .list-choice button.item-4 { top: 35px; right: 5px; } - -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; } -.color2 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; } -.color3 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; } -.color4 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; } -.color5 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; } -.color6 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #076b87; } -.color7 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px #67331d; } - -.component .build-item.base-type .desc-choice { - display: none; -} - -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} - -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} - -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} - -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} - -/* MARKET */ -.component.transaction .transaction .button .icon-color { - width: 14px; -} - -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; -} -.color1 .component.transaction .new-transaction { border-bottom: solid 1px #b01e2d; } -.color2 .component.transaction .new-transaction { border-bottom: solid 1px #2f23c0; } -.color3 .component.transaction .new-transaction { border-bottom: solid 1px #ffdb0f; } -.color4 .component.transaction .new-transaction { border-bottom: solid 1px #a935c7; } -.color5 .component.transaction .new-transaction { border-bottom: solid 1px #57c632; } -.color6 .component.transaction .new-transaction { border-bottom: solid 1px #05bed7; } -.color7 .component.transaction .new-transaction { border-bottom: solid 1px #ac5832; } - -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} - -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; margin: 5px 0 0 0; - width: 259px; - border: none; -} - -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} - -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; height: 15px; -} - -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - background: #202020; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; -} -.color1 .component.transaction .new-transaction .indicator span { background: #510816; } -.color2 .component.transaction .new-transaction .indicator span { background: #0c0d44; } -.color3 .component.transaction .new-transaction .indicator span { background: #b17a00; } -.color4 .component.transaction .new-transaction .indicator span { background: #310948; } -.color5 .component.transaction .new-transaction .indicator span { background: #24500a; } -.color6 .component.transaction .new-transaction .indicator span { background: #004948; } -.color7 .component.transaction .new-transaction .indicator span { background: #401b13; } -.component.transaction .new-transaction .indicator span.min-price { left: 5px; } -.component.transaction .new-transaction .indicator span.max-price { right: 5px;} - -/* MARKET-SELL */ -.component.market-sell .body { - padding: 10px 0; -} - -.component.market-sell .label-box { - position: relative; - padding: 0 10px; margin: 10px 0; -} - -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} - -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; right: 16px; - width: 18px; -} - -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} - -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} - -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - background: #202020; - cursor: pointer; - overflow: hidden; -} -.color1 .component.market-sell .sell-form input[type='submit'] { background: #b01e2d; } -.color2 .component.market-sell .sell-form input[type='submit'] { background: #2f23c0; } -.color3 .component.market-sell .sell-form input[type='submit'] { background: #ffdb0f; } -.color4 .component.market-sell .sell-form input[type='submit'] { background: #a935c7; } -.color5 .component.market-sell .sell-form input[type='submit'] { background: #57c632; } -.color6 .component.market-sell .sell-form input[type='submit'] { background: #05bed7; } -.color7 .component.market-sell .sell-form input[type='submit'] { background: #ac5832; } -.color1 .component.market-sell .sell-form input[type='submit']:hover { background: #510816; } -.color2 .component.market-sell .sell-form input[type='submit']:hover { background: #0c0d44; } -.color3 .component.market-sell .sell-form input[type='submit']:hover { background: #b17a00; } -.color4 .component.market-sell .sell-form input[type='submit']:hover { background: #310948; } -.color5 .component.market-sell .sell-form input[type='submit']:hover { background: #24500a; } -.color6 .component.market-sell .sell-form input[type='submit']:hover { background: #004948; } -.color7 .component.market-sell .sell-form input[type='submit']:hover { background: #401b13; } - -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} - -/***********************************/ -/*********** BASES STYLE ***********/ -/***********************************/ - -.component .info-building { - margin: 10px; padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { margin: 10px; } -.component .info-building p { font-size: 13px; } - -/***********************************/ -/*********** PARAM STYLE ***********/ -/***********************************/ - -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, .8); -} - -.component.params .checkbox input { - position: absolute; - top: 8px; left: 10px; -} - -/****** NAV & OPTION *****/ - -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; right: 20px; -} - -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; top: 0; - height: 38px; width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; top: 0; - height: 38px; width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a img { - position: absolute; - top: 5px; left: 5px; - width: 22px; -} -#map-option a.active { - background: #004948; -} -.color1 #map-option a.active { background: #510816; } -.color2 #map-option a.active { background: #0c0d44; } -.color3 #map-option a.active { background: #b17a00; } -.color4 #map-option a.active { background: #310948; } -.color5 #map-option a.active { background: #24500a; } -.color6 #map-option a.active { background: #004948; } -.color7 #map-option a.active { background: #401b13; } - -/****** CONTENT *****/ -#map-content { - z-index: 1000; - position: absolute; - top: 80px; right: 20px; - display: block; -} - -#map-content .mini-map { - position: relative; - width: 300px; height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} - -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} - -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} - -#map-content .mini-map polygon.ally0 { fill: #202020; } -#map-content .mini-map polygon.ally1 { fill: #6e161b; } -#map-content .mini-map polygon.ally2 { fill: #1f1471; } -#map-content .mini-map polygon.ally3 { fill: #dbb200; } -#map-content .mini-map polygon.ally4 { fill: #5a1072; } -#map-content .mini-map polygon.ally5 { fill: #2c7915; } -#map-content .mini-map polygon.ally6 { fill: #076b87; } -#map-content .mini-map polygon.ally7 { fill: #67331d; } - -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; left: 0; -} - -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} - -#map-content .mini-map .viewport { - position: absolute; - top: 0; left: 0; - background: rgba(255, 255, 255, .1); - border: solid 1px white; - border-radius: 3px; -} - -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, .8); - font-size: 11px; -} - -/****** MOVERS *****/ -.map-movers { - display: block; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} - -.map-movers:hover, -.map-movers:focus { background-color: rgba(255, 255, 255, .05); } -#mapToTop { - height: 60px; width: 100%; - top: 0; left: 0; - background-image: url('src/desktop/mover/top.png'); -} -#mapToRight { - width: 60px; height: 100%; - top: 0; right: 0; - background-image: url('src/desktop/mover/right.png'); -} -#mapToBottom { - height: 60px; width: 100%; - bottom: 0; left: 0; - background-image: url('src/desktop/mover/bottom.png'); -} -#mapToLeft { - width: 60px; height: 100%; - top: 0; left: 0; - background-image: url('src/desktop/mover/left.png'); -} - -/****** COORDBOX *****/ -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, .8); - color: white; - font-size: 20px; - text-align: center; -} - -/****** ACTION *****/ -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; height: 300px; - bottom: -300px; left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} - -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} - -#action-box .header ul { - list-style: none inset; - margin: 0; padding: 0; -} - -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} - -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { border-radius: 3px 0 0 3px; } -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} - -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} - -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; -} -.color1 #action-box .header ul li a.active { background: #510816; } -.color2 #action-box .header ul li a.active { background: #0c0d44; } -.color3 #action-box .header ul li a.active { background: #b17a00; } -.color4 #action-box .header ul li a.active { background: #310948; } -.color5 #action-box .header ul li a.active { background: #24500a; } -.color6 #action-box .header ul li a.active { background: #004948; } -.color7 #action-box .header ul li a.active { background: #401b13; } - -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} - -#action-box .header .button { - position: absolute; - top: 7px; right: 10px; - line-height: 22px; width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} - -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} - - -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} - -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - - -moz-transition: all linear 100ms; - -webkit-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} - -#action-box .actbox-movers:hover, #action-box .actbox-movers:focus { background-color: rgba(255, 255, 255, .05); } -#action-box .actbox-movers:active { background-color: rgba(255, 255, 255, .15); } - -#action-box .actbox-movers#actboxToLeft { background: url('src/desktop/mover/left.png') no-repeat center; } -#action-box .actbox-movers#actboxToRight { - top: 0; right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} - -#action-box .body .system { - position: absolute; - top: 0; left: 0; - height: 263px; - width: 3000px; -} - -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; padding: 0; -} - -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, #action-box .body .system ul li.action.color1 { border-top-color: #b01e2d; } -#action-box .body .system ul li.place.color2 a, #action-box .body .system ul li.action.color2 { border-top-color: #2f23c0; } -#action-box .body .system ul li.place.color3 a, #action-box .body .system ul li.action.color3 { border-top-color: #ffdb0f; } -#action-box .body .system ul li.place.color4 a, #action-box .body .system ul li.action.color4 { border-top-color: #a935c7; } -#action-box .body .system ul li.place.color5 a, #action-box .body .system ul li.action.color5 { border-top-color: #57c632; } -#action-box .body .system ul li.place.color6 a, #action-box .body .system ul li.action.color6 { border-top-color: #05bed7; } -#action-box .body .system ul li.place.color7 a, #action-box .body .system ul li.action.color7 { border-top-color: #ac5832; } - -#action-box .body .system ul li.star { - width: 300px; height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} - -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} - -#action-box .body .system ul li.action { - width: 0px; overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; left: 12px; - height: 240px; width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} - -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} - -#action-box .body .system ul li.action .content .column.info { width: 199px; } -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} - -#action-box .body .system ul li.action .content .column p { margin: 2px 10px; } -#action-box .body .system ul li.action .content .column a { color: white; } -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} - -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 120px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 59px; text-align: right; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} - -#action-box .body .system ul li.action .content .column .box { - display: none; - position: absolute; - left: 10px; right: 10px; bottom: 10px; top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content .column .box:nth-child(1) { display: block; } -#action-box .body .system ul li.action .content .column .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .content .column .box:nth-child(1):before { left: 15px; } -#action-box .body .system ul li.action .content .column .box:nth-child(2):before { left: 84px; } -#action-box .body .system ul li.action .content .column .box:nth-child(3):before { left: 152px; } -#action-box .body .system ul li.action .content .column .box:nth-child(4):before { left: 218px; } -#action-box .body .system ul li.action .content .column .box:nth-child(5):before { left: 284px; } - -#action-box .body .system ul li.action .act-bull h5 { - margin: 0 10px 6px 10px; padding: 6px 0 6px 0; - border-bottom: solid 1px #202020; -} - -#action-box .body .system ul li.action .content .column .act-bull strong { - line-height: 16px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .act-bull .icon-color, -#action-box .body .system ul li.action .content .column .act-bull .icon-color { - display: inline-block; - position: relative; - top: 0; - padding: 1px; margin: 0; - border: none; - width: 13px; height: 13px; -} - -#action-box .body .system ul li.action .content .column .act-bull .commander { - display: block; - position: relative; - padding: 0; margin: 0 6px; - height: 54px; - text-decoration: none; - line-height: 16px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .act-bull .commander:focus, -#action-box .body .system ul li.action .content .column .act-bull .commander:hover { - background: #0A0A0A; -} - -#action-box .body .system ul li.action .content .column .act-bull .commander .label { - position: absolute; - top: 0px; left: 55px; - display: block; - padding: 2px 0; - width: 150px; -} -#action-box .body .system ul li.action .content .column .act-bull .commander .value { - position: absolute; - top: 0px; right: 5px; - display: block; - padding: 2px 0; - text-align: right; - width: 150px; -} - -#action-box .body .system ul li.action .content .column .act-bull .commander .avatar { - position: absolute; - top: 3px; left: 3px; - padding: 3px; - border-radius: 3px; - width: 40px; height: 40px; -} - -#action-box .body .system ul li.action .content .column .act-bull .rc strong { - display: block; - font-size: 18px; - line-height: 22px; -} - -#action-box .body .system ul li.action .content .column .act-bull .rc .icon-color { - width: 20px; height: 20px; -} - -#action-box .body .system ul li.action .content .column .act-bull .rc .button { - display: block; - margin: 10px; - line-height: 32px; - text-align: center; - background: #0A0A0A; - text-decoration: none; -} -#action-box .body .system ul li.action .content .column .act-bull .rc a.button:hover, -#action-box .body .system ul li.action .content .column .act-bull .rc a.button:active { - background: #202020; -} -#action-box .body .system ul li.action .content .column .act-bull .rc span.button { - color: #CCC; -} - -#action-box .body .system ul li.action .content .column .act-bull .rc form { - margin: 10px 0 0 0; - width: 100%; -} -#action-box .body .system ul li.action .content .column .act-bull .rc input[type="text"] { - width: 175px; - border: none; - padding: 6px 10px; - background: white; - border-radius: 3px; -} - -/* map-commanders */ - -/****** MAP *****/ -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; top: 0; left: 0; -} -#map #sectors { z-index: 300; } -#map #spying { z-index: 400; } -#map #own-base { z-index: 500; } -#map #commercial-routes { z-index: 600; } -#map #fleet-movements { z-index: 700; } -#map #attacks { z-index: 800; } -#map #systems { z-index: 900; } -#map #map-info { z-index: 910; } - -#map > div { - position: absolute; - top: 0; left: 0; - width: 100%; height: 100%; - overflow: hidden; -} - -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} - -#map #sectors .ally1 { fill: #6e161b; } -#map #sectors .ally2 { fill: #1f1471; } -#map #sectors .ally3 { fill: #dbb200; } -#map #sectors .ally4 { fill: #5a1072; } -#map #sectors .ally5 { fill: #2c7915; } -#map #sectors .ally6 { fill: #076b87; } -#map #sectors .ally7 { fill: #67331d; } - -#map #spying circle { - opacity: 0.08; - stroke: white; -} - -.color1 #map #spying circle { fill: #6e161b; } -.color2 #map #spying circle { fill: #1f1471; } -.color3 #map #spying circle { fill: #dbb200; } -.color4 #map #spying circle { fill: #5a1072; } -.color5 #map #spying circle { fill: #2c7915; } -.color6 #map #spying circle { fill: #076b87; } -.color7 #map #spying circle { fill: #67331d; } - -#map #own-base circle { - opacity: 0.1; - fill: white; -} - -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} - -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, .3); -} - -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -.color1 #map #fleet-movements line { stroke: #b01e2d; } -.color2 #map #fleet-movements line { stroke: #2f23c0; } -.color3 #map #fleet-movements line { stroke: #ffdb0f; } -.color4 #map #fleet-movements line { stroke: #a935c7; } -.color5 #map #fleet-movements line { stroke: #57c632; } -.color6 #map #fleet-movements line { stroke: #05bed7; } -.color7 #map #fleet-movements line { stroke: #ac5832; } - -.color1 #map #fleet-movements circle { fill: #b01e2d; } -.color2 #map #fleet-movements circle { fill: #2f23c0; } -.color3 #map #fleet-movements circle { fill: #ffdb0f; } -.color4 #map #fleet-movements circle { fill: #a935c7; } -.color5 #map #fleet-movements circle { fill: #57c632; } -.color6 #map #fleet-movements circle { fill: #05bed7; } -.color7 #map #fleet-movements circle { fill: #ac5832; } - -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { stroke: #b01e2d; } -#map #attacks line.color2 { stroke: #2f23c0; } -#map #attacks line.color3 { stroke: #ffdb0f; } -#map #attacks line.color4 { stroke: #a935c7; } -#map #attacks line.color5 { stroke: #57c632; } -#map #attacks line.color6 { stroke: #05bed7; } -#map #attacks line.color7 { stroke: #ac5832; } - -#map #attacks circle.color1 { fill: #b01e2d; } -#map #attacks circle.color2 { fill: #2f23c0; } -#map #attacks circle.color3 { fill: #ffdb0f; } -#map #attacks circle.color4 { fill: #a935c7; } -#map #attacks circle.color5 { fill: #57c632; } -#map #attacks circle.color6 { fill: #05bed7; } -#map #attacks circle.color7 { fill: #ac5832; } - -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} - -#map #systems a.active { - background: black; - box-shadow: 0 0 25px 12px black; -} - -#map #systems a img { - display: block; - width: 20px; height: 20px; - border: none; - - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} - -#map #systems a img.own { background: white; } - -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { background: #6e161b; } -#map #systems .sector-number.color2 { background: #1f1471; } -#map #systems .sector-number.color3 { background: #dbb200; } -#map #systems .sector-number.color4 { background: #5a1072; } -#map #systems .sector-number.color5 { background: #2c7915; } -#map #systems .sector-number.color6 { background: #076b87; } -#map #systems .sector-number.color7 { background: #67331d; } - -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, .9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, .9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; padding: 0; - font-weight: bold; - font-variant: small-caps; -} - -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, .5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { background: #6e161b; } -#map #systems .sector-info.color2 p a { background: #1f1471; } -#map #systems .sector-info.color3 p a { background: #dbb200; } -#map #systems .sector-info.color4 p a { background: #5a1072; } -#map #systems .sector-info.color5 p a { background: #2c7915; } -#map #systems .sector-info.color6 p a { background: #076b87; } -#map #systems .sector-info.color7 p a { background: #67331d; } - -#map #map-info { - display: none; - position: absolute; - top: 0px; right: 0px; left: auto; bottom: auto; - height: auto; width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} - -#map #map-info h2 { - margin: 0; padding: 0 20px; - font-size: 38px; - line-height: 60px; -} - -#map #map-info h3 { - margin: 0; padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} - -#map #map-info ul { - margin: 10px 0; padding: 0; - list-style: none; -} - -#map #map-info ul li { - position: relative; - margin: 0; padding: 0 40px 0 0; - line-height: 20px; height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} - -#map #map-info ul li img { - position: absolute; - right: 10px; top: 0px; -} - -/* ADMIN */ -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} - -.component.admin table tr { - border-bottom: solid 1px #202020; -} - -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} - -.component.admin table .button { - display: inline-block; - padding: 0 5px; line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background : #4F4F4F; - text-decoration: none; -} - -.component.admin table td:nth-child(1) { width: 50px; } -.component.admin table td:nth-child(2) { width: 100px; } -.component.admin table td:nth-child(3) { width: auto; } -.component.admin table td:nth-child(4) { width: 80px; } - -/* AUTOCOMPLETE MODULE */ - -.ac_results { - width: 20000px; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; - - ul { - width: 100%; - padding: 0; margin: 0; - list-style-position: outside; - list-style: none; - - li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; - - &:last-child { - border: none; - } - } - } - - .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; - } - - .value-1, .value-2 { - display: block; - line-height: 18px; - } - - .value-1 { - font-weight: bold; - } -} - -.ac_loading { background: white url('src/desktop/module/indicator.gif') right center no-repeat; } - -.color1 .ac_over { background: #510816; } -.color2 .ac_over { background: #0c0d44; } -.color3 .ac_over { background: #b17a00; } -.color4 .ac_over { background: #310948; } -.color5 .ac_over { background: #24500a; } -.color6 .ac_over { background: #004948; } -.color7 .ac_over { background: #401b13; } -.color1 .ac_results strong { color: #510816; } -.color2 .ac_results strong { color: #0c0d44; } -.color3 .ac_results strong { color: #b17a00; } -.color4 .ac_results strong { color: #310948; } -.color5 .ac_results strong { color: #24500a; } -.color6 .ac_results strong { color: #004948; } -.color7 .ac_results strong { color: #401b13; } - -.ac_over { color: white; } -.ac_results .ac_over strong { color: white; } -.ac_results .ac_over img { background: white; } - -html { height: 100%; } -body { - margin: 0; padding: 0; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} - -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - - &:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - } -} - -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} \ No newline at end of file diff --git a/public/css/buffer/main.css b/public/css/buffer/main.css deleted file mode 100644 index f98ac473a..000000000 --- a/public/css/buffer/main.css +++ /dev/null @@ -1,65 +0,0 @@ -body { - margin: 0; padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; - background: url('http://asylamba.com/public/css/src/global/black.jpg'); -} - -h1 { - margin: 0; padding: 50px 0; - text-align: center; -} - -.content { - width: 1000px; - padding: 25px; margin: auto; - background: #efefef; - border-radius: 5px; -} - -.content a { - position: relative; - text-decoration: none; - display: inline-block; - width: 192px; - color: black; - margin: 0 0 20px 0; -} -.content a em { - display: block; - padding: 0 0 0 25px; -} -.content a strong { - display: block; - padding: 0 0 10px 25px; - font-size: 20px; - line-height: 22px; - font-weight: bold; -} -.content a img { - display: block; - padding: 8px; - width: 200px; height: 200px; - background: #0a0a0a; - border-radius: 100%; - border: solid 6px black; - box-shadow: 0 0 5px 4px black; -} -.content a.color1 img { border-color: #b01e2d; } -.content a.color2 img { border-color: #2f23c0; } -.content a.color3 img { border-color: #ffdb0f; } -.content a.color4 img { border-color: #a935c7; } -.content a.color5 img { border-color: #57c632; } -.content a.color6 img { border-color: #05bed7; } -.content a.color7 img { border-color: #ac5832; } - -.content a .number { - position: absolute; - width: 45px; height: 45px; line-height: 45px; - font-size: 20px; color: white; - border-radius: 100%; - background: #0a0a0a; - text-align: center; - bottom: 5px; right: -10px; - border: solid 1px #202020; -} \ No newline at end of file diff --git a/public/css/less/colors/color1.less b/public/css/less/colors/color1.less deleted file mode 100755 index 42ffa58ce..000000000 --- a/public/css/less/colors/color1.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #b01e2d; -@dark: #510816; -@medium: #6e161b; \ No newline at end of file diff --git a/public/css/less/colors/color10.less b/public/css/less/colors/color10.less deleted file mode 100644 index b6bf7c958..000000000 --- a/public/css/less/colors/color10.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #a92859; -@dark: #4d0621; -@medium: #760f36; \ No newline at end of file diff --git a/public/css/less/colors/color11.less b/public/css/less/colors/color11.less deleted file mode 100644 index 9e5b910c8..000000000 --- a/public/css/less/colors/color11.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #34b089; -@dark: #10684c; -@medium: #219772; \ No newline at end of file diff --git a/public/css/less/colors/color12.less b/public/css/less/colors/color12.less deleted file mode 100644 index 675c259a5..000000000 --- a/public/css/less/colors/color12.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #ffdb0f; -@dark: #b17a00; -@medium: #dbb200; \ No newline at end of file diff --git a/public/css/less/colors/color2.less b/public/css/less/colors/color2.less deleted file mode 100755 index d0d0b5a21..000000000 --- a/public/css/less/colors/color2.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #2f23c0; -@dark: #0c0d44; -@medium: #1f1471; \ No newline at end of file diff --git a/public/css/less/colors/color3.less b/public/css/less/colors/color3.less deleted file mode 100755 index 675c259a5..000000000 --- a/public/css/less/colors/color3.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #ffdb0f; -@dark: #b17a00; -@medium: #dbb200; \ No newline at end of file diff --git a/public/css/less/colors/color4.less b/public/css/less/colors/color4.less deleted file mode 100755 index 1acf59f4a..000000000 --- a/public/css/less/colors/color4.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #a935c7; -@dark: #310948; -@medium: #5a1072; \ No newline at end of file diff --git a/public/css/less/colors/color5.less b/public/css/less/colors/color5.less deleted file mode 100755 index 4ecd8991d..000000000 --- a/public/css/less/colors/color5.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #57c632; -@dark: #24500a; -@medium: #2c7915; \ No newline at end of file diff --git a/public/css/less/colors/color6.less b/public/css/less/colors/color6.less deleted file mode 100755 index 312723ab6..000000000 --- a/public/css/less/colors/color6.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #05bed7; -@dark: #004948; -@medium: #076b87; \ No newline at end of file diff --git a/public/css/less/colors/color7.less b/public/css/less/colors/color7.less deleted file mode 100755 index 943cafb87..000000000 --- a/public/css/less/colors/color7.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #ac5832; -@dark: #401b13; -@medium: #67331d; \ No newline at end of file diff --git a/public/css/less/colors/color8.less b/public/css/less/colors/color8.less deleted file mode 100644 index 2c48d7385..000000000 --- a/public/css/less/colors/color8.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #db8218; -@dark: #c3590b; -@medium: #d87013; \ No newline at end of file diff --git a/public/css/less/colors/color9.less b/public/css/less/colors/color9.less deleted file mode 100644 index 4ecd8991d..000000000 --- a/public/css/less/colors/color9.less +++ /dev/null @@ -1,5 +0,0 @@ -// General colors - -@light: #57c632; -@dark: #24500a; -@medium: #2c7915; \ No newline at end of file diff --git a/public/css/less/colors/colors.less b/public/css/less/colors/colors.less deleted file mode 100755 index be70cc806..000000000 --- a/public/css/less/colors/colors.less +++ /dev/null @@ -1,53 +0,0 @@ -// Global colors - -@light-0: #EFEFEF; -@dark-0: #4F4F4F; -@medium-0: #CCCCCC; - -@light-1: #b01e2d; -@dark-1: #510816; -@medium-1: #6e161b; - -@light-2: #2f23c0; -@dark-2: #0c0d44; -@medium-2: #1f1471; - -@light-3: #ffdb0f; -@dark-3: #b17a00; -@medium-3: #dbb200; - -@light-4: #a935c7; -@dark-4: #310948; -@medium-4: #5a1072; - -@light-5: #57c632; -@dark-5: #24500a; -@medium-5: #2c7915; - -@light-6: #05bed7; -@dark-6: #004948; -@medium-6: #076b87; - -@light-7: #ac5832; -@dark-7: #401b13; -@medium-7: #67331d; - -@light-8: #f2b636; -@dark-8: #c3590b; -@medium-8: #d87913; - -@light-9: #57c632; -@dark-9: #24500a; -@medium-9: #2c7915; - -@light-10: #a92859; -@dark-10: #4d0621; -@medium-10:#760f36; - -@light-11: #34b089; -@dark-11: #10684c; -@medium-11:#219772; - -@light-12: #ffdb0f; -@dark-12: #b17a00; -@medium-12:#dbb200; \ No newline at end of file diff --git a/public/css/less/component/action-box.less b/public/css/less/component/action-box.less deleted file mode 100644 index a79a055e9..000000000 --- a/public/css/less/component/action-box.less +++ /dev/null @@ -1,421 +0,0 @@ -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; height: 300px; - bottom: -300px; left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; - - .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; - - ul { - list-style: none inset; - margin: 0; padding: 0; - - li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; - - a { - display: inline-block; - line-height: 24px; - margin: 3px 0; padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; - - &:first-child { - border-radius: 3px 0 0 3px; - } - - &:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; - } - - &:hover, &:focus { - background: #202020; - color: white; - } - - &.active { - color: white; - position: relative; - z-index: 1; - background: @dark; - } - } - } - } - } - - .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; - } - - .header .button { - position: absolute; - top: 7px; right: 10px; - line-height: 22px; width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; - - &:focus, &:hover { - background: #4F4F4F; - } - } -} - -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} - -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - - .transition(all linear 100ms); - - &:hover, &:focus { background-color: rgba(255, 255, 255, .05); } - &:active { background-color: rgba(255, 255, 255, .15); } - - &#actboxToLeft { background: url('src/desktop/mover/left.png') no-repeat center; } - &#actboxToRight { - top: 0; right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; - } -} - -#action-box .body .system { - position: absolute; - top: 0; left: 0; - height: 263px; - width: 3000px; - - ul { - display: inline-block; - list-style: none inset; - margin: 0; padding: 0; - - li { - display: inline-block; - - &.place a, - &.action { - width: 100px; height: 260px; - border-top: solid 3px white; - position: relative; - } - &.place.color1 a, &.action.color1 { border-top-color: @medium-1; } - &.place.color2 a, &.action.color2 { border-top-color: @medium-2; } - &.place.color3 a, &.action.color3 { border-top-color: @medium-3; } - &.place.color4 a, &.action.color4 { border-top-color: @medium-4; } - &.place.color5 a, &.action.color5 { border-top-color: @medium-5; } - &.place.color6 a, &.action.color6 { border-top-color: @medium-6; } - &.place.color7 a, &.action.color7 { border-top-color: @medium-7; } - &.place.color8 a, &.action.color8 { border-top-color: @medium-8; } - &.place.color9 a, &.action.color9 { border-top-color: @medium-9; } - &.place.color10 a, &.action.color10 { border-top-color: @medium-10; } - &.place.color11 a, &.action.color11 { border-top-color: @medium-11; } - &.place.color12 a, &.action.color12 { border-top-color: @medium-12; } - - &.star { - width: 300px; height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; - } - - &.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; - } - &.place a strong { - position: absolute; - bottom: 8px; left: 10px; - font-size: 18px; - font-weight: bold; - color: white; - } - &.place a .land { - position: absolute; - z-index: 1102; - top: 88px; left: 10px; - width: 80px; - border-radius: 100%; - } - &.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; - } - &.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; - } - - &.action { - width: 0px; overflow: hidden; - } - &.action .content { - position: absolute; - top: 9px; left: 12px; - height: 240px; width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; - } - &.action .content:before { - content: ''; - position: absolute; - top: 107px; left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; - } - - &.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; - } - - &.action .content .column .last-spy-link { - position: absolute; - top: 6px; right: 8px; - opacity: .5; - .transition(all linear 250ms); - - &:hover, &:focus { - opacity: 1; - } - } - - &.action .content .column.info { width: 199px; } - &.action .content .column.act { - width: 345px; - border-right: none; - } - - &.action .content .column p { margin: 2px 10px; } - &.action .content .column a { color: white; } - &.action .content .column hr { - margin: 8px 10px; - border: none; background: none; - border-bottom: solid 1px #202020; - } - &.action .content .column strong { - line-height: 30px; - } - &.action .content .column.info strong { - line-height: 28px; - font-size: 18px; - } - - &.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; - } - &.action .content .column .value { - display: inline-block; - width: 100px; text-align: left; - - .icon, .icon-color { - width: 18px; height: 18px; - padding: 1px; - } - } - &.action .content .column.act .top .grey { - opacity: .4; - } - &.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; - } - &.action .content .column .top, - &.action .content .column .bottom { - padding: 5px; - } - - &.action .box { - display: none; - position: absolute; - left: 10px; right: 10px; bottom: 10px; top: 80px; - background: black; - border-radius: 3px; - } - &.action .box:nth-child(1) { display: block; } - &.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; - } - &.action .box:nth-child(1):before { left: 15px; } - &.action .box:nth-child(2):before { left: 84px; } - &.action .box:nth-child(3):before { left: 152px; } - &.action .box:nth-child(4):before { left: 218px; } - &.action .box:nth-child(5):before { left: 284px; } - - &.action .box h2 { - margin: 0; padding: 0 11px; line-height: 35px; - font-size: 15px; - } - - &.action .box .box-content { - position: absolute; - top: 35px; left: 0; right: 0; bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; - - .commander-tile .item { display: none; } - .commander-tile .item.no-commander { display: block; } - - .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; - - .picto { - float: left; - width: 30px; height: 30px; - margin: 0 5px 0 0; - } - span { - display: block; - } - .icon-color { - width: 14px; height: 14px; - padding: 1px; - } - } - - .spy-form { - margin-top: 10px; - - input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; - } - - button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: @medium; - cursor: pointer; - border-radius: 0 3px 3px 0; - - &:hover, &:focus { - background: @dark; - } - } - } - - .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; - - .key { - display: block; - } - - .val { - display: block; - font-size: 18px; - font-weight: bold; - } - } - - .rc { - margin: 5px 0 0 0; padding: 10px 10px 0 50px; - border-top: solid 1px #202020; - } - - .rc .planet { - position: absolute; - top: -25px; left: -25px; - width: 76px; height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; - } - - .icon-color { - width: 14px; height: 14px; - padding: 1px; - } - - .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; padding: 0 8px; - text-align: center; - text-decoration: none; - } - - a.button { - background: @medium; - border: @dark; - - &:hover, &:focus { - background: @dark; - } - } - } - } - } -} \ No newline at end of file diff --git a/public/css/less/component/admin.less b/public/css/less/component/admin.less deleted file mode 100644 index 33b74cded..000000000 --- a/public/css/less/component/admin.less +++ /dev/null @@ -1,32 +0,0 @@ -.component.admin { - table { - margin: 10px; - border-collapse: collapse; - width: 877px; - - tr { - border-bottom: solid 1px #202020; - } - - td { - padding: 5px 10px; - vertical-align: top; - } - - .button { - display: inline-block; - padding: 0 5px; line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background : #4F4F4F; - text-decoration: none; - } - - td:nth-child(1) { width: 50px; } - td:nth-child(2) { width: 100px; } - td:nth-child(3) { width: auto; } - td:nth-child(4) { width: 80px; } - } -} \ No newline at end of file diff --git a/public/css/less/component/alert.less b/public/css/less/component/alert.less deleted file mode 100755 index 0154ac817..000000000 --- a/public/css/less/component/alert.less +++ /dev/null @@ -1,55 +0,0 @@ -#alert-content { - display: none; -} - -#alert { - position: absolute; - bottom: 18px; left: 50px; - padding: 0; - text-align: right; - list-style: inset none; - - li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; - - img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - .border-radius(100%); - } - } -} - -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - .border-radius(3px); - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - - .title { - display: block; - padding: 0 0 5px 0; margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; - } - - &:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; left: 24px; - border-color: #4F4F4F transparent transparent transparent; - } -} \ No newline at end of file diff --git a/public/css/less/component/buttons.less b/public/css/less/component/buttons.less deleted file mode 100644 index fde235213..000000000 --- a/public/css/less/component/buttons.less +++ /dev/null @@ -1,23 +0,0 @@ -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: @medium; - border: solid 1px @dark; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; - - &:hover, &:focus { - background: @dark; - border-color: @medium; - } - - &.disabled { - background: #202020; - border-color: #4F4F4F; - } -} \ No newline at end of file diff --git a/public/css/less/component/commercial-route.less b/public/css/less/component/commercial-route.less deleted file mode 100755 index c470b4927..000000000 --- a/public/css/less/component/commercial-route.less +++ /dev/null @@ -1,58 +0,0 @@ -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; - - &.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; - } - - a, strong { - color: white; - } - - .icon-color { - width: 20px; - } - .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; - - &:last-child { - position: absolute; - bottom: 0px; - } - } - - .place { - position: absolute; - top: 0px; left: -50px; - width: 78px; height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - } - - .general { - list-style: none inset; - margin: 10px 0; padding: 0; - - li { - margin: 10px 0; - list-style-type: none; - - strong { - display: block; - font-size: 20px; - font-weight: bold; - } - } - } -} \ No newline at end of file diff --git a/public/css/less/component/common.less b/public/css/less/component/common.less deleted file mode 100755 index 99491758d..000000000 --- a/public/css/less/component/common.less +++ /dev/null @@ -1,1206 +0,0 @@ -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px @light; - color: #4F4F4F; - - & > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; - - &:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; - - a { width: auto; } - } - - a { - position: relative; - display: block; - margin: 0; padding: 0; - line-height: 30px; width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; - - img { - width: 18px; position: relative; - top: -4px; - } - - &.active { - background: @medium; - color: white; - border-color: @light; - - &.down { box-shadow: 0 2px 0 0 #CCC; } - &.up { box-shadow: 0 -2px 0 0 #CCC; } - - &:hover, &:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); - } - } - - &:hover, &:focus, &:active { - color: #CCC; - box-shadow: inset 0 0 5px black; - } - } - } - - &.sort-button > span:first-child { - text-align: center; - } -} - -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px @light; -} - -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} - -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; - - &.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, .8); - - a { - color: white; - } - - .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; - } - } - - &.long-info { - padding: 10px; - line-height: 150%; - background: black; - } - - .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: @dark; - - &:hover, &:focus { - background: @medium; - } - } -} - -.component .border-bottom { - border-bottom: solid 3px @light; -} - -.component .list-type-1 { - margin: 10px; padding: 0; - list-style: none; - - li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, .8); - color: #989898; - - &.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; - } - - &.empty { - background: none; - border: none; - height: 50px; - } - ul li { - height: auto; - } - } - - .label { - display: block; - font-size: 13px; - - .icon-color { - width: 15px; - padding: 1px; - } - } - - .value { - display: inline-block; - font-size: 22px; line-height: 30px; - font-weight: bold; - - .icon, .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; - } - } - - .picto { - position: absolute; - top: 7px; left: 10px; - height: 35px; width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; - - &.color1 { background: @dark-1; } - &.color2 { background: @dark-2; } - &.color3 { background: @dark-3; } - &.color4 { background: @dark-4; } - &.color5 { background: @dark-5; } - &.color6 { background: @dark-6; } - &.color7 { background: @dark-7; } - &.color8 { background: @dark-8; } - &.color9 { background: @dark-9; } - &.color10 { background: @dark-10; } - &.color11 { background: @dark-11; } - &.color12 { background: @dark-12; } - } - - .hide { - color: #4F4F4F; - } - - .buttons { - position: absolute; - top: 28px; left: 5px; - - a { - display: inline-block; - margin: 0 4px; - width: 18px; line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: @medium; - } - } - - .progress-bar { - text-align: left; - margin-top: 5px; - } -} - -.component .sub-list-type-1 { - display: none; - margin: 0; padding: 0; - list-style: none; - - li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; - } - - .label { - display: inline-block; - width: 60%; - - .button { - position: relative; left: -4px; - margin: 0 0 0 3px; - } - } - - .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; - - .button { - margin: 0 2px 0 6px; - } - } - - .button { - display: inline-block; - width: 18px; line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; font-weight: normal; - color: white; - border-radius: 3px; - background: @light; - } -} - -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; right: 3px; - - p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; margin: 0; - width: 200px; height: 35px; - - &:before { - content: ''; - position: absolute; - top: -12px; right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - } - } - - input { - border: none; background: none; - line-height: 35px; height: 35px; - padding: 0 10px; - - &[type='text'] { - width: 140px; - } - &[type='submit'] { - width: 40px; - } - } -} - -.component .sub-list-type-1 form { - right: -6px; -} - -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px @medium; - - &.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; - } - - &.grey { - border-left: solid 10px #4F4F4F !important; - } - - &.text { - border-left: solid 1px #0A0A0A; - - a { - text-decoration: none; - color: white; - } - } - - .label { - display: block; - } - - .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; - - .icon-color { - width: 20px; height: 20px; - vertical-align: middle; - } - } - - .progress-bar { - margin: 5px 0; - } - - .group-link { - position: absolute; - top: 5px; right: 5px; - - a { - display: inline-block; - line-height: 18px; width: 18px; - text-align: center; - color: white; text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: @medium; - } - } -} - -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; height: 3px; - background: #4F4F4F; - - .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; - - &:nth-child(n) { background: @light; } - &:nth-child(2n) { background: @dark; } - - &.color1 { background: @medium-1; } - &.color2 { background: @medium-2; } - &.color3 { background: @medium-3; } - &.color4 { background: @medium-4; } - &.color5 { background: @medium-5; } - &.color6 { background: @medium-6; } - &.color7 { background: @medium-7; } - &.color8 { background: @medium-8; } - &.color9 { background: @medium-9; } - &.color10 { background: @medium-10; } - &.color11 { background: @medium-11; } - &.color12 { background: @medium-12; } - } - - .step { - position: absolute; - - .label { - position: absolute; - display: block; - width: 150px; - left: 0; top: -28px; - - &.bottom { - top: auto; - bottom: -28px; - } - &.right { - right: 0; left: auto; - text-align: right; - } - } - - &:before { - content: ''; - position: absolute; - width: 12px; height: 12px; - background: @medium; - box-shadow: 0 0 0 3px @dark; - border-radius: 100%; - top: -5px; left: -5px; - } - } -} - -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: @dark; -} - - -/* HEAD */ -.component .head { - &.skin-1 { - img { - position: absolute; - top: 22px; left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; - - &:before { - content: ''; - width: 100px; height: 100px; - } - } - - h2 { - position: absolute; - bottom: 66px; left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; padding: 0; - } - - em { - position: absolute; - top: 62px; left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; - } - } - - &.skin-2 { - h2 { - position: absolute; - display: inline-block; - top: 45px; left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; padding: 0 10px; - background: black; - font-weight: normal; - } - } - - &.skin-3 { - img { - position: absolute; - width: 50px; padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; - - &.left { left: 40px; } - &.right { right: 40px; } - } - } - - &.skin-4 { - img.main { - position: absolute; - width: 30px; height: 30px; padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; - } - - h2 { - position: absolute; - top: 35px; left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; padding: 0; - } - - em { - position: absolute; - top: 65px; left: 60px; - font-size: 13px; - line-height: 16px; - } - } - - &.skin-5 { - h2 { - position: absolute; - top: 50px; left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; padding: 0 20px; - background: black; - - &:before { - content: ''; - position: absolute; display: block; - top: 5px; left: 0; - width: 8px; height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - } - } - } -} - -.component { - .more-item, .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - - &:hover, &:focus, &:active { - color: #CCC; - box-shadow: inset 0 0 5px black; - } - } -} - -.component .nav-element { - position: relative; - display: block; - margin: 10px; height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - - img { - position: absolute; - top: 5px; left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; - } - - &.active { - background: @medium; - } - - .active img { - background: black; - } - - strong { - position: absolute; - top: 5px; left: 70px; - color: white; - font-weight: bold; - font-size: 17px; - } - - em { - position: absolute; - top: 30px; left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; - } -} - -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} - -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; - - a.item { - &:hover, &:focus { - background-color: #0c0c0c; - } - } - - .item { - position: relative; - display: block; - - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - - .left { - position: absolute; - top: 0; left: 0; bottom: 0; - width: 60px; - - img { - width: 30px; - margin: 10px; padding: 5px; - border-radius: 100%; - background: #202020; - - &.color1 { background: @medium-1; } - &.color2 { background: @medium-2; } - &.color3 { background: @medium-3; } - &.color4 { background: @medium-4; } - &.color5 { background: @medium-5; } - &.color6 { background: @medium-6; } - &.color7 { background: @medium-7; } - &.color8 { background: @medium-8; } - &.color9 { background: @medium-9; } - &.color10 { background: @medium-10; } - &.color11 { background: @medium-11; } - &.color12 { background: @medium-12; } - - &.round-color0 { box-shadow: 0 0 0 2px #CCC; } - &.round-color1 { box-shadow: 0 0 0 2px @light-1; } - &.round-color2 { box-shadow: 0 0 0 2px @light-2; } - &.round-color3 { box-shadow: 0 0 0 2px @light-3; } - &.round-color4 { box-shadow: 0 0 0 2px @light-4; } - &.round-color5 { box-shadow: 0 0 0 2px @light-5; } - &.round-color6 { box-shadow: 0 0 0 2px @light-6; } - &.round-color7 { box-shadow: 0 0 0 2px @light-7; } - &.round-color8 { box-shadow: 0 0 0 2px @light-8; } - &.round-color9 { box-shadow: 0 0 0 2px @light-9; } - &.round-color10 { box-shadow: 0 0 0 2px @light-10; } - &.round-color11 { box-shadow: 0 0 0 2px @light-11; } - &.round-color12 { box-shadow: 0 0 0 2px @light-12; } - } - - span { - display: block; - width: 30px; line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; padding: 5px; - border-radius: 100%; - background: #202020; - - &.round-color0 { background: #CCC; } - &.round-color1 { background: @light-1; } - &.round-color2 { background: @light-2; } - &.round-color3 { background: @light-3; } - &.round-color4 { background: @light-4; } - &.round-color5 { background: @light-5; } - &.round-color6 { background: @light-6; } - &.round-color7 { background: @light-7; } - &.round-color8 { background: @light-8; } - &.round-color9 { background: @light-9; } - &.round-color10 { background: @light-10; } - &.round-color11 { background: @light-11; } - &.round-color12 { background: @light-12; } - } - } - - .center { - position: absolute; - top: 0; left: 60px; right: 30px; bottom: 0; - padding: 9px 0; - - strong { - display: block; - line-height: 22px; - - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } - - a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - } - } - - .right { - position: absolute; - top: 0; right: 0; bottom: 0; - width: 29px; - border-left: solid 1px #202020; - - a { - position: absolute; - top: 0; left: 0; - width: 29px; height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - - &:hover, &:focus { - background-color: #202020; - } - &.active { - background-color: @medium; - } - - } - } - - .group-link { - position: absolute; - top: 5px; right: 5px; - - a { - display: inline-block; - line-height: 18px; width: 18px; - text-align: center; - color: white; text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: @medium; - } - } - } -} - -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - - &:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; - } - - strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; - } - - .label { - display: inline-block; - width: 70px; - } - - .value { - display: inline-block; - width: 40px; - } -} - -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; - - a { - color: white - } - - .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; - - img { - z-index: 20; - position: absolute; - top: -10px; left: 5px; - width: 60px; padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; - } - - strong { - display: block; - font-size: 18px; - } - } - - .level { - display: block; - position: absolute; - width: 22px; line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; left: 58px; - border: solid 1px white; - z-index: 22; - background: @medium; - } - - .info { - display: none; - position: absolute; - width: 20px; line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; right: 5px; - background: @medium; - color: white; - } - - .name-commander { - margin: 10px 10px 0 10px; - height: 40px; padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; - } - - .button { - display: block; - margin: 10px; padding: 5px 10px; - width: 240px; line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: @medium; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; - - &:hover { - box-shadow: inset 0 0 6px black; - background: @light; - } - - &.disable { - background: #202020; - cursor: default; - } - - .icon-color { - width: 14px; - } - } - - button.button { - width: 260px; - } - - .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; left: 15px; - width: 60px; height: 40px; - padding: 0; margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; - } - - .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; - - img { - width: 100%; - } - } - - &.disabled { - opacity: .3; - - .name img { - opacity: .50; - } - - strong { - color: #4F4F4F; - } - - .button.disable { - color: #696969; - - &:hover { - background: #202020; - box-shadow: inset 0 0 2px black; - } - } - } - - &.large { - width: 578px; - - .info { - top: 75px; right: 25px; - } - - .button { - display: block; - top: -3px; right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; - } - - .ship-illu { - width: 560px; - margin-top: 10px; - } - } -} - -.component .build-item { - input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; - } - - select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; - } -} - -.component.panel-info { - .remove-info { - display: block; - position: absolute; - top: 2px; right: 10px; - line-height: 20px; width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: @dark; - } - - .table { - margin: 10px; - } - - .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; - } - - .table td { - border: solid 1px #202020; - padding: 6px 8px; - } - .table tr.small-grey { - background: #0A0A0A; - } - .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; - } - - .table .icon-color { - width: 12px; - } - - .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; - } - - .skill-box { - position: relative; - margin: 0 10px; padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - } - .skill-box.grey { - border-left: solid 10px #4F4F4F !important; - } - - .skill-box .label { display: block; } - .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; - } - .skill-box .value .icon-color { - width: 18px; - } - - .skill-box .progress-bar { - margin: 6px 0 2px 0; - } -} - -.splash-screen { - position: absolute; - top: 0; left: 0; right: 0; bottom: 0; - z-index: 10000; - opacity: 0; - - background: rgba(0, 0, 0, 0.8); - - .modal { - width: 500px; height: 140px; - position: absolute; - top: 80px; right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - - color: white; - border-radius: 140px; - border: solid 1px #202020; - - h1 { - font-size: 36px; - margin: 0; padding: 0 0 10px 0; - } - - h2 { - font-size: 20px; - margin: 0; padding: 0; - } - - img { - position: absolute; - top: -15px; right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; - } - - &:before { - content: ''; - position: absolute; - top: -80px; right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; - } - } -} - -.common-link { - color: white; -} - -.component .top-right-button { - display: block; - position: absolute; - - top: 0; right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: @medium; - z-index: 1; - - &:hover, &:focus { - background: @dark; - } -} - -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: @medium; - border-radius: 3px; - box-shadow: 0 0 2px black; -} - -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} - -.text-bloc { - a { - display: inline-block; - color: inherit; - opacity: .60; - - &:hover, &:focus { - opacity: 1; - } - } -} \ No newline at end of file diff --git a/public/css/less/component/content.less b/public/css/less/component/content.less deleted file mode 100755 index 2cd6bda55..000000000 --- a/public/css/less/component/content.less +++ /dev/null @@ -1,89 +0,0 @@ -#content { - position: absolute; - width: 8000px; // a modifier - height: 100%; - top: 0; left: 300px; - z-index: 200; - - .component { - position: relative; - // display: inline-block; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, .92); - - &.size2 { width: 600px; } - &.size3 { width: 900px; } - &:nth-child(1) { background: rgba(0, 0, 0, .60); } - &:nth-child(2) { background: rgba(0, 0, 0, .75); } - &:nth-child(3) { background: rgba(0, 0, 0, .85); } - &:nth-child(4) { background: rgba(0, 0, 0, .90); } - - .head { - position: relative; - display: inline-block; - height: 120px; width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; - - h1 { - position: absolute; - top: 10px; left: 10px; - font-size: 38px; line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; - } - } - - .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; - - .body { position: relative; } - } - } -} - -.no-scrolling #content .component .fix-body { - overflow: hidden; - - > a { - position: absolute; - width: 100%; height: 40px; - left: 0; - opacity: 0; - } - - &.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; - } - - .toTop { - top: 0; - .linear-bci('src/desktop/component/top.png', black, rgba(0, 0, 0, .8), transparent); - } - .toBottom { - bottom: 0; - .linear-bci('src/desktop/component/bottom.png', transparent, rgba(0, 0, 0, .8), black); - } -} - -#content .component.invisible { - background: transparent; - - .publicity { - position: absolute; - bottom: 0; left: 0; right: 0; - background: red; - } -} \ No newline at end of file diff --git a/public/css/less/component/faction.less b/public/css/less/component/faction.less deleted file mode 100644 index 4fe6eddd6..000000000 --- a/public/css/less/component/faction.less +++ /dev/null @@ -1,93 +0,0 @@ -.choose-government { - display: block; - margin: 10px; padding: 10px; - background: #0A0A0A; - border-radius: 3px; - - select { - display: block; - width: 100%; - padding: 8px; - } - - button { - display: block; - width: 100%; - margin: 10px 0 0 0; padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: @medium; - - &:hover, &:focus { - background: @dark; - } - } -} - -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - - .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; - } - - .diargam { - padding: 10px; - background: #0A0A0A; - - .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; - - .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; - } - - &:nth-child(odd) .content { - background: @medium !important; - } - } - } -} - -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: @medium; - border: solid 1px @dark; - - &:hover, &:focus { - background: @dark; - border-color: @medium; - color: white; - } -} - -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; - - &:hover, &:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; - } -} \ No newline at end of file diff --git a/public/css/less/component/general.less b/public/css/less/component/general.less deleted file mode 100755 index a60dd8003..000000000 --- a/public/css/less/component/general.less +++ /dev/null @@ -1,95 +0,0 @@ -body { - width: 100%; height: 100%; - overflow: hidden; - background: black; -} - -#nav, #tools { - position: fixed; - width: 100%; height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: @light; -} -#nav { - top: 0; left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} - -#container { - position: absolute; - top: 29px; left: 0; - margin: 0; padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} - -.icon, .icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - .border-radius(100%); -} - -.icon-color { - background: @light !important; -} - -#background-paralax { - position: absolute; - top: 0; left: 0; - width: 100%; height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - - // default - background-image: url('src/desktop/screen/profil.jpg'); - - &.profil { background-image: url('src/desktop/screen/profil.jpg'); } - &.message { background-image: url('src/desktop/screen/message.jpg'); } - &.fleet { background-image: url('src/desktop/screen/fleet.jpg'); } - &.financial { background-image: url('src/desktop/screen/financial.jpg'); } - &.technology { background-image: url('src/desktop/screen/profil.jpg'); } - &.rank { background-image: url('src/desktop/screen/profil.jpg'); } - &.params { background-image: url('src/desktop/screen/profil.jpg'); } - &.bases { background-image: url('src/desktop/screen/base.jpg'); } -} - -#movers { - a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - - .transition(all linear 100ms); - - &:hover, &:focus { - background-color: rgba(255, 255, 255, .08); - } - - &:active { - background-color: rgba(255, 255, 255, .2); - } - } - - .toLeft { - top: 0; left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; - } - .toRight { - top: 0; right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; - } -} \ No newline at end of file diff --git a/public/css/less/component/inscription.less b/public/css/less/component/inscription.less deleted file mode 100644 index c4c30ba8f..000000000 --- a/public/css/less/component/inscription.less +++ /dev/null @@ -1,291 +0,0 @@ -.inscription { - #nav .box { - &.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; - - &.active { - color: white; - } - } - - &.right { - display: none; - } - } - - /* SUBNAV */ - #inscription-subnav { - position: fixed; - top: 45px; left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; - - .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; - } - - .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; - - h2 { - position: absolute; - margin: 0; padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; line-height: 24px; - width: 210px; overflow: hidden; - text-align: center; - color: white; - } - - img { - position: absolute; - top: 43px; left: 28px; - width: 125px; height: 125px; - background: #0A0A0A; - } - - .level { - position: absolute; - display: block; - bottom: 15px; left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; - } - - .experience { - position: absolute; - display: inline-block; - top: 50px; right: 32px; - width: 21px; height: 112px; - - .value { - position: absolute; - display: block; - width: 100%; bottom: 0; - border-radius: 3px; - } - } - } - } - - #inscription-subnav .foot { height: 290px; } - - #movers .toLeft { - left: 0 !important; - } - - /* ALLY */ - .component.inscription img.color1 { background: @medium-1 !important; } - .component.inscription img.color2 { background: @medium-2 !important; } - .component.inscription img.color3 { background: @medium-3 !important; } - .component.inscription img.color4 { background: @medium-4 !important; } - .component.inscription img.color5 { background: @medium-5 !important; } - .component.inscription img.color6 { background: @medium-6 !important; } - .component.inscription img.color7 { background: @medium-7 !important; } - .component.inscription img.color8 { background: @medium-8 !important; } - .component.inscription img.color9 { background: @medium-9 !important; } - .component.inscription img.color10 { background: @medium-10 !important; } - .component.inscription img.color11 { background: @medium-11 !important; } - .component.inscription img.color12 { background: @medium-12 !important; } - - .component.inscription .chooseLink { - display: block; - margin: 10px; padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - - .transition(all linear 200ms); - - &:focus, &:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .25); - } - } - - .component.inscription button.chooseLink { - width: 277px; - text-align: left; - } - - .component.inscription.color1 .chooseLink { background-color: @medium-1; } - .component.inscription.color2 .chooseLink { background-color: @medium-2; } - .component.inscription.color3 .chooseLink { background-color: @medium-3; } - .component.inscription.color4 .chooseLink { background-color: @medium-4; } - .component.inscription.color5 .chooseLink { background-color: @medium-5; } - .component.inscription.color6 .chooseLink { background-color: @medium-6; } - .component.inscription.color7 .chooseLink { background-color: @medium-7; } - .component.inscription.color8 .chooseLink { background-color: @medium-8; } - .component.inscription.color9 .chooseLink { background-color: @medium-9; } - .component.inscription.color10 .chooseLink { background-color: @medium-10; } - .component.inscription.color11 .chooseLink { background-color: @medium-11; } - .component.inscription.color12 .chooseLink { background-color: @medium-12; } - .component.inscription.color1 .chooseLink:hover, .component.inscription.color1 .chooseLink:focus { background-color: @dark-1; } - .component.inscription.color2 .chooseLink:hover, .component.inscription.color2 .chooseLink:focus { background-color: @dark-2; } - .component.inscription.color3 .chooseLink:hover, .component.inscription.color3 .chooseLink:focus { background-color: @dark-3; } - .component.inscription.color4 .chooseLink:hover, .component.inscription.color4 .chooseLink:focus { background-color: @dark-4; } - .component.inscription.color5 .chooseLink:hover, .component.inscription.color5 .chooseLink:focus { background-color: @dark-5; } - .component.inscription.color6 .chooseLink:hover, .component.inscription.color6 .chooseLink:focus { background-color: @dark-6; } - .component.inscription.color7 .chooseLink:hover, .component.inscription.color7 .chooseLink:focus { background-color: @dark-7; } - .component.inscription.color8 .chooseLink:hover, .component.inscription.color8 .chooseLink:focus { background-color: @dark-8; } - .component.inscription.color9 .chooseLink:hover, .component.inscription.color9 .chooseLink:focus { background-color: @dark-9; } - .component.inscription.color10 .chooseLink:hover, .component.inscription.color9 .chooseLink:focus { background-color: @dark-10; } - .component.inscription.color11 .chooseLink:hover, .component.inscription.color9 .chooseLink:focus { background-color: @dark-11; } - .component.inscription.color12 .chooseLink:hover, .component.inscription.color9 .chooseLink:focus { background-color: @dark-12; } - - .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, .25); - padding: 0 0 5px 0; margin: 0 0 5px 0; - } - - .component.inscription .chooseLink em { - font-style: normal; - } - - .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, .25); - cursor: auto; - padding: 10px; - - &:focus, &:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, .25); - } - } - - .component.inscription blockquote { - line-height: 200%; - } - - .component.inscription #pseudo, - .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; - } - .component.inscription.color1 #pseudo { color: @dark-1; } - .component.inscription.color2 #pseudo { color: @dark-2; } - .component.inscription.color3 #pseudo { color: @dark-3; } - .component.inscription.color4 #pseudo { color: @dark-4; } - .component.inscription.color5 #pseudo { color: @dark-5; } - .component.inscription.color6 #pseudo { color: @dark-6; } - .component.inscription.color7 #pseudo { color: @dark-7; } - .component.inscription.color8 #pseudo { color: @dark-8; } - .component.inscription.color9 #pseudo { color: @dark-9; } - .component.inscription.color10 #pseudo { color: @dark-10; } - .component.inscription.color11 #pseudo { color: @dark-11; } - .component.inscription.color12 #pseudo { color: @dark-12; } - - .component.inscription .avatars { - padding: 5px; - text-align: center; - } - - .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; - } - - .component.inscription .avatar input { - position: absolute; - top: 10px; left: 10px; - } - - .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; - } - .component.inscription.color1 .avatar:hover { border-color: @dark-1; } - .component.inscription.color2 .avatar:hover { border-color: @dark-2; } - .component.inscription.color3 .avatar:hover { border-color: @dark-3; } - .component.inscription.color4 .avatar:hover { border-color: @dark-4; } - .component.inscription.color5 .avatar:hover { border-color: @dark-5; } - .component.inscription.color6 .avatar:hover { border-color: @dark-6; } - .component.inscription.color7 .avatar:hover { border-color: @dark-7; } - .component.inscription.color8 .avatar:hover { border-color: @dark-8; } - .component.inscription.color9 .avatar:hover { border-color: @dark-9; } - .component.inscription.color10 .avatar:hover { border-color: @dark-10; } - .component.inscription.color11 .avatar:hover { border-color: @dark-11; } - .component.inscription.color12 .avatar:hover { border-color: @dark-12; } - - .component.inscription.color1 .avatar.active{ border-color: @light-1; } - .component.inscription.color2 .avatar.active{ border-color: @light-2; } - .component.inscription.color3 .avatar.active{ border-color: @light-3; } - .component.inscription.color4 .avatar.active{ border-color: @light-4; } - .component.inscription.color5 .avatar.active{ border-color: @light-5; } - .component.inscription.color6 .avatar.active{ border-color: @light-6; } - .component.inscription.color7 .avatar.active{ border-color: @light-7; } - .component.inscription.color8 .avatar.active{ border-color: @light-8; } - .component.inscription.color9 .avatar.active{ border-color: @light-9; } - .component.inscription.color10 .avatar.active{ border-color: @light-10; } - .component.inscription.color11 .avatar.active{ border-color: @light-11; } - .component.inscription.color12 .avatar.active{ border-color: @light-12; } - - #alert { - bottom: -12px; - z-index: 10000; - } - - .build-item { - min-height: 60px; - - .name { - padding-top: 2px !important; - - strong { - font-size: 16px !important; - } - - em { - font-size: 12px !important; - } - } - } -} - -.color0 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; } -.color1 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; } -.color2 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; } -.color3 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; } -.color4 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; } -.color5 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; } -.color6 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; } -.color7 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; } -.color8 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; } -.color9 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; } -.color10 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; } -.color11 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; } -.color12 #inscription-subnav .foot { background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; } \ No newline at end of file diff --git a/public/css/less/component/list-fleet.less b/public/css/less/component/list-fleet.less deleted file mode 100755 index 3a3a9d4bc..000000000 --- a/public/css/less/component/list-fleet.less +++ /dev/null @@ -1,260 +0,0 @@ -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; - - img.place { - position: absolute; - top: -5px; left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; - } - - h2 { - padding: 10px 0; margin: 0; - - a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; - } - } - - .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; - - &:last-child { - border-bottom: solid 1px #202020; - } - - a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; - } - - .left { - position: absolute; - top: 0; left: 0; - width: 60px; height: 60px; - z-index: 1; - - .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; - } - - .status { - width: 30px; - margin: 10px; padding: 5px; - border-radius: 100%; - } - } - - .right { - position: absolute; - top: 0; right: 0; - width: 60px; height: 60px; - z-index: 1; - - .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; - } - - .cover { - width: 50px; - margin: 5px; padding: 0; - border-radius: 100%; - } - } - - .center { - position: absolute; - top: 41px; left: 70px; right: 70px; - - .ship { - position: absolute; - top: -10px; left: -11px; right: auto; - } - - .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; - - .bar { - position: relative; - display: block; - height: 3px; - - .ship { top: -11px; right: -11px; left: auto; } - - span { - position: absolute; - top: 4px; right: 15px; - font-size: 10px; - } - } - } - } - - &.color1 .status { background: @medium-1; } - &.color2 .status { background: @medium-2; } - &.color3 .status { background: @medium-3; } - &.color4 .status { background: @medium-4; } - &.color5 .status { background: @medium-5; } - &.color6 .status { background: @medium-6; } - &.color7 .status { background: @medium-7; } - &.color8 .status { background: @medium-8; } - &.color9 .status { background: @medium-9; } - &.color10 .status { background: @medium-10; } - &.color11 .status { background: @medium-11; } - &.color12 .status { background: @medium-12; } - - &.color1 .center .progress-ship .bar { background: @light-1; } - &.color2 .center .progress-ship .bar { background: @light-2; } - &.color3 .center .progress-ship .bar { background: @light-3; } - &.color4 .center .progress-ship .bar { background: @light-4; } - &.color5 .center .progress-ship .bar { background: @light-5; } - &.color6 .center .progress-ship .bar { background: @light-6; } - &.color7 .center .progress-ship .bar { background: @light-7; } - &.color8 .center .progress-ship .bar { background: @light-8; } - &.color9 .center .progress-ship .bar { background: @light-9; } - &.color10 .center .progress-ship .bar { background: @light-10; } - &.color11 .center .progress-ship .bar { background: @light-11; } - &.color12 .center .progress-ship .bar { background: @light-12; } - - &.color1 .center.reversed .progress-ship { background: @light-1; } - &.color2 .center.reversed .progress-ship { background: @light-2; } - &.color3 .center.reversed .progress-ship { background: @light-3; } - &.color4 .center.reversed .progress-ship { background: @light-4; } - &.color5 .center.reversed .progress-ship { background: @light-5; } - &.color6 .center.reversed .progress-ship { background: @light-6; } - &.color7 .center.reversed .progress-ship { background: @light-7; } - &.color8 .center.reversed .progress-ship { background: @light-8; } - &.color9 .center.reversed .progress-ship { background: @light-9; } - &.color10 .center.reversed .progress-ship { background: @light-10; } - &.color11 .center.reversed .progress-ship { background: @light-11; } - &.color12 .center.reversed .progress-ship { background: @light-12; } - - .center .progress-ship .bar { - background: @light; - } - .center.reversed .progress-ship { background: @light; } - .center.reversed .progress-ship .bar { - background: #4F4F4F; - } - - .show-commander { - position: absolute; - top: -1px; right: -30px; - width: 28px; height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; - - &:hover, &:focus{ - background-color: #202020; - } - - &.active { - background-color: @medium; - } - } - } -} - -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; - - tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; - } - - tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; - } - - tr:first-child { - background: transparent; - } - - th, td { - height: 40px; width: 40px; - text-align: center; - } - - td span { - &.zero-value { - color: #4F4F4F; - } - } - - .base { - width: 100px; - text-align: left; - padding: 0 20px; - - a { border: none; } - strong { - display: block; - font-size: 16px; - } - } - - .large { - width: auto; - text-align: left; - padding: 0 10px; - } - - .sep { - border-left: solid 1px @medium; - } - - a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; - } - - th { - position: relative; - height: 70px; - - span { - position: absolute; - bottom: 32px; left: -10px; - display: block; - text-align: left; - width: 60px; - - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - } - } -} \ No newline at end of file diff --git a/public/css/less/component/map.less b/public/css/less/component/map.less deleted file mode 100755 index eeef9c0fe..000000000 --- a/public/css/less/component/map.less +++ /dev/null @@ -1,529 +0,0 @@ -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; top: 0; left: 0; - - #sectors { z-index: 300; } - #spying { z-index: 400; } - #own-base { z-index: 500; } - #commercial-routes { z-index: 600; } - #fleet-movements { z-index: 700; } - #attacks { z-index: 800; } - #systems { z-index: 900; } - #map-info { z-index: 910; } - - & > div { - position: absolute; - top: 0; left: 0; - width: 100%; height: 100%; - overflow: hidden; - } - - #sectors { - polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; - } - - .ally1 { fill: @medium-1; } - .ally2 { fill: @medium-2; } - .ally3 { fill: @medium-3; } - .ally4 { fill: @medium-4; } - .ally5 { fill: @medium-5; } - .ally6 { fill: @medium-6; } - .ally7 { fill: @medium-7; } - .ally8 { fill: @medium-8; } - .ally9 { fill: @medium-9; } - .ally10 { fill: @medium-10; } - .ally11 { fill: @medium-11; } - .ally12 { fill: @medium-12; } - } - - - #spying circle { - opacity: 0.08; - stroke: white; - } - - #own-base circle { - opacity: 0.1; - fill: white; - } - - #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; - - &.standBy { - stroke: rgba(255, 255, 255, .3); - } - } - - - #fleet-movements line { - stroke-width: 1px; - - &.back { - stroke-dasharray: 15 5; - } - } - - #attacks line { - stroke-width: 1px; - - &.color1 { stroke: @light-1; } - &.color2 { stroke: @light-2; } - &.color3 { stroke: @light-3; } - &.color4 { stroke: @light-4; } - &.color5 { stroke: @light-5; } - &.color6 { stroke: @light-6; } - &.color7 { stroke: @light-7; } - &.color8 { stroke: @light-8; } - &.color9 { stroke: @light-9; } - &.color10 { stroke: @light-10; } - &.color11 { stroke: @light-11; } - &.color12 { stroke: @light-12; } - } - - #attacks circle { - &.color1 { fill: @light-1; } - &.color2 { fill: @light-2; } - &.color3 { fill: @light-3; } - &.color4 { fill: @light-4; } - &.color5 { fill: @light-5; } - &.color6 { fill: @light-6; } - &.color7 { fill: @light-7; } - &.color8 { fill: @light-8; } - &.color9 { fill: @light-9; } - &.color10 { fill: @light-10; } - &.color11 { fill: @light-11; } - &.color12 { fill: @light-12; } - } - - #systems a { - display: block; - position: absolute; - border-radius: 100%; - - &.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; - } - - img { - display: block; - width: 20px; height: 20px; - border: none; - - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; - - &.own { background: white; } - } - } - - #systems { - .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; - - &.color1 { background: @medium-1; } - &.color2 { background: @medium-2; } - &.color3 { background: @medium-3; } - &.color4 { background: @medium-4; } - &.color5 { background: @medium-5; } - &.color6 { background: @medium-6; } - &.color7 { background: @medium-7; } - &.color8 { background: @medium-8; } - &.color9 { background: @medium-9; } - &.color10 { background: @medium-10; } - &.color11 { background: @medium-11; } - &.color12 { background: @medium-12; } - } - - .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, .9); - padding: 8px 16px; - border-radius: 3px; - - &:before { - content: ''; - position: absolute; - left: -20px; top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, .9) transparent transparent; - } - - h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; padding: 0; - } - p { - font-size: 13px; - margin: 6px 0 0 0; padding: 0; - font-weight: bold; - font-variant: small-caps; - - a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, .5); - margin: 0 5px 0 0; - } - } - - &.color1 p a { background: @medium-1; } - &.color2 p a { background: @medium-2; } - &.color3 p a { background: @medium-3; } - &.color4 p a { background: @medium-4; } - &.color5 p a { background: @medium-5; } - &.color6 p a { background: @medium-6; } - &.color7 p a { background: @medium-7; } - &.color8 p a { background: @medium-8; } - &.color9 p a { background: @medium-9; } - &.color10 p a { background: @medium-10; } - &.color11 p a { background: @medium-11; } - &.color12 p a { background: @medium-12; } - } - } - - #map-info { - display: none; - position: absolute; - top: 0px; right: 0px; left: auto; bottom: auto; - height: auto; width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; - - h2 { - margin: 0; padding: 0 20px; - font-size: 38px; - line-height: 60px; - } - - h3 { - margin: 0; padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; - } - - ul { - margin: 10px 0; padding: 0; - list-style: none; - - li { - position: relative; - margin: 0; padding: 0 40px 0 0; - line-height: 20px; height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; - - img { - position: absolute; - right: 10px; top: 0px; - } - } - } - } -} - -#map #spying circle { fill: @medium; } -#map #fleet-movements line { stroke: @light; } -#map #fleet-movements circle { fill: @light; } - -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; right: 20px; - - &:before { - content: ''; - position: absolute; - display: block; - left: -10px; top: 0; - height: 38px; width: 10px; - background: url('src/desktop/map/bLeftOption.png'); - } - - &:after { - content: ''; - position: absolute; - display: block; - right: -10px; top: 0; - height: 38px; width: 10px; - background: url('src/desktop/map/bRightOption.png'); - } - - a { - position: relative; - display: inline-block; - height: 30px; width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; - - &.active { - background: #004948; - } - - img { - position: absolute; - top: 5px; left: 5px; - width: 22px; - } - } -} - -.color1 #map-option a.active { background: @dark-1; } -.color2 #map-option a.active { background: @dark-2; } -.color3 #map-option a.active { background: @dark-3; } -.color4 #map-option a.active { background: @dark-4; } -.color5 #map-option a.active { background: @dark-5; } -.color6 #map-option a.active { background: @dark-6; } -.color7 #map-option a.active { background: @dark-7; } -.color8 #map-option a.active { background: @dark-8; } -.color9 #map-option a.active { background: @dark-9; } -.color10 #map-option a.active { background: @dark-10; } -.color11 #map-option a.active { background: @dark-11; } -.color12 #map-option a.active { background: @dark-12; } - -#map-content { - z-index: 1000; - position: absolute; - top: 80px; right: 20px; - display: block; - - .mini-map { - position: relative; - width: 300px; height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; - - polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; - - &:focus, &:hover { - opacity: 0.1; - cursor: pointer; - } - - &.ally0 { fill: #202020; } - &.ally1 { fill: @medium-1; } - &.ally2 { fill: @medium-2; } - &.ally3 { fill: @medium-3; } - &.ally4 { fill: @medium-4; } - &.ally5 { fill: @medium-5; } - &.ally6 { fill: @medium-6; } - &.ally7 { fill: @medium-7; } - &.ally8 { fill: @medium-8; } - &.ally9 { fill: @medium-9; } - &.ally10 { fill: @medium-10; } - &.ally11 { fill: @medium-11; } - &.ally12 { fill: @medium-12; } - } - - .number { - position: absolute; - z-index: 600; - top: 0; left: 0; - } - - .sectors { - z-index: 500; - position: absolute; - top: 0; left: 0; - } - - .bases { - z-index: 400; - position: absolute; - top: 0; left: 0; - - circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; - } - } - - .viewport { - position: absolute; - top: 0; left: 0; - background: rgba(255, 255, 255, .1); - border: solid 1px white; - border-radius: 3px; - } - - .number span { - position: absolute; - color: rgba(255, 255, 255, .8); - font-size: 11px; - } - } -} - -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} - -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, .8); - color: white; - font-size: 20px; - text-align: center; -} - -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; - - polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; - - &.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; - - &.ally1 { stroke: @dark-1; } - &.ally2 { stroke: @dark-2; } - &.ally3 { stroke: @dark-3; } - &.ally4 { stroke: @dark-4; } - &.ally5 { stroke: @dark-5; } - &.ally6 { stroke: @dark-6; } - &.ally7 { stroke: @dark-7; } - &.ally8 { stroke: @dark-8; } - &.ally9 { stroke: @dark-9; } - &.ally10 { stroke: @dark-10; } - &.ally11 { stroke: @dark-11; } - &.ally12 { stroke: @dark-12; } - } - - &.ally0 { fill: #202020; } - &.ally1 { fill: @medium-1; } - &.ally2 { fill: @medium-2; } - &.ally3 { fill: @medium-3; } - &.ally4 { fill: @medium-4; } - &.ally5 { fill: @medium-5; } - &.ally6 { fill: @medium-6; } - &.ally7 { fill: @medium-7; } - &.ally8 { fill: @medium-8; } - &.ally9 { fill: @medium-9; } - &.ally10 { fill: @medium-10; } - &.ally11 { fill: @medium-11; } - &.ally12 { fill: @medium-12; } - } - - .number { - position: absolute; - z-index: 800; - top: 0; left: 0; - - span { - position: absolute; - color: rgba(255, 255, 255, .8); - font-size: 12px; - line-height: 22px; width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; - - &.ally0 { background: #0A0A0A; } - &.ally1 { background: @dark-1; } - &.ally2 { background: @dark-2; } - &.ally3 { background: @dark-3; } - &.ally4 { background: @dark-4; } - &.ally5 { background: @dark-5; } - &.ally6 { background: @dark-6; } - &.ally7 { background: @dark-7; } - &.ally8 { background: @dark-8; } - &.ally9 { background: @dark-9; } - &.ally10 { background: @dark-10; } - &.ally11 { background: @dark-11; } - &.ally12 { background: @dark-12; } - - &.active { - background: white; - color: black; - box-shadow: 0 0 10px black; - } - } - } -} - -.tactical-map.reactive { - polygon.enabled { - &:hover, &.active { - cursor: pointer; - - &.ally1 { fill: @dark-1; } - &.ally2 { fill: @dark-2; } - &.ally3 { fill: @dark-3; } - &.ally4 { fill: @dark-4; } - &.ally5 { fill: @dark-5; } - &.ally6 { fill: @dark-6; } - &.ally7 { fill: @dark-7; } - &.ally8 { fill: @dark-8; } - &.ally9 { fill: @dark-9; } - &.ally10 { fill: @dark-10; } - &.ally11 { fill: @dark-11; } - &.ally12 { fill: @dark-12; } - } - } -} \ No newline at end of file diff --git a/public/css/less/component/market-sell.less b/public/css/less/component/market-sell.less deleted file mode 100755 index 2135bba9d..000000000 --- a/public/css/less/component/market-sell.less +++ /dev/null @@ -1,64 +0,0 @@ -.component.market-sell { - .body { - padding: 10px 0; - } - - .label-box { - position: relative; - padding: 0 10px; margin: 10px 0; - - .label { - display: inline-block; - width: 100px; - line-height: 30px; - } - - .value { - display: inline-block; - width: 147px; padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; - } - input.value { - height: 30px; - background: white; - } - .icon-color { - position: absolute; - top: 4px; right: 16px; - width: 18px; - } - } - - .queue { - margin: 0 10px; - cursor: pointer; - } - - .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; - - input[type='submit'] { - display: block; - width: 100%; margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: @light; - - &:hover { - background: @dark; - } - } - - input[disabled='disabled'] { - background: #202020 !important; - } - } -} \ No newline at end of file diff --git a/public/css/less/component/nav.less b/public/css/less/component/nav.less deleted file mode 100755 index 317a35330..000000000 --- a/public/css/less/component/nav.less +++ /dev/null @@ -1,170 +0,0 @@ -#tools .box, #nav .box { - a, & > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; - - &:before { - content: ''; - position: absolute; - top: 0; left: 0; - width: 20px; height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; - } - - &:after { - content: ''; - position: absolute; - top: 0; right: 0; - width: 20px; height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; - } - } - - a.current-base { - margin-left: 56px; - - img { - position: absolute; - top: -16px; left: -54px; - background: black; - .border-radius(100%); - border: solid 2px #4F4F4F; - width: 60px; - } - } - - a:hover:before, a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; - } - - a:hover:after, a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; - } - - a.active { background: url('src/desktop/button/bButtonMiddleActive.png') repeat; } - a.active:before { background: url('src/desktop/button/bButtonLeftActive.png') repeat; } - a.active:after { background: url('src/desktop/button/bButtonRightActive.png') repeat; } - - a.square { - position: relative; - padding: 0 5px; margin: 5px 2px; - height: 32px; width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; - - &:before, &:after { display: none; } - &:hover, &:focus { background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; } - &.active { background: url('src/desktop/button/bLittleButtonActive-c@{color-type}.png') no-repeat; } - - &.active.flashy { - .border-radius(3px); - box-shadow: inset 0 0 12px @light; - } - - img { - position: absolute; - width: 24px; - top: 3px; left: 8px; - } - - span.number { - position: absolute; - top: -5px; right: -5px; - width: 18px; line-height: 18px; - text-align: center; - font-size: 11px; - .border-radius(100%); - background: @dark; - } - } -} - -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; - - &:before { - content: ''; - position: absolute; - top: 0; left: -15px; - width: 15px; height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; - } - - &:after { - content: ''; - position: absolute; - top: 0; right: -15px; - width: 15px; height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; - } - - &.left { top: 0; left: 25px; } - &.left-2 { top: 0; left: 420px; } - &.left-3 { top: 0; left: 732px; } - &.right { top: 0; right: 25px; } - - a.square span.number { - bottom: -5px; top: auto; - } -} - -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; - - &:before { - content: ''; - position: absolute; - top: 0; left: -15px; - width: 15px; height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; - } - - &:after { - content: ''; - position: absolute; - top: 0; right: -15px; - width: 15px; height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; - } - - &.left { - bottom: 0; right: 340px; - } - &.right { - bottom: 0; right: 25px; - } - - a.square img { - top: 4px; - } - a.resource-link, span.resource-link { - width: 110px; - font-size: 16px; - - img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; padding: 1px; - } - } -} \ No newline at end of file diff --git a/public/css/less/component/new-message.less b/public/css/less/component/new-message.less deleted file mode 100755 index e643d7002..000000000 --- a/public/css/less/component/new-message.less +++ /dev/null @@ -1,60 +0,0 @@ -.component.new-message { - p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; - - &:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; - } - } - - label { - display: block; - font-size: 13px; - } - - .input-text input { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - } - - .input-area textarea { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; min-width: 100%; - height: 200px; - } - - button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: @light; - - &:hover, &:focus { - background: @dark; - } - } -} \ No newline at end of file diff --git a/public/css/less/component/notif.less b/public/css/less/component/notif.less deleted file mode 100755 index f85e4d6c7..000000000 --- a/public/css/less/component/notif.less +++ /dev/null @@ -1,100 +0,0 @@ -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; - - h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; - } - - &.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; height: 40px; - background: white; - top: -5px; right: -15px; - background: @light; - - .tranform(100deg); - } - - .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; - - p { - margin: 0; - } - - hr { - border: none; background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; - } - - a { - color: white; - } - - .box-resource { - position: relative; - display: block; - margin: 5px 0; padding: 5px 5px 5px 40px; - - img { - position: absolute; - top: 6px; left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - - border-color: @medium; - } - - .label { - display: block; - font-size: 12px; - } - - .value { - display: block; - font-size: 18px; - font-weight: bold; - } - } - } - - .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; - - a { - color: #CCC; - } - } -} - -.notif.open .content { display: block; } -.notif.open .footer { display: block; } \ No newline at end of file diff --git a/public/css/less/component/overbox.less b/public/css/less/component/overbox.less deleted file mode 100755 index efa3a542a..000000000 --- a/public/css/less/component/overbox.less +++ /dev/null @@ -1,296 +0,0 @@ -#nav .overbox, #tools .overbox { - .overflow { - max-height: 400px; - overflow: auto; - position: relative; - } - - h2 { - color: white; - padding: 10px 15px; margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; - } - - .link-title { - position: absolute; - top: 10px; right: 10px; - line-height: 20px; - font-size: 11px; padding: 0 5px; - background: #202020; - .border-radius(3px); - text-decoration: none; - color: white; - } - - a { - color: inherit; - } - - a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; - - &:focus, &:hover { - color: #CCC; - } - } - - p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; - } - - .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: @medium; - border: solid 1px @dark; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; - - - - &:hover, &:focus { - background: @dark; - border-color: @medium; - } - - &.disabled { - background: #202020; - border-color: #4F4F4F; - } - } - - input.outside-button { - line-height: 26px; - } -} - - -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - .border-radius(3px); - - &:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; right: 30px; - } - - &#change-bases { - top: 50px; left: 10px; - width: 205px; - padding: 0 0 8px 0; - - &:before { left: 30px; right: auto; } - - a { - display: block; - padding: 3px 15px; - color: #CCC; text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; - - &:focus, &:hover { - background: #101010; - } - - &.active { - background: #202020; - } - } - - strong { - display: block; - color: #CCC; - font-size: 13px; - } - } - - &#disconnect-box { - top: 50px; right: 10px; - width: 205px; - padding: 8px 0; - - hr { - margin: 8px 0; border: none; - background: none; - border-top: solid 1px #202020; - } - - a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; - - &:hover, &:focus { - color: white; - background: #202020; - } - } - } - - &#bug-tracker { - width: 250px; - top: 50px; right: 98px; - padding: 0 0 8px 0; - - p { - color: #CCC; - font-size: 12px; - margin: 10px; - } - - .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; - } - - textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; height: 200px; - min-width: 318px; max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; - } - - .button { - display: block; - margin: 0 10px 2px 10px; - } - } - - &#roadmap { - width: 350px; - top: 50px; right: 10px; - - .overflow { - width: 350px; - padding: 8px 0; - } - - p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; - - em { - display: block; - font-size: 11px; - color: #4F4F4F; - } - } - - hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; - } - } - - &#tutorial { - width: 350px; - top: 50px; right: 143px; - color: white; - - form { - padding: 0 0 10px 0; margin: 0; - border-top: solid 1px #202020; - } - - .overflow { - padding: 15px 15px 0 15px; - - h3 { - position: relative; - margin: 0; padding: 0 0 0 36px; - - .number { - position: absolute; - top: -4px; left: 0; - display: block; - width: 26px; line-height: 26px; - text-align: center; - background: @dark; - .border-radius(100%); - margin-right: 10px; - } - } - - p { - font-size: 12px; - color: #CCC; - } - } - } - - &#new-notifications { - top: 50px; - left: 627px; - width: 300px; - } -} - -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - .border-radius(3px); - width: 300px; - bottom: 45px; right: 15px; - - &:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; right: 30px; - } - - &.left-pic:before { - left: 30px; right: auto; - } - - &#tools-calendar { left: 25px; bottom: 45px; right: auto; } - - &#tools-refinery { right: 401px; bottom: 45px; } - &#tools-generator { right: 237px; bottom: 45px; } - &#tools-technosphere { right: 193px; bottom: 45px; } - &#tools-dock1 { right: 148px; bottom: 45px; } - &#tools-dock2 { right: 105px; bottom: 45px; } - - &#tools-credit { right: 140px; bottom: 45px; } - - &#tools-incoming-attack { right: 230px; bottom: 45px; } - &#tools-outgoing-attack { right: 185px; bottom: 45px; } -} \ No newline at end of file diff --git a/public/css/less/component/params.less b/public/css/less/component/params.less deleted file mode 100644 index 84555da0e..000000000 --- a/public/css/less/component/params.less +++ /dev/null @@ -1,12 +0,0 @@ -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, .8); - - input { - position: absolute; - top: 8px; left: 10px; - } -} \ No newline at end of file diff --git a/public/css/less/component/player.less b/public/css/less/component/player.less deleted file mode 100755 index 7f8ea87c2..000000000 --- a/public/css/less/component/player.less +++ /dev/null @@ -1,128 +0,0 @@ -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; - - a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; - - &:hover, &:focus { - border-color: #4f4f4f; - } - } - - img.picto { - position: absolute; - top: 5px; left: 5px; - width: 50px; padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; - } - - .icon, .icon-color { - height: 16px; - padding: 1px; - } - - span, strong { - display: block; - line-height: 20px; - } - - strong { - font-size: 18px; - } - - .online, .inactive { - position: absolute; - width: 18px; height: 18px; - background: white; - top: 5px; right: 5px; - border-radius: 100%; - background: #4F4F4F; - } - - .online { - background: @light; - } - - &.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; - - img { - top: 0; left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; - } - } -} - -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; - - &.color1 { border-left-color: @light-1; } - &.color2 { border-left-color: @light-2; } - &.color3 { border-left-color: @light-3; } - &.color4 { border-left-color: @light-4; } - &.color5 { border-left-color: @light-5; } - &.color6 { border-left-color: @light-6; } - &.color7 { border-left-color: @light-7; } - &.color8 { border-left-color: @light-8; } - &.color9 { border-left-color: @light-9; } - &.color10 { border-left-color: @light-10; } - &.color11 { border-left-color: @light-11; } - &.color12 { border-left-color: @light-12; } - - .title, .points { - color: #BBB; - } - - .position { - display: block; - position: absolute; - top: 14px; right: 14px; - line-height: 38px; width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; - } - - .variance { - display: block; - position: absolute; - top: 5px; right: -4px; - line-height: 26px; width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; - - &.lower { - bottom: 5px; top: auto; - } - } - - &.active .position { - background: white; - border: solid 1px white; - color: #202020; - } -} - -.component.player.size2 .player { width: 208px; } -.component.player.size1 .player { width: 202px; } \ No newline at end of file diff --git a/public/css/less/component/profil.less b/public/css/less/component/profil.less deleted file mode 100755 index 4ad1cddfd..000000000 --- a/public/css/less/component/profil.less +++ /dev/null @@ -1,105 +0,0 @@ -.component.profil { - .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; - - .label { - display: block; - } - - .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; - } - } - - .profil-flag { - position: relative; - width: 222px; height: 460px; - margin: 0 auto; - - img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px @medium, 0 0 20px black; - z-index: 1; - } - - &.color-1 img { box-shadow: 0 0 0 4px @medium-1, 0 0 20px black; } - &.color-2 img { box-shadow: 0 0 0 4px @medium-2, 0 0 20px black; } - &.color-3 img { box-shadow: 0 0 0 4px @medium-3, 0 0 20px black; } - &.color-4 img { box-shadow: 0 0 0 4px @medium-4, 0 0 20px black; } - &.color-5 img { box-shadow: 0 0 0 4px @medium-5, 0 0 20px black; } - &.color-6 img { box-shadow: 0 0 0 4px @medium-6, 0 0 20px black; } - &.color-7 img { box-shadow: 0 0 0 4px @medium-7, 0 0 20px black; } - &.color-8 img { box-shadow: 0 0 0 4px @medium-8, 0 0 20px black; } - &.color-9 img { box-shadow: 0 0 0 4px @medium-9, 0 0 20px black; } - &.color-10 img { box-shadow: 0 0 0 4px @medium-10, 0 0 20px black; } - &.color-11 img { box-shadow: 0 0 0 4px @medium-11, 0 0 20px black; } - &.color-12 img { box-shadow: 0 0 0 4px @medium-12, 0 0 20px black; } - - &:before { - display: block; - position: absolute; - content: ''; - top: 218px; left: 33px; - width: 154px; height: 241px; - background: url('src/desktop/faction/flag/flag-@{color-type}.png') no-repeat; - } - - &.color-1:before { background: url('src/desktop/faction/flag/flag-1.png') no-repeat; } - &.color-2:before { background: url('src/desktop/faction/flag/flag-2.png') no-repeat; } - &.color-3:before { background: url('src/desktop/faction/flag/flag-3.png') no-repeat; } - &.color-4:before { background: url('src/desktop/faction/flag/flag-4.png') no-repeat; } - &.color-5:before { background: url('src/desktop/faction/flag/flag-5.png') no-repeat; } - &.color-6:before { background: url('src/desktop/faction/flag/flag-6.png') no-repeat; } - &.color-7:before { background: url('src/desktop/faction/flag/flag-7.png') no-repeat; } - &.color-8:before { background: url('src/desktop/faction/flag/flag-8.png') no-repeat; } - &.color-9:before { background: url('src/desktop/faction/flag/flag-9.png') no-repeat; } - &.color-10:before { background: url('src/desktop/faction/flag/flag-10.png') no-repeat; } - &.color-11:before { background: url('src/desktop/faction/flag/flag-11.png') no-repeat; } - &.color-12:before { background: url('src/desktop/faction/flag/flag-12.png') no-repeat; } - - .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; right: 2px; - width: 36px; height: 36px; - text-align: center; - line-height: 36px; - - background: #0A0A0A; - border: 3px solid @medium; - border-radius: 100%; - } - - &.color-1 .level { border-color: @medium-1; } - &.color-2 .level { border-color: @medium-2; } - &.color-3 .level { border-color: @medium-3; } - &.color-4 .level { border-color: @medium-4; } - &.color-5 .level { border-color: @medium-5; } - &.color-6 .level { border-color: @medium-6; } - &.color-7 .level { border-color: @medium-7; } - &.color-8 .level { border-color: @medium-8; } - &.color-9 .level { border-color: @medium-9; } - &.color-10 .level { border-color: @medium-10; } - &.color-11 .level { border-color: @medium-11; } - &.color-12 .level { border-color: @medium-12; } - } - - .faction-flag { - display: block; - content: ''; - width: 154px; height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-@{color-type}.png') no-repeat; - } -} \ No newline at end of file diff --git a/public/css/less/component/queue.less b/public/css/less/component/queue.less deleted file mode 100755 index 50d8e1f13..000000000 --- a/public/css/less/component/queue.less +++ /dev/null @@ -1,109 +0,0 @@ -.queue { - margin: 10px; - color: white; - - .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; - - &.empty { - background: #0A0A0A; - - strong { - font-weight: normal; - } - } - - &.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; - - &:hover, &:focus { - color: #CCC; - } - } - - a.button { - position: absolute; - display: block; - top: 2px; right: 5px; - color: white; - text-decoration: none; - } - - a { - color: #CCC; - } - - .group-link { - position: absolute; - top: 9px; right: 9px; - - a { - display: block; - width: 20px; line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: @medium; - - &:hover, &:focus { - background: @light; - } - } - } - - .picto { - float: left; - width: 40px; height: 40px; - margin: 5px; padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; - } - - strong { - display: block; - margin: 6px 0 2px 0; - - .level { - font-size: 11px; - color: #CCC; - } - } - - .big { - font-size: 24px; - } - - em { - display: block; - font-style: normal; - color: #AEAEAE; - } - - .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; height: 3px; - background: #4F4F4F; - } - - .progress-bar { - position: absolute; - display: block; - height: 100%; - background: @light; - } - } - -} \ No newline at end of file diff --git a/public/css/less/component/report.less b/public/css/less/component/report.less deleted file mode 100755 index b42bc781f..000000000 --- a/public/css/less/component/report.less +++ /dev/null @@ -1,78 +0,0 @@ -.component.report .commander { - position: relative; - display: block; - margin: 10px; padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - - img { - position: absolute; - top: 5px; left: 5px; - padding: 8px; width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; - } - - strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; - } - - em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; - - .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; - } - } -} - -.component.report .dammage { - margin: 10px; - background: black; - - table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; - } - - td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; height: 22px; - - &:first-child { - text-align: left; - padding: 4px 8px; - width: auto; - } - } - - td span { - display: inline-block; - background: red; - line-height: 22px; width: 22px; - border-radius: 3px; - color: white; - background: @dark; - } -} \ No newline at end of file diff --git a/public/css/less/component/search-player.less b/public/css/less/component/search-player.less deleted file mode 100755 index 3e8d2fb3b..000000000 --- a/public/css/less/component/search-player.less +++ /dev/null @@ -1,89 +0,0 @@ -.component.search-player { - position: relative; - background: transparent !important; - - .box { - position: absolute; - top: 60px; left: 50px; - width: 440px; - color: white; - } - - .top { - background: rgba(0, 0, 0, .4); - padding: 10px; - border-radius: 3px 3px 0 0; - - label { - display: block; - font-size: 16px; - } - - input { - display: block; - border: none; - height: 40px; width: 400px; - padding: 0 10px; margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; - } - } - - .center { - background: rgba(0, 0, 0, .8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; - - .avatar { - float: left; position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; - } - - .right { - margin-left: 140px; - } - - h1 { margin: 10px 0 0 0; padding: 0; } - hr { margin: 10px 0; border-color: #4F4F4F; } - p { - margin: 5px 0; - padding: 0; - - span { - display: inline-block; - background: red; - line-height: 28px; padding: 0 10px; - border: solid 1px rgba(255, 255, 255, .5); - border-right: none; - - &:first-child { - border-radius: 3px 0 0 3px; - } - &:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, .5); - } - } - } - } - - &.color1 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-1; } - &.color2 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-2; } - &.color3 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-3; } - &.color4 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-4; } - &.color5 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-5; } - &.color6 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-6; } - &.color7 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-7; } - &.color8 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-8; } - &.color9 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-9; } - &.color10 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-10; } - &.color11 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-11; } - &.color12 .center .avatar { box-shadow: 0 0 4px white, 0 0 0 2px @medium-12; } -} \ No newline at end of file diff --git a/public/css/less/component/situation.less b/public/css/less/component/situation.less deleted file mode 100755 index 764412d6f..000000000 --- a/public/css/less/component/situation.less +++ /dev/null @@ -1,388 +0,0 @@ -.component .situation-content { - position: relative; - display: block; - width: 100%; height: 500px; - border-bottom: solid 1px #0A0A0A; - - .line-help { - position: absolute; - display: block; - width: 25px; height: 25px; line-height: 25px; - text-align: center; - border-radius: 100%; - background: @dark; - - &.line-1 { top: 55px; left: 190px; } - &.line-2 { top: 145px; left: 406px; } - } - - .toolbar { - position: absolute; - top: 30px; right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, .1); - border-radius: 3px; - background: @medium; - z-index: 1; - - a, span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; - - img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; width: 18px; - } - } - - a:hover, a:focus { - background: rgba(0, 0, 0, .25); - } - - form { - display: inline-block; - } - - input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; - - &:focus { - background: rgba(0, 0, 0, .25); - } - - &.button { - background: url('src/desktop/common/edit.png') no-repeat center; - } - - &.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, .25); - } - } - } - - .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; - - strong { - color: white; - font-size: 14px; - } - - a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; - - &:hover, &:focus { - border-color: #CCC; - } - } - } - - .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; - - &.empty { - color: #CCC; - } - - &.position-1-1 { top: 135px; left: 127px; } - &.position-1-2 { top: 272px; left: 100px; } - &.position-1-3 { top: 415px; left: 127px; } - - &.position-2-1 { top: 215px; left: 352px; } - &.position-2-2 { top: 272px; left: 345px; } - &.position-2-3 { top: 330px; left: 352px; } - - &.position-3 { top: 355px; left: 577px; } - - img { - width: 40px; padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - - .transition(all linear 250ms); - } - - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium; } - - .info { - top: 8px; left: 65px; - width: 160px; - } - - .link { - display: none; - position: absolute; - top: 14px; left: -16px; - width: 24px; height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; - - &.to-left { background: url('src/desktop/mover/to-left.png') no-repeat center black; } - &.to-right { background: url('src/desktop/mover/to-right.png') no-repeat center black; } - } - - &:hover > .link { - display: block; - } - } - - .stellar { - position: absolute; - display: block; - top: 180px; left: 560px; - - img { - width: 220px; padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - } - - .info { - font-size: 12px; - border-left: solid 1px #202020; - - &.top { - bottom: 215px; left: 50px; - padding: 0 0 30px 10px; - - strong { - font-size: 20px; - } - } - - &.bottom { - top: 225px; left: 160px; - padding: 10px 0 0 10px; - } - - &.middle { - top: 20px; left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; - } - } - } - - .attack-link { - position: absolute; - bottom: -1px; left: 0; right: 0; - text-align: center; - - a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; - - &:hover, &:focus { - box-shadow: 0 0 5px 3px black; - } - } - } - - &.color0 { - .line-help { background: #202020; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px #202020; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px #202020; } - } - .attack-link a { background: #202020; } - } - &.color1 { - .line-help { background: @dark-1; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-1; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-1; } - } - .attack-link a { background: @medium-1; } - } - &.color2 { - .line-help { background: @dark-2; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-2; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-2; } - } - .attack-link a { background: @medium-2; } - } - &.color3 { - .line-help { background: @dark-3; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-3; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-3; } - } - .attack-link a { background: @medium-3; } - } - &.color4 { - .line-help { background: @dark-4; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-4; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-4; } - } - .attack-link a { background: @medium-4; } - } - &.color5 { - .line-help { background: @dark-5; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-5; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-5; } - } - .attack-link a { background: @medium-5; } - } - &.color6 { - .line-help { background: @dark-6; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-6; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-6; } - } - .attack-link a { background: @medium-6; } - } - &.color7 { - .line-help { background: @dark-7; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-7; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-7; } - } - .attack-link a { background: @medium-7; } - } - &.color8 { - .line-help { background: @dark-8; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-8; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-8; } - } - .attack-link a { background: @medium-8; } - } - &.color9 { - .line-help { background: @dark-9; } - .commander { - &.full img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-9; } - &.full img:hover { box-shadow: 0 0 10px white, 0 0 0 6px @medium-9; } - } - .attack-link a { background: @medium-9; } - } -} - -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; - - .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; - - .value { - font-size: 26px; - font-weight: bold; - display: block; - } - } -} - -.component .build-item.base-type .desc { - margin: 10px 0 0 0; padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} - -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} - -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { top: 35px; left: 5px; } -.component .build-item.base-type .list-choice button.item-2 { top: 5px; left: 107px; } -.component .build-item.base-type .list-choice button.item-3 { bottom: 5px; left: 107px; } -.component .build-item.base-type .list-choice button.item-4 { top: 35px; right: 5px; } - -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-1; } -.color2 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-2; } -.color3 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-3; } -.color4 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-4; } -.color5 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-5; } -.color6 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-6; } -.color7 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-7; } -.color8 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-8; } -.color9 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-9; } -.color10 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-10; } -.color11 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-11; } -.color12 .component .build-item.base-type .list-choice button.done img { box-shadow: 0 0 4px white, 0 0 0 2px @medium-12; } - -.component .build-item.base-type .desc-choice { - display: none; -} - -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} - -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} - -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} - -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} \ No newline at end of file diff --git a/public/css/less/component/squadron.less b/public/css/less/component/squadron.less deleted file mode 100755 index feba79867..000000000 --- a/public/css/less/component/squadron.less +++ /dev/null @@ -1,130 +0,0 @@ -.component.commander-fleet { - .fleet { - vertical-align: top; - display: block; - text-align: center; - } - - .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; - - &:first-child { - border-right: dashed 1px #4F4F4F; - } - - a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; - - &.empty { - opacity: 0.4; - } - } - - img { - position: absolute; - display: inline-block; - width: 40px; - } - - .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; - - .quantity { - display: block; - font-weight: bold; - font-size: 18px; - } - } - } - - .army { - border-collapse: collapse; - width: 560px; - margin: 20px; - - td { - width: 65px; padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; - } - - td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; - } - - tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; - } - - .block { - display: block; - width: 54px; height: 54px; - margin: 0 0 5px 0; padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; - - &.empty { - background: black; - border: solid 1px #0A0A0A; - } - - strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; - } - - em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; - } - - &.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: @medium; - } - - &.squadron.full0 { background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px @medium; } - &.squadron.full1 { background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px @medium; } - &.squadron.full2 { background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px @medium; } - &.squadron.full3 { background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px @medium; } - - &.squadron.active { - box-shadow: - inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; - } - } - } -} \ No newline at end of file diff --git a/public/css/less/component/std.less b/public/css/less/component/std.less deleted file mode 100644 index 7bd0e5891..000000000 --- a/public/css/less/component/std.less +++ /dev/null @@ -1,64 +0,0 @@ -/* finance */ -.component.financial { - table { - border-collapse: collapse; - width: 100%; - } - - td { - vertical-align: top; - width: 50%; - } -} - -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} - -/* techno */ -.component.techno .build-item .name strong { font-size: 16px; } - -/* school */ -.component.school .build-item .name strong { font-size: 18px; } - -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} - -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} - -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} - -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} - -.component .info-building { - margin: 10px; padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; - - h4 { - margin: 10px; - } - - p { - font-size: 13px; - } -} \ No newline at end of file diff --git a/public/css/less/component/subnav.less b/public/css/less/component/subnav.less deleted file mode 100755 index d0d720c6b..000000000 --- a/public/css/less/component/subnav.less +++ /dev/null @@ -1,176 +0,0 @@ -#subnav { - position: fixed; - top: 29px; left: 2px; bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; - - hr { - border: none; - margin: 20px 0; - } - - .overflow { - position: relative; - } - - .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; - - &:hover, &:focus { - box-shadow: 0 0 3px white; - } - - &.top { - bottom: auto; top: 20px; - background-image: url('src/desktop/component/top.png'); - } - - &.bottom { - bottom: 20px; top: auto; - background-image: url('src/desktop/component/bottom.png'); - } - } - - .item { - position: relative; - display: block; - height: 50px; width: 50px; - margin: 0 0 10px 0; padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; - - &.active { - background: url('src/desktop/subnav/button-active-c@{color-type}.png') no-repeat; - } - - &.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; - } - - &:before { - content: ''; position: absolute; - right: -6px; bottom: 0; - width: 12px; height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; - } - &:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; - } - &:hover > .content { - display: block; - } - - .picto { - display: block; - height: 30px; width: 30px; - padding: 10px; - - img { - display: block; - height: 30px; width: 30px; - } - - .number { - position: absolute; - bottom: -5px; right: -18px; - display: block; - width: 28px; height: 28px; line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; - } - } - - .content { - display: none; - position: absolute; - top: 0; left: 75px; - width: 230px; - } - - .content.skin-1 { - span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - - color: white; - background: #202020; - .border-radius(3px); - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - } - - span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; top: 22px; - } - } - - .content.skin-2 { - .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; background: #202020; - .border-radius(3px); - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - } - - .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; top: 22px; - } - - .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; - } - - .sub-content .ship { - position: relative; - } - - .sub-content .ship img { - width: 32px; height: 32px; - } - - .sub-content .ship img.zero { opacity: .5; } - .sub-content .ship .number { - position: absolute; - bottom: -2px; right: -2px; - width: 18px; height: 18px; line-height: 18px; - .border-radius(100%); - text-align: center; - background: @light; - } - } - } -} \ No newline at end of file diff --git a/public/css/less/component/thread.less b/public/css/less/component/thread.less deleted file mode 100755 index e966083e0..000000000 --- a/public/css/less/component/thread.less +++ /dev/null @@ -1,104 +0,0 @@ -.component.thread { - .message { - position: relative; - margin: 20px 10px 10px 10px; padding: 6px 8px; - background: black; - line-height: 140%; - text-align: justify; - color: #efefef; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; - border-bottom: solid 3px #4F4F4F; - - &:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent #4F4F4F transparent; - } - &.left:before { left: 20px; } - &.right:before { right: 20px; } - &.color1 { border-bottom: solid 3px @light-1; } - &.color2 { border-bottom: solid 3px @light-2; } - &.color3 { border-bottom: solid 3px @light-3; } - &.color4 { border-bottom: solid 3px @light-4; } - &.color5 { border-bottom: solid 3px @light-5; } - &.color6 { border-bottom: solid 3px @light-6; } - &.color7 { border-bottom: solid 3px @light-7; } - &.color8 { border-bottom: solid 3px @light-8; } - &.color9 { border-bottom: solid 3px @light-9; } - &.color10 { border-bottom: solid 3px @light-10; } - &.color11 { border-bottom: solid 3px @light-11; } - &.color12 { border-bottom: solid 3px @light-12; } - - em.name { - padding: 0 0 5px 0; - display: block; - color: #CCC; - } - - em.option { - padding: 5px 0 0 0; - text-align: right; - display: block; - color: #CCC; - } - - .icon-color { - width: 15px; - } - - a { - color: #EFEFEF; - - &.color1 { color: @light-1; } - &.color2 { color: @light-2; } - &.color3 { color: @light-3; } - &.color4 { color: @light-4; } - &.color5 { color: @light-5; } - &.color6 { color: @light-6; } - &.color7 { color: @light-7; } - &.color8 { color: @light-8; } - &.color9 { color: @light-9; } - &.color10 { color: @light-10; } - &.color11 { color: @light-11; } - &.color12 { color: @light-12; } - } - } - - form { - display: none; - } - - p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; - - &:before { - content: ''; - position: absolute; - width: 0; height: 0; top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; - } - } - - textarea { - display: block; - width: 100%; - padding: 0; margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; min-width: 100%; - height: 120px; - } -} \ No newline at end of file diff --git a/public/css/less/component/topic.less b/public/css/less/component/topic.less deleted file mode 100755 index 6cd3d539c..000000000 --- a/public/css/less/component/topic.less +++ /dev/null @@ -1,200 +0,0 @@ -.component.topic .message { - position: relative; - padding: 0 0 0 80px; margin: 10px; - min-height: 70px; - - .avatar { - position: absolute; - top: 0; left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; - } - - .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; - - &:before { - position: absolute; - content: ''; - top: 25px; left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; - } - - .text { - margin: 0; padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; - - a, strong { - color: white; - } - - a.color1 { color: @light-1; } - a.color2 { color: @light-2; } - a.color3 { color: @light-3; } - a.color4 { color: @light-4; } - a.color5 { color: @light-5; } - a.color6 { color: @light-6; } - a.color7 { color: @light-7; } - a.color8 { color: @light-8; } - a.color9 { color: @light-9; } - a.color10 { color: @light-10; } - a.color11 { color: @light-11; } - a.color12 { color: @light-12; } - - .icon-color { - width: 15px; - } - } - - .footer { - margin: 0; padding: 6px 10px; - font-size: 12px; - color: #CCC; - - a { - color: #CCC; - } - } - } -} - -.component.topic .message.write .content { - &:before { - left: -17px; top: 11px; - border-color: transparent white transparent transparent; - } - - textarea { - border: none; padding: 5px; - width: 487px; height: 120px; - max-width: 487px; min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; - } - - input { - margin: 6px; - font-family: inherit; - } - - .title { - border: none; - margin: 0; padding: 5px; - width: 487px; height: 30px; - font-family: inherit; - font-size: 13px; - } - - button { - margin: 6px; - font-family: inherit; - background: @medium; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; - - &:hover, &:focus { - background: @dark; - } - } -} - -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; margin: 10px; - - &:before { - content: ''; - position: absolute; - top: 10px; left: 0; - height: 1px; width: 70px; - background: #4F4F4F; - } -} - -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; - - .cover { - position: absolute; - display: block; - top: 0; left: 0; bottom: 0; - width: 60px; - padding: 5px; - - .picture { - width: 52px; height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; - - &.color0 { box-shadow: 0 0 0 2px #4F4F4F; } - &.color1 { box-shadow: 0 0 0 2px @medium-1; } - &.color2 { box-shadow: 0 0 0 2px @medium-2; } - &.color3 { box-shadow: 0 0 0 2px @medium-3; } - &.color4 { box-shadow: 0 0 0 2px @medium-4; } - &.color5 { box-shadow: 0 0 0 2px @medium-5; } - &.color6 { box-shadow: 0 0 0 2px @medium-6; } - &.color7 { box-shadow: 0 0 0 2px @medium-7; } - &.color8 { box-shadow: 0 0 0 2px @medium-8; } - &.color9 { box-shadow: 0 0 0 2px @medium-9; } - &.color10 { box-shadow: 0 0 0 2px @medium-10; } - &.color11 { box-shadow: 0 0 0 2px @medium-11; } - &.color12 { box-shadow: 0 0 0 2px @medium-12; } - } - - .number, .new-message { - position: absolute; - width: 22px; height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; right: 5px; - border: solid 1px #4F4F4F; - text-align: center; line-height: 22px; - font-size: 11px; - } - - .new-message { - left: 5px; top: 5px; - - img { - display: block; - width: 18px; height: 18px; - margin: 2px; - } - } - } - - .data { - line-height: 20px; - } - - &:last-child { - border: solid 1px #202020; - } - - &:hover, &:focus { - background: #0C0C0C; - } -} \ No newline at end of file diff --git a/public/css/less/component/transaction.less b/public/css/less/component/transaction.less deleted file mode 100755 index 9e94a4565..000000000 --- a/public/css/less/component/transaction.less +++ /dev/null @@ -1,279 +0,0 @@ -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; - - .right-link { - position: absolute; - top: 2px; right: 5px; - display: block; - color: #FFF; - text-decoration: none; - } - - .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; - - .picto { - position: absolute; - top: 5px; left: -20px; - width: 60px; height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - } - - .rate { - position: absolute; - bottom: 5px; right: 8px; - } - - .offer { - overflow: hidden; - height: 32px; - } - - .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; - - span { - display: block; - position: absolute; - top: -10px; left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; - } - } - - .price { - font-size: 19px; - font-weight: bold; - - .icon-color { - width: 14px; - position: relative; top: -2px; - padding: 1px; - } - } - } - - &.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; - - .icon-color { - width: 20px; - position: relative; top: -5px; - } - } - - &.commander, &.ship { - .product .offer strong { - display: block; - font-size: 14px; - } - } - - &.commander, &.ship { - .product .offer em { - display: block; - font-size: 11px; - } - } - - .hidden { - display: none; - } - - .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; - - p { - font-size: 11px; - margin: 5px 8px; - } - - .seller { - position: absolute; - top: 0; width: 50%; bottom: 0; - - a { - font-weight: bold; - color: white; - } - - .color1 { color: @light-1; } - .color2 { color: @light-2; } - .color3 { color: @light-3; } - .color4 { color: @light-4; } - .color5 { color: @light-5; } - .color6 { color: @light-6; } - .color7 { color: @light-7; } - .color8 { color: @light-8; } - .color9 { color: @light-9; } - .color10 { color: @light-10; } - .color11 { color: @light-11; } - .color12 { color: @light-12; } - } - - .price-detail { - position: absolute; - top: 0; width: 50%; bottom: 0; right: 0; - - p { - text-align: right; - - .icon-color { - width: 10px; - padding: 1px; - } - - span { - color: #4F4F4F; - } - } - } - } - - .button { - border-top: solid 1px #202020; - padding: 5px; - - a, span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; - } - - a { - background: @medium; - - &:hover { - box-shadow: inset 0 0 6px black; - background: @light; - } - } - - span { - background: #202020; - cursor: default; - } - - .icon-color { - width: 14px; - } - } - - .shipping { - position: relative; - background: black; - height: 30px; - - .ships { - position: absolute; - top: 0; left: 0; bottom: 0; width: 50px; - padding: 0 5px; line-height: 30px; - text-align: center; - - .icon-color { - position: relative; - width: 16px; margin-left: 5px; - top: -5px; - } - } - - .time { - position: absolute; - top: 0; right: 0; bottom: 0; width: 50px; - padding: 0 5px; line-height: 30px; - text-align: center; - font-size: 12px; - } - - .progress-container { - position: relative; - display: block; clear: both; - margin: 0 60px; height: 3px; - top: 13px; - background: #4F4F4F; - } - - .progress-bar { - position: absolute; - display: block; - height: 100%; - background: @light; - } - } -} - -.component .build-item.disable .button span { - color: #696969; -} - - -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px @light; - - label { - position: relative; - display: block; - padding: 5px 0; - - input { - display: block; - padding: 5px 10px; margin: 5px 0 0 0; - width: 259px; - border: none; - } - } - - &.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; - } - - .indicator { - position: relative; - display: block; - width: 100%; height: 15px; - - span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: @dark; - - &.min-price { left: 5px; } - &.max-price { right: 5px;} - } - } -} \ No newline at end of file diff --git a/public/css/less/component/wysiwyg.less b/public/css/less/component/wysiwyg.less deleted file mode 100644 index 3a6fc9d35..000000000 --- a/public/css/less/component/wysiwyg.less +++ /dev/null @@ -1,76 +0,0 @@ -.wysiwyg { - display: block; - position: relative; - - .toolbar { - display: block; - position: absolute; - top: 0; left: 0; right: 0; - padding: 5px; - - button { - display: inline-block; - height: 26px; line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: @medium; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; - } - } - - .modal { - position: absolute; - top: 40px; left: 10px; right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; - - .header { - position: relative; - - h2 { - margin: 0; padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; - } - - .right { - position: absolute; - top: 5px; right: 10px; - width: 300px; - text-align: right; - - button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; - } - } - } - - input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; - } - } - - textarea { - padding-top: 40px !important; - } -} - -.input-area .wysiwyg .toolbar { - padding: 0; -} \ No newline at end of file diff --git a/public/css/less/global.desktop.less b/public/css/less/global.desktop.less deleted file mode 100755 index a510461f2..000000000 --- a/public/css/less/global.desktop.less +++ /dev/null @@ -1,42 +0,0 @@ -html { height: 100%; } -body { - margin: 0; padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} - -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; - - &:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - } - - &.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; - } - &.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - } - &.left:before { - right: 12px; - } - &.right:before { - left: 12px; - } -} diff --git a/public/css/less/main.desktop.v3.less b/public/css/less/main.desktop.v3.less deleted file mode 100644 index f80007591..000000000 --- a/public/css/less/main.desktop.v3.less +++ /dev/null @@ -1,45 +0,0 @@ -@import 'module/functions.less'; - -// color def -@color-type: 1; -.color-init(@color-type); -@import 'colors/colors.less'; - -// global rules -@import 'global.desktop.less'; - -// component rules -@import 'component/general.less'; -@import 'component/std.less'; -@import 'component/nav.less'; -@import 'component/overbox.less'; -@import 'component/subnav.less'; -@import 'component/alert.less'; -@import 'component/content.less'; -@import 'component/common.less'; -@import 'component/queue.less'; -@import 'component/faction.less'; -@import 'component/profil.less'; -@import 'component/search-player.less'; -@import 'component/new-message.less'; -@import 'component/notif.less'; -@import 'component/commercial-route.less'; -@import 'component/situation.less'; -@import 'component/list-fleet.less'; -@import 'component/squadron.less'; -@import 'component/report.less'; -@import 'component/topic.less'; -@import 'component/player.less'; -@import 'component/transaction.less'; -@import 'component/market-sell.less'; -@import 'component/wysiwyg.less'; -@import 'component/params.less'; -@import 'component/map.less'; -@import 'component/action-box.less'; -@import 'component/admin.less'; -@import 'component/buttons.less'; - -@import 'component/inscription.less'; - -// module rules -@import 'module/autocomplete.less'; \ No newline at end of file diff --git a/public/css/less/module/autocomplete.less b/public/css/less/module/autocomplete.less deleted file mode 100755 index 5db6c5009..000000000 --- a/public/css/less/module/autocomplete.less +++ /dev/null @@ -1,57 +0,0 @@ -/* AUTOCOMPLETE MODULE */ - -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; - - ul { - width: 100%; - padding: 0; margin: 0; - list-style-position: outside; - list-style: none; - - li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; - - &:last-child { - border: none; - } - } - } - - .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; - } - - .value-1, .value-2 { - display: block; - line-height: 18px; - } - - .value-1 { - font-weight: bold; - } -} - -.ac_loading { background: white url('src/desktop/module/indicator.gif') right center no-repeat; } - -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { color: black; } -.ac_results .ac_over img { background: white; } \ No newline at end of file diff --git a/public/css/less/module/functions.less b/public/css/less/module/functions.less deleted file mode 100644 index ce9a83f14..000000000 --- a/public/css/less/module/functions.less +++ /dev/null @@ -1,34 +0,0 @@ -.color-init(@color-type) { - @import '../colors/color@{color-type}.less'; -} - -.border-radius(@radius) { - -webkit-border-radius: @radius; - -moz-border-radius: @radius; - -o-border-radius: @radius; - border-radius: @radius; -} - -.transition(@params) { - -webkit-transition: @params; - -moz-transition: @params; - -ms-transition: @params; - -o-transition: @params; - transition: @params; -} - -.tranform(@params) { - -webkit-transform: rotate(@params); - -moz-transform: rotate(@params); - -ms-transform: rotate(@params); - -o-transform: rotate(@params); - transform: rotate(@params); -} - -.linear-bci(@image, @color1, @color2, @background) { - background-image: url(@image), -webkit-gradient(linear, @color1, @color2, @background); - background-image: url(@image), -moz-linear-gradient(@color1, @color2, @background); - background-image: url(@image), -ms-linear-gradient(@color1, @color2, @background); - background-image: url(@image), -o-linear-gradient(@color1, @color2, @background); - background-image: url(@image), linear-gradient(@color1, @color2, @background); -} \ No newline at end of file diff --git a/public/css/main.desktop.v3.color1.css b/public/css/main.desktop.v3.color1.css deleted file mode 100644 index bd5713691..000000000 --- a/public/css/main.desktop.v3.color1.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #b01e2d; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #b01e2d !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c1.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #b01e2d; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #510816; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #6e161b; - border: solid 1px #510816; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #510816; - border-color: #6e161b; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #510816; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c1.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #b01e2d; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #b01e2d; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #6e161b; - color: white; - border-color: #b01e2d; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #b01e2d; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #510816; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #6e161b; -} -.component .border-bottom { - border-bottom: solid 3px #b01e2d; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #6e161b; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #b01e2d; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #6e161b; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #6e161b; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #b01e2d; -} -.progress-bar .content:nth-child(2n) { - background: #510816; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #6e161b; - box-shadow: 0 0 0 3px #510816; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #510816; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #6e161b; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #6e161b; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #6e161b; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #6e161b; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #6e161b; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #6e161b; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #b01e2d; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #510816; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #6e161b; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #510816; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #6e161b; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #6e161b; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #b01e2d; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #b01e2d; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #6e161b; -} -.choose-government button:hover, -.choose-government button:focus { - background: #510816; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #6e161b !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #6e161b; - border: solid 1px #510816; -} -.centred-link:hover, -.centred-link:focus { - background: #510816; - border-color: #6e161b; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #6e161b; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #b01e2d; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #510816; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #b01e2d; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #6e161b; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #510816; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #6e161b; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #6e161b; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #6e161b; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #6e161b; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #510816; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #6e161b; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #510816; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #b01e2d; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #6e161b; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #b01e2d; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #b01e2d; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #b01e2d; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #510816; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #b01e2d; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #510816; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #6e161b; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #6e161b; -} -#map #fleet-movements line { - stroke: #b01e2d; -} -#map #fleet-movements circle { - fill: #b01e2d; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #510816; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #6e161b; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #510816; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #6e161b; - border: #510816; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #510816; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #6e161b; - border: solid 1px #510816; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #510816; - border-color: #6e161b; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color10.css b/public/css/main.desktop.v3.color10.css deleted file mode 100644 index c8dc4d9f2..000000000 --- a/public/css/main.desktop.v3.color10.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #a92859; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #a92859 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c10.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #a92859; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #4d0621; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #760f36; - border: solid 1px #4d0621; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #4d0621; - border-color: #760f36; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #4d0621; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c10.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #a92859; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #a92859; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #760f36; - color: white; - border-color: #a92859; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #a92859; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #4d0621; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #760f36; -} -.component .border-bottom { - border-bottom: solid 3px #a92859; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #760f36; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #a92859; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #760f36; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #760f36; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #a92859; -} -.progress-bar .content:nth-child(2n) { - background: #4d0621; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #760f36; - box-shadow: 0 0 0 3px #4d0621; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #4d0621; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #760f36; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #760f36; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #760f36; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #760f36; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #760f36; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #760f36; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #a92859; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #4d0621; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #760f36; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #4d0621; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #760f36; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #760f36; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #a92859; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #a92859; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #760f36; -} -.choose-government button:hover, -.choose-government button:focus { - background: #4d0621; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #760f36 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #760f36; - border: solid 1px #4d0621; -} -.centred-link:hover, -.centred-link:focus { - background: #4d0621; - border-color: #760f36; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #760f36; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #a92859; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #4d0621; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #a92859; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #760f36; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #4d0621; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #760f36; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #760f36; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #760f36; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #760f36; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #760f36; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #760f36; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #760f36; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #760f36; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #760f36; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #4d0621; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #760f36; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #4d0621; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #a92859; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #760f36; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #a92859; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #a92859; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #a92859; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #4d0621; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #a92859; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #4d0621; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #760f36; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #760f36; -} -#map #fleet-movements line { - stroke: #a92859; -} -#map #fleet-movements circle { - fill: #a92859; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #4d0621; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #760f36; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #4d0621; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #760f36; - border: #4d0621; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #4d0621; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #760f36; - border: solid 1px #4d0621; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #4d0621; - border-color: #760f36; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color11.css b/public/css/main.desktop.v3.color11.css deleted file mode 100644 index 5dbaea3b6..000000000 --- a/public/css/main.desktop.v3.color11.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #34b089; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #34b089 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c11.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #34b089; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #10684c; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #219772; - border: solid 1px #10684c; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #10684c; - border-color: #219772; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #10684c; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c11.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #34b089; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #34b089; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #219772; - color: white; - border-color: #34b089; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #34b089; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #10684c; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #219772; -} -.component .border-bottom { - border-bottom: solid 3px #34b089; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #219772; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #34b089; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #219772; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #219772; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #34b089; -} -.progress-bar .content:nth-child(2n) { - background: #10684c; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #219772; - box-shadow: 0 0 0 3px #10684c; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #10684c; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #219772; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #219772; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #219772; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #219772; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #219772; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #219772; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #34b089; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #10684c; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #219772; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #10684c; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #219772; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #219772; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #34b089; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #34b089; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #219772; -} -.choose-government button:hover, -.choose-government button:focus { - background: #10684c; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #219772 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #219772; - border: solid 1px #10684c; -} -.centred-link:hover, -.centred-link:focus { - background: #10684c; - border-color: #219772; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #219772, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #219772; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #34b089; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #10684c; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #34b089; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #219772; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #10684c; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #219772; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #219772; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #219772; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #219772; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #219772; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #219772; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #219772; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #219772; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #219772; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #10684c; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #219772; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #10684c; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #34b089; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #219772; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #34b089; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #34b089; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #34b089; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #10684c; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #34b089; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #10684c; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #219772; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #219772; -} -#map #fleet-movements line { - stroke: #34b089; -} -#map #fleet-movements circle { - fill: #34b089; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #10684c; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #219772; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #10684c; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #219772; - border: #10684c; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #10684c; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #219772; - border: solid 1px #10684c; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #10684c; - border-color: #219772; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color12.css b/public/css/main.desktop.v3.color12.css deleted file mode 100644 index 9e4c0ac72..000000000 --- a/public/css/main.desktop.v3.color12.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #ffdb0f; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #ffdb0f !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c12.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #ffdb0f; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #b17a00; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #dbb200; - border: solid 1px #b17a00; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #b17a00; - border-color: #dbb200; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #b17a00; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c12.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #ffdb0f; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #ffdb0f; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #dbb200; - color: white; - border-color: #ffdb0f; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #ffdb0f; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #b17a00; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #dbb200; -} -.component .border-bottom { - border-bottom: solid 3px #ffdb0f; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #dbb200; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #ffdb0f; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #dbb200; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #dbb200; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #ffdb0f; -} -.progress-bar .content:nth-child(2n) { - background: #b17a00; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #dbb200; - box-shadow: 0 0 0 3px #b17a00; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #b17a00; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #dbb200; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #dbb200; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #dbb200; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #dbb200; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #dbb200; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #dbb200; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #ffdb0f; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #b17a00; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #dbb200; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #b17a00; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #dbb200; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #dbb200; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #ffdb0f; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ffdb0f; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #dbb200; -} -.choose-government button:hover, -.choose-government button:focus { - background: #b17a00; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #dbb200 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #dbb200; - border: solid 1px #b17a00; -} -.centred-link:hover, -.centred-link:focus { - background: #b17a00; - border-color: #dbb200; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #dbb200; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ffdb0f; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #b17a00; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #ffdb0f; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #dbb200; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #b17a00; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #dbb200; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #dbb200; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #dbb200; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #dbb200; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #b17a00; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #dbb200; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #b17a00; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #ffdb0f; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #dbb200; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #ffdb0f; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ffdb0f; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #ffdb0f; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #b17a00; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ffdb0f; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #b17a00; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #dbb200; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #dbb200; -} -#map #fleet-movements line { - stroke: #ffdb0f; -} -#map #fleet-movements circle { - fill: #ffdb0f; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #b17a00; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #dbb200; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #b17a00; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #dbb200; - border: #b17a00; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #b17a00; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #dbb200; - border: solid 1px #b17a00; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #b17a00; - border-color: #dbb200; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color2.css b/public/css/main.desktop.v3.color2.css deleted file mode 100644 index 54ef9f5f8..000000000 --- a/public/css/main.desktop.v3.color2.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #2f23c0; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #2f23c0 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c2.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #2f23c0; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #0c0d44; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #1f1471; - border: solid 1px #0c0d44; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #0c0d44; - border-color: #1f1471; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #0c0d44; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c2.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #2f23c0; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #2f23c0; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #1f1471; - color: white; - border-color: #2f23c0; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #2f23c0; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #0c0d44; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #1f1471; -} -.component .border-bottom { - border-bottom: solid 3px #2f23c0; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #1f1471; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #2f23c0; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #1f1471; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #1f1471; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #2f23c0; -} -.progress-bar .content:nth-child(2n) { - background: #0c0d44; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #1f1471; - box-shadow: 0 0 0 3px #0c0d44; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #0c0d44; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #1f1471; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #1f1471; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #1f1471; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #1f1471; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #1f1471; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #1f1471; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #2f23c0; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #0c0d44; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #1f1471; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #0c0d44; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #1f1471; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #1f1471; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #2f23c0; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #2f23c0; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #1f1471; -} -.choose-government button:hover, -.choose-government button:focus { - background: #0c0d44; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #1f1471 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #1f1471; - border: solid 1px #0c0d44; -} -.centred-link:hover, -.centred-link:focus { - background: #0c0d44; - border-color: #1f1471; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #1f1471; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #2f23c0; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #0c0d44; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #2f23c0; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #1f1471; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #0c0d44; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #1f1471; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #1f1471; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #1f1471; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #1f1471; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #1f1471; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #1f1471; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #1f1471; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #1f1471; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #0c0d44; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #1f1471; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #0c0d44; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #2f23c0; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #1f1471; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #2f23c0; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #2f23c0; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #2f23c0; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #0c0d44; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #2f23c0; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #0c0d44; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #1f1471; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #1f1471; -} -#map #fleet-movements line { - stroke: #2f23c0; -} -#map #fleet-movements circle { - fill: #2f23c0; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #0c0d44; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #1f1471; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #0c0d44; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #1f1471; - border: #0c0d44; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #0c0d44; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #1f1471; - border: solid 1px #0c0d44; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #0c0d44; - border-color: #1f1471; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color3.css b/public/css/main.desktop.v3.color3.css deleted file mode 100644 index 537e6a3f5..000000000 --- a/public/css/main.desktop.v3.color3.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #ffdb0f; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #ffdb0f !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c3.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #ffdb0f; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #b17a00; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #dbb200; - border: solid 1px #b17a00; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #b17a00; - border-color: #dbb200; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #b17a00; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c3.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #ffdb0f; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #ffdb0f; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #dbb200; - color: white; - border-color: #ffdb0f; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #ffdb0f; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #b17a00; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #dbb200; -} -.component .border-bottom { - border-bottom: solid 3px #ffdb0f; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #dbb200; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #ffdb0f; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #dbb200; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #dbb200; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #ffdb0f; -} -.progress-bar .content:nth-child(2n) { - background: #b17a00; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #dbb200; - box-shadow: 0 0 0 3px #b17a00; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #b17a00; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #dbb200; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #dbb200; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #dbb200; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #dbb200; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #dbb200; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #dbb200; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #ffdb0f; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #b17a00; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #dbb200; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #b17a00; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #dbb200; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #dbb200; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #ffdb0f; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ffdb0f; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #dbb200; -} -.choose-government button:hover, -.choose-government button:focus { - background: #b17a00; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #dbb200 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #dbb200; - border: solid 1px #b17a00; -} -.centred-link:hover, -.centred-link:focus { - background: #b17a00; - border-color: #dbb200; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #dbb200; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ffdb0f; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #b17a00; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #ffdb0f; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #dbb200; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #b17a00; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #dbb200; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #dbb200; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #dbb200; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #dbb200; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #dbb200; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #b17a00; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #dbb200; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #b17a00; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #ffdb0f; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #dbb200; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #ffdb0f; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ffdb0f; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #ffdb0f; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #b17a00; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ffdb0f; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #b17a00; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #dbb200; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #dbb200; -} -#map #fleet-movements line { - stroke: #ffdb0f; -} -#map #fleet-movements circle { - fill: #ffdb0f; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #b17a00; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #dbb200; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #b17a00; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #dbb200; - border: #b17a00; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #b17a00; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #dbb200; - border: solid 1px #b17a00; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #b17a00; - border-color: #dbb200; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color4.css b/public/css/main.desktop.v3.color4.css deleted file mode 100644 index c49bd1d2c..000000000 --- a/public/css/main.desktop.v3.color4.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #a935c7; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #a935c7 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c4.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #a935c7; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #310948; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #5a1072; - border: solid 1px #310948; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #310948; - border-color: #5a1072; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #310948; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c4.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #a935c7; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #a935c7; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #5a1072; - color: white; - border-color: #a935c7; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #a935c7; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #310948; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #5a1072; -} -.component .border-bottom { - border-bottom: solid 3px #a935c7; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #5a1072; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #a935c7; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #5a1072; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #5a1072; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #a935c7; -} -.progress-bar .content:nth-child(2n) { - background: #310948; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #5a1072; - box-shadow: 0 0 0 3px #310948; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #310948; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #5a1072; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #5a1072; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #5a1072; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #5a1072; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #5a1072; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #5a1072; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #a935c7; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #310948; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #5a1072; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #310948; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #5a1072; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #5a1072; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #a935c7; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #a935c7; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #5a1072; -} -.choose-government button:hover, -.choose-government button:focus { - background: #310948; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #5a1072 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #5a1072; - border: solid 1px #310948; -} -.centred-link:hover, -.centred-link:focus { - background: #310948; - border-color: #5a1072; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #5a1072; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #a935c7; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #310948; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #a935c7; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #5a1072; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #310948; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #5a1072; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #5a1072; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #5a1072; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #5a1072; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #5a1072; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #5a1072; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #5a1072; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #5a1072; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #310948; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #5a1072; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #310948; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #a935c7; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #5a1072; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #a935c7; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #a935c7; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #a935c7; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #310948; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #a935c7; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #310948; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #5a1072; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #5a1072; -} -#map #fleet-movements line { - stroke: #a935c7; -} -#map #fleet-movements circle { - fill: #a935c7; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #310948; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #5a1072; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #310948; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #5a1072; - border: #310948; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #310948; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #5a1072; - border: solid 1px #310948; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #310948; - border-color: #5a1072; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color5.css b/public/css/main.desktop.v3.color5.css deleted file mode 100644 index 9f311202b..000000000 --- a/public/css/main.desktop.v3.color5.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #57c632; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #57c632 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c5.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #57c632; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #24500a; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #2c7915; - border: solid 1px #24500a; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #24500a; - border-color: #2c7915; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #24500a; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c5.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #57c632; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #57c632; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #2c7915; - color: white; - border-color: #57c632; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #57c632; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #24500a; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #2c7915; -} -.component .border-bottom { - border-bottom: solid 3px #57c632; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #2c7915; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #57c632; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #2c7915; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #2c7915; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #57c632; -} -.progress-bar .content:nth-child(2n) { - background: #24500a; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #2c7915; - box-shadow: 0 0 0 3px #24500a; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #24500a; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #2c7915; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #2c7915; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #2c7915; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #2c7915; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #2c7915; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #2c7915; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #57c632; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #24500a; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #2c7915; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #24500a; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #2c7915; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #2c7915; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #57c632; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #57c632; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #2c7915; -} -.choose-government button:hover, -.choose-government button:focus { - background: #24500a; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #2c7915 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #2c7915; - border: solid 1px #24500a; -} -.centred-link:hover, -.centred-link:focus { - background: #24500a; - border-color: #2c7915; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #2c7915; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #57c632; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #24500a; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #57c632; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #2c7915; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #24500a; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #2c7915; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #2c7915; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #2c7915; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #2c7915; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #24500a; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #2c7915; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #24500a; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #57c632; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #2c7915; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #57c632; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #57c632; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #57c632; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #24500a; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #57c632; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #24500a; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #2c7915; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #2c7915; -} -#map #fleet-movements line { - stroke: #57c632; -} -#map #fleet-movements circle { - fill: #57c632; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #24500a; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #2c7915; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #24500a; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #2c7915; - border: #24500a; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #24500a; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #2c7915; - border: solid 1px #24500a; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #24500a; - border-color: #2c7915; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color6.css b/public/css/main.desktop.v3.color6.css deleted file mode 100644 index cf4359b57..000000000 --- a/public/css/main.desktop.v3.color6.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #05bed7; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #05bed7 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c6.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #05bed7; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #004948; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #076b87; - border: solid 1px #004948; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #004948; - border-color: #076b87; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #004948; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c6.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #05bed7; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #05bed7; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #076b87; - color: white; - border-color: #05bed7; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #05bed7; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #004948; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #076b87; -} -.component .border-bottom { - border-bottom: solid 3px #05bed7; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #076b87; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #05bed7; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #076b87; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #076b87; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #05bed7; -} -.progress-bar .content:nth-child(2n) { - background: #004948; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #076b87; - box-shadow: 0 0 0 3px #004948; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #004948; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #076b87; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #076b87; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #076b87; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #076b87; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #076b87; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #076b87; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #05bed7; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #004948; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #076b87; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #004948; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #076b87; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #076b87; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #05bed7; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #05bed7; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #076b87; -} -.choose-government button:hover, -.choose-government button:focus { - background: #004948; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #076b87 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #076b87; - border: solid 1px #004948; -} -.centred-link:hover, -.centred-link:focus { - background: #004948; - border-color: #076b87; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #076b87; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #05bed7; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #004948; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #05bed7; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #076b87; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #004948; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #076b87; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #076b87; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #076b87; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #076b87; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #076b87; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #076b87; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #076b87; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #076b87; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #004948; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #076b87; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #004948; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #05bed7; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #076b87; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #05bed7; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #05bed7; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #05bed7; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #004948; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #05bed7; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #004948; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #076b87; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #076b87; -} -#map #fleet-movements line { - stroke: #05bed7; -} -#map #fleet-movements circle { - fill: #05bed7; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #004948; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #076b87; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #004948; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #076b87; - border: #004948; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #004948; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #076b87; - border: solid 1px #004948; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #004948; - border-color: #076b87; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color7.css b/public/css/main.desktop.v3.color7.css deleted file mode 100644 index 5fc4ac068..000000000 --- a/public/css/main.desktop.v3.color7.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #ac5832; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #ac5832 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c7.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #ac5832; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #401b13; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #67331d; - border: solid 1px #401b13; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #401b13; - border-color: #67331d; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #401b13; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c7.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #ac5832; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #ac5832; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #67331d; - color: white; - border-color: #ac5832; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #ac5832; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #401b13; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #67331d; -} -.component .border-bottom { - border-bottom: solid 3px #ac5832; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #67331d; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #ac5832; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #67331d; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #67331d; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #ac5832; -} -.progress-bar .content:nth-child(2n) { - background: #401b13; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #67331d; - box-shadow: 0 0 0 3px #401b13; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #401b13; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #67331d; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #67331d; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #67331d; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #67331d; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #67331d; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #67331d; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #ac5832; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #401b13; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #67331d; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #401b13; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #67331d; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #67331d; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #ac5832; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ac5832; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #67331d; -} -.choose-government button:hover, -.choose-government button:focus { - background: #401b13; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #67331d !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #67331d; - border: solid 1px #401b13; -} -.centred-link:hover, -.centred-link:focus { - background: #401b13; - border-color: #67331d; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #67331d; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ac5832; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #401b13; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #ac5832; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #67331d; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #401b13; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #67331d; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #67331d; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #67331d; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #67331d; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #67331d; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #67331d; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #67331d; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #67331d; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #401b13; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #67331d; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #401b13; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #ac5832; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #67331d; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #ac5832; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #ac5832; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #ac5832; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #401b13; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #ac5832; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #401b13; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #67331d; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #67331d; -} -#map #fleet-movements line { - stroke: #ac5832; -} -#map #fleet-movements circle { - fill: #ac5832; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #401b13; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #67331d; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #401b13; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #67331d; - border: #401b13; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #401b13; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #67331d; - border: solid 1px #401b13; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #401b13; - border-color: #67331d; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color8.css b/public/css/main.desktop.v3.color8.css deleted file mode 100644 index 1e8870808..000000000 --- a/public/css/main.desktop.v3.color8.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #db8218; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #db8218 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c8.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #db8218; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #c3590b; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #d87013; - border: solid 1px #c3590b; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #c3590b; - border-color: #d87013; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #c3590b; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c8.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #db8218; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #db8218; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #d87013; - color: white; - border-color: #db8218; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #db8218; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #c3590b; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #d87013; -} -.component .border-bottom { - border-bottom: solid 3px #db8218; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #d87013; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #db8218; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #d87013; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #d87013; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #db8218; -} -.progress-bar .content:nth-child(2n) { - background: #c3590b; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #d87013; - box-shadow: 0 0 0 3px #c3590b; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #c3590b; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #d87013; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #d87013; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #d87013; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #d87013; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #d87013; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #d87013; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #db8218; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #c3590b; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #d87013; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #c3590b; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #d87013; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #d87013; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #db8218; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #db8218; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #d87013; -} -.choose-government button:hover, -.choose-government button:focus { - background: #c3590b; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #d87013 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #d87013; - border: solid 1px #c3590b; -} -.centred-link:hover, -.centred-link:focus { - background: #c3590b; - border-color: #d87013; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #d87013, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #d87013; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #db8218; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #c3590b; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #db8218; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #d87013; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #c3590b; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #d87013; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87013; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87013; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #db8218; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #db8218; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #d87013; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #d87013; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #d87013; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #d87013; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #d87013; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #d87013; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #d87013; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #c3590b; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #d87013; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #c3590b; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #db8218; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #d87013; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #db8218; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #db8218; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #db8218; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #c3590b; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #db8218; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #c3590b; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #d87013; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #d87013; -} -#map #fleet-movements line { - stroke: #db8218; -} -#map #fleet-movements circle { - fill: #db8218; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #c3590b; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #d87013; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #c3590b; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #d87013; - border: #c3590b; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #c3590b; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #d87013; - border: solid 1px #c3590b; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #c3590b; - border-color: #d87013; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.color9.css b/public/css/main.desktop.v3.color9.css deleted file mode 100644 index 99b4eee00..000000000 --- a/public/css/main.desktop.v3.color9.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #57c632; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #57c632 !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c9.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #57c632; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #24500a; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #2c7915; - border: solid 1px #24500a; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #24500a; - border-color: #2c7915; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #24500a; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c9.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #57c632; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #57c632; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #2c7915; - color: white; - border-color: #57c632; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #57c632; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #24500a; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #2c7915; -} -.component .border-bottom { - border-bottom: solid 3px #57c632; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #2c7915; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #57c632; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #2c7915; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #2c7915; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #57c632; -} -.progress-bar .content:nth-child(2n) { - background: #24500a; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #2c7915; - box-shadow: 0 0 0 3px #24500a; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #24500a; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #2c7915; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #2c7915; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #2c7915; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #2c7915; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #2c7915; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #2c7915; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #57c632; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #24500a; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #2c7915; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #24500a; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #2c7915; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #2c7915; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #57c632; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #57c632; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #2c7915; -} -.choose-government button:hover, -.choose-government button:focus { - background: #24500a; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #2c7915 !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #2c7915; - border: solid 1px #24500a; -} -.centred-link:hover, -.centred-link:focus { - background: #24500a; - border-color: #2c7915; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #2c7915; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #57c632; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #24500a; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #57c632; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #2c7915; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #24500a; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #2c7915; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #2c7915; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #2c7915; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #2c7915; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #2c7915; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #24500a; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #2c7915; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #24500a; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #57c632; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #2c7915; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #57c632; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #57c632; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #57c632; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #24500a; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #57c632; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #24500a; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #2c7915; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #2c7915; -} -#map #fleet-movements line { - stroke: #57c632; -} -#map #fleet-movements circle { - fill: #57c632; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #24500a; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #2c7915; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #24500a; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #2c7915; - border: #24500a; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #24500a; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #2c7915; - border: solid 1px #24500a; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #24500a; - border-color: #2c7915; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/main.desktop.v3.css b/public/css/main.desktop.v3.css deleted file mode 100644 index bd5713691..000000000 --- a/public/css/main.desktop.v3.css +++ /dev/null @@ -1,6741 +0,0 @@ -html { - height: 100%; -} -body { - margin: 0; - padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 13px; -} -.bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - max-width: 280px; - color: white; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; -} -.bull.top:before { - bottom: -14px; - border-color: #4F4F4F transparent transparent transparent; -} -.bull.bottom:before { - top: -14px; - border-color: transparent transparent #4F4F4F transparent; -} -.bull.left:before { - right: 12px; -} -.bull.right:before { - left: 12px; -} -body { - width: 100%; - height: 100%; - overflow: hidden; - background: black; -} -#nav, -#tools { - position: fixed; - width: 100%; - height: 26px; - background: url('src/desktop/tools/bTools.png') repeat-x black; - box-shadow: 0 0 10px black; - z-index: 1000; - border-color: #b01e2d; -} -#nav { - top: 0; - left: 0; - background: url('src/desktop/nav/bNav.png') repeat-x black; - border-bottom: solid 3px black; -} -#tools { - bottom: 0; - left: 0; - background: url('src/desktop/tools/bTools.png') repeat-x black; - border-top: solid 3px black; -} -#container { - position: absolute; - top: 29px; - left: 0; - margin: 0; - padding: 0; - width: 100%; - background: black; - overflow: hidden; - z-index: 0; - background: url('src/desktop/global/background.jpg') repeat-x black; -} -.icon, -.icon-color { - display: inline-block; - vertical-align: bottom; - padding: 2px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.icon-color { - background: #b01e2d !important; -} -#background-paralax { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: no-repeat bottom left transparent; - z-index: 100; - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.profil { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.message { - background-image: url('src/desktop/screen/message.jpg'); -} -#background-paralax.fleet { - background-image: url('src/desktop/screen/fleet.jpg'); -} -#background-paralax.financial { - background-image: url('src/desktop/screen/financial.jpg'); -} -#background-paralax.technology { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.rank { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.params { - background-image: url('src/desktop/screen/profil.jpg'); -} -#background-paralax.bases { - background-image: url('src/desktop/screen/base.jpg'); -} -#movers a { - position: absolute; - width: 60px; - height: 100%; - z-index: 400; - background: red; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#movers a:hover, -#movers a:focus { - background-color: rgba(255, 255, 255, 0.08); -} -#movers a:active { - background-color: rgba(255, 255, 255, 0.2); -} -#movers .toLeft { - top: 0; - left: 60px; - background: url('src/desktop/mover/left.png') no-repeat center transparent; -} -#movers .toRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center transparent; -} -/* finance */ -.component.financial table { - border-collapse: collapse; - width: 100%; -} -.component.financial td { - vertical-align: top; - width: 50%; -} -/* uni */ -.component.uni .build-item { - height: 60px; - margin: 20px; -} -/* techno */ -.component.techno .build-item .name strong { - font-size: 16px; -} -/* school */ -.component.school .build-item .name strong { - font-size: 18px; -} -/* generator */ -.component.generator table { - width: 100%; - border-collapse: collapse; -} -/* dock1 */ -.component.dock1 table { - width: 100%; - border-collapse: collapse; -} -/* situation */ -.component.space .fix-body { - background: url('src/desktop/base/situation.jpg') no-repeat top left black; -} -/* memorial */ -.component.memorial blockquote { - font-size: 22px; - margin: 30px 15px 0 30px; - line-height: 160%; - font-weight: bold; - text-align: center; -} -.component .info-building { - margin: 10px; - padding: 0; - font-size: 13px; - border-top: solid 1px #4F4F4F; -} -.component .info-building h4 { - margin: 10px; -} -.component .info-building p { - font-size: 13px; -} -#tools .box a, -#nav .box a, -#tools .box > span, -#nav .box > span { - position: relative; - display: inline-block; - line-height: 32px; - padding: 0 25px; - margin: 5px 2px; - font-size: 14px; - width: 150px; - color: white; - text-decoration: none; - font-variant: small-caps; - background: url('src/desktop/button/bButtonMiddle.png') repeat-x; -} -#tools .box a:before, -#nav .box a:before, -#tools .box > span:before, -#nav .box > span:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonLeft.png') no-repeat; -} -#tools .box a:after, -#nav .box a:after, -#tools .box > span:after, -#nav .box > span:after { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 32px; - background: url('src/desktop/button/bButtonRight.png') no-repeat; -} -#tools .box a.current-base, -#nav .box a.current-base { - margin-left: 56px; -} -#tools .box a.current-base img, -#nav .box a.current-base img { - position: absolute; - top: -16px; - left: -54px; - background: black; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - border: solid 2px #4F4F4F; - width: 60px; -} -#tools .box a:hover:before, -#nav .box a:hover:before, -#tools .box a:focus:before, -#nav .box a:focus:before { - background: url('src/desktop/button/bButtonLeftHover.png') repeat; -} -#tools .box a:hover:after, -#nav .box a:hover:after, -#tools .box a:focus:after, -#nav .box a:focus:after { - background: url('src/desktop/button/bButtonRightHover.png') repeat; -} -#tools .box a.active, -#nav .box a.active { - background: url('src/desktop/button/bButtonMiddleActive.png') repeat; -} -#tools .box a.active:before, -#nav .box a.active:before { - background: url('src/desktop/button/bButtonLeftActive.png') repeat; -} -#tools .box a.active:after, -#nav .box a.active:after { - background: url('src/desktop/button/bButtonRightActive.png') repeat; -} -#tools .box a.square, -#nav .box a.square { - position: relative; - padding: 0 5px; - margin: 5px 2px; - height: 32px; - width: 30px; - background: url('src/desktop/button/bLittleButton.png') no-repeat; - vertical-align: top; -} -#tools .box a.square:before, -#nav .box a.square:before, -#tools .box a.square:after, -#nav .box a.square:after { - display: none; -} -#tools .box a.square:hover, -#nav .box a.square:hover, -#tools .box a.square:focus, -#nav .box a.square:focus { - background: url('src/desktop/button/bLittleButtonHover.png') no-repeat; -} -#tools .box a.square.active, -#nav .box a.square.active { - background: url('src/desktop/button/bLittleButtonActive-c1.png') no-repeat; -} -#tools .box a.square.active.flashy, -#nav .box a.square.active.flashy { - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - box-shadow: inset 0 0 12px #b01e2d; -} -#tools .box a.square img, -#nav .box a.square img { - position: absolute; - width: 24px; - top: 3px; - left: 8px; -} -#tools .box a.square span.number, -#nav .box a.square span.number { - position: absolute; - top: -5px; - right: -5px; - width: 18px; - line-height: 18px; - text-align: center; - font-size: 11px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - background: #510816; -} -#nav .box { - position: absolute; - display: inline-block; - height: 46px; - padding: 0 3px; - background: url('src/desktop/nav/bNavBox.png') repeat-x; -} -#nav .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxLeft.png') no-repeat; -} -#nav .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 46px; - background: url('src/desktop/nav/bNavBoxRight.png') no-repeat; -} -#nav .box.left { - top: 0; - left: 25px; -} -#nav .box.left-2 { - top: 0; - left: 420px; -} -#nav .box.left-3 { - top: 0; - left: 732px; -} -#nav .box.right { - top: 0; - right: 25px; -} -#nav .box a.square span.number { - bottom: -5px; - top: auto; -} -#tools .box { - position: absolute; - display: inline-block; - height: 40px; - padding: 1px 3px 0 3px; - background: url('src/desktop/tools/bToolBox.png') repeat-x; - font-size: 13px; -} -#tools .box:before { - content: ''; - position: absolute; - top: 0; - left: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxRight.png') no-repeat; -} -#tools .box:after { - content: ''; - position: absolute; - top: 0; - right: -15px; - width: 15px; - height: 40px; - background: url('src/desktop/tools/bToolBoxLeft.png') no-repeat; -} -#tools .box.left { - bottom: 0; - right: 340px; -} -#tools .box.right { - bottom: 0; - right: 25px; -} -#tools .box a.square img { - top: 4px; -} -#tools .box a.resource-link, -#tools .box span.resource-link { - width: 110px; - font-size: 16px; -} -#tools .box a.resource-link img.icon-color, -#tools .box span.resource-link img.icon-color { - position: relative; - display: inline-block; - width: 18px; - vertical-align: middle; - margin-left: 5px; - top: -2px; - padding: 1px; -} -#nav .overbox .overflow, -#tools .overbox .overflow { - max-height: 400px; - overflow: auto; - position: relative; -} -#nav .overbox h2, -#tools .overbox h2 { - color: white; - padding: 10px 15px; - margin: 0; - font-size: 14px; - font-weight: normal; - border-bottom: solid 1px #202020; -} -#nav .overbox .link-title, -#tools .overbox .link-title { - position: absolute; - top: 10px; - right: 10px; - line-height: 20px; - font-size: 11px; - padding: 0 5px; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - text-decoration: none; - color: white; -} -#nav .overbox a, -#tools .overbox a { - color: inherit; -} -#nav .overbox a.more-link, -#tools .overbox a.more-link { - display: block; - padding: 8px; - font-size: 12px; - border-top: solid 1px #202020; - text-align: center; - text-decoration: none; - color: #4F4F4F; -} -#nav .overbox a.more-link:focus, -#tools .overbox a.more-link:focus, -#nav .overbox a.more-link:hover, -#tools .overbox a.more-link:hover { - color: #CCC; -} -#nav .overbox p.info, -#tools .overbox p.info { - padding: 5px 15px; - font-size: 12px; - text-align: center; - color: #CCC; -} -#nav .overbox .outside-button, -#tools .overbox .outside-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #6e161b; - border: solid 1px #510816; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -#nav .overbox .outside-button:hover, -#tools .overbox .outside-button:hover, -#nav .overbox .outside-button:focus, -#tools .overbox .outside-button:focus { - background: #510816; - border-color: #6e161b; -} -#nav .overbox .outside-button.disabled, -#tools .overbox .outside-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -#nav .overbox input.outside-button, -#tools .overbox input.outside-button { - line-height: 26px; -} -#nav .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; -} -#nav .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: transparent transparent #202020 transparent; - top: -18px; - right: 30px; -} -#nav .overbox#change-bases { - top: 50px; - left: 10px; - width: 205px; - padding: 0 0 8px 0; -} -#nav .overbox#change-bases:before { - left: 30px; - right: auto; -} -#nav .overbox#change-bases a { - display: block; - padding: 3px 15px; - color: #CCC; - text-decoration: none; - font-size: 12px; - border-bottom: solid 1px #101010; -} -#nav .overbox#change-bases a:focus, -#nav .overbox#change-bases a:hover { - background: #101010; -} -#nav .overbox#change-bases a.active { - background: #202020; -} -#nav .overbox#change-bases strong { - display: block; - color: #CCC; - font-size: 13px; -} -#nav .overbox#disconnect-box { - top: 50px; - right: 10px; - width: 205px; - padding: 8px 0; -} -#nav .overbox#disconnect-box hr { - margin: 8px 0; - border: none; - background: none; - border-top: solid 1px #202020; -} -#nav .overbox#disconnect-box a { - display: block; - padding: 0 15px; - line-height: 25px; - font-size: 13px; - color: #CCC; - text-decoration: none; -} -#nav .overbox#disconnect-box a:hover, -#nav .overbox#disconnect-box a:focus { - color: white; - background: #202020; -} -#nav .overbox#bug-tracker { - width: 250px; - top: 50px; - right: 98px; - padding: 0 0 8px 0; -} -#nav .overbox#bug-tracker p { - color: #CCC; - font-size: 12px; - margin: 10px; -} -#nav .overbox#bug-tracker .option { - margin: 3px 10px 10px 10px; - display: block; - width: 330px; - padding: 5px; -} -#nav .overbox#bug-tracker textarea { - display: block; - margin: 0 10px 10px 10px; - padding: 5px; - width: 318px; - height: 200px; - min-width: 318px; - max-width: 318px; - border: solid 1px #202020; - font-family: 'Trebuchet MS', sans-serif; - font-size: 13px; -} -#nav .overbox#bug-tracker .button { - display: block; - margin: 0 10px 2px 10px; -} -#nav .overbox#roadmap { - width: 350px; - top: 50px; - right: 10px; -} -#nav .overbox#roadmap .overflow { - width: 350px; - padding: 8px 0; -} -#nav .overbox#roadmap p { - color: #CCC; - font-size: 12px; - margin: 0 10px 10px 10px; -} -#nav .overbox#roadmap p em { - display: block; - font-size: 11px; - color: #4F4F4F; -} -#nav .overbox#roadmap hr { - margin: 5px 0; - border: none; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial { - width: 350px; - top: 50px; - right: 143px; - color: white; -} -#nav .overbox#tutorial form { - padding: 0 0 10px 0; - margin: 0; - border-top: solid 1px #202020; -} -#nav .overbox#tutorial .overflow { - padding: 15px 15px 0 15px; -} -#nav .overbox#tutorial .overflow h3 { - position: relative; - margin: 0; - padding: 0 0 0 36px; -} -#nav .overbox#tutorial .overflow h3 .number { - position: absolute; - top: -4px; - left: 0; - display: block; - width: 26px; - line-height: 26px; - text-align: center; - background: #510816; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - margin-right: 10px; -} -#nav .overbox#tutorial .overflow p { - font-size: 12px; - color: #CCC; -} -#nav .overbox#new-notifications { - top: 50px; - left: 627px; - width: 300px; -} -#tools .overbox { - display: none; - position: absolute; - background: #0A0A0A; - box-shadow: inset 0 0 2px #4F4F4F; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - width: 300px; - bottom: 45px; - right: 15px; -} -#tools .overbox:before { - content: ''; - position: absolute; - border-style: solid; - border-width: 9px; - border-color: #202020 transparent transparent transparent; - bottom: -18px; - right: 30px; -} -#tools .overbox.left-pic:before { - left: 30px; - right: auto; -} -#tools .overbox#tools-calendar { - left: 25px; - bottom: 45px; - right: auto; -} -#tools .overbox#tools-refinery { - right: 401px; - bottom: 45px; -} -#tools .overbox#tools-generator { - right: 237px; - bottom: 45px; -} -#tools .overbox#tools-technosphere { - right: 193px; - bottom: 45px; -} -#tools .overbox#tools-dock1 { - right: 148px; - bottom: 45px; -} -#tools .overbox#tools-dock2 { - right: 105px; - bottom: 45px; -} -#tools .overbox#tools-credit { - right: 140px; - bottom: 45px; -} -#tools .overbox#tools-incoming-attack { - right: 230px; - bottom: 45px; -} -#tools .overbox#tools-outgoing-attack { - right: 185px; - bottom: 45px; -} -#subnav { - position: fixed; - top: 29px; - left: 2px; - bottom: 29px; - padding: 40px 0; - width: 60px; - background: url('src/desktop/subnav/middle.png') repeat-y; - z-index: 1000; -} -#subnav hr { - border: none; - margin: 20px 0; -} -#subnav .overflow { - position: relative; -} -#subnav .move-side-bar { - display: none; - position: absolute; - z-index: 5000; - left: 5px; - width: 48px; - height: 48px; - line-height: 48px; - border: none; - background-color: rgba(0, 0, 0, 0.75); - background-position: center; - background-repeat: no-repeat; - border-radius: 100%; - cursor: pointer; -} -#subnav .move-side-bar:hover, -#subnav .move-side-bar:focus { - box-shadow: 0 0 3px white; -} -#subnav .move-side-bar.top { - bottom: auto; - top: 20px; - background-image: url('src/desktop/component/top.png'); -} -#subnav .move-side-bar.bottom { - bottom: 20px; - top: auto; - background-image: url('src/desktop/component/bottom.png'); -} -#subnav .item { - position: relative; - display: block; - height: 50px; - width: 50px; - margin: 0 0 10px 0; - padding: 8px 5px; - color: white; - text-decoration: none; - background: url('src/desktop/subnav/button.png') no-repeat; -} -#subnav .item.active { - background: url('src/desktop/subnav/button-active-c1.png') no-repeat; -} -#subnav .item.striped { - background: url('src/desktop/subnav/button-striped.png') no-repeat; -} -#subnav .item:before { - content: ''; - position: absolute; - right: -6px; - bottom: 0; - width: 12px; - height: 47px; - background: url('src/desktop/subnav/til.png') no-repeat; -} -#subnav .item:hover:before { - background: url('src/desktop/subnav/til-hover.png') no-repeat; -} -#subnav .item:hover > .content { - display: block; -} -#subnav .item .picto { - display: block; - height: 30px; - width: 30px; - padding: 10px; -} -#subnav .item .picto img { - display: block; - height: 30px; - width: 30px; -} -#subnav .item .picto .number { - position: absolute; - bottom: -5px; - right: -18px; - display: block; - width: 28px; - height: 28px; - line-height: 28px; - text-align: center; - font-size: 12px; - background: url('src/desktop/subnav/number.png') no-repeat; -} -#subnav .item .content { - display: none; - position: absolute; - top: 0; - left: 75px; - width: 230px; -} -#subnav .item .content.skin-1 span { - display: inline-block; - margin: 15px 0 15px 16px; - padding: 0 15px; - line-height: 30px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-1 span:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content { - display: inline-block; - margin: 0 0 0 16px; - padding: 10px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -#subnav .item .content.skin-2 .sub-content:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 8px; - border-color: transparent #4F4F4F transparent transparent; - left: 0; - top: 22px; -} -#subnav .item .content.skin-2 .sub-content hr { - border: none; - border-top: solid 1px #4F4F4F; - margin: 5px 0; -} -#subnav .item .content.skin-2 .sub-content .ship { - position: relative; -} -#subnav .item .content.skin-2 .sub-content .ship img { - width: 32px; - height: 32px; -} -#subnav .item .content.skin-2 .sub-content .ship img.zero { - opacity: .5; -} -#subnav .item .content.skin-2 .sub-content .ship .number { - position: absolute; - bottom: -2px; - right: -2px; - width: 18px; - height: 18px; - line-height: 18px; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; - text-align: center; - background: #b01e2d; -} -#alert-content { - display: none; -} -#alert { - position: absolute; - bottom: 18px; - left: 50px; - padding: 0; - text-align: right; - list-style: inset none; -} -#alert li { - position: relative; - display: inline-block; - margin: 0 0 0 5px; -} -#alert li img { - display: block; - height: 50px; - border: solid 1px #202020; - padding: 5px; - background: #0A0A0A; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -o-border-radius: 100%; - border-radius: 100%; -} -.alert-bull { - display: block; - position: absolute; - z-index: 1200; - width: 200px; - padding: 6px 8px; - color: white; - background: #202020; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.alert-bull .title { - display: block; - padding: 0 0 5px 0; - margin: 0 0 5px 0; - border-bottom: solid 1px #4F4F4F; -} -.alert-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - bottom: -14px; - left: 24px; - border-color: #4F4F4F transparent transparent transparent; -} -#content { - position: absolute; - width: 8000px; - height: 100%; - top: 0; - left: 300px; - z-index: 200; -} -#content .component { - position: relative; - display: table-cell; - overflow: hidden; - width: 300px; - background: rgba(0, 0, 0, 0.92); -} -#content .component.size2 { - width: 600px; -} -#content .component.size3 { - width: 900px; -} -#content .component:nth-child(1) { - background: rgba(0, 0, 0, 0.6); -} -#content .component:nth-child(2) { - background: rgba(0, 0, 0, 0.75); -} -#content .component:nth-child(3) { - background: rgba(0, 0, 0, 0.85); -} -#content .component:nth-child(4) { - background: rgba(0, 0, 0, 0.9); -} -#content .component .head { - position: relative; - display: inline-block; - height: 120px; - width: 100%; - vertical-align: top; - color: white; - background: url('src/desktop/component/bHead.jpg') repeat-x center black; - border-bottom: solid 1px #202020; -} -#content .component .head h1 { - position: absolute; - top: 10px; - left: 10px; - font-size: 38px; - line-height: 50px; - height: 50px; - display: inline-block; - padding: 0 10px; - background: black; - overflow: hidden; -} -#content .component .fix-body { - position: relative; - overflow: auto; - color: white; - border-right: solid 1px #202020; -} -#content .component .fix-body .body { - position: relative; -} -.no-scrolling #content .component .fix-body { - overflow: hidden; -} -.no-scrolling #content .component .fix-body > a { - position: absolute; - width: 100%; - height: 40px; - left: 0; - opacity: 0; -} -.no-scrolling #content .component .fix-body.hover > a { - opacity: 1; - background-position: center; - background-repeat: no-repeat; -} -.no-scrolling #content .component .fix-body .toTop { - top: 0; - background-image: url('src/desktop/component/top.png'), -webkit-gradient(linear, black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -moz-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -ms-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), -o-linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); - background-image: url('src/desktop/component/top.png'), linear-gradient(black, rgba(0, 0, 0, 0.8), transparent); -} -.no-scrolling #content .component .fix-body .toBottom { - bottom: 0; - background-image: url('src/desktop/component/bottom.png'), -webkit-gradient(linear, transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -moz-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -ms-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), -o-linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); - background-image: url('src/desktop/component/bottom.png'), linear-gradient(transparent, rgba(0, 0, 0, 0.8), black); -} -#content .component.invisible { - background: transparent; -} -#content .component.invisible .publicity { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background: red; -} -.component .tool { - display: table; - width: 100%; - height: 44px; - margin: 0; - overflow: hidden; - background: black; - border-bottom: solid 1px #b01e2d; - color: #4F4F4F; -} -.component .tool > span { - display: table-cell; - width: 28px; - border: solid 6px transparent; - border-left: none; -} -.component .tool > span:first-child { - border: solid 5px transparent; - width: auto; - text-align: center; -} -.component .tool > span:first-child a { - width: auto; -} -.component .tool > span a { - position: relative; - display: block; - margin: 0; - padding: 0; - line-height: 30px; - width: 30px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; - text-align: center; -} -.component .tool > span a img { - width: 18px; - position: relative; - top: -4px; -} -.component .tool > span a.active { - background: #6e161b; - color: white; - border-color: #b01e2d; -} -.component .tool > span a.active.down { - box-shadow: 0 2px 0 0 #CCC; -} -.component .tool > span a.active.up { - box-shadow: 0 -2px 0 0 #CCC; -} -.component .tool > span a.active:hover, -.component .tool > span a.active:focus { - color: #CCC; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.5); -} -.component .tool > span a:hover, -.component .tool > span a:focus, -.component .tool > span a:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .tool.sort-button > span:first-child { - text-align: center; -} -.component h3 { - width: 100%; - margin: 0; - background: black; - text-align: center; - padding: 0 2px; - line-height: 44px; - font-weight: normal; - font-size: 14px; - color: #4F4F4F; - text-decoration: none; - border-bottom: solid 1px #b01e2d; -} -.component h4 { - margin: 10px 10px 0 10px; - font-weight: normal; - font-size: 18px; -} -.component .body p { - margin: 10px; - font-size: 13px; - text-align: justify; -} -.component .body p.info { - position: relative; - border-top: solid 1px #202020; - padding: 10px; - margin: 10px; - line-height: 140%; - background: rgba(0, 0, 0, 0.8); -} -.component .body p.info a { - color: white; -} -.component .body p.info .requierement { - display: inline-block; - margin: 0 0 0 8px; - vertical-align: bottom; - height: 16px; -} -.component .body p.long-info { - padding: 10px; - line-height: 150%; - background: black; -} -.component .body p .alone-button { - display: block; - text-align: center; - color: white; - line-height: 40px; - border-radius: 3px; - text-decoration: none; - background: #4F4F4F; - box-shadow: inset 0 0 2px black; - padding: 0 10px; - background: #510816; -} -.component .body p .alone-button:hover, -.component .body p .alone-button:focus { - background: #6e161b; -} -.component .border-bottom { - border-bottom: solid 3px #b01e2d; -} -.component .list-type-1 { - margin: 10px; - padding: 0; - list-style: none; -} -.component .list-type-1 li { - position: relative; - padding: 5px 10px; - text-align: right; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: rgba(0, 0, 0, 0.8); - color: #989898; -} -.component .list-type-1 li.strong { - border-top: double 3px #4F4F4F; - background: #111111; - color: white; -} -.component .list-type-1 li.empty { - background: none; - border: none; - height: 50px; -} -.component .list-type-1 li ul li { - height: auto; -} -.component .list-type-1 .label { - display: block; - font-size: 13px; -} -.component .list-type-1 .label .icon-color { - width: 15px; - padding: 1px; -} -.component .list-type-1 .value { - display: inline-block; - font-size: 22px; - line-height: 30px; - font-weight: bold; -} -.component .list-type-1 .value .icon, -.component .list-type-1 .value .icon-color { - height: 18px; - margin-left: 8px; - position: relative; - top: -3px; -} -.component .list-type-1 .picto { - position: absolute; - top: 7px; - left: 10px; - height: 35px; - width: 35px; - line-height: 35px; - padding: 5px; - border-radius: 100%; - background: #202020; - font-size: 16px; - text-align: center; - color: white; - text-decoration: none; -} -.component .list-type-1 .picto.color1 { - background: #510816; -} -.component .list-type-1 .picto.color2 { - background: #0c0d44; -} -.component .list-type-1 .picto.color3 { - background: #b17a00; -} -.component .list-type-1 .picto.color4 { - background: #310948; -} -.component .list-type-1 .picto.color5 { - background: #24500a; -} -.component .list-type-1 .picto.color6 { - background: #004948; -} -.component .list-type-1 .picto.color7 { - background: #401b13; -} -.component .list-type-1 .picto.color8 { - background: #c3590b; -} -.component .list-type-1 .picto.color9 { - background: #24500a; -} -.component .list-type-1 .picto.color10 { - background: #4d0621; -} -.component .list-type-1 .picto.color11 { - background: #10684c; -} -.component .list-type-1 .picto.color12 { - background: #b17a00; -} -.component .list-type-1 .hide { - color: #4F4F4F; -} -.component .list-type-1 .buttons { - position: absolute; - top: 28px; - left: 5px; -} -.component .list-type-1 .buttons a { - display: inline-block; - margin: 0 4px; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-style: 14px; - color: white; - border-radius: 3px; - background: #6e161b; -} -.component .list-type-1 .progress-bar { - text-align: left; - margin-top: 5px; -} -.component .sub-list-type-1 { - display: none; - margin: 0; - padding: 0; - list-style: none; -} -.component .sub-list-type-1 li { - position: relative; - padding: 2px 0; - text-align: left; - border: none; - border-top: solid 1px #0A0A0A; -} -.component .sub-list-type-1 .label { - display: inline-block; - width: 60%; -} -.component .sub-list-type-1 .label .button { - position: relative; - left: -4px; - margin: 0 0 0 3px; -} -.component .sub-list-type-1 .value { - text-align: right; - line-height: 25px; - font-size: 18px; - width: 40%; -} -.component .sub-list-type-1 .value .button { - margin: 0 2px 0 6px; -} -.component .sub-list-type-1 .button { - display: inline-block; - width: 18px; - line-height: 18px; - text-align: center; - text-decoration: none; - font-size: 14px; - font-weight: normal; - color: white; - border-radius: 3px; - background: #b01e2d; -} -.component .list-type-1 form { - z-index: 1; - position: absolute; - display: none; - bottom: -40px; - right: 3px; -} -.component .list-type-1 form p { - position: relative; - background: white; - border-radius: 3px; - padding: 0; - margin: 0; - width: 200px; - height: 35px; -} -.component .list-type-1 form p:before { - content: ''; - position: absolute; - top: -12px; - right: 12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; -} -.component .list-type-1 form input { - border: none; - background: none; - line-height: 35px; - height: 35px; - padding: 0 10px; -} -.component .list-type-1 form input[type='text'] { - width: 140px; -} -.component .list-type-1 form input[type='submit'] { - width: 40px; -} -.component .sub-list-type-1 form { - right: -6px; -} -/* NUMBER BOX */ -.number-box { - position: relative; - margin: 10px; - padding: 5px 10px; - background: black; - color: white; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - border-left: solid 10px #6e161b; -} -.number-box.half { - display: inline-block; - width: 254px; - margin-right: 0; - margin-bottom: 0; -} -.number-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.number-box.text { - border-left: solid 1px #0A0A0A; -} -.number-box.text a { - text-decoration: none; - color: white; -} -.number-box .label { - display: block; -} -.number-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.number-box .value .icon-color { - width: 20px; - height: 20px; - vertical-align: middle; -} -.number-box .progress-bar { - margin: 5px 0; -} -.number-box .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.number-box .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #6e161b; -} -/* PROGRESS BAR */ -.progress-bar { - position: relative; - display: block; - width: 100%; - height: 3px; - background: #4F4F4F; -} -.progress-bar .content { - position: relative; - display: inline-block; - height: 3px; - vertical-align: top; - overflow: hidden; - max-width: 100%; -} -.progress-bar .content:nth-child(n) { - background: #b01e2d; -} -.progress-bar .content:nth-child(2n) { - background: #510816; -} -.progress-bar .content.color1 { - background: #6e161b; -} -.progress-bar .content.color2 { - background: #1f1471; -} -.progress-bar .content.color3 { - background: #dbb200; -} -.progress-bar .content.color4 { - background: #5a1072; -} -.progress-bar .content.color5 { - background: #2c7915; -} -.progress-bar .content.color6 { - background: #076b87; -} -.progress-bar .content.color7 { - background: #67331d; -} -.progress-bar .content.color8 { - background: #d87913; -} -.progress-bar .content.color9 { - background: #2c7915; -} -.progress-bar .content.color10 { - background: #760f36; -} -.progress-bar .content.color11 { - background: #219772; -} -.progress-bar .content.color12 { - background: #dbb200; -} -.progress-bar .step { - position: absolute; -} -.progress-bar .step .label { - position: absolute; - display: block; - width: 150px; - left: 0; - top: -28px; -} -.progress-bar .step .label.bottom { - top: auto; - bottom: -28px; -} -.progress-bar .step .label.right { - right: 0; - left: auto; - text-align: right; -} -.progress-bar .step:before { - content: ''; - position: absolute; - width: 12px; - height: 12px; - background: #6e161b; - box-shadow: 0 0 0 3px #510816; - border-radius: 100%; - top: -5px; - left: -5px; -} -/* BONUS */ -.bonus { - vertical-align: top; - display: inline-block; - font-size: 55%; - line-height: 100%; - padding: 3px; - margin: 2px 0 0 8px; - border-radius: 3px; - font-weight: normal; - background: #510816; -} -/* HEAD */ -.component .head.skin-1 img { - position: absolute; - top: 22px; - left: 20px; - padding: 8px; - width: 60px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .head.skin-1 img:before { - content: ''; - width: 100px; - height: 100px; -} -.component .head.skin-1 h2 { - position: absolute; - bottom: 66px; - left: 105px; - font-size: 22px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-1 em { - position: absolute; - top: 62px; - left: 105px; - font-size: 13px; - line-height: 16px; - font-style: normal; -} -.component .head.skin-2 h2 { - position: absolute; - display: inline-block; - top: 45px; - left: 10px; - font-size: 22px; - line-height: 30px; - margin: 0; - padding: 0 10px; - background: black; - font-weight: normal; -} -.component .head.skin-3 img { - position: absolute; - width: 50px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 27px; -} -.component .head.skin-3 img.left { - left: 40px; -} -.component .head.skin-3 img.right { - right: 40px; -} -.component .head.skin-4 img.main { - position: absolute; - width: 30px; - height: 30px; - padding: 8px; - background: black; - border: solid 1px #202020; - border-radius: 100%; - top: 37px; -} -.component .head.skin-4 h2 { - position: absolute; - top: 35px; - left: 60px; - font-size: 18px; - line-height: 22px; - margin: 0; - padding: 0; -} -.component .head.skin-4 em { - position: absolute; - top: 65px; - left: 60px; - font-size: 13px; - line-height: 16px; -} -.component .head.skin-5 h2 { - position: absolute; - top: 50px; - left: 10px; - font-size: 16px; - font-weight: normal; - margin: 0; - padding: 0 20px; - background: black; -} -.component .head.skin-5 h2:before { - content: ''; - position: absolute; - display: block; - top: 5px; - left: 0; - width: 8px; - height: 8px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .more-item, -.component .more-button { - display: block; - margin: 10px 10px 5px; - line-height: 34px; - padding: 0 12px; - background: #0A0A0A; - color: #4F4F4F; - text-decoration: none; - border: solid 1px #202020; - border-radius: 3px; -} -.component .more-item:hover, -.component .more-button:hover, -.component .more-item:focus, -.component .more-button:focus, -.component .more-item:active, -.component .more-button:active { - color: #CCC; - box-shadow: inset 0 0 5px black; -} -.component .nav-element { - position: relative; - display: block; - margin: 10px; - height: 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component .nav-element img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - height: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component .nav-element.active { - background: #6e161b; -} -.component .nav-element .active img { - background: black; -} -.component .nav-element strong { - position: absolute; - top: 5px; - left: 70px; - color: white; - font-weight: bold; - font-size: 17px; -} -.component .nav-element em { - position: absolute; - top: 30px; - left: 70px; - color: white; - font-weight: normal; - font-size: 12px; - font-style: normal; - color: #efefef; -} -.component hr { - border: none; - border-bottom: dashed 1px #202020; - margin: 0 10px; -} -.component .set-item { - margin: 10px; - border-bottom: solid 1px #202020; -} -.component .set-item a.item:hover, -.component .set-item a.item:focus { - background-color: #0c0c0c; -} -.component .set-item .item { - position: relative; - display: block; - color: white; - height: 60px; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; -} -.component .set-item .item .left { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 60px; -} -.component .set-item .item .left img { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left img.color1 { - background: #6e161b; -} -.component .set-item .item .left img.color2 { - background: #1f1471; -} -.component .set-item .item .left img.color3 { - background: #dbb200; -} -.component .set-item .item .left img.color4 { - background: #5a1072; -} -.component .set-item .item .left img.color5 { - background: #2c7915; -} -.component .set-item .item .left img.color6 { - background: #076b87; -} -.component .set-item .item .left img.color7 { - background: #67331d; -} -.component .set-item .item .left img.color8 { - background: #d87913; -} -.component .set-item .item .left img.color9 { - background: #2c7915; -} -.component .set-item .item .left img.color10 { - background: #760f36; -} -.component .set-item .item .left img.color11 { - background: #219772; -} -.component .set-item .item .left img.color12 { - background: #dbb200; -} -.component .set-item .item .left img.round-color0 { - box-shadow: 0 0 0 2px #CCC; -} -.component .set-item .item .left img.round-color1 { - box-shadow: 0 0 0 2px #b01e2d; -} -.component .set-item .item .left img.round-color2 { - box-shadow: 0 0 0 2px #2f23c0; -} -.component .set-item .item .left img.round-color3 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left img.round-color4 { - box-shadow: 0 0 0 2px #a935c7; -} -.component .set-item .item .left img.round-color5 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color6 { - box-shadow: 0 0 0 2px #05bed7; -} -.component .set-item .item .left img.round-color7 { - box-shadow: 0 0 0 2px #ac5832; -} -.component .set-item .item .left img.round-color8 { - box-shadow: 0 0 0 2px #f2b636; -} -.component .set-item .item .left img.round-color9 { - box-shadow: 0 0 0 2px #57c632; -} -.component .set-item .item .left img.round-color10 { - box-shadow: 0 0 0 2px #a92859; -} -.component .set-item .item .left img.round-color11 { - box-shadow: 0 0 0 2px #34b089; -} -.component .set-item .item .left img.round-color12 { - box-shadow: 0 0 0 2px #ffdb0f; -} -.component .set-item .item .left span { - display: block; - width: 30px; - line-height: 30px; - text-align: center; - font-size: 15px; - margin: 10px; - padding: 5px; - border-radius: 100%; - background: #202020; -} -.component .set-item .item .left span.round-color0 { - background: #CCC; -} -.component .set-item .item .left span.round-color1 { - background: #b01e2d; -} -.component .set-item .item .left span.round-color2 { - background: #2f23c0; -} -.component .set-item .item .left span.round-color3 { - background: #ffdb0f; -} -.component .set-item .item .left span.round-color4 { - background: #a935c7; -} -.component .set-item .item .left span.round-color5 { - background: #57c632; -} -.component .set-item .item .left span.round-color6 { - background: #05bed7; -} -.component .set-item .item .left span.round-color7 { - background: #ac5832; -} -.component .set-item .item .left span.round-color8 { - background: #f2b636; -} -.component .set-item .item .left span.round-color9 { - background: #57c632; -} -.component .set-item .item .left span.round-color10 { - background: #a92859; -} -.component .set-item .item .left span.round-color11 { - background: #34b089; -} -.component .set-item .item .left span.round-color12 { - background: #ffdb0f; -} -.component .set-item .item .center { - position: absolute; - top: 0; - left: 60px; - right: 30px; - bottom: 0; - padding: 9px 0; -} -.component .set-item .item .center strong { - display: block; - line-height: 22px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.component .set-item .item .center a { - color: white; - text-decoration: none; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); -} -.component .set-item .item .right { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 29px; - border-left: solid 1px #202020; -} -.component .set-item .item .right a { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; -} -.component .set-item .item .right a:hover, -.component .set-item .item .right a:focus { - background-color: #202020; -} -.component .set-item .item .right a.active { - background-color: #6e161b; -} -.component .set-item .item .group-link { - position: absolute; - top: 5px; - right: 5px; -} -.component .set-item .item .group-link a { - display: inline-block; - line-height: 18px; - width: 18px; - text-align: center; - color: white; - text-decoration: none; - border-radius: 3px; - margin-left: 5px; - background: #6e161b; -} -.army-bull { - display: none; - position: absolute; - z-index: 1200; - padding: 4px 8px; - width: 220px; - color: #CCC; - background: #202020; - border-radius: 3px; - border: solid 1px #4F4F4F; - box-shadow: inset 0 0 3px black; -} -.army-bull:before { - content: ''; - display: block; - position: absolute; - border-style: solid; - border-width: 7px; - top: -14px; - border-color: transparent transparent #4F4F4F transparent; - left: 18px; -} -.army-bull strong { - display: block; - padding-bottom: 5px; - margin-bottom: 5px; - border-bottom: solid 1px #4F4F4F; - font-weight: normal; -} -.army-bull .label { - display: inline-block; - width: 70px; -} -.army-bull .value { - display: inline-block; - width: 40px; -} -.component .build-item { - position: relative; - margin: 10px; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - width: 278px; -} -.component .build-item a { - color: white; -} -.component .build-item .name { - position: relative; - height: 40px; - padding: 5px 5px 5px 90px; -} -.component .build-item .name img { - z-index: 20; - position: absolute; - top: -10px; - left: 5px; - width: 60px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component .build-item .name strong { - display: block; - font-size: 18px; -} -.component .build-item .level { - display: block; - position: absolute; - width: 22px; - line-height: 22px; - text-align: center; - font-size: 12px; - border-radius: 100%; - top: 38px; - left: 58px; - border: solid 1px white; - z-index: 22; - background: #6e161b; -} -.component .build-item .info { - display: none; - position: absolute; - width: 20px; - line-height: 20px; - text-align: center; - font-size: 16px; - text-decoration: none; - border-radius: 3px; - top: 5px; - right: 5px; - background: #6e161b; - color: white; -} -.component .build-item .name-commander { - margin: 10px 10px 0 10px; - height: 40px; - padding: 0 10px; - border: none; - background: white; - border-radius: 3px; - width: 240px; - text-align: center; - font-size: 16px; -} -.component .build-item .button { - display: block; - margin: 10px; - padding: 5px 10px; - width: 240px; - line-height: 20px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - background: #6e161b; - box-shadow: inset 0 0 2px black; - border: none; - cursor: pointer; - min-height: 36px; -} -.component .build-item .button:hover { - box-shadow: inset 0 0 6px black; - background: #b01e2d; -} -.component .build-item .button.disable { - background: #202020; - cursor: default; -} -.component .build-item .button .icon-color { - width: 14px; -} -.component .build-item button.button { - width: 260px; -} -.component .build-item .ship-pack { - z-index: 10; - position: absolute; - bottom: 15px; - left: 15px; - width: 60px; - height: 40px; - padding: 0; - margin: 0; - border: none; - background: white; - text-align: center; - font-size: 24px; - font-weight: bold; - border-radius: 3px; - box-shadow: inset 0 0 0 3px #CCC; -} -.component .build-item .ship-illu { - width: 260px; - margin: 5px 10px; - overflow: hidden; -} -.component .build-item .ship-illu img { - width: 100%; -} -.component .build-item.disabled { - opacity: .3; -} -.component .build-item.disabled .name img { - opacity: .50; -} -.component .build-item.disabled strong { - color: #4F4F4F; -} -.component .build-item.disabled .button.disable { - color: #696969; -} -.component .build-item.disabled .button.disable:hover { - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component .build-item.large { - width: 578px; -} -.component .build-item.large .info { - top: 75px; - right: 25px; -} -.component .build-item.large .button { - display: block; - top: -3px; - right: 0; - line-height: 18px; - width: 540px; - min-height: 36px; -} -.component .build-item.large .ship-illu { - width: 560px; - margin-top: 10px; -} -.component .build-item input { - display: block; - width: 243px; - margin: 10px; - padding: 8px; - border: none; -} -.component .build-item select { - display: block; - width: 260px; - margin: 10px; - padding: 8px; - border: none; -} -.component.panel-info .remove-info { - display: block; - position: absolute; - top: 2px; - right: 10px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - color: white; - border-radius: 3px; - background: #510816; -} -.component.panel-info .table { - margin: 10px; -} -.component.panel-info .table table { - width: 100%; - text-align: right; - border-collapse: collapse; - background: black; -} -.component.panel-info .table td { - border: solid 1px #202020; - padding: 6px 8px; -} -.component.panel-info .table tr.small-grey { - background: #0A0A0A; -} -.component.panel-info .table tr.active td { - background: #0A0A0A; - border-bottom: solid 1px #4F4F4F; -} -.component.panel-info .table .icon-color { - width: 12px; -} -.component.panel-info .illu { - margin: 0 10px; - box-shadow: inset 0 0 5px black; -} -.component.panel-info .skill-box { - position: relative; - margin: 0 10px; - padding: 5px 10px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; -} -.component.panel-info .skill-box.grey { - border-left: solid 10px #4F4F4F !important; -} -.component.panel-info .skill-box .label { - display: block; -} -.component.panel-info .skill-box .value { - display: block; - font-size: 18px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.panel-info .skill-box .value .icon-color { - width: 18px; -} -.component.panel-info .skill-box .progress-bar { - margin: 6px 0 2px 0; -} -.splash-screen { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10000; - opacity: 0; - background: rgba(0, 0, 0, 0.8); -} -.splash-screen .modal { - width: 500px; - height: 140px; - position: absolute; - top: 80px; - right: 3000px; - background: #0A0A0A; - padding: 25px 175px 25px 75px; - color: white; - border-radius: 140px; - border: solid 1px #202020; -} -.splash-screen .modal h1 { - font-size: 36px; - margin: 0; - padding: 0 0 10px 0; -} -.splash-screen .modal h2 { - font-size: 20px; - margin: 0; - padding: 0; -} -.splash-screen .modal img { - position: absolute; - top: -15px; - right: -50px; - width: 200px; - padding: 10px; - background: #202020; - border-radius: 100%; - border: solid 1px #4F4F4F; -} -.splash-screen .modal:before { - content: ''; - position: absolute; - top: -80px; - right: 20px; - border-color: transparent transparent #4F4F4F transparent; - border-width: 40px; - border-style: solid; -} -.common-link { - color: white; -} -.component .top-right-button { - display: block; - position: absolute; - top: 0; - right: 10px; - padding: 0 10px; - line-height: 30px; - color: white; - border-radius: 3px; - text-decoration: none; - background: #6e161b; - z-index: 1; -} -.component .top-right-button:hover, -.component .top-right-button:focus { - background: #510816; -} -.alert { - display: block; - margin: 10px; - line-height: 30px; - padding: 0 10px; - text-decoration: none; - color: white; - background: #6e161b; - border-radius: 3px; - box-shadow: 0 0 2px black; -} -.common-link { - display: block; - margin: 10px; - color: white; - text-decoration: none; -} -.text-bloc a { - display: inline-block; - color: inherit; - opacity: .60; -} -.text-bloc a:hover, -.text-bloc a:focus { - opacity: 1; -} -.queue { - margin: 10px; - color: white; -} -.queue .item { - position: relative; - background: black; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - min-height: 60px; - display: block; -} -.queue .item.empty { - background: #0A0A0A; -} -.queue .item.empty strong { - font-weight: normal; -} -.queue .item.link { - min-height: 0; - padding: 10px; - color: #4F4F4F; - text-decoration: none; -} -.queue .item.link:hover, -.queue .item.link:focus { - color: #CCC; -} -.queue .item a.button { - position: absolute; - display: block; - top: 2px; - right: 5px; - color: white; - text-decoration: none; -} -.queue .item a { - color: #CCC; -} -.queue .item .group-link { - position: absolute; - top: 9px; - right: 9px; -} -.queue .item .group-link a { - display: block; - width: 20px; - line-height: 20px; - margin: 0 0 5px 0; - border-radius: 3px; - color: white; - text-align: center; - text-decoration: none; - background: #6e161b; -} -.queue .item .group-link a:hover, -.queue .item .group-link a:focus { - background: #b01e2d; -} -.queue .item .picto { - float: left; - width: 40px; - height: 40px; - margin: 5px; - padding: 5px; - background: black; - border-radius: 100%; - border: solid 1px #202020; -} -.queue .item strong { - display: block; - margin: 6px 0 2px 0; -} -.queue .item strong .level { - font-size: 11px; - color: #CCC; -} -.queue .item .big { - font-size: 24px; -} -.queue .item em { - display: block; - font-style: normal; - color: #AEAEAE; -} -.queue .item .progress-container { - position: relative; - display: block; - clear: both; - margin: 5px; - height: 3px; - background: #4F4F4F; -} -.queue .item .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #b01e2d; -} -.choose-government { - display: block; - margin: 10px; - padding: 10px; - background: #0A0A0A; - border-radius: 3px; -} -.choose-government select { - display: block; - width: 100%; - padding: 8px; -} -.choose-government button { - display: block; - width: 100%; - margin: 10px 0 0 0; - padding: 0 10px; - line-height: 30px; - border: none; - color: white; - cursor: pointer; - background: #6e161b; -} -.choose-government button:hover, -.choose-government button:focus { - background: #510816; -} -.evolution { - background: black; - margin: 10px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; -} -.evolution .header { - padding: 10px; - border-bottom: solid 1px #202020; - color: #EFEFEF; -} -.evolution .diargam { - padding: 10px; - background: #0A0A0A; -} -.evolution .diargam .progress-bar { - background: #0A0A0A !important; - height: 20px; - padding-bottom: 1px; -} -.evolution .diargam .progress-bar .content { - height: 20px; - line-height: 20px; - font-size: 12px; - color: white; - padding-left: 5px; -} -.evolution .diargam .progress-bar:nth-child(odd) .content { - background: #6e161b !important; -} -.centred-link { - display: block; - width: 300px; - text-align: center; - margin: 0 auto; - text-decoration: none; - padding: 6px 10px; - color: #EFEFEF; - background: #6e161b; - border: solid 1px #510816; -} -.centred-link:hover, -.centred-link:focus { - background: #510816; - border-color: #6e161b; - color: white; -} -span.centred-link { - background: #202020; - border: solid 1px #0A0A0A; - color: #4F4F4F; -} -span.centred-link:hover, -span.centred-link:focus { - background: #202020; - border-color: #0A0A0A; - color: #4F4F4F; -} -.component.profil .center-box { - margin: 20px 10px 0; - color: white; - text-align: center; -} -.component.profil .center-box .label { - display: block; -} -.component.profil .center-box .value { - display: block; - font-size: 26px; - font-weight: bold; - margin: 4px 0 0 0; -} -.component.profil .profil-flag { - position: relative; - width: 222px; - height: 460px; - margin: 0 auto; -} -.component.profil .profil-flag img { - position: relative; - background: #0A0A0A; - border: solid 1px #202020; - padding: 10px; - border-radius: 100%; - margin: 20px auto; - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; - z-index: 1; -} -.component.profil .profil-flag.color-1 img { - box-shadow: 0 0 0 4px #6e161b, 0 0 20px black; -} -.component.profil .profil-flag.color-2 img { - box-shadow: 0 0 0 4px #1f1471, 0 0 20px black; -} -.component.profil .profil-flag.color-3 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag.color-4 img { - box-shadow: 0 0 0 4px #5a1072, 0 0 20px black; -} -.component.profil .profil-flag.color-5 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-6 img { - box-shadow: 0 0 0 4px #076b87, 0 0 20px black; -} -.component.profil .profil-flag.color-7 img { - box-shadow: 0 0 0 4px #67331d, 0 0 20px black; -} -.component.profil .profil-flag.color-8 img { - box-shadow: 0 0 0 4px #d87913, 0 0 20px black; -} -.component.profil .profil-flag.color-9 img { - box-shadow: 0 0 0 4px #2c7915, 0 0 20px black; -} -.component.profil .profil-flag.color-10 img { - box-shadow: 0 0 0 4px #760f36, 0 0 20px black; -} -.component.profil .profil-flag.color-11 img { - box-shadow: 0 0 0 4px #219772, 0 0 20px black; -} -.component.profil .profil-flag.color-12 img { - box-shadow: 0 0 0 4px #dbb200, 0 0 20px black; -} -.component.profil .profil-flag:before { - display: block; - position: absolute; - content: ''; - top: 218px; - left: 33px; - width: 154px; - height: 241px; - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-1:before { - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.profil .profil-flag.color-2:before { - background: url('src/desktop/faction/flag/flag-2.png') no-repeat; -} -.component.profil .profil-flag.color-3:before { - background: url('src/desktop/faction/flag/flag-3.png') no-repeat; -} -.component.profil .profil-flag.color-4:before { - background: url('src/desktop/faction/flag/flag-4.png') no-repeat; -} -.component.profil .profil-flag.color-5:before { - background: url('src/desktop/faction/flag/flag-5.png') no-repeat; -} -.component.profil .profil-flag.color-6:before { - background: url('src/desktop/faction/flag/flag-6.png') no-repeat; -} -.component.profil .profil-flag.color-7:before { - background: url('src/desktop/faction/flag/flag-7.png') no-repeat; -} -.component.profil .profil-flag.color-8:before { - background: url('src/desktop/faction/flag/flag-8.png') no-repeat; -} -.component.profil .profil-flag.color-9:before { - background: url('src/desktop/faction/flag/flag-9.png') no-repeat; -} -.component.profil .profil-flag.color-10:before { - background: url('src/desktop/faction/flag/flag-10.png') no-repeat; -} -.component.profil .profil-flag.color-11:before { - background: url('src/desktop/faction/flag/flag-11.png') no-repeat; -} -.component.profil .profil-flag.color-12:before { - background: url('src/desktop/faction/flag/flag-12.png') no-repeat; -} -.component.profil .profil-flag .level { - z-index: 2; - display: block; - position: absolute; - top: 184px; - right: 2px; - width: 36px; - height: 36px; - text-align: center; - line-height: 36px; - background: #0A0A0A; - border: 3px solid #6e161b; - border-radius: 100%; -} -.component.profil .profil-flag.color-1 .level { - border-color: #6e161b; -} -.component.profil .profil-flag.color-2 .level { - border-color: #1f1471; -} -.component.profil .profil-flag.color-3 .level { - border-color: #dbb200; -} -.component.profil .profil-flag.color-4 .level { - border-color: #5a1072; -} -.component.profil .profil-flag.color-5 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-6 .level { - border-color: #076b87; -} -.component.profil .profil-flag.color-7 .level { - border-color: #67331d; -} -.component.profil .profil-flag.color-8 .level { - border-color: #d87913; -} -.component.profil .profil-flag.color-9 .level { - border-color: #2c7915; -} -.component.profil .profil-flag.color-10 .level { - border-color: #760f36; -} -.component.profil .profil-flag.color-11 .level { - border-color: #219772; -} -.component.profil .profil-flag.color-12 .level { - border-color: #dbb200; -} -.component.profil .faction-flag { - display: block; - content: ''; - width: 154px; - height: 241px; - margin: 0 auto; - background: url('src/desktop/faction/flag/flag-1.png') no-repeat; -} -.component.search-player { - position: relative; - background: transparent !important; -} -.component.search-player .box { - position: absolute; - top: 60px; - left: 50px; - width: 440px; - color: white; -} -.component.search-player .top { - background: rgba(0, 0, 0, 0.4); - padding: 10px; - border-radius: 3px 3px 0 0; -} -.component.search-player .top label { - display: block; - font-size: 16px; -} -.component.search-player .top input { - display: block; - border: none; - height: 40px; - width: 400px; - padding: 0 10px; - margin: 10px 0 0 0; - font-size: 20px; - color: #202020; - border-radius: 3px; -} -.component.search-player .center { - background: rgba(0, 0, 0, 0.8); - padding: 10px 25px 10px 10px; - min-height: 140px; - border-radius: 0 0 3px 3px; -} -.component.search-player .center .avatar { - float: left; - position: relative; - left: -20px; - width: 120px; - padding: 8px; - border: solid 1px #202020; - border-radius: 100%; - background: #0A0A0A; -} -.component.search-player .center .right { - margin-left: 140px; -} -.component.search-player .center h1 { - margin: 10px 0 0 0; - padding: 0; -} -.component.search-player .center hr { - margin: 10px 0; - border-color: #4F4F4F; -} -.component.search-player .center p { - margin: 5px 0; - padding: 0; -} -.component.search-player .center p span { - display: inline-block; - background: red; - line-height: 28px; - padding: 0 10px; - border: solid 1px rgba(255, 255, 255, 0.5); - border-right: none; -} -.component.search-player .center p span:first-child { - border-radius: 3px 0 0 3px; -} -.component.search-player .center p span:last-child { - border-radius: 0 3px 3px 0; - border: solid 1px rgba(255, 255, 255, 0.5); -} -.component.search-player.color1 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component.search-player.color2 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component.search-player.color3 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.search-player.color4 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component.search-player.color5 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color6 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component.search-player.color7 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component.search-player.color8 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component.search-player.color9 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component.search-player.color10 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.component.search-player.color11 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.component.search-player.color12 .center .avatar { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component.new-message p.input { - position: relative; - background: white; - padding: 10px; - border-radius: 3px; -} -.component.new-message p.input:before { - content: ''; - position: absolute; - width: 0; - height: 0; - top: -12px; - border-style: solid; - border-width: 6px; - border-color: transparent transparent white transparent; - left: 20px; -} -.component.new-message label { - display: block; - font-size: 13px; -} -.component.new-message .input-text input { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; -} -.component.new-message .input-area textarea { - display: block; - width: 100%; - padding: 0; - margin: 0; - border-radius: 0; - border: none; - font-family: inherit; - font-size: 13px; - max-width: 100%; - min-width: 100%; - height: 200px; -} -.component.new-message button { - display: inline-block; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 15px; - color: white; - cursor: pointer; - overflow: hidden; - background: #b01e2d; -} -.component.new-message button:hover, -.component.new-message button:focus { - background: #510816; -} -.notif { - position: relative; - margin: 10px; - background: black; - border-top: solid 1px #4F4F4F; - border-right: solid 1px #202020; - border-left: solid 1px #202020; -} -.notif h4 { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 10px; - font-size: 14px; - line-height: 30px; - border-bottom: solid 1px #202020; - background: #0A0A0A; - font-weight: normal; - cursor: pointer; - color: white; -} -.notif.unreaded h4:before { - position: absolute; - content: ''; - width: 40px; - height: 40px; - background: white; - top: -5px; - right: -15px; - background: #b01e2d; - -webkit-transform: rotate(100deg); - -moz-transform: rotate(100deg); - -ms-transform: rotate(100deg); - -o-transform: rotate(100deg); - transform: rotate(100deg); -} -.notif .content { - display: none; - padding: 6px 8px; - line-height: 140%; - text-align: justify; - color: #efefef; -} -.notif .content p { - margin: 0; -} -.notif .content hr { - border: none; - background: none; - border-bottom: dashed 1px #202020; - margin: 5px 0; -} -.notif .content a { - color: white; -} -.notif .content .box-resource { - position: relative; - display: block; - margin: 5px 0; - padding: 5px 5px 5px 40px; -} -.notif .content .box-resource img { - position: absolute; - top: 6px; - left: 0; - border: solid 4px #4f4f4f; - border-radius: 100%; - border-color: #6e161b; -} -.notif .content .box-resource .label { - display: block; - font-size: 12px; -} -.notif .content .box-resource .value { - display: block; - font-size: 18px; - font-weight: bold; -} -.notif .footer { - display: none; - margin: 0; - padding: 0 10px; - line-height: 18px; - padding: 5px 5px; - border-top: solid 1px #202020; - font-style: italic; - text-align: right; - color: #CCC; -} -.notif .footer a { - color: #CCC; -} -.notif.open .content { - display: block; -} -.notif.open .footer { - display: block; -} -.component.rc .rc { - position: relative; - margin: 20px 10px 20px 30px; - border-left: solid 1px #CCC; - padding: 0 10px; - height: 380px; - color: #CCC; -} -.component.rc .rc.no-tax { - margin: 20px 10px 20px 30px; - border-left: dashed 1px #4F4F4F; - padding: 0 10px; - color: #CCC; -} -.component.rc .rc a, -.component.rc .rc strong { - color: white; -} -.component.rc .rc .icon-color { - width: 20px; -} -.component.rc .rc .base { - position: relative; - padding: 15px 0 15px 40px; - height: 50px; -} -.component.rc .rc .base:last-child { - position: absolute; - bottom: 0px; -} -.component.rc .rc .place { - position: absolute; - top: 0px; - left: -50px; - width: 78px; - height: 78px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component.rc .rc .general { - list-style: none inset; - margin: 10px 0; - padding: 0; -} -.component.rc .rc .general li { - margin: 10px 0; - list-style-type: none; -} -.component.rc .rc .general li strong { - display: block; - font-size: 20px; - font-weight: bold; -} -.component .situation-content { - position: relative; - display: block; - width: 100%; - height: 500px; - border-bottom: solid 1px #0A0A0A; -} -.component .situation-content .line-help { - position: absolute; - display: block; - width: 25px; - height: 25px; - line-height: 25px; - text-align: center; - border-radius: 100%; - background: #510816; -} -.component .situation-content .line-help.line-1 { - top: 55px; - left: 190px; -} -.component .situation-content .line-help.line-2 { - top: 145px; - left: 406px; -} -.component .situation-content .toolbar { - position: absolute; - top: 30px; - right: 30px; - box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.1); - border-radius: 3px; - background: #6e161b; - z-index: 1; -} -.component .situation-content .toolbar a, -.component .situation-content .toolbar span { - display: inline-block; - line-height: 32px; - padding: 0 15px; - border-right: solid 1px black; - text-decoration: none; - color: white; -} -.component .situation-content .toolbar a img, -.component .situation-content .toolbar span img { - position: relative; - top: -2px; - vertical-align: middle; - height: 18px; - width: 18px; -} -.component .situation-content .toolbar a:hover, -.component .situation-content .toolbar a:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar form { - display: inline-block; -} -.component .situation-content .toolbar input { - height: 32px; - border: none; - background: none; - color: white; - padding: 0 15px; - font-size: inherit; -} -.component .situation-content .toolbar input:focus { - background: rgba(0, 0, 0, 0.25); -} -.component .situation-content .toolbar input.button { - background: url('src/desktop/common/edit.png') no-repeat center; -} -.component .situation-content .toolbar input.button:focus { - background: url('src/desktop/common/edit.png') no-repeat center rgba(0, 0, 0, 0.25); -} -.component .situation-content .info { - position: absolute; - display: block; - width: 200px; - font-size: 12px; - color: #efefef; - line-height: 18px; -} -.component .situation-content .info strong { - color: white; - font-size: 14px; -} -.component .situation-content .info a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4f4f4f; -} -.component .situation-content .info a:hover, -.component .situation-content .info a:focus { - border-color: #CCC; -} -.component .situation-content .commander { - position: absolute; - display: block; - text-decoration: none; - z-index: 1; -} -.component .situation-content .commander.empty { - color: #CCC; -} -.component .situation-content .commander.position-1-1 { - top: 135px; - left: 127px; -} -.component .situation-content .commander.position-1-2 { - top: 272px; - left: 100px; -} -.component .situation-content .commander.position-1-3 { - top: 415px; - left: 127px; -} -.component .situation-content .commander.position-2-1 { - top: 215px; - left: 352px; -} -.component .situation-content .commander.position-2-2 { - top: 272px; - left: 345px; -} -.component .situation-content .commander.position-2-3 { - top: 330px; - left: 352px; -} -.component .situation-content .commander.position-3 { - top: 355px; - left: 577px; -} -.component .situation-content .commander img { - width: 40px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -.component .situation-content .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content .commander .info { - top: 8px; - left: 65px; - width: 160px; -} -.component .situation-content .commander .link { - display: none; - position: absolute; - top: 14px; - left: -16px; - width: 24px; - height: 24px; - font-size: 20px; - font-weight: bold; - text-decoration: none; - border-radius: 100%; - text-align: center; - z-index: 1; - border: solid 1px white; -} -.component .situation-content .commander .link.to-left { - background: url('src/desktop/mover/to-left.png') no-repeat center black; -} -.component .situation-content .commander .link.to-right { - background: url('src/desktop/mover/to-right.png') no-repeat center black; -} -.component .situation-content .commander:hover > .link { - display: block; -} -.component .situation-content .stellar { - position: absolute; - display: block; - top: 180px; - left: 560px; -} -.component .situation-content .stellar img { - width: 220px; - padding: 6px; - border: solid 1px #202020; - background: black; - border-radius: 100%; -} -.component .situation-content .stellar .info { - font-size: 12px; - border-left: solid 1px #202020; -} -.component .situation-content .stellar .info.top { - bottom: 215px; - left: 50px; - padding: 0 0 30px 10px; -} -.component .situation-content .stellar .info.top strong { - font-size: 20px; -} -.component .situation-content .stellar .info.bottom { - top: 225px; - left: 160px; - padding: 10px 0 0 10px; -} -.component .situation-content .stellar .info.middle { - top: 20px; - left: 182px; - padding: 10px 0 0 50px; - border: none; - border-top: solid 1px #202020; -} -.component .situation-content .attack-link { - position: absolute; - bottom: -1px; - left: 0; - right: 0; - text-align: center; -} -.component .situation-content .attack-link a { - display: inline-block; - line-height: 40px; - padding: 0 25px; - border-radius: 3px 3px 0 0; - background: #202020; - color: white; - text-decoration: none; - font-size: 16px; -} -.component .situation-content .attack-link a:hover, -.component .situation-content .attack-link a:focus { - box-shadow: 0 0 5px 3px black; -} -.component .situation-content.color0 .line-help { - background: #202020; -} -.component .situation-content.color0 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #202020; -} -.component .situation-content.color0 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #202020; -} -.component .situation-content.color0 .attack-link a { - background: #202020; -} -.component .situation-content.color1 .line-help { - background: #510816; -} -.component .situation-content.color1 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.component .situation-content.color1 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #6e161b; -} -.component .situation-content.color1 .attack-link a { - background: #6e161b; -} -.component .situation-content.color2 .line-help { - background: #0c0d44; -} -.component .situation-content.color2 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.component .situation-content.color2 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #1f1471; -} -.component .situation-content.color2 .attack-link a { - background: #1f1471; -} -.component .situation-content.color3 .line-help { - background: #b17a00; -} -.component .situation-content.color3 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .situation-content.color3 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #dbb200; -} -.component .situation-content.color3 .attack-link a { - background: #dbb200; -} -.component .situation-content.color4 .line-help { - background: #310948; -} -.component .situation-content.color4 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.component .situation-content.color4 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #5a1072; -} -.component .situation-content.color4 .attack-link a { - background: #5a1072; -} -.component .situation-content.color5 .line-help { - background: #24500a; -} -.component .situation-content.color5 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color5 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color5 .attack-link a { - background: #2c7915; -} -.component .situation-content.color6 .line-help { - background: #004948; -} -.component .situation-content.color6 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.component .situation-content.color6 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #076b87; -} -.component .situation-content.color6 .attack-link a { - background: #076b87; -} -.component .situation-content.color7 .line-help { - background: #401b13; -} -.component .situation-content.color7 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.component .situation-content.color7 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #67331d; -} -.component .situation-content.color7 .attack-link a { - background: #67331d; -} -.component .situation-content.color8 .line-help { - background: #c3590b; -} -.component .situation-content.color8 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.component .situation-content.color8 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #d87913; -} -.component .situation-content.color8 .attack-link a { - background: #d87913; -} -.component .situation-content.color9 .line-help { - background: #24500a; -} -.component .situation-content.color9 .commander.full img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.component .situation-content.color9 .commander.full img:hover { - box-shadow: 0 0 10px white, 0 0 0 6px #2c7915; -} -.component .situation-content.color9 .attack-link a { - background: #2c7915; -} -.component .situation-info { - display: table; - width: 100%; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: black; -} -.component .situation-info .item { - display: table-cell; - padding: 10px; - border-right: solid 1px #202020; -} -.component .situation-info .item .value { - font-size: 26px; - font-weight: bold; - display: block; -} -.component .build-item.base-type .desc { - margin: 10px 0 0 0; - padding: 15px; - font-size: 13px; - border-top: solid 1px #202020; - border-bottom: solid 1px #202020; - background: #0A0A0A; -} -.component .build-item.base-type .list-choice { - position: relative; - height: 140px; - background: url('src/desktop/base/type-base.png') no-repeat center; - margin: 0; - border-bottom: solid 1px #202020; -} -.component .build-item.base-type .list-choice button { - position: absolute; - padding: 0; - border: none; - background: transparent; - cursor: pointer; -} -.component .build-item.base-type .list-choice button.item-1 { - top: 35px; - left: 5px; -} -.component .build-item.base-type .list-choice button.item-2 { - top: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-3 { - bottom: 5px; - left: 107px; -} -.component .build-item.base-type .list-choice button.item-4 { - top: 35px; - right: 5px; -} -.component .build-item.base-type .list-choice button img { - display: block; - padding: 8px; - width: 40px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.color1 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #6e161b; -} -.color2 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #1f1471; -} -.color3 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.color4 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #5a1072; -} -.color5 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color6 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #076b87; -} -.color7 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #67331d; -} -.color8 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #d87913; -} -.color9 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #2c7915; -} -.color10 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #760f36; -} -.color11 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #219772; -} -.color12 .component .build-item.base-type .list-choice button.done img { - box-shadow: 0 0 4px white, 0 0 0 2px #dbb200; -} -.component .build-item.base-type .desc-choice { - display: none; -} -.component .build-item.base-type .desc-choice h4 { - border-bottom: solid 1px #202020; - padding: 0 0 5px 0; -} -.component .build-item.base-type .desc-choice p { - text-align: left; - color: #CCC !important; -} -.component .build-item.base-type .desc-choice p strong { - display: block; - color: white; -} -.component .build-item.base-type .desc-choice p strong.short { - display: inline-block; - width: 100px; -} -.component.list-fleet .set-fleet { - position: relative; - margin: 10px; - padding: 0 0 0 70px; - min-height: 80px; -} -.component.list-fleet .set-fleet img.place { - position: absolute; - top: -5px; - left: -20px; - width: 80px; - background: #0A0A0A; - border-radius: 100%; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet h2 { - padding: 10px 0; - margin: 0; -} -.component.list-fleet .set-fleet h2 a { - font-size: 13px; - color: white; - font-weight: normal; - text-decoration: none; -} -.component.list-fleet .set-fleet .item { - position: relative; - height: 60px; - background: #0A0A0A; - border: solid 1px #202020; - border-bottom: none; - width: 777px; -} -.component.list-fleet .set-fleet .item:last-child { - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item a { - display: inline-block; - text-decoration: none; - color: #CCC; - border-bottom: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .left { - position: absolute; - top: 0; - left: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .left .top { - position: absolute; - left: 60px; - display: block; - width: 500px; - top: 10px; -} -.component.list-fleet .set-fleet .item .left .status { - width: 30px; - margin: 10px; - padding: 5px; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .right { - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - z-index: 1; -} -.component.list-fleet .set-fleet .item .right .top { - position: absolute; - right: 60px; - display: block; - width: 200px; - text-align: right; - top: 10px; -} -.component.list-fleet .set-fleet .item .right .cover { - width: 50px; - margin: 5px; - padding: 0; - border-radius: 100%; -} -.component.list-fleet .set-fleet .item .center { - position: absolute; - top: 41px; - left: 70px; - right: 70px; -} -.component.list-fleet .set-fleet .item .center .ship { - position: absolute; - top: -10px; - left: -11px; - right: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship { - display: block; - width: 100%; - background: #4F4F4F; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - position: relative; - display: block; - height: 3px; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar .ship { - top: -11px; - right: -11px; - left: auto; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar span { - position: absolute; - top: 4px; - right: 15px; - font-size: 10px; -} -.component.list-fleet .set-fleet .item.color1 .status { - background: #6e161b; -} -.component.list-fleet .set-fleet .item.color2 .status { - background: #1f1471; -} -.component.list-fleet .set-fleet .item.color3 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color4 .status { - background: #5a1072; -} -.component.list-fleet .set-fleet .item.color5 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color6 .status { - background: #076b87; -} -.component.list-fleet .set-fleet .item.color7 .status { - background: #67331d; -} -.component.list-fleet .set-fleet .item.color8 .status { - background: #d87913; -} -.component.list-fleet .set-fleet .item.color9 .status { - background: #2c7915; -} -.component.list-fleet .set-fleet .item.color10 .status { - background: #760f36; -} -.component.list-fleet .set-fleet .item.color11 .status { - background: #219772; -} -.component.list-fleet .set-fleet .item.color12 .status { - background: #dbb200; -} -.component.list-fleet .set-fleet .item.color1 .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center .progress-ship .bar { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center .progress-ship .bar { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center .progress-ship .bar { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center .progress-ship .bar { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center .progress-ship .bar { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center .progress-ship .bar { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center .progress-ship .bar { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center .progress-ship .bar { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center .progress-ship .bar { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color1 .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item.color2 .center.reversed .progress-ship { - background: #2f23c0; -} -.component.list-fleet .set-fleet .item.color3 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item.color4 .center.reversed .progress-ship { - background: #a935c7; -} -.component.list-fleet .set-fleet .item.color5 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color6 .center.reversed .progress-ship { - background: #05bed7; -} -.component.list-fleet .set-fleet .item.color7 .center.reversed .progress-ship { - background: #ac5832; -} -.component.list-fleet .set-fleet .item.color8 .center.reversed .progress-ship { - background: #f2b636; -} -.component.list-fleet .set-fleet .item.color9 .center.reversed .progress-ship { - background: #57c632; -} -.component.list-fleet .set-fleet .item.color10 .center.reversed .progress-ship { - background: #a92859; -} -.component.list-fleet .set-fleet .item.color11 .center.reversed .progress-ship { - background: #34b089; -} -.component.list-fleet .set-fleet .item.color12 .center.reversed .progress-ship { - background: #ffdb0f; -} -.component.list-fleet .set-fleet .item .center .progress-ship .bar { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship { - background: #b01e2d; -} -.component.list-fleet .set-fleet .item .center.reversed .progress-ship .bar { - background: #4F4F4F; -} -.component.list-fleet .set-fleet .item .show-commander { - position: absolute; - top: -1px; - right: -30px; - width: 28px; - height: 60px; - background: url('src/desktop/mover/small-right.png') no-repeat center #0A0A0A; - border: solid 1px #202020; -} -.component.list-fleet .set-fleet .item .show-commander:hover, -.component.list-fleet .set-fleet .item .show-commander:focus { - background-color: #202020; -} -.component.list-fleet .set-fleet .item .show-commander.active { - background-color: #6e161b; -} -.component.table-fleet table { - margin: 10px; - width: 880px; - border-collapse: collapse; -} -.component.table-fleet table tr:nth-child(odd) { - background: black; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:nth-child(even) { - background: #0A0A0A; - border-bottom: solid 1px #202020; -} -.component.table-fleet table tr:first-child { - background: transparent; -} -.component.table-fleet table th, -.component.table-fleet table td { - height: 40px; - width: 40px; - text-align: center; -} -.component.table-fleet table td span.zero-value { - color: #4F4F4F; -} -.component.table-fleet table .base { - width: 100px; - text-align: left; - padding: 0 20px; -} -.component.table-fleet table .base a { - border: none; -} -.component.table-fleet table .base strong { - display: block; - font-size: 16px; -} -.component.table-fleet table .large { - width: auto; - text-align: left; - padding: 0 10px; -} -.component.table-fleet table .sep { - border-left: solid 1px #6e161b; -} -.component.table-fleet table a { - color: white; - text-decoration: none; - border-bottom: solid 1px #4F4F4F; - display: inline-block; -} -.component.table-fleet table th { - position: relative; - height: 70px; -} -.component.table-fleet table th span { - position: absolute; - bottom: 32px; - left: -10px; - display: block; - text-align: left; - width: 60px; - -ms-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.component.commander-fleet .fleet { - vertical-align: top; - display: block; - text-align: center; -} -.component.commander-fleet .list-ship { - vertical-align: top; - display: inline-block; - width: 148px; -} -.component.commander-fleet .list-ship:first-child { - border-right: dashed 1px #4F4F4F; -} -.component.commander-fleet .list-ship a { - display: block; - position: relative; - margin: 6px; - height: 40px; - background: #202020; - border: solid 1px #4F4F4F; - border-radius: 3px; -} -.component.commander-fleet .list-ship a.empty { - opacity: 0.4; -} -.component.commander-fleet .list-ship img { - position: absolute; - display: inline-block; - width: 40px; -} -.component.commander-fleet .list-ship .text { - position: absolute; - left: 45px; - display: inline-block; - width: 88px; - color: white; -} -.component.commander-fleet .list-ship .text .quantity { - display: block; - font-weight: bold; - font-size: 18px; -} -.component.commander-fleet .army { - border-collapse: collapse; - width: 560px; - margin: 20px; -} -.component.commander-fleet .army td { - width: 65px; - padding: 5px; - border-right: dashed 1px #4F4F4F; - vertical-align: center; -} -.component.commander-fleet .army td:first-child { - width: auto; - vertical-align: top; - text-align: right; - padding: 0 20px; - font-size: 12px; -} -.component.commander-fleet .army tr:first-child td { - text-align: center; - padding: 10px 5px; - font-size: 18px; - font-weight: bold; -} -.component.commander-fleet .army .block { - display: block; - width: 54px; - height: 54px; - margin: 0 0 5px 0; - padding: 5px; - vertical-align: top; - border-radius: 5px; - background: #0A0A0A; - text-align: right; - border: solid 1px #202020; - color: #4F4F4F; -} -.component.commander-fleet .army .block.empty { - background: black; - border: solid 1px #0A0A0A; -} -.component.commander-fleet .army .block strong { - display: block; - font-size: 15px; - height: 38px; - font-weight: bold; -} -.component.commander-fleet .army .block em { - display: block; - padding: 2px; - font-size: 11px; - background: black; - text-align: center; - border-radius: 3px; -} -.component.commander-fleet .army .block.squadron { - border: solid 1px #4F4F4F; - color: white; - cursor: pointer; - background: #6e161b; -} -.component.commander-fleet .army .block.squadron.full0 { - background: url('src/desktop/squadron/squadron0.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full1 { - background: url('src/desktop/squadron/squadron1.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full2 { - background: url('src/desktop/squadron/squadron2.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.full3 { - background: url('src/desktop/squadron/squadron3.png') no-repeat 4px 2px #6e161b; -} -.component.commander-fleet .army .block.squadron.active { - box-shadow: inset 0 0 6px black, - 0 0 2px 0 white; - border: dashed 1px white; -} -.component.report .commander { - position: relative; - display: block; - margin: 10px; - padding: 8px 0 8px 72px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; -} -.component.report .commander img { - position: absolute; - top: 5px; - left: 5px; - padding: 8px; - width: 40px; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -.component.report .commander strong { - display: block; - padding: 0 0 8px 0; - color: white; - font-weight: bold; - font-size: 17px; -} -.component.report .commander em { - display: block; - line-height: 20px; - color: white; - font-style: normal; - color: #efefef; -} -.component.report .commander em .bonus { - font-size: 90%; - margin: 2px 0 0 2px; - padding: 3px 6px; -} -.component.report .dammage { - margin: 10px; - background: black; -} -.component.report .dammage table { - width: 100%; - border-collapse: collapse; - border-left: solid 1px #202020; - border-right: solid 1px #202020; -} -.component.report .dammage td { - border-color: #202020; - border-width: 1px; - border-style: solid dashed; - padding: 4px; - vertical-align: center; - text-align: center; - color: #CCC; - width: 28px; - height: 22px; -} -.component.report .dammage td:first-child { - text-align: left; - padding: 4px 8px; - width: auto; -} -.component.report .dammage td span { - display: inline-block; - background: red; - line-height: 22px; - width: 22px; - border-radius: 3px; - color: white; - background: #510816; -} -.component.topic .message { - position: relative; - padding: 0 0 0 80px; - margin: 10px; - min-height: 70px; -} -.component.topic .message .avatar { - position: absolute; - top: 0; - left: 0; - width: 56px; - padding: 6px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.topic .message .content { - position: relative; - background: black; - border: solid 1px #202020; - border-bottom: solid 1px #0A0A0A; -} -.component.topic .message .content:before { - position: absolute; - content: ''; - top: 25px; - left: -18px; - border-style: solid; - border-width: 9px; - border-color: transparent #202020 transparent transparent; -} -.component.topic .message .content .text { - margin: 0; - padding: 10px 10px 12px 10px; - border-bottom: solid 1px #0A0A0A; - color: #efefef; -} -.component.topic .message .content .text a, -.component.topic .message .content .text strong { - color: white; -} -.component.topic .message .content .text a.color1 { - color: #b01e2d; -} -.component.topic .message .content .text a.color2 { - color: #2f23c0; -} -.component.topic .message .content .text a.color3 { - color: #ffdb0f; -} -.component.topic .message .content .text a.color4 { - color: #a935c7; -} -.component.topic .message .content .text a.color5 { - color: #57c632; -} -.component.topic .message .content .text a.color6 { - color: #05bed7; -} -.component.topic .message .content .text a.color7 { - color: #ac5832; -} -.component.topic .message .content .text a.color8 { - color: #f2b636; -} -.component.topic .message .content .text a.color9 { - color: #57c632; -} -.component.topic .message .content .text a.color10 { - color: #a92859; -} -.component.topic .message .content .text a.color11 { - color: #34b089; -} -.component.topic .message .content .text a.color12 { - color: #ffdb0f; -} -.component.topic .message .content .text .icon-color { - width: 15px; -} -.component.topic .message .content .footer { - margin: 0; - padding: 6px 10px; - font-size: 12px; - color: #CCC; -} -.component.topic .message .content .footer a { - color: #CCC; -} -.component.topic .message.write .content:before { - left: -17px; - top: 11px; - border-color: transparent white transparent transparent; -} -.component.topic .message.write .content textarea { - border: none; - padding: 5px; - width: 487px; - height: 120px; - max-width: 487px; - min-width: 487px; - min-height: 50px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content input { - margin: 6px; - font-family: inherit; -} -.component.topic .message.write .content .title { - border: none; - margin: 0; - padding: 5px; - width: 487px; - height: 30px; - font-family: inherit; - font-size: 13px; -} -.component.topic .message.write .content button { - margin: 6px; - font-family: inherit; - background: #6e161b; - border: none; - padding: 4px 8px; - color: white; - cursor: pointer; -} -.component.topic .message.write .content button:hover, -.component.topic .message.write .content button:focus { - background: #510816; -} -.component.topic .system-message { - position: relative; - padding: 0 0 0 90px; - margin: 10px; -} -.component.topic .system-message:before { - content: ''; - position: absolute; - top: 10px; - left: 0; - height: 1px; - width: 70px; - background: #4F4F4F; -} -.conv-item { - position: relative; - display: block; - border: solid 1px #202020; - border-bottom: none; - background: #0A0A0A; - height: 59px; - padding: 5px 5px 5px 70px; - margin: 0 10px; - color: white; - text-decoration: none; - overflow: hidden; -} -.conv-item .cover { - position: absolute; - display: block; - top: 0; - left: 0; - bottom: 0; - width: 60px; - padding: 5px; -} -.conv-item .cover .picture { - width: 52px; - height: 52px; - background: #202020; - border-radius: 100%; - padding: 4px; -} -.conv-item .cover .picture.color0 { - box-shadow: 0 0 0 2px #4F4F4F; -} -.conv-item .cover .picture.color1 { - box-shadow: 0 0 0 2px #6e161b; -} -.conv-item .cover .picture.color2 { - box-shadow: 0 0 0 2px #1f1471; -} -.conv-item .cover .picture.color3 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .picture.color4 { - box-shadow: 0 0 0 2px #5a1072; -} -.conv-item .cover .picture.color5 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color6 { - box-shadow: 0 0 0 2px #076b87; -} -.conv-item .cover .picture.color7 { - box-shadow: 0 0 0 2px #67331d; -} -.conv-item .cover .picture.color8 { - box-shadow: 0 0 0 2px #d87913; -} -.conv-item .cover .picture.color9 { - box-shadow: 0 0 0 2px #2c7915; -} -.conv-item .cover .picture.color10 { - box-shadow: 0 0 0 2px #760f36; -} -.conv-item .cover .picture.color11 { - box-shadow: 0 0 0 2px #219772; -} -.conv-item .cover .picture.color12 { - box-shadow: 0 0 0 2px #dbb200; -} -.conv-item .cover .number, -.conv-item .cover .new-message { - position: absolute; - width: 22px; - height: 22px; - border-radius: 100%; - background: #0A0A0A; - bottom: 5px; - right: 5px; - border: solid 1px #4F4F4F; - text-align: center; - line-height: 22px; - font-size: 11px; -} -.conv-item .cover .new-message { - left: 5px; - top: 5px; -} -.conv-item .cover .new-message img { - display: block; - width: 18px; - height: 18px; - margin: 2px; -} -.conv-item .data { - line-height: 20px; -} -.conv-item:last-child { - border: solid 1px #202020; -} -.conv-item:hover, -.conv-item:focus { - background: #0C0C0C; -} -.component.player .player { - position: relative; - display: inline-block; - margin: 10px 0 0 10px; - width: 211px; - height: 58px; - padding: 5px 5px 5px 70px; - border: solid 1px #0A0A0A; - border-top: solid 1px #202020; - background: black; - color: white; - text-decoration: none; -} -.component.player .player a { - color: #ccc; - text-decoration: none; - border-bottom: solid 1px #202020; -} -.component.player .player a:hover, -.component.player .player a:focus { - border-color: #4f4f4f; -} -.component.player .player img.picto { - position: absolute; - top: 5px; - left: 5px; - width: 50px; - padding: 4px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -.component.player .player .icon, -.component.player .player .icon-color { - height: 16px; - padding: 1px; -} -.component.player .player span, -.component.player .player strong { - display: block; - line-height: 20px; -} -.component.player .player strong { - font-size: 18px; -} -.component.player .player .online, -.component.player .player .inactive { - position: absolute; - width: 18px; - height: 18px; - background: white; - top: 5px; - right: 5px; - border-radius: 100%; - background: #4F4F4F; -} -.component.player .player .online { - background: #b01e2d; -} -.component.player .player.faction { - border-left: solid 1px #0A0A0A !important; - width: 202px; -} -.component.player .player.faction img { - top: 0; - left: 10px; - padding: 0; - border: none; - border-radius: 0; - background: transparent; -} -.component.player.rank .player { - border-left: solid 10px #4F4F4F; - width: 190px; -} -.component.player.rank .player.color1 { - border-left-color: #b01e2d; -} -.component.player.rank .player.color2 { - border-left-color: #2f23c0; -} -.component.player.rank .player.color3 { - border-left-color: #ffdb0f; -} -.component.player.rank .player.color4 { - border-left-color: #a935c7; -} -.component.player.rank .player.color5 { - border-left-color: #57c632; -} -.component.player.rank .player.color6 { - border-left-color: #05bed7; -} -.component.player.rank .player.color7 { - border-left-color: #ac5832; -} -.component.player.rank .player.color8 { - border-left-color: #f2b636; -} -.component.player.rank .player.color9 { - border-left-color: #57c632; -} -.component.player.rank .player.color10 { - border-left-color: #a92859; -} -.component.player.rank .player.color11 { - border-left-color: #34b089; -} -.component.player.rank .player.color12 { - border-left-color: #ffdb0f; -} -.component.player.rank .player .title, -.component.player.rank .player .points { - color: #BBB; -} -.component.player.rank .player .position { - display: block; - position: absolute; - top: 14px; - right: 14px; - line-height: 38px; - width: 38px; - border: solid 1px #202020; - text-align: center; - border-radius: 100%; -} -.component.player.rank .player .variance { - display: block; - position: absolute; - top: 5px; - right: -4px; - line-height: 26px; - width: 26px; - border: solid 1px #202020; - background: #0A0A0A; - text-align: center; - font-size: 11px; - border-radius: 100%; -} -.component.player.rank .player .variance.lower { - bottom: 5px; - top: auto; -} -.component.player.rank .player.active .position { - background: white; - border: solid 1px white; - color: #202020; -} -.component.player.size2 .player { - width: 208px; -} -.component.player.size1 .player { - width: 202px; -} -.component.transaction .transaction { - background: #0A0A0A; - border: solid 1px #202020; - margin: 10px; -} -.component.transaction .transaction .right-link { - position: absolute; - top: 2px; - right: 5px; - display: block; - color: #FFF; - text-decoration: none; -} -.component.transaction .transaction .product { - position: relative; - height: 70px; - padding: 5px 10px 5px 55px; - cursor: pointer; -} -.component.transaction .transaction .product .picto { - position: absolute; - top: 5px; - left: -20px; - width: 60px; - height: 60px; - padding: 4px; - background: black; - border: solid 1px #202020; - border-radius: 100%; -} -.component.transaction .transaction .product .rate { - position: absolute; - bottom: 5px; - right: 8px; -} -.component.transaction .transaction .product .offer { - overflow: hidden; - height: 32px; -} -.component.transaction .transaction .product .for { - position: relative; - border-top: solid 1px #202020; - margin: 8px 0 6px 0; - color: #4F4F4F; -} -.component.transaction .transaction .product .for span { - display: block; - position: absolute; - top: -10px; - left: 10px; - background: #0A0A0A; - padding: 0 10px; - font-size: 12px; -} -.component.transaction .transaction .product .price { - font-size: 19px; - font-weight: bold; -} -.component.transaction .transaction .product .price .icon-color { - width: 14px; - position: relative; - top: -2px; - padding: 1px; -} -.component.transaction .transaction.resources .product .offer { - font-size: 28px; - font-weight: bold; - line-height: 30px; -} -.component.transaction .transaction.resources .product .offer .icon-color { - width: 20px; - position: relative; - top: -5px; -} -.component.transaction .transaction.commander .product .offer strong, -.component.transaction .transaction.ship .product .offer strong { - display: block; - font-size: 14px; -} -.component.transaction .transaction.commander .product .offer em, -.component.transaction .transaction.ship .product .offer em { - display: block; - font-size: 11px; -} -.component.transaction .transaction .hidden { - display: none; -} -.component.transaction .transaction .info { - position: relative; - border-top: solid 1px #202020; - height: 88px; - background: black; -} -.component.transaction .transaction .info p { - font-size: 11px; - margin: 5px 8px; -} -.component.transaction .transaction .info .seller { - position: absolute; - top: 0; - width: 50%; - bottom: 0; -} -.component.transaction .transaction .info .seller a { - font-weight: bold; - color: white; -} -.component.transaction .transaction .info .seller .color1 { - color: #b01e2d; -} -.component.transaction .transaction .info .seller .color2 { - color: #2f23c0; -} -.component.transaction .transaction .info .seller .color3 { - color: #ffdb0f; -} -.component.transaction .transaction .info .seller .color4 { - color: #a935c7; -} -.component.transaction .transaction .info .seller .color5 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color6 { - color: #05bed7; -} -.component.transaction .transaction .info .seller .color7 { - color: #ac5832; -} -.component.transaction .transaction .info .seller .color8 { - color: #f2b636; -} -.component.transaction .transaction .info .seller .color9 { - color: #57c632; -} -.component.transaction .transaction .info .seller .color10 { - color: #a92859; -} -.component.transaction .transaction .info .seller .color11 { - color: #34b089; -} -.component.transaction .transaction .info .seller .color12 { - color: #ffdb0f; -} -.component.transaction .transaction .info .price-detail { - position: absolute; - top: 0; - width: 50%; - bottom: 0; - right: 0; -} -.component.transaction .transaction .info .price-detail p { - text-align: right; -} -.component.transaction .transaction .info .price-detail p .icon-color { - width: 10px; - padding: 1px; -} -.component.transaction .transaction .info .price-detail p span { - color: #4F4F4F; -} -.component.transaction .transaction .button { - border-top: solid 1px #202020; - padding: 5px; -} -.component.transaction .transaction .button a, -.component.transaction .transaction .button span { - display: block; - padding: 5px 10px; - text-align: right; - color: white; - text-decoration: none; - border-radius: 3px; - line-height: 20px; - background: #202020; - box-shadow: inset 0 0 2px black; -} -.component.transaction .transaction .button a { - background: #6e161b; -} -.component.transaction .transaction .button a:hover { - box-shadow: inset 0 0 6px black; - background: #b01e2d; -} -.component.transaction .transaction .button span { - background: #202020; - cursor: default; -} -.component.transaction .transaction .button .icon-color { - width: 14px; -} -.component.transaction .transaction .shipping { - position: relative; - background: black; - height: 30px; -} -.component.transaction .transaction .shipping .ships { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; -} -.component.transaction .transaction .shipping .ships .icon-color { - position: relative; - width: 16px; - margin-left: 5px; - top: -5px; -} -.component.transaction .transaction .shipping .time { - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 50px; - padding: 0 5px; - line-height: 30px; - text-align: center; - font-size: 12px; -} -.component.transaction .transaction .shipping .progress-container { - position: relative; - display: block; - clear: both; - margin: 0 60px; - height: 3px; - top: 13px; - background: #4F4F4F; -} -.component.transaction .transaction .shipping .progress-bar { - position: absolute; - display: block; - height: 100%; - background: #b01e2d; -} -.component .build-item.disable .button span { - color: #696969; -} -.component.transaction .new-transaction { - width: 279px; - position: absolute; - background: black; - z-index: 1; - padding: 10px; - border-bottom: solid 1px #b01e2d; -} -.component.transaction .new-transaction label { - position: relative; - display: block; - padding: 5px 0; -} -.component.transaction .new-transaction label input { - display: block; - padding: 5px 10px; - margin: 5px 0 0 0; - width: 259px; - border: none; -} -.component.transaction .new-transaction.resources label input { - font-size: 16px; - color: #202020; - font-weight: bold; -} -.component.transaction .new-transaction .indicator { - position: relative; - display: block; - width: 100%; - height: 15px; -} -.component.transaction .new-transaction .indicator span { - position: absolute; - display: inline-block; - padding: 1px 6px; - font-size: 12px; - color: white; - border-radius: 3px; - top: -5px; - background: #510816; -} -.component.transaction .new-transaction .indicator span.min-price { - left: 5px; -} -.component.transaction .new-transaction .indicator span.max-price { - right: 5px; -} -.component.market-sell .body { - padding: 10px 0; -} -.component.market-sell .label-box { - position: relative; - padding: 0 10px; - margin: 10px 0; -} -.component.market-sell .label-box .label { - display: inline-block; - width: 100px; - line-height: 30px; -} -.component.market-sell .label-box .value { - display: inline-block; - width: 147px; - padding: 0 5px; - border: none; - line-height: 30px; - border-radius: 3px; - font-size: 16px; -} -.component.market-sell .label-box input.value { - height: 30px; - background: white; -} -.component.market-sell .label-box .icon-color { - position: absolute; - top: 4px; - right: 16px; - width: 18px; -} -.component.market-sell .queue { - margin: 0 10px; - cursor: pointer; -} -.component.market-sell .sell-form { - background: #0A0A0A; - border: solid 1px #202020; - margin: 0 10px 10px 10px; -} -.component.market-sell .sell-form input[type='submit'] { - display: block; - width: 100%; - margin: 0 0 0 auto; - border: solid 1px #0A0A0A; - padding: 6px 10px; - color: white; - cursor: pointer; - overflow: hidden; - background: #b01e2d; -} -.component.market-sell .sell-form input[type='submit']:hover { - background: #510816; -} -.component.market-sell .sell-form input[disabled='disabled'] { - background: #202020 !important; -} -.wysiwyg { - display: block; - position: relative; -} -.wysiwyg .toolbar { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 5px; -} -.wysiwyg .toolbar button { - display: inline-block; - height: 26px; - line-height: 26px; - padding: 0 4px !important; - margin: 0 4px 0 0 !important; - background: #6e161b; - color: white; - border-radius: 3px; - overflow: hidden; - vertical-align: top; -} -.wysiwyg .modal { - position: absolute; - top: 40px; - left: 10px; - right: 10px; - background: #0A0A0A; - border: solid 1px #202020; - box-shadow: 0 0 15px black; -} -.wysiwyg .modal .header { - position: relative; -} -.wysiwyg .modal .header h2 { - margin: 0; - padding: 0; - line-height: 36px; - padding: 0 10px; - font-size: 16px; - font-weight: normal; -} -.wysiwyg .modal .header .right { - position: absolute; - top: 5px; - right: 10px; - width: 300px; - text-align: right; -} -.wysiwyg .modal .header .right button { - display: inline-block; - width: 26px !important; - height: 26px !important; - line-height: 26px !important<; - font-size: 14px; - padding: 0 !important; - margin: 0 0 0 5px !important; -} -.wysiwyg .modal input { - width: 435px; - border: none; - height: 30px; - margin: 0 10px 10px 10px !important; - padding: 0 10px !important; -} -.wysiwyg textarea { - padding-top: 40px !important; -} -.input-area .wysiwyg .toolbar { - padding: 0; -} -.component.params .checkbox { - display: block; - position: relative; - padding: 10px 10px 10px 40px; - margin: 10px; - background: rgba(0, 0, 0, 0.8); -} -.component.params .checkbox input { - position: absolute; - top: 8px; - left: 10px; -} -#map { - position: absolute; - z-index: 100; - background: url('src/desktop/map/common/map.jpg') repeat black; - padding: 0; - top: 0; - left: 0; -} -#map #sectors { - z-index: 300; -} -#map #spying { - z-index: 400; -} -#map #own-base { - z-index: 500; -} -#map #commercial-routes { - z-index: 600; -} -#map #fleet-movements { - z-index: 700; -} -#map #attacks { - z-index: 800; -} -#map #systems { - z-index: 900; -} -#map #map-info { - z-index: 910; -} -#map > div { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; -} -#map #sectors polygon { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 4 4; - opacity: 0.15; -} -#map #sectors .ally1 { - fill: #6e161b; -} -#map #sectors .ally2 { - fill: #1f1471; -} -#map #sectors .ally3 { - fill: #dbb200; -} -#map #sectors .ally4 { - fill: #5a1072; -} -#map #sectors .ally5 { - fill: #2c7915; -} -#map #sectors .ally6 { - fill: #076b87; -} -#map #sectors .ally7 { - fill: #67331d; -} -#map #sectors .ally8 { - fill: #d87913; -} -#map #sectors .ally9 { - fill: #2c7915; -} -#map #sectors .ally10 { - fill: #760f36; -} -#map #sectors .ally11 { - fill: #219772; -} -#map #sectors .ally12 { - fill: #dbb200; -} -#map #spying circle { - opacity: 0.08; - stroke: white; -} -#map #own-base circle { - opacity: 0.1; - fill: white; -} -#map #commercial-routes line { - stroke: white; - stroke-width: 1px; - stroke-dasharray: 20 5 5 5 5 10; -} -#map #commercial-routes line.standBy { - stroke: rgba(255, 255, 255, 0.3); -} -#map #fleet-movements line { - stroke-width: 1px; -} -#map #fleet-movements line.back { - stroke-dasharray: 15 5; -} -#map #attacks line { - stroke-width: 1px; -} -#map #attacks line.color1 { - stroke: #b01e2d; -} -#map #attacks line.color2 { - stroke: #2f23c0; -} -#map #attacks line.color3 { - stroke: #ffdb0f; -} -#map #attacks line.color4 { - stroke: #a935c7; -} -#map #attacks line.color5 { - stroke: #57c632; -} -#map #attacks line.color6 { - stroke: #05bed7; -} -#map #attacks line.color7 { - stroke: #ac5832; -} -#map #attacks line.color8 { - stroke: #f2b636; -} -#map #attacks line.color9 { - stroke: #57c632; -} -#map #attacks line.color10 { - stroke: #a92859; -} -#map #attacks line.color11 { - stroke: #34b089; -} -#map #attacks line.color12 { - stroke: #ffdb0f; -} -#map #attacks circle.color1 { - fill: #b01e2d; -} -#map #attacks circle.color2 { - fill: #2f23c0; -} -#map #attacks circle.color3 { - fill: #ffdb0f; -} -#map #attacks circle.color4 { - fill: #a935c7; -} -#map #attacks circle.color5 { - fill: #57c632; -} -#map #attacks circle.color6 { - fill: #05bed7; -} -#map #attacks circle.color7 { - fill: #ac5832; -} -#map #attacks circle.color8 { - fill: #f2b636; -} -#map #attacks circle.color9 { - fill: #57c632; -} -#map #attacks circle.color10 { - fill: #a92859; -} -#map #attacks circle.color11 { - fill: #34b089; -} -#map #attacks circle.color12 { - fill: #ffdb0f; -} -#map #systems a { - display: block; - position: absolute; - border-radius: 100%; -} -#map #systems a.active { - background: black; - box-shadow: 0 0 0 1px black, - 0 0 0 3px white, - 0 0 10px 8px black; -} -#map #systems a img { - display: block; - width: 20px; - height: 20px; - border: none; - border-radius: 100%; - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - -ms-border-radius: 100%; - -o-border-radius: 100%; -} -#map #systems a img.own { - background: white; -} -#map #systems .sector-number { - position: absolute; - display: block; - font-size: 22px; - line-height: 40px; - width: 40px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 0 5px #0A0A0A, 0 0 0 6px #4F4F4F; - background: #202020; - color: white; - font-weight: bold; - cursor: pointer; -} -#map #systems .sector-number.color1 { - background: #6e161b; -} -#map #systems .sector-number.color2 { - background: #1f1471; -} -#map #systems .sector-number.color3 { - background: #dbb200; -} -#map #systems .sector-number.color4 { - background: #5a1072; -} -#map #systems .sector-number.color5 { - background: #2c7915; -} -#map #systems .sector-number.color6 { - background: #076b87; -} -#map #systems .sector-number.color7 { - background: #67331d; -} -#map #systems .sector-number.color8 { - background: #d87913; -} -#map #systems .sector-number.color9 { - background: #2c7915; -} -#map #systems .sector-number.color10 { - background: #760f36; -} -#map #systems .sector-number.color11 { - background: #219772; -} -#map #systems .sector-number.color12 { - background: #dbb200; -} -#map #systems .sector-info { - display: none; - position: absolute; - color: white; - background: black; - background: rgba(0, 0, 0, 0.9); - padding: 8px 16px; - border-radius: 3px; -} -#map #systems .sector-info:before { - content: ''; - position: absolute; - left: -20px; - top: 20px; - border-style: solid; - border-width: 10px; - border-color: transparent black transparent transparent; - border-color: transparent rgba(0, 0, 0, 0.9) transparent transparent; -} -#map #systems .sector-info h2 { - position: relative; - font-size: 40px; - font-weight: bold; - line-height: 40px; - text-shadow: 0 0 5px black; - margin: 0; - padding: 0; -} -#map #systems .sector-info p { - font-size: 13px; - margin: 6px 0 0 0; - padding: 0; - font-weight: bold; - font-variant: small-caps; -} -#map #systems .sector-info p a { - position: static; - display: inline-block; - color: white; - background: #202020; - border-radius: 3px; - line-height: 20px; - width: 20px; - text-align: center; - text-decoration: none; - border: solid 1px rgba(255, 255, 255, 0.5); - margin: 0 5px 0 0; -} -#map #systems .sector-info.color1 p a { - background: #6e161b; -} -#map #systems .sector-info.color2 p a { - background: #1f1471; -} -#map #systems .sector-info.color3 p a { - background: #dbb200; -} -#map #systems .sector-info.color4 p a { - background: #5a1072; -} -#map #systems .sector-info.color5 p a { - background: #2c7915; -} -#map #systems .sector-info.color6 p a { - background: #076b87; -} -#map #systems .sector-info.color7 p a { - background: #67331d; -} -#map #systems .sector-info.color8 p a { - background: #d87913; -} -#map #systems .sector-info.color9 p a { - background: #2c7915; -} -#map #systems .sector-info.color10 p a { - background: #760f36; -} -#map #systems .sector-info.color11 p a { - background: #219772; -} -#map #systems .sector-info.color12 p a { - background: #dbb200; -} -#map #map-info { - display: none; - position: absolute; - top: 0px; - right: 0px; - left: auto; - bottom: auto; - height: auto; - width: auto; - margin: 40px 60px 0 0; - color: white; - text-align: right; -} -#map #map-info h2 { - margin: 0; - padding: 0 20px; - font-size: 38px; - line-height: 60px; -} -#map #map-info h3 { - margin: 0; - padding: 0 20px; - font-size: 16px; - font-weight: normal; - line-height: 40px; -} -#map #map-info ul { - margin: 10px 0; - padding: 0; - list-style: none; -} -#map #map-info ul li { - position: relative; - margin: 0; - padding: 0 40px 0 0; - line-height: 20px; - height: 20px; - font-style: italic; - color: #CCC; - font-size: 13px; -} -#map #map-info ul li img { - position: absolute; - right: 10px; - top: 0px; -} -#map #spying circle { - fill: #6e161b; -} -#map #fleet-movements line { - stroke: #b01e2d; -} -#map #fleet-movements circle { - fill: #b01e2d; -} -#map-option { - z-index: 1000; - position: absolute; - display: inline-block; - height: 32px; - padding: 3px 0; - background: url('src/desktop/map/bOption.png') repeat-x; - top: 30px; - right: 20px; -} -#map-option:before { - content: ''; - position: absolute; - display: block; - left: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bLeftOption.png'); -} -#map-option:after { - content: ''; - position: absolute; - display: block; - right: -10px; - top: 0; - height: 38px; - width: 10px; - background: url('src/desktop/map/bRightOption.png'); -} -#map-option a { - position: relative; - display: inline-block; - height: 30px; - width: 30px; - margin: 1px 0 1px 1px; - background: #0A0A0A; -} -#map-option a.active { - background: #004948; -} -#map-option a img { - position: absolute; - top: 5px; - left: 5px; - width: 22px; -} -.color1 #map-option a.active { - background: #510816; -} -.color2 #map-option a.active { - background: #0c0d44; -} -.color3 #map-option a.active { - background: #b17a00; -} -.color4 #map-option a.active { - background: #310948; -} -.color5 #map-option a.active { - background: #24500a; -} -.color6 #map-option a.active { - background: #004948; -} -.color7 #map-option a.active { - background: #401b13; -} -.color8 #map-option a.active { - background: #c3590b; -} -.color9 #map-option a.active { - background: #24500a; -} -.color10 #map-option a.active { - background: #4d0621; -} -.color11 #map-option a.active { - background: #10684c; -} -.color12 #map-option a.active { - background: #b17a00; -} -#map-content { - z-index: 1000; - position: absolute; - top: 80px; - right: 20px; - display: block; -} -#map-content .mini-map { - position: relative; - width: 300px; - height: 300px; - overflow: hidden; - border: solid 1px #202020; - background: url('src/desktop/map/common/galaxy.jpg') no-repeat #0A0A0A; -} -#map-content .mini-map polygon { - stroke: white; - stroke-width: .5px; - opacity: 0.3; -} -#map-content .mini-map polygon:focus, -#map-content .mini-map polygon:hover { - opacity: 0.1; - cursor: pointer; -} -#map-content .mini-map polygon.ally0 { - fill: #202020; -} -#map-content .mini-map polygon.ally1 { - fill: #6e161b; -} -#map-content .mini-map polygon.ally2 { - fill: #1f1471; -} -#map-content .mini-map polygon.ally3 { - fill: #dbb200; -} -#map-content .mini-map polygon.ally4 { - fill: #5a1072; -} -#map-content .mini-map polygon.ally5 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally6 { - fill: #076b87; -} -#map-content .mini-map polygon.ally7 { - fill: #67331d; -} -#map-content .mini-map polygon.ally8 { - fill: #d87913; -} -#map-content .mini-map polygon.ally9 { - fill: #2c7915; -} -#map-content .mini-map polygon.ally10 { - fill: #760f36; -} -#map-content .mini-map polygon.ally11 { - fill: #219772; -} -#map-content .mini-map polygon.ally12 { - fill: #dbb200; -} -#map-content .mini-map .number { - position: absolute; - z-index: 600; - top: 0; - left: 0; -} -#map-content .mini-map .sectors { - z-index: 500; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases { - z-index: 400; - position: absolute; - top: 0; - left: 0; -} -#map-content .mini-map .bases circle { - fill: rgba(255, 255, 255, 0.2); - stroke: white; -} -#map-content .mini-map .viewport { - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.1); - border: solid 1px white; - border-radius: 3px; -} -#map-content .mini-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 11px; -} -.map-movers { - display: none; - position: absolute; - z-index: 900; - background-repeat: no-repeat; - background-position: center; -} -#coord-box { - z-index: 1000; - position: absolute; - bottom: 20px; - right: 20px; - width: 80px; - padding: 5px 10px; - background: rgba(0, 0, 0, 0.8); - color: white; - font-size: 20px; - text-align: center; -} -.tactical-map { - margin: 10px; - position: relative; - background: url('src/desktop/map/common/galaxy-large.jpg') repeat #0A0A0A; -} -.tactical-map polygon { - stroke: white; - stroke-width: .30px; - opacity: 0.15; -} -.tactical-map polygon.enabled { - position: relative; - stroke-width: 2px; - opacity: 0.80; - z-index: 1; -} -.tactical-map polygon.enabled.ally1 { - stroke: #510816; -} -.tactical-map polygon.enabled.ally2 { - stroke: #0c0d44; -} -.tactical-map polygon.enabled.ally3 { - stroke: #b17a00; -} -.tactical-map polygon.enabled.ally4 { - stroke: #310948; -} -.tactical-map polygon.enabled.ally5 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally6 { - stroke: #004948; -} -.tactical-map polygon.enabled.ally7 { - stroke: #401b13; -} -.tactical-map polygon.enabled.ally8 { - stroke: #c3590b; -} -.tactical-map polygon.enabled.ally9 { - stroke: #24500a; -} -.tactical-map polygon.enabled.ally10 { - stroke: #4d0621; -} -.tactical-map polygon.enabled.ally11 { - stroke: #10684c; -} -.tactical-map polygon.enabled.ally12 { - stroke: #b17a00; -} -.tactical-map polygon.ally0 { - fill: #202020; -} -.tactical-map polygon.ally1 { - fill: #6e161b; -} -.tactical-map polygon.ally2 { - fill: #1f1471; -} -.tactical-map polygon.ally3 { - fill: #dbb200; -} -.tactical-map polygon.ally4 { - fill: #5a1072; -} -.tactical-map polygon.ally5 { - fill: #2c7915; -} -.tactical-map polygon.ally6 { - fill: #076b87; -} -.tactical-map polygon.ally7 { - fill: #67331d; -} -.tactical-map polygon.ally8 { - fill: #d87913; -} -.tactical-map polygon.ally9 { - fill: #2c7915; -} -.tactical-map polygon.ally10 { - fill: #760f36; -} -.tactical-map polygon.ally11 { - fill: #219772; -} -.tactical-map polygon.ally12 { - fill: #dbb200; -} -.tactical-map .number { - position: absolute; - z-index: 800; - top: 0; - left: 0; -} -.tactical-map .number span { - position: absolute; - color: rgba(255, 255, 255, 0.8); - font-size: 12px; - line-height: 22px; - width: 22px; - text-align: center; - border-radius: 100%; - box-shadow: 0 0 1px white; -} -.tactical-map .number span.ally0 { - background: #0A0A0A; -} -.tactical-map .number span.ally1 { - background: #510816; -} -.tactical-map .number span.ally2 { - background: #0c0d44; -} -.tactical-map .number span.ally3 { - background: #b17a00; -} -.tactical-map .number span.ally4 { - background: #310948; -} -.tactical-map .number span.ally5 { - background: #24500a; -} -.tactical-map .number span.ally6 { - background: #004948; -} -.tactical-map .number span.ally7 { - background: #401b13; -} -.tactical-map .number span.ally8 { - background: #c3590b; -} -.tactical-map .number span.ally9 { - background: #24500a; -} -.tactical-map .number span.ally10 { - background: #4d0621; -} -.tactical-map .number span.ally11 { - background: #10684c; -} -.tactical-map .number span.ally12 { - background: #b17a00; -} -.tactical-map .number span.active { - background: white; - color: black; - box-shadow: 0 0 10px black; -} -.tactical-map.reactive polygon.enabled:hover, -.tactical-map.reactive polygon.enabled.active { - cursor: pointer; -} -.tactical-map.reactive polygon.enabled:hover.ally1, -.tactical-map.reactive polygon.enabled.active.ally1 { - fill: #510816; -} -.tactical-map.reactive polygon.enabled:hover.ally2, -.tactical-map.reactive polygon.enabled.active.ally2 { - fill: #0c0d44; -} -.tactical-map.reactive polygon.enabled:hover.ally3, -.tactical-map.reactive polygon.enabled.active.ally3 { - fill: #b17a00; -} -.tactical-map.reactive polygon.enabled:hover.ally4, -.tactical-map.reactive polygon.enabled.active.ally4 { - fill: #310948; -} -.tactical-map.reactive polygon.enabled:hover.ally5, -.tactical-map.reactive polygon.enabled.active.ally5 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally6, -.tactical-map.reactive polygon.enabled.active.ally6 { - fill: #004948; -} -.tactical-map.reactive polygon.enabled:hover.ally7, -.tactical-map.reactive polygon.enabled.active.ally7 { - fill: #401b13; -} -.tactical-map.reactive polygon.enabled:hover.ally8, -.tactical-map.reactive polygon.enabled.active.ally8 { - fill: #c3590b; -} -.tactical-map.reactive polygon.enabled:hover.ally9, -.tactical-map.reactive polygon.enabled.active.ally9 { - fill: #24500a; -} -.tactical-map.reactive polygon.enabled:hover.ally10, -.tactical-map.reactive polygon.enabled.active.ally10 { - fill: #4d0621; -} -.tactical-map.reactive polygon.enabled:hover.ally11, -.tactical-map.reactive polygon.enabled.active.ally11 { - fill: #10684c; -} -.tactical-map.reactive polygon.enabled:hover.ally12, -.tactical-map.reactive polygon.enabled.active.ally12 { - fill: #b17a00; -} -#action-box { - display: block; - z-index: 1100; - position: absolute; - width: 100%; - height: 300px; - bottom: -300px; - left: 0; - border-top: solid 1px #0A0A0A; - background: black; - box-shadow: 0 0 15px black; -} -#action-box .header { - position: relative; - background: black; - border-bottom: solid 1px #202020; - height: 36px; - color: #EFEFEF; -} -#action-box .header ul { - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .header ul li { - display: inline-block; - line-height: 36px; - padding: 0 10px; - color: #CCC; - border-right: solid 1px #202020; -} -#action-box .header ul li a { - display: inline-block; - line-height: 24px; - margin: 3px 0; - padding: 0 6px; - text-decoration: none; - color: #CCC; - background: #0A0A0A; - border: solid 1px #202020; - border-right: none; - color: #8F8F8F; -} -#action-box .header ul li a:first-child { - border-radius: 3px 0 0 3px; -} -#action-box .header ul li a:last-child { - border-right: solid 1px #202020; - border-radius: 0 3px 3px 0; -} -#action-box .header ul li a:hover, -#action-box .header ul li a:focus { - background: #202020; - color: white; -} -#action-box .header ul li a.active { - color: white; - position: relative; - z-index: 1; - background: #510816; -} -#action-box .header ul li img { - position: relative; - top: 5px; - width: 20px; - border-radius: 100%; -} -#action-box .header .button { - position: absolute; - top: 7px; - right: 10px; - line-height: 22px; - width: 22px; - text-align: center; - background: #202020; - border-radius: 3px; - text-decoration: none; - text-transform: uppercase; - color: white; -} -#action-box .header .button:focus, -#action-box .header .button:hover { - background: #4F4F4F; -} -#action-box .body { - position: relative; - overflow: hidden; - width: 100%; - height: 263px; - background: url('src/desktop/map/common/bLine.jpg') repeat-x center #080808; -} -#action-box .actbox-movers { - position: absolute; - display: block; - width: 60px; - height: 263px; - z-index: 1103; - -webkit-transition: all linear 100ms; - -moz-transition: all linear 100ms; - -ms-transition: all linear 100ms; - -o-transition: all linear 100ms; - transition: all linear 100ms; -} -#action-box .actbox-movers:hover, -#action-box .actbox-movers:focus { - background-color: rgba(255, 255, 255, 0.05); -} -#action-box .actbox-movers:active { - background-color: rgba(255, 255, 255, 0.15); -} -#action-box .actbox-movers#actboxToLeft { - background: url('src/desktop/mover/left.png') no-repeat center; -} -#action-box .actbox-movers#actboxToRight { - top: 0; - right: 0; - background: url('src/desktop/mover/right.png') no-repeat center; -} -#action-box .body .system { - position: absolute; - top: 0; - left: 0; - height: 263px; - width: 3000px; -} -#action-box .body .system ul { - display: inline-block; - list-style: none inset; - margin: 0; - padding: 0; -} -#action-box .body .system ul li { - display: inline-block; -} -#action-box .body .system ul li.place a, -#action-box .body .system ul li.action { - width: 100px; - height: 260px; - border-top: solid 3px white; - position: relative; -} -#action-box .body .system ul li.place.color1 a, -#action-box .body .system ul li.action.color1 { - border-top-color: #6e161b; -} -#action-box .body .system ul li.place.color2 a, -#action-box .body .system ul li.action.color2 { - border-top-color: #1f1471; -} -#action-box .body .system ul li.place.color3 a, -#action-box .body .system ul li.action.color3 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.place.color4 a, -#action-box .body .system ul li.action.color4 { - border-top-color: #5a1072; -} -#action-box .body .system ul li.place.color5 a, -#action-box .body .system ul li.action.color5 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color6 a, -#action-box .body .system ul li.action.color6 { - border-top-color: #076b87; -} -#action-box .body .system ul li.place.color7 a, -#action-box .body .system ul li.action.color7 { - border-top-color: #67331d; -} -#action-box .body .system ul li.place.color8 a, -#action-box .body .system ul li.action.color8 { - border-top-color: #d87913; -} -#action-box .body .system ul li.place.color9 a, -#action-box .body .system ul li.action.color9 { - border-top-color: #2c7915; -} -#action-box .body .system ul li.place.color10 a, -#action-box .body .system ul li.action.color10 { - border-top-color: #760f36; -} -#action-box .body .system ul li.place.color11 a, -#action-box .body .system ul li.action.color11 { - border-top-color: #219772; -} -#action-box .body .system ul li.place.color12 a, -#action-box .body .system ul li.action.color12 { - border-top-color: #dbb200; -} -#action-box .body .system ul li.star { - width: 300px; - height: 263px; - border-left: solid 1px #0F0F0F; - background: url('src/desktop/map/systems/default.png') no-repeat center center; -} -#action-box .body .system ul li.place a { - display: block; - border-left: solid 1px #0F0F0F; - text-align: center; -} -#action-box .body .system ul li.place a strong { - position: absolute; - bottom: 8px; - left: 10px; - font-size: 18px; - font-weight: bold; - color: white; -} -#action-box .body .system ul li.place a .land { - position: absolute; - z-index: 1102; - top: 88px; - left: 10px; - width: 80px; - border-radius: 100%; -} -#action-box .body .system ul li.place.active a .land { - box-shadow: 0 0 0 1px #202020; - background: #080808; -} -#action-box .body .system ul li.place a .avatar { - position: absolute; - z-index: 1101; - top: 10px; - left: 20px; - padding: 7px; - border: solid 1px #0F0F0F; - background: black; - width: 47px; - border-radius: 100%; -} -#action-box .body .system ul li.action { - width: 0px; - overflow: hidden; -} -#action-box .body .system ul li.action .content { - position: absolute; - top: 9px; - left: 12px; - height: 240px; - width: 545px; - background: #111111; - border: solid 1px #202020; - box-shadow: inset 0 0 5px black; - border-radius: 3px; -} -#action-box .body .system ul li.action .content:before { - content: ''; - position: absolute; - top: 107px; - left: -24px; - border-width: 12px; - border-style: solid; - border-color: transparent #202020 transparent transparent; -} -#action-box .body .system ul li.action .content .column { - position: relative; - display: inline-block; - vertical-align: top; - height: 240px; - border-right: solid 1px #202020; - color: white; -} -#action-box .body .system ul li.action .content .column .last-spy-link { - position: absolute; - top: 6px; - right: 8px; - opacity: .5; - -webkit-transition: all linear 250ms; - -moz-transition: all linear 250ms; - -ms-transition: all linear 250ms; - -o-transition: all linear 250ms; - transition: all linear 250ms; -} -#action-box .body .system ul li.action .content .column .last-spy-link:hover, -#action-box .body .system ul li.action .content .column .last-spy-link:focus { - opacity: 1; -} -#action-box .body .system ul li.action .content .column.info { - width: 199px; -} -#action-box .body .system ul li.action .content .column.act { - width: 345px; - border-right: none; -} -#action-box .body .system ul li.action .content .column p { - margin: 2px 10px; -} -#action-box .body .system ul li.action .content .column a { - color: white; -} -#action-box .body .system ul li.action .content .column hr { - margin: 8px 10px; - border: none; - background: none; - border-bottom: solid 1px #202020; -} -#action-box .body .system ul li.action .content .column strong { - line-height: 30px; -} -#action-box .body .system ul li.action .content .column.info strong { - line-height: 28px; - font-size: 18px; -} -#action-box .body .system ul li.action .content .column .label { - display: inline-block; - width: 78px; - font-size: 12px; -} -#action-box .body .system ul li.action .content .column .value { - display: inline-block; - width: 100px; - text-align: left; -} -#action-box .body .system ul li.action .content .column .value .icon, -#action-box .body .system ul li.action .content .column .value .icon-color { - width: 18px; - height: 18px; - padding: 1px; -} -#action-box .body .system ul li.action .content .column.act .top .grey { - opacity: .4; -} -#action-box .body .system ul li.action .content .column.act .top img { - width: 45px; - padding: 8px; - margin: 0 4px 2px 0; - border: solid 1px #202020; - background: #0A0A0A; - border-radius: 100%; -} -#action-box .body .system ul li.action .content .column .top, -#action-box .body .system ul li.action .content .column .bottom { - padding: 5px; -} -#action-box .body .system ul li.action .box { - display: none; - position: absolute; - left: 10px; - right: 10px; - bottom: 10px; - top: 80px; - background: black; - border-radius: 3px; -} -#action-box .body .system ul li.action .box:nth-child(1) { - display: block; -} -#action-box .body .system ul li.action .box:before { - content: ''; - position: absolute; - top: -20px; - border-style: solid; - border-width: 10px; - border-color: transparent transparent black transparent; -} -#action-box .body .system ul li.action .box:nth-child(1):before { - left: 15px; -} -#action-box .body .system ul li.action .box:nth-child(2):before { - left: 84px; -} -#action-box .body .system ul li.action .box:nth-child(3):before { - left: 152px; -} -#action-box .body .system ul li.action .box:nth-child(4):before { - left: 218px; -} -#action-box .body .system ul li.action .box:nth-child(5):before { - left: 284px; -} -#action-box .body .system ul li.action .box h2 { - margin: 0; - padding: 0 11px; - line-height: 35px; - font-size: 15px; -} -#action-box .body .system ul li.action .box .box-content { - position: absolute; - top: 35px; - left: 0; - right: 0; - bottom: 0; - border-radius: 0 0 3px 3px; - padding: 8px 10px; - background: #080808; - border: solid 1px black; - overflow: hidden; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item { - display: none; -} -#action-box .body .system ul li.action .box .box-content .commander-tile .item.no-commander { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button { - display: inline-block; - width: 100px; - text-decoration: none; - margin: 8px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button .picto { - float: left; - width: 30px; - height: 30px; - margin: 0 5px 0 0; -} -#action-box .body .system ul li.action .box .box-content .spy-button span { - display: block; -} -#action-box .body .system ul li.action .box .box-content .spy-button .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .spy-form { - margin-top: 10px; -} -#action-box .body .system ul li.action .box .box-content .spy-form input { - width: 187px; - padding: 7px; - border: none; - background: white; - border-radius: 3px 0 0 3px; -} -#action-box .body .system ul li.action .box .box-content .spy-form button { - width: 100px; - padding: 6px 6px; - border: none; - color: white; - background: #6e161b; - cursor: pointer; - border-radius: 0 3px 3px 0; -} -#action-box .body .system ul li.action .box .box-content .spy-form button:hover, -#action-box .body .system ul li.action .box .box-content .spy-form button:focus { - background: #510816; -} -#action-box .body .system ul li.action .box .box-content .label-box { - display: inline-block; - width: 50%; - margin: 5px 0; -} -#action-box .body .system ul li.action .box .box-content .label-box .key { - display: block; -} -#action-box .body .system ul li.action .box .box-content .label-box .val { - display: block; - font-size: 18px; - font-weight: bold; -} -#action-box .body .system ul li.action .box .box-content .rc { - margin: 5px 0 0 0; - padding: 10px 10px 0 50px; - border-top: solid 1px #202020; -} -#action-box .body .system ul li.action .box .box-content .rc .planet { - position: absolute; - top: -25px; - left: -25px; - width: 76px; - height: 76px; - border: solid 1px #202020; - border-radius: 100%; - background: black; -} -#action-box .body .system ul li.action .box .box-content .icon-color { - width: 14px; - height: 14px; - padding: 1px; -} -#action-box .body .system ul li.action .box .box-content .button { - display: inline-block; - background: #202020; - border: solid 1px #4F4F4F; - line-height: 26px; - margin: 5px 0 0 0; - padding: 0 8px; - text-align: center; - text-decoration: none; -} -#action-box .body .system ul li.action .box .box-content a.button { - background: #6e161b; - border: #510816; -} -#action-box .body .system ul li.action .box .box-content a.button:hover, -#action-box .body .system ul li.action .box .box-content a.button:focus { - background: #510816; -} -.component.admin table { - margin: 10px; - border-collapse: collapse; - width: 877px; -} -.component.admin table tr { - border-bottom: solid 1px #202020; -} -.component.admin table td { - padding: 5px 10px; - vertical-align: top; -} -.component.admin table .button { - display: inline-block; - padding: 0 5px; - line-height: 25px; - min-width: 15px; - text-align: center; - color: white; - border-radius: 3px; - background: #4F4F4F; - text-decoration: none; -} -.component.admin table td:nth-child(1) { - width: 50px; -} -.component.admin table td:nth-child(2) { - width: 100px; -} -.component.admin table td:nth-child(3) { - width: auto; -} -.component.admin table td:nth-child(4) { - width: 80px; -} -.on-off-button { - display: block; - width: auto; - margin: 10px 10px 0 10px; - line-height: 30px; - padding: 0 10px; - background: #6e161b; - border: solid 1px #510816; - border-radius: 3px; - color: white; - text-decoration: none; - cursor: pointer; -} -.on-off-button:hover, -.on-off-button:focus { - background: #510816; - border-color: #6e161b; -} -.on-off-button.disabled { - background: #202020; - border-color: #4F4F4F; -} -.inscription { - /* SUBNAV */ - /* ALLY */ -} -.inscription #nav .box.left span { - display: inline-block; - line-height: 32px; - padding: 0 10px; - margin: 5px 2px; - font-size: 14px; - width: 80px; - text-align: center; - color: #4f4f4f; - text-decoration: none; - font-variant: small-caps; -} -.inscription #nav .box.left span.active { - color: white; -} -.inscription #nav .box.right { - display: none; -} -.inscription #inscription-subnav { - position: fixed; - top: 45px; - left: 0; - width: 210px; - margin: 0 20px 0 60px; - z-index: 500; -} -.inscription #inscription-subnav .bind { - height: 15px; - background: url('src/desktop/inscriptionSubnav/bBind.png') no-repeat center; -} -.inscription #inscription-subnav .head { - position: relative; - height: 214px; - background: url('src/desktop/inscriptionSubnav/bHead.png') no-repeat center; -} -.inscription #inscription-subnav .head h2 { - position: absolute; - margin: 0; - padding: 0; - top: 5px; - font-weight: bold; - font-size: 16px; - line-height: 24px; - width: 210px; - overflow: hidden; - text-align: center; - color: white; -} -.inscription #inscription-subnav .head img { - position: absolute; - top: 43px; - left: 28px; - width: 125px; - height: 125px; - background: #0A0A0A; -} -.inscription #inscription-subnav .head .level { - position: absolute; - display: block; - bottom: 15px; - left: 0; - width: 100%; - font-size: 20px; - line-height: 41px; - color: white; - text-align: center; - background: url('src/desktop/inscriptionSubnav/bLevel.png') no-repeat center; -} -.inscription #inscription-subnav .head .experience { - position: absolute; - display: inline-block; - top: 50px; - right: 32px; - width: 21px; - height: 112px; -} -.inscription #inscription-subnav .head .experience .value { - position: absolute; - display: block; - width: 100%; - bottom: 0; - border-radius: 3px; -} -.inscription #inscription-subnav .foot { - height: 290px; -} -.inscription #movers .toLeft { - left: 0 !important; -} -.inscription .component.inscription img.color1 { - background: #6e161b !important; -} -.inscription .component.inscription img.color2 { - background: #1f1471 !important; -} -.inscription .component.inscription img.color3 { - background: #dbb200 !important; -} -.inscription .component.inscription img.color4 { - background: #5a1072 !important; -} -.inscription .component.inscription img.color5 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color6 { - background: #076b87 !important; -} -.inscription .component.inscription img.color7 { - background: #67331d !important; -} -.inscription .component.inscription img.color8 { - background: #d87913 !important; -} -.inscription .component.inscription img.color9 { - background: #2c7915 !important; -} -.inscription .component.inscription img.color10 { - background: #760f36 !important; -} -.inscription .component.inscription img.color11 { - background: #219772 !important; -} -.inscription .component.inscription img.color12 { - background: #dbb200 !important; -} -.inscription .component.inscription .chooseLink { - display: block; - margin: 10px; - padding: 10px 60px 10px 20px; - background: url('src/desktop/mover/right.png') no-repeat 235px center #CCC; - text-decoration: none; - color: white; - text-shadow: 0 0 2px black; - border: solid 1px #202020; - cursor: pointer; - -webkit-transition: all linear 200ms; - -moz-transition: all linear 200ms; - -ms-transition: all linear 200ms; - -o-transition: all linear 200ms; - transition: all linear 200ms; -} -.inscription .component.inscription .chooseLink:focus, -.inscription .component.inscription .chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); -} -.inscription .component.inscription button.chooseLink { - width: 277px; - text-align: left; -} -.inscription .component.inscription.color1 .chooseLink { - background-color: #6e161b; -} -.inscription .component.inscription.color2 .chooseLink { - background-color: #1f1471; -} -.inscription .component.inscription.color3 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color4 .chooseLink { - background-color: #5a1072; -} -.inscription .component.inscription.color5 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color6 .chooseLink { - background-color: #076b87; -} -.inscription .component.inscription.color7 .chooseLink { - background-color: #67331d; -} -.inscription .component.inscription.color8 .chooseLink { - background-color: #d87913; -} -.inscription .component.inscription.color9 .chooseLink { - background-color: #2c7915; -} -.inscription .component.inscription.color10 .chooseLink { - background-color: #760f36; -} -.inscription .component.inscription.color11 .chooseLink { - background-color: #219772; -} -.inscription .component.inscription.color12 .chooseLink { - background-color: #dbb200; -} -.inscription .component.inscription.color1 .chooseLink:hover, -.inscription .component.inscription.color1 .chooseLink:focus { - background-color: #510816; -} -.inscription .component.inscription.color2 .chooseLink:hover, -.inscription .component.inscription.color2 .chooseLink:focus { - background-color: #0c0d44; -} -.inscription .component.inscription.color3 .chooseLink:hover, -.inscription .component.inscription.color3 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription.color4 .chooseLink:hover, -.inscription .component.inscription.color4 .chooseLink:focus { - background-color: #310948; -} -.inscription .component.inscription.color5 .chooseLink:hover, -.inscription .component.inscription.color5 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color6 .chooseLink:hover, -.inscription .component.inscription.color6 .chooseLink:focus { - background-color: #004948; -} -.inscription .component.inscription.color7 .chooseLink:hover, -.inscription .component.inscription.color7 .chooseLink:focus { - background-color: #401b13; -} -.inscription .component.inscription.color8 .chooseLink:hover, -.inscription .component.inscription.color8 .chooseLink:focus { - background-color: #c3590b; -} -.inscription .component.inscription.color9 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #24500a; -} -.inscription .component.inscription.color10 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #4d0621; -} -.inscription .component.inscription.color11 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #10684c; -} -.inscription .component.inscription.color12 .chooseLink:hover, -.inscription .component.inscription.color9 .chooseLink:focus { - background-color: #b17a00; -} -.inscription .component.inscription .chooseLink strong { - display: block; - font-size: 15px; - border-bottom: solid 1px rgba(255, 255, 255, 0.25); - padding: 0 0 5px 0; - margin: 0 0 5px 0; -} -.inscription .component.inscription .chooseLink em { - font-style: normal; -} -.inscription .component.inscription span.chooseLink { - background: #202020 !important; - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); - cursor: auto; - padding: 10px; -} -.inscription .component.inscription span.chooseLink:focus, -.inscription .component.inscription span.chooseLink:hover { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.25); -} -.inscription .component.inscription blockquote { - line-height: 200%; -} -.inscription .component.inscription #pseudo, -.inscription .component.inscription #base { - position: relative; - width: 100%; - border: none; - padding: 12px 0; - margin: 0; - text-align: center; - font-size: 26px; - font-weight: bold; - background: white; - border-radius: 3px; -} -.inscription .component.inscription.color1 #pseudo { - color: #510816; -} -.inscription .component.inscription.color2 #pseudo { - color: #0c0d44; -} -.inscription .component.inscription.color3 #pseudo { - color: #b17a00; -} -.inscription .component.inscription.color4 #pseudo { - color: #310948; -} -.inscription .component.inscription.color5 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color6 #pseudo { - color: #004948; -} -.inscription .component.inscription.color7 #pseudo { - color: #401b13; -} -.inscription .component.inscription.color8 #pseudo { - color: #c3590b; -} -.inscription .component.inscription.color9 #pseudo { - color: #24500a; -} -.inscription .component.inscription.color10 #pseudo { - color: #4d0621; -} -.inscription .component.inscription.color11 #pseudo { - color: #10684c; -} -.inscription .component.inscription.color12 #pseudo { - color: #b17a00; -} -.inscription .component.inscription .avatars { - padding: 5px; - text-align: center; -} -.inscription .component.inscription .avatar { - position: relative; - display: inline-block; - margin: 0 5px; - padding: 5px; - background: #202020; - border: solid 5px #0A0A0A; - border-radius: 100%; -} -.inscription .component.inscription .avatar input { - position: absolute; - top: 10px; - left: 10px; -} -.inscription .component.inscription .avatar img { - display: block; - width: 117px; - cursor: pointer; - border-radius: 100%; -} -.inscription .component.inscription.color1 .avatar:hover { - border-color: #510816; -} -.inscription .component.inscription.color2 .avatar:hover { - border-color: #0c0d44; -} -.inscription .component.inscription.color3 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color4 .avatar:hover { - border-color: #310948; -} -.inscription .component.inscription.color5 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color6 .avatar:hover { - border-color: #004948; -} -.inscription .component.inscription.color7 .avatar:hover { - border-color: #401b13; -} -.inscription .component.inscription.color8 .avatar:hover { - border-color: #c3590b; -} -.inscription .component.inscription.color9 .avatar:hover { - border-color: #24500a; -} -.inscription .component.inscription.color10 .avatar:hover { - border-color: #4d0621; -} -.inscription .component.inscription.color11 .avatar:hover { - border-color: #10684c; -} -.inscription .component.inscription.color12 .avatar:hover { - border-color: #b17a00; -} -.inscription .component.inscription.color1 .avatar.active { - border-color: #b01e2d; -} -.inscription .component.inscription.color2 .avatar.active { - border-color: #2f23c0; -} -.inscription .component.inscription.color3 .avatar.active { - border-color: #ffdb0f; -} -.inscription .component.inscription.color4 .avatar.active { - border-color: #a935c7; -} -.inscription .component.inscription.color5 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color6 .avatar.active { - border-color: #05bed7; -} -.inscription .component.inscription.color7 .avatar.active { - border-color: #ac5832; -} -.inscription .component.inscription.color8 .avatar.active { - border-color: #f2b636; -} -.inscription .component.inscription.color9 .avatar.active { - border-color: #57c632; -} -.inscription .component.inscription.color10 .avatar.active { - border-color: #a92859; -} -.inscription .component.inscription.color11 .avatar.active { - border-color: #34b089; -} -.inscription .component.inscription.color12 .avatar.active { - border-color: #ffdb0f; -} -.inscription #alert { - bottom: -12px; - z-index: 10000; -} -.inscription .build-item { - min-height: 60px; -} -.inscription .build-item .name { - padding-top: 2px !important; -} -.inscription .build-item .name strong { - font-size: 16px !important; -} -.inscription .build-item .name em { - font-size: 12px !important; -} -.color0 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor0.png') no-repeat top left; -} -.color1 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor1.png') no-repeat top left; -} -.color2 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor2.png') no-repeat top left; -} -.color3 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor3.png') no-repeat top left; -} -.color4 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor4.png') no-repeat top left; -} -.color5 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor5.png') no-repeat top left; -} -.color6 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor6.png') no-repeat top left; -} -.color7 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor7.png') no-repeat top left; -} -.color8 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor8.png') no-repeat top left; -} -.color9 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor9.png') no-repeat top left; -} -.color10 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor10.png') no-repeat top left; -} -.color11 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor11.png') no-repeat top left; -} -.color12 #inscription-subnav .foot { - background: url('src/desktop/inscriptionSubnav/bFootColor12.png') no-repeat top left; -} -/* AUTOCOMPLETE MODULE */ -.ac_results { - width: 100%; - padding: 0px; - border: 1px solid #4F4F4F; - background-color: white; - overflow: hidden; - z-index: 99999; - box-shadow: 0 0 6px black; - border-radius: 3px; -} -.ac_results ul { - width: 100%; - padding: 0; - margin: 0; - list-style-position: outside; - list-style: none; -} -.ac_results ul li { - padding: 4px 8px; - margin: 0px; - cursor: default; - display: block; - border-bottom: solid 1px #CCC; - overflow: hidden; -} -.ac_results ul li:last-child { - border: none; -} -.ac_results .img { - float: left; - width: 36px; - background: #202020; - border-radius: 3px; - margin: 0 8px 0 0; -} -.ac_results .value-1, -.ac_results .value-2 { - display: block; - line-height: 18px; -} -.ac_results .value-1 { - font-weight: bold; -} -.ac_loading { - background: white url('src/desktop/module/indicator.gif') right center no-repeat; -} -.ac_over { - background: #efefef; -} -.ac_results .ac_over strong { - color: black; -} -.ac_results .ac_over img { - background: white; -} diff --git a/public/css/notfound/background.jpg b/public/css/notfound/background.jpg deleted file mode 100755 index d3c25167b..000000000 Binary files a/public/css/notfound/background.jpg and /dev/null differ diff --git a/public/css/notfound/main.css b/public/css/notfound/main.css deleted file mode 100755 index 20a6e7366..000000000 --- a/public/css/notfound/main.css +++ /dev/null @@ -1,64 +0,0 @@ -html { height: 100%; } -body { - position: relative; - margin: 0; padding: 0; - width: 100%; height: 100%; - font-family: 'Trebuchet MS'; - font-size: 15px; - background: url('background.jpg') no-repeat bottom right black; -} - -.container { - position: absolute; - bottom: 140px; right: 0; - height: 150px; width: 680px; - background: rgba(0, 0, 0, .8); - border-radius: 5px 0 0 5px; - border: solid 1px #0A0A0A; - - -moz-transition: all linear 250ms; - -webkit-transition: all linear 250ms; - -o-transition: all linear 250ms; - -ms-transition: all linear 250ms; - transition: all linear 250ms; -} - -.container:hover { - background: rgba(0, 0, 0, .6); -} - -.container h1 { - margin: 0; padding: 20px; - line-height: 50px; - font-size: 50px; - color: white; -} - -.container h2 { - margin: 0; padding: 0 20px; - line-height: 20px; - font-size: 15px; - color: white; - font-weight: normal; -} - -.boxlink { - position: absolute; - padding: 25px 0; - width: 100%; - background: rgba(0, 0, 0, .6); - border-bottom: solid 1px #0A0A0A; -} - -.boxlink a { - display: block; - color: #CCC; - text-decoration: none; - margin: 0 0 0 100px; - padding: 2px 10px; - font-size: 14px; -} - -.boxlink a:hover { - color: white; -} \ No newline at end of file diff --git a/public/css/script/main.css b/public/css/script/main.css deleted file mode 100644 index fd4a587a0..000000000 --- a/public/css/script/main.css +++ /dev/null @@ -1,73 +0,0 @@ -body { - margin: 0; padding: 0; - font-family: 'Roboto', 'Trebuchet MS', 'Arial', sans-serif; - font-size: 14px; - background: #EFEFEF; -} - -.list-script h1 { - margin: 0; padding: 0 50px; - line-height: 80px; - font-size: 30px; - font-weight: normal; - - color: white; - background: #202020; - border-bottom: solid 1px #0A0A0A; -} - -.list-script .scripts { - padding: 30px 50px; -} - -.list-script .scripts a { - display: inline-block; - margin: 0 10px 10px 0; - padding: 10px 20px; - width: 225px; - - text-decoration: none; - - color: black; - background: rgba(0, 0, 0, .1); - border: solid 1px rgba(0, 0, 0, .2); -} - -.list-script .scripts a strong { - display: block; - font-size: 18px; - font-weight: normal; - color: rgba(0, 0, 0, .4); -} - -.list-script a:hover { - background: #EFEFEF; -} - - -.return { - margin: 0; padding: 0 50px; - line-height: 80px; - font-size: 30px; - font-weight: normal; - - color: white; - background: #202020; - border-bottom: solid 1px #0A0A0A; -} - -.return a { - display: inline-block; - line-height: 50px; width: 50px; - border-radius: 100%; - font-size: 30px; margin-right: 10px; - text-align: center; - background: #AE2F1B; - color: white; - text-decoration: none; -} - -.content-script .script { - padding: 30px 50px; - position: relative; -} \ No newline at end of file diff --git a/public/css/src/desktop-src/base/global-situation.jpg b/public/css/src/desktop-src/base/global-situation.jpg deleted file mode 100755 index 1e3a39f0e..000000000 Binary files a/public/css/src/desktop-src/base/global-situation.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place1.jpg b/public/css/src/desktop-src/base/place1.jpg deleted file mode 100755 index 239ddc24d..000000000 Binary files a/public/css/src/desktop-src/base/place1.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place2.jpg b/public/css/src/desktop-src/base/place2.jpg deleted file mode 100755 index ddef28171..000000000 Binary files a/public/css/src/desktop-src/base/place2.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place3.jpg b/public/css/src/desktop-src/base/place3.jpg deleted file mode 100755 index 623b44d3b..000000000 Binary files a/public/css/src/desktop-src/base/place3.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place4.jpg b/public/css/src/desktop-src/base/place4.jpg deleted file mode 100755 index d6df959a6..000000000 Binary files a/public/css/src/desktop-src/base/place4.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place5.jpg b/public/css/src/desktop-src/base/place5.jpg deleted file mode 100755 index 38178149b..000000000 Binary files a/public/css/src/desktop-src/base/place5.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/place6.jpg b/public/css/src/desktop-src/base/place6.jpg deleted file mode 100755 index d590e8523..000000000 Binary files a/public/css/src/desktop-src/base/place6.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/situation.jpg b/public/css/src/desktop-src/base/situation.jpg deleted file mode 100755 index 45becdba8..000000000 Binary files a/public/css/src/desktop-src/base/situation.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/base/situation.png b/public/css/src/desktop-src/base/situation.png deleted file mode 100755 index 0ff92551a..000000000 Binary files a/public/css/src/desktop-src/base/situation.png and /dev/null differ diff --git a/public/css/src/desktop-src/base/type-base.png b/public/css/src/desktop-src/base/type-base.png deleted file mode 100755 index e3858b3ed..000000000 Binary files a/public/css/src/desktop-src/base/type-base.png and /dev/null differ diff --git a/public/css/src/desktop-src/base/type-base2.png b/public/css/src/desktop-src/base/type-base2.png deleted file mode 100755 index a39a3a587..000000000 Binary files a/public/css/src/desktop-src/base/type-base2.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButton.png b/public/css/src/desktop-src/button/bButton.png deleted file mode 100755 index 698aa42af..000000000 Binary files a/public/css/src/desktop-src/button/bButton.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonActive.png b/public/css/src/desktop-src/button/bButtonActive.png deleted file mode 100755 index 75126415b..000000000 Binary files a/public/css/src/desktop-src/button/bButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonHover.png b/public/css/src/desktop-src/button/bButtonHover.png deleted file mode 100755 index a60de653e..000000000 Binary files a/public/css/src/desktop-src/button/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonLeft.png b/public/css/src/desktop-src/button/bButtonLeft.png deleted file mode 100755 index 38e42db1c..000000000 Binary files a/public/css/src/desktop-src/button/bButtonLeft.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonLeftActive.png b/public/css/src/desktop-src/button/bButtonLeftActive.png deleted file mode 100755 index 2485e160a..000000000 Binary files a/public/css/src/desktop-src/button/bButtonLeftActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonLeftHover.png b/public/css/src/desktop-src/button/bButtonLeftHover.png deleted file mode 100755 index 93a42ff9b..000000000 Binary files a/public/css/src/desktop-src/button/bButtonLeftHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonMiddle.png b/public/css/src/desktop-src/button/bButtonMiddle.png deleted file mode 100755 index b22c9d26b..000000000 Binary files a/public/css/src/desktop-src/button/bButtonMiddle.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonMiddleActive.png b/public/css/src/desktop-src/button/bButtonMiddleActive.png deleted file mode 100755 index 7e553e240..000000000 Binary files a/public/css/src/desktop-src/button/bButtonMiddleActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonMiddleHover.png b/public/css/src/desktop-src/button/bButtonMiddleHover.png deleted file mode 100755 index f79e5547d..000000000 Binary files a/public/css/src/desktop-src/button/bButtonMiddleHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonRight.png b/public/css/src/desktop-src/button/bButtonRight.png deleted file mode 100755 index e5e65bfbf..000000000 Binary files a/public/css/src/desktop-src/button/bButtonRight.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonRightActive.png b/public/css/src/desktop-src/button/bButtonRightActive.png deleted file mode 100755 index 5878e1ca2..000000000 Binary files a/public/css/src/desktop-src/button/bButtonRightActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bButtonRightHover.png b/public/css/src/desktop-src/button/bButtonRightHover.png deleted file mode 100755 index f564a64c1..000000000 Binary files a/public/css/src/desktop-src/button/bButtonRightHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButton.png b/public/css/src/desktop-src/button/bLittleButton.png deleted file mode 100755 index 87bb030f9..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButton.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c1.png b/public/css/src/desktop-src/button/bLittleButtonActive-c1.png deleted file mode 100755 index 212e06f4c..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c1.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c10.png b/public/css/src/desktop-src/button/bLittleButtonActive-c10.png deleted file mode 100644 index a92d7d7a6..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c10.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c11.png b/public/css/src/desktop-src/button/bLittleButtonActive-c11.png deleted file mode 100644 index 260e32289..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c11.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c12.png b/public/css/src/desktop-src/button/bLittleButtonActive-c12.png deleted file mode 100644 index 0eeee5e74..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c12.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c2.png b/public/css/src/desktop-src/button/bLittleButtonActive-c2.png deleted file mode 100755 index 8760f4bf6..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c2.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c3.png b/public/css/src/desktop-src/button/bLittleButtonActive-c3.png deleted file mode 100755 index 0eeee5e74..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c3.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c4.png b/public/css/src/desktop-src/button/bLittleButtonActive-c4.png deleted file mode 100755 index 29cfae8a6..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c4.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c5.png b/public/css/src/desktop-src/button/bLittleButtonActive-c5.png deleted file mode 100755 index ac8cb0da9..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c5.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c6.png b/public/css/src/desktop-src/button/bLittleButtonActive-c6.png deleted file mode 100755 index bdd8bd0f2..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c6.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c7.png b/public/css/src/desktop-src/button/bLittleButtonActive-c7.png deleted file mode 100755 index a4a7c9a95..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c7.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c8.png b/public/css/src/desktop-src/button/bLittleButtonActive-c8.png deleted file mode 100644 index dc278af77..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c8.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive-c9.png b/public/css/src/desktop-src/button/bLittleButtonActive-c9.png deleted file mode 100644 index ac8cb0da9..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive-c9.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonActive.png b/public/css/src/desktop-src/button/bLittleButtonActive.png deleted file mode 100755 index 5042dc7af..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/button/bLittleButtonHover.png b/public/css/src/desktop-src/button/bLittleButtonHover.png deleted file mode 100755 index ef78f1e73..000000000 Binary files a/public/css/src/desktop-src/button/bLittleButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/common/edit.png b/public/css/src/desktop-src/common/edit.png deleted file mode 100755 index 403e98d19..000000000 Binary files a/public/css/src/desktop-src/common/edit.png and /dev/null differ diff --git a/public/css/src/desktop-src/component/bHead.jpg b/public/css/src/desktop-src/component/bHead.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/component/bHead.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/component/bottom.png b/public/css/src/desktop-src/component/bottom.png deleted file mode 100755 index 056db0b24..000000000 Binary files a/public/css/src/desktop-src/component/bottom.png and /dev/null differ diff --git a/public/css/src/desktop-src/component/top.png b/public/css/src/desktop-src/component/top.png deleted file mode 100755 index 17dbbd56e..000000000 Binary files a/public/css/src/desktop-src/component/top.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-1.png b/public/css/src/desktop-src/faction/flag/flag-1.png deleted file mode 100755 index 30ca1a3cd..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-1.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-10.png b/public/css/src/desktop-src/faction/flag/flag-10.png deleted file mode 100644 index 88d16e0c3..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-10.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-11.png b/public/css/src/desktop-src/faction/flag/flag-11.png deleted file mode 100644 index 7c3602beb..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-11.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-12.png b/public/css/src/desktop-src/faction/flag/flag-12.png deleted file mode 100644 index 17ee75aaa..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-12.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-2.png b/public/css/src/desktop-src/faction/flag/flag-2.png deleted file mode 100755 index 5a403dcde..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-2.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-3.png b/public/css/src/desktop-src/faction/flag/flag-3.png deleted file mode 100755 index fa40e8489..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-3.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-4.png b/public/css/src/desktop-src/faction/flag/flag-4.png deleted file mode 100755 index 5703403cb..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-4.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-5.png b/public/css/src/desktop-src/faction/flag/flag-5.png deleted file mode 100755 index 6514b4b38..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-5.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-6.png b/public/css/src/desktop-src/faction/flag/flag-6.png deleted file mode 100755 index ab7238227..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-6.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-7.png b/public/css/src/desktop-src/faction/flag/flag-7.png deleted file mode 100755 index df05e0f0f..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-7.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-8.png b/public/css/src/desktop-src/faction/flag/flag-8.png deleted file mode 100644 index fa3ff0797..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-8.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-9.png b/public/css/src/desktop-src/faction/flag/flag-9.png deleted file mode 100644 index 31f332c81..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-9.png and /dev/null differ diff --git a/public/css/src/desktop-src/faction/flag/flag-base.png b/public/css/src/desktop-src/faction/flag/flag-base.png deleted file mode 100644 index af7e6071f..000000000 Binary files a/public/css/src/desktop-src/faction/flag/flag-base.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/bButton.png b/public/css/src/desktop-src/global/bButton.png deleted file mode 100755 index 72d47dbf1..000000000 Binary files a/public/css/src/desktop-src/global/bButton.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/bButtonHover.png b/public/css/src/desktop-src/global/bButtonHover.png deleted file mode 100755 index cb6d98556..000000000 Binary files a/public/css/src/desktop-src/global/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/bButtonLeft.png b/public/css/src/desktop-src/global/bButtonLeft.png deleted file mode 100755 index eb34f2c4f..000000000 Binary files a/public/css/src/desktop-src/global/bButtonLeft.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/bButtonRight.png b/public/css/src/desktop-src/global/bButtonRight.png deleted file mode 100755 index d3305a11f..000000000 Binary files a/public/css/src/desktop-src/global/bButtonRight.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/background.jpg b/public/css/src/desktop-src/global/background.jpg deleted file mode 100755 index 349c89f83..000000000 Binary files a/public/css/src/desktop-src/global/background.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/global/highSmash.png b/public/css/src/desktop-src/global/highSmash.png deleted file mode 100755 index d4efff6b8..000000000 Binary files a/public/css/src/desktop-src/global/highSmash.png and /dev/null differ diff --git a/public/css/src/desktop-src/global/lowSmash.png b/public/css/src/desktop-src/global/lowSmash.png deleted file mode 100755 index 1e1f2942e..000000000 Binary files a/public/css/src/desktop-src/global/lowSmash.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bBind.png b/public/css/src/desktop-src/inscriptionSubnav/bBind.png deleted file mode 100755 index 4600713cf..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bBind.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bBody.png b/public/css/src/desktop-src/inscriptionSubnav/bBody.png deleted file mode 100755 index 48955c473..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bBody.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bButton.png b/public/css/src/desktop-src/inscriptionSubnav/bButton.png deleted file mode 100755 index d609567a7..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bButton.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bButtonActive.png b/public/css/src/desktop-src/inscriptionSubnav/bButtonActive.png deleted file mode 100755 index 6fbf22ab9..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bButtonHover.png b/public/css/src/desktop-src/inscriptionSubnav/bButtonHover.png deleted file mode 100755 index 4394edb10..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor0.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor0.png deleted file mode 100755 index 5572fe970..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor0.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor1.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor1.png deleted file mode 100755 index 581bad4c2..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor1.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor10.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor10.png deleted file mode 100644 index 283ad23a0..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor10.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor11.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor11.png deleted file mode 100644 index 976f04aee..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor11.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor12.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor12.png deleted file mode 100644 index a4aee479b..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor12.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor2.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor2.png deleted file mode 100755 index 20bbf1a3c..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor2.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor3.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor3.png deleted file mode 100755 index 4db9b2987..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor3.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor4.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor4.png deleted file mode 100755 index 94d68af87..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor4.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor5.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor5.png deleted file mode 100755 index ad1f1d86c..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor5.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor6.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor6.png deleted file mode 100755 index 3f9468857..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor6.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor7.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor7.png deleted file mode 100755 index d3714b075..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor7.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor8.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor8.png deleted file mode 100644 index 8fdf32b3d..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor8.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bFootColor9.png b/public/css/src/desktop-src/inscriptionSubnav/bFootColor9.png deleted file mode 100644 index e72367ca9..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bFootColor9.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bHead.png b/public/css/src/desktop-src/inscriptionSubnav/bHead.png deleted file mode 100755 index 42ab8fa97..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bHead.png and /dev/null differ diff --git a/public/css/src/desktop-src/inscriptionSubnav/bLevel.png b/public/css/src/desktop-src/inscriptionSubnav/bLevel.png deleted file mode 100755 index 3df946549..000000000 Binary files a/public/css/src/desktop-src/inscriptionSubnav/bLevel.png and /dev/null differ diff --git a/public/css/src/desktop-src/map/bLeftOption.png b/public/css/src/desktop-src/map/bLeftOption.png deleted file mode 100755 index 741df47ca..000000000 Binary files a/public/css/src/desktop-src/map/bLeftOption.png and /dev/null differ diff --git a/public/css/src/desktop-src/map/bOption.png b/public/css/src/desktop-src/map/bOption.png deleted file mode 100755 index 29b43cd7f..000000000 Binary files a/public/css/src/desktop-src/map/bOption.png and /dev/null differ diff --git a/public/css/src/desktop-src/map/bRightOption.png b/public/css/src/desktop-src/map/bRightOption.png deleted file mode 100755 index 574f8ee63..000000000 Binary files a/public/css/src/desktop-src/map/bRightOption.png and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v1/bLine.jpg b/public/css/src/desktop-src/map/common-v1/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v1/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v1/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v1/galaxy-large.jpg deleted file mode 100644 index 8ae9ce8e1..000000000 Binary files a/public/css/src/desktop-src/map/common-v1/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v1/galaxy.jpg b/public/css/src/desktop-src/map/common-v1/galaxy.jpg deleted file mode 100644 index fdca78a1e..000000000 Binary files a/public/css/src/desktop-src/map/common-v1/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v1/map.jpg b/public/css/src/desktop-src/map/common-v1/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v1/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v2/bLine.jpg b/public/css/src/desktop-src/map/common-v2/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v2/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v2/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v2/galaxy-large.jpg deleted file mode 100644 index 1568124d7..000000000 Binary files a/public/css/src/desktop-src/map/common-v2/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v2/galaxy.jpg b/public/css/src/desktop-src/map/common-v2/galaxy.jpg deleted file mode 100644 index 78b98bc07..000000000 Binary files a/public/css/src/desktop-src/map/common-v2/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v2/map.jpg b/public/css/src/desktop-src/map/common-v2/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v2/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v3/bLine.jpg b/public/css/src/desktop-src/map/common-v3/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v3/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v3/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v3/galaxy-large.jpg deleted file mode 100644 index 92aaaeed2..000000000 Binary files a/public/css/src/desktop-src/map/common-v3/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v3/galaxy.jpg b/public/css/src/desktop-src/map/common-v3/galaxy.jpg deleted file mode 100644 index 6b42ede0d..000000000 Binary files a/public/css/src/desktop-src/map/common-v3/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v3/map.jpg b/public/css/src/desktop-src/map/common-v3/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v3/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v4/bLine.jpg b/public/css/src/desktop-src/map/common-v4/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v4/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v4/empireContreAttaque b/public/css/src/desktop-src/map/common-v4/empireContreAttaque deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop-src/map/common-v4/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v4/galaxy-large.jpg deleted file mode 100644 index 1568124d7..000000000 Binary files a/public/css/src/desktop-src/map/common-v4/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v4/galaxy.jpg b/public/css/src/desktop-src/map/common-v4/galaxy.jpg deleted file mode 100755 index 78b98bc07..000000000 Binary files a/public/css/src/desktop-src/map/common-v4/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v4/map.jpg b/public/css/src/desktop-src/map/common-v4/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v4/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v5/bLine.jpg b/public/css/src/desktop-src/map/common-v5/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v5/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v5/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v5/galaxy-large.jpg deleted file mode 100644 index 37697cedc..000000000 Binary files a/public/css/src/desktop-src/map/common-v5/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v5/galaxy.jpg b/public/css/src/desktop-src/map/common-v5/galaxy.jpg deleted file mode 100644 index b537bcfd9..000000000 Binary files a/public/css/src/desktop-src/map/common-v5/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v5/map.jpg b/public/css/src/desktop-src/map/common-v5/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v5/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v5/renaissance b/public/css/src/desktop-src/map/common-v5/renaissance deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop-src/map/common-v6/bLine.jpg b/public/css/src/desktop-src/map/common-v6/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common-v6/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v6/galaxy-large.jpg b/public/css/src/desktop-src/map/common-v6/galaxy-large.jpg deleted file mode 100644 index 38804af72..000000000 Binary files a/public/css/src/desktop-src/map/common-v6/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v6/galaxy.jpg b/public/css/src/desktop-src/map/common-v6/galaxy.jpg deleted file mode 100644 index 3fa8e9708..000000000 Binary files a/public/css/src/desktop-src/map/common-v6/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v6/map.jpg b/public/css/src/desktop-src/map/common-v6/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common-v6/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common-v6/s14 b/public/css/src/desktop-src/map/common-v6/s14 deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop-src/map/common/bLine.jpg b/public/css/src/desktop-src/map/common/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop-src/map/common/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common/galaxy-large.jpg b/public/css/src/desktop-src/map/common/galaxy-large.jpg deleted file mode 100644 index 38804af72..000000000 Binary files a/public/css/src/desktop-src/map/common/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common/galaxy.jpg b/public/css/src/desktop-src/map/common/galaxy.jpg deleted file mode 100644 index 3fa8e9708..000000000 Binary files a/public/css/src/desktop-src/map/common/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common/map.jpg b/public/css/src/desktop-src/map/common/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop-src/map/common/map.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/map/common/s14 b/public/css/src/desktop-src/map/common/s14 deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop-src/map/systems/default.png b/public/css/src/desktop-src/map/systems/default.png deleted file mode 100755 index 0b1717bf4..000000000 Binary files a/public/css/src/desktop-src/map/systems/default.png and /dev/null differ diff --git a/public/css/src/desktop-src/module/indicator.gif b/public/css/src/desktop-src/module/indicator.gif deleted file mode 100755 index 085ccaeca..000000000 Binary files a/public/css/src/desktop-src/module/indicator.gif and /dev/null differ diff --git a/public/css/src/desktop-src/mover/bottom.png b/public/css/src/desktop-src/mover/bottom.png deleted file mode 100755 index 9f92e731d..000000000 Binary files a/public/css/src/desktop-src/mover/bottom.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/left.png b/public/css/src/desktop-src/mover/left.png deleted file mode 100755 index 8b51c46eb..000000000 Binary files a/public/css/src/desktop-src/mover/left.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/right.png b/public/css/src/desktop-src/mover/right.png deleted file mode 100755 index 3bf170741..000000000 Binary files a/public/css/src/desktop-src/mover/right.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/small-right.png b/public/css/src/desktop-src/mover/small-right.png deleted file mode 100755 index f8fde9fc2..000000000 Binary files a/public/css/src/desktop-src/mover/small-right.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/to-left.png b/public/css/src/desktop-src/mover/to-left.png deleted file mode 100755 index 65f7fee7d..000000000 Binary files a/public/css/src/desktop-src/mover/to-left.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/to-right.png b/public/css/src/desktop-src/mover/to-right.png deleted file mode 100755 index 978567c06..000000000 Binary files a/public/css/src/desktop-src/mover/to-right.png and /dev/null differ diff --git a/public/css/src/desktop-src/mover/top.png b/public/css/src/desktop-src/mover/top.png deleted file mode 100755 index de7ec712f..000000000 Binary files a/public/css/src/desktop-src/mover/top.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/bNav.png b/public/css/src/desktop-src/nav/bNav.png deleted file mode 100755 index cfcacf43b..000000000 Binary files a/public/css/src/desktop-src/nav/bNav.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/bNavBox.png b/public/css/src/desktop-src/nav/bNavBox.png deleted file mode 100755 index 5a310309c..000000000 Binary files a/public/css/src/desktop-src/nav/bNavBox.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/bNavBoxLeft.png b/public/css/src/desktop-src/nav/bNavBoxLeft.png deleted file mode 100755 index d84bdf79e..000000000 Binary files a/public/css/src/desktop-src/nav/bNavBoxLeft.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/bNavBoxRight.png b/public/css/src/desktop-src/nav/bNavBoxRight.png deleted file mode 100755 index 6a564b25d..000000000 Binary files a/public/css/src/desktop-src/nav/bNavBoxRight.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/button.png b/public/css/src/desktop-src/nav/button.png deleted file mode 100755 index ef20e6096..000000000 Binary files a/public/css/src/desktop-src/nav/button.png and /dev/null differ diff --git a/public/css/src/desktop-src/nav/subnav.png b/public/css/src/desktop-src/nav/subnav.png deleted file mode 100755 index d86f25398..000000000 Binary files a/public/css/src/desktop-src/nav/subnav.png and /dev/null differ diff --git a/public/css/src/desktop-src/screen/base.jpg b/public/css/src/desktop-src/screen/base.jpg deleted file mode 100755 index cd515803f..000000000 Binary files a/public/css/src/desktop-src/screen/base.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/financial.jpg b/public/css/src/desktop-src/screen/financial.jpg deleted file mode 100755 index 5f8de9d9b..000000000 Binary files a/public/css/src/desktop-src/screen/financial.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/fleet.jpg b/public/css/src/desktop-src/screen/fleet.jpg deleted file mode 100755 index b19503312..000000000 Binary files a/public/css/src/desktop-src/screen/fleet.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/fleet.png b/public/css/src/desktop-src/screen/fleet.png deleted file mode 100755 index 863a2390a..000000000 Binary files a/public/css/src/desktop-src/screen/fleet.png and /dev/null differ diff --git a/public/css/src/desktop-src/screen/message.jpg b/public/css/src/desktop-src/screen/message.jpg deleted file mode 100755 index 401581fcc..000000000 Binary files a/public/css/src/desktop-src/screen/message.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/profil.jpg b/public/css/src/desktop-src/screen/profil.jpg deleted file mode 100755 index b738cdd08..000000000 Binary files a/public/css/src/desktop-src/screen/profil.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1200.2.jpg b/public/css/src/desktop-src/screen/tmp/1200.2.jpg deleted file mode 100755 index 5f27094c9..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1200.2.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1200.5.jpg b/public/css/src/desktop-src/screen/tmp/1200.5.jpg deleted file mode 100755 index 0f3e8e508..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1200.5.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1200.7.jpg b/public/css/src/desktop-src/screen/tmp/1200.7.jpg deleted file mode 100755 index 95cb42045..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1200.7.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1201.2.jpg b/public/css/src/desktop-src/screen/tmp/1201.2.jpg deleted file mode 100755 index 91ac905c3..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1201.2.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1202.1.jpg b/public/css/src/desktop-src/screen/tmp/1202.1.jpg deleted file mode 100755 index 1ecd7c99b..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1202.1.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/1202.2.jpg b/public/css/src/desktop-src/screen/tmp/1202.2.jpg deleted file mode 100755 index b738cdd08..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/1202.2.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/base.jpg b/public/css/src/desktop-src/screen/tmp/base.jpg deleted file mode 100755 index cd515803f..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/base.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/financial.jpg b/public/css/src/desktop-src/screen/tmp/financial.jpg deleted file mode 100755 index 5f8de9d9b..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/financial.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/fleet.jpg b/public/css/src/desktop-src/screen/tmp/fleet.jpg deleted file mode 100755 index d84304cfc..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/fleet.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/flotte.jpg b/public/css/src/desktop-src/screen/tmp/flotte.jpg deleted file mode 100755 index 0d816e981..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/flotte.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/message.jpg b/public/css/src/desktop-src/screen/tmp/message.jpg deleted file mode 100755 index 653dda28e..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/message.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/profil.jpg b/public/css/src/desktop-src/screen/tmp/profil.jpg deleted file mode 100755 index ff752c160..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/profil.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/radio.jpg b/public/css/src/desktop-src/screen/tmp/radio.jpg deleted file mode 100755 index 401581fcc..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/radio.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/rapcombat02.png b/public/css/src/desktop-src/screen/tmp/rapcombat02.png deleted file mode 100755 index ae1768413..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/rapcombat02.png and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/techno.jpg b/public/css/src/desktop-src/screen/tmp/techno.jpg deleted file mode 100755 index 7f690c3bb..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/techno.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/technology.jpg b/public/css/src/desktop-src/screen/tmp/technology.jpg deleted file mode 100755 index 7581091eb..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/technology.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/screen/tmp/uni.jpg b/public/css/src/desktop-src/screen/tmp/uni.jpg deleted file mode 100755 index b8d5a8fa7..000000000 Binary files a/public/css/src/desktop-src/screen/tmp/uni.jpg and /dev/null differ diff --git a/public/css/src/desktop-src/squadron/squadron0.png b/public/css/src/desktop-src/squadron/squadron0.png deleted file mode 100755 index dabce3da9..000000000 Binary files a/public/css/src/desktop-src/squadron/squadron0.png and /dev/null differ diff --git a/public/css/src/desktop-src/squadron/squadron1.png b/public/css/src/desktop-src/squadron/squadron1.png deleted file mode 100755 index 703d5a71c..000000000 Binary files a/public/css/src/desktop-src/squadron/squadron1.png and /dev/null differ diff --git a/public/css/src/desktop-src/squadron/squadron2.png b/public/css/src/desktop-src/squadron/squadron2.png deleted file mode 100755 index d62d7f4ca..000000000 Binary files a/public/css/src/desktop-src/squadron/squadron2.png and /dev/null differ diff --git a/public/css/src/desktop-src/squadron/squadron3.png b/public/css/src/desktop-src/squadron/squadron3.png deleted file mode 100755 index 4e168b1d7..000000000 Binary files a/public/css/src/desktop-src/squadron/squadron3.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/bottom.png b/public/css/src/desktop-src/subnav/bottom.png deleted file mode 100755 index 44c9952f8..000000000 Binary files a/public/css/src/desktop-src/subnav/bottom.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c1.png b/public/css/src/desktop-src/subnav/button-active-c1.png deleted file mode 100755 index 61b460c65..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c1.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c10.png b/public/css/src/desktop-src/subnav/button-active-c10.png deleted file mode 100644 index 6f78b1a19..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c10.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c11.png b/public/css/src/desktop-src/subnav/button-active-c11.png deleted file mode 100644 index 296396eda..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c11.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c12.png b/public/css/src/desktop-src/subnav/button-active-c12.png deleted file mode 100644 index f80a31d44..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c12.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c2.png b/public/css/src/desktop-src/subnav/button-active-c2.png deleted file mode 100755 index 29db47284..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c2.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c3.png b/public/css/src/desktop-src/subnav/button-active-c3.png deleted file mode 100755 index f80a31d44..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c3.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c4.png b/public/css/src/desktop-src/subnav/button-active-c4.png deleted file mode 100755 index 7171085de..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c4.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c5.png b/public/css/src/desktop-src/subnav/button-active-c5.png deleted file mode 100755 index 8ee6cfb1d..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c5.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c6.png b/public/css/src/desktop-src/subnav/button-active-c6.png deleted file mode 100755 index 867381b24..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c6.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c7.png b/public/css/src/desktop-src/subnav/button-active-c7.png deleted file mode 100755 index 5d63b6361..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c7.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c8.png b/public/css/src/desktop-src/subnav/button-active-c8.png deleted file mode 100644 index fbd1ae5a7..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c8.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-active-c9.png b/public/css/src/desktop-src/subnav/button-active-c9.png deleted file mode 100644 index 8ee6cfb1d..000000000 Binary files a/public/css/src/desktop-src/subnav/button-active-c9.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button-striped.png b/public/css/src/desktop-src/subnav/button-striped.png deleted file mode 100755 index 62022b767..000000000 Binary files a/public/css/src/desktop-src/subnav/button-striped.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/button.png b/public/css/src/desktop-src/subnav/button.png deleted file mode 100755 index 4cda9ecb3..000000000 Binary files a/public/css/src/desktop-src/subnav/button.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/middle.png b/public/css/src/desktop-src/subnav/middle.png deleted file mode 100755 index 89a88d4da..000000000 Binary files a/public/css/src/desktop-src/subnav/middle.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/middle2.png b/public/css/src/desktop-src/subnav/middle2.png deleted file mode 100755 index d5fe06e54..000000000 Binary files a/public/css/src/desktop-src/subnav/middle2.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/number.png b/public/css/src/desktop-src/subnav/number.png deleted file mode 100755 index 2666edf6b..000000000 Binary files a/public/css/src/desktop-src/subnav/number.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/til-hover.png b/public/css/src/desktop-src/subnav/til-hover.png deleted file mode 100755 index cd4883a37..000000000 Binary files a/public/css/src/desktop-src/subnav/til-hover.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/til-hover2.png b/public/css/src/desktop-src/subnav/til-hover2.png deleted file mode 100755 index 327ee8d7e..000000000 Binary files a/public/css/src/desktop-src/subnav/til-hover2.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/til.png b/public/css/src/desktop-src/subnav/til.png deleted file mode 100755 index 608881720..000000000 Binary files a/public/css/src/desktop-src/subnav/til.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/til2.png b/public/css/src/desktop-src/subnav/til2.png deleted file mode 100755 index 1dfc5a0a6..000000000 Binary files a/public/css/src/desktop-src/subnav/til2.png and /dev/null differ diff --git a/public/css/src/desktop-src/subnav/top.png b/public/css/src/desktop-src/subnav/top.png deleted file mode 100755 index bccca400f..000000000 Binary files a/public/css/src/desktop-src/subnav/top.png and /dev/null differ diff --git a/public/css/src/desktop-src/tools/bToolBox.png b/public/css/src/desktop-src/tools/bToolBox.png deleted file mode 100755 index c71ac4cdb..000000000 Binary files a/public/css/src/desktop-src/tools/bToolBox.png and /dev/null differ diff --git a/public/css/src/desktop-src/tools/bToolBoxLeft.png b/public/css/src/desktop-src/tools/bToolBoxLeft.png deleted file mode 100755 index 9a57a3205..000000000 Binary files a/public/css/src/desktop-src/tools/bToolBoxLeft.png and /dev/null differ diff --git a/public/css/src/desktop-src/tools/bToolBoxRight.png b/public/css/src/desktop-src/tools/bToolBoxRight.png deleted file mode 100755 index 0c64d6658..000000000 Binary files a/public/css/src/desktop-src/tools/bToolBoxRight.png and /dev/null differ diff --git a/public/css/src/desktop-src/tools/bTools.png b/public/css/src/desktop-src/tools/bTools.png deleted file mode 100755 index 58ff816b4..000000000 Binary files a/public/css/src/desktop-src/tools/bTools.png and /dev/null differ diff --git a/public/css/src/desktop/base/global-situation.jpg b/public/css/src/desktop/base/global-situation.jpg deleted file mode 100755 index 1e3a39f0e..000000000 Binary files a/public/css/src/desktop/base/global-situation.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place1.jpg b/public/css/src/desktop/base/place1.jpg deleted file mode 100755 index 239ddc24d..000000000 Binary files a/public/css/src/desktop/base/place1.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place2.jpg b/public/css/src/desktop/base/place2.jpg deleted file mode 100755 index ddef28171..000000000 Binary files a/public/css/src/desktop/base/place2.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place3.jpg b/public/css/src/desktop/base/place3.jpg deleted file mode 100755 index 623b44d3b..000000000 Binary files a/public/css/src/desktop/base/place3.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place4.jpg b/public/css/src/desktop/base/place4.jpg deleted file mode 100755 index d6df959a6..000000000 Binary files a/public/css/src/desktop/base/place4.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place5.jpg b/public/css/src/desktop/base/place5.jpg deleted file mode 100755 index 38178149b..000000000 Binary files a/public/css/src/desktop/base/place5.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/place6.jpg b/public/css/src/desktop/base/place6.jpg deleted file mode 100755 index d590e8523..000000000 Binary files a/public/css/src/desktop/base/place6.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/situation.jpg b/public/css/src/desktop/base/situation.jpg deleted file mode 100755 index 45becdba8..000000000 Binary files a/public/css/src/desktop/base/situation.jpg and /dev/null differ diff --git a/public/css/src/desktop/base/situation.png b/public/css/src/desktop/base/situation.png deleted file mode 100755 index 01bff2822..000000000 Binary files a/public/css/src/desktop/base/situation.png and /dev/null differ diff --git a/public/css/src/desktop/base/situation.psd b/public/css/src/desktop/base/situation.psd deleted file mode 100755 index 3041e0c02..000000000 Binary files a/public/css/src/desktop/base/situation.psd and /dev/null differ diff --git a/public/css/src/desktop/base/type-base.png b/public/css/src/desktop/base/type-base.png deleted file mode 100755 index 6ac66fa1f..000000000 Binary files a/public/css/src/desktop/base/type-base.png and /dev/null differ diff --git a/public/css/src/desktop/base/type-base.psd b/public/css/src/desktop/base/type-base.psd deleted file mode 100755 index f9cc82628..000000000 Binary files a/public/css/src/desktop/base/type-base.psd and /dev/null differ diff --git a/public/css/src/desktop/base/type-base2.png b/public/css/src/desktop/base/type-base2.png deleted file mode 100755 index 5848eb997..000000000 Binary files a/public/css/src/desktop/base/type-base2.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButton.png b/public/css/src/desktop/button/bButton.png deleted file mode 100755 index ab6e9d192..000000000 Binary files a/public/css/src/desktop/button/bButton.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonActive.png b/public/css/src/desktop/button/bButtonActive.png deleted file mode 100755 index cc00893be..000000000 Binary files a/public/css/src/desktop/button/bButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonHover.png b/public/css/src/desktop/button/bButtonHover.png deleted file mode 100755 index 9f3ab43f8..000000000 Binary files a/public/css/src/desktop/button/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonLeft.png b/public/css/src/desktop/button/bButtonLeft.png deleted file mode 100755 index 2918392a8..000000000 Binary files a/public/css/src/desktop/button/bButtonLeft.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonLeftActive.png b/public/css/src/desktop/button/bButtonLeftActive.png deleted file mode 100755 index 108d0e288..000000000 Binary files a/public/css/src/desktop/button/bButtonLeftActive.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonLeftHover.png b/public/css/src/desktop/button/bButtonLeftHover.png deleted file mode 100755 index 310f515d8..000000000 Binary files a/public/css/src/desktop/button/bButtonLeftHover.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonMiddle.png b/public/css/src/desktop/button/bButtonMiddle.png deleted file mode 100755 index 5d7adaa1f..000000000 Binary files a/public/css/src/desktop/button/bButtonMiddle.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonMiddleActive.png b/public/css/src/desktop/button/bButtonMiddleActive.png deleted file mode 100755 index 7f0b2695c..000000000 Binary files a/public/css/src/desktop/button/bButtonMiddleActive.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonMiddleHover.png b/public/css/src/desktop/button/bButtonMiddleHover.png deleted file mode 100755 index 8488fe36b..000000000 Binary files a/public/css/src/desktop/button/bButtonMiddleHover.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonRight.png b/public/css/src/desktop/button/bButtonRight.png deleted file mode 100755 index db0a6d3a4..000000000 Binary files a/public/css/src/desktop/button/bButtonRight.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonRightActive.png b/public/css/src/desktop/button/bButtonRightActive.png deleted file mode 100755 index a84f93e6c..000000000 Binary files a/public/css/src/desktop/button/bButtonRightActive.png and /dev/null differ diff --git a/public/css/src/desktop/button/bButtonRightHover.png b/public/css/src/desktop/button/bButtonRightHover.png deleted file mode 100755 index 1ea1eaf26..000000000 Binary files a/public/css/src/desktop/button/bButtonRightHover.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButton.png b/public/css/src/desktop/button/bLittleButton.png deleted file mode 100755 index 5984c5b34..000000000 Binary files a/public/css/src/desktop/button/bLittleButton.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c1.png b/public/css/src/desktop/button/bLittleButtonActive-c1.png deleted file mode 100755 index bc43b6215..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c1.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c10.png b/public/css/src/desktop/button/bLittleButtonActive-c10.png deleted file mode 100644 index a1027806f..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c10.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c11.png b/public/css/src/desktop/button/bLittleButtonActive-c11.png deleted file mode 100644 index 9e2ff029f..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c11.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c12.png b/public/css/src/desktop/button/bLittleButtonActive-c12.png deleted file mode 100644 index b447ede8c..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c12.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c2.png b/public/css/src/desktop/button/bLittleButtonActive-c2.png deleted file mode 100755 index 1ca898af1..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c2.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c3.png b/public/css/src/desktop/button/bLittleButtonActive-c3.png deleted file mode 100755 index b447ede8c..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c3.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c4.png b/public/css/src/desktop/button/bLittleButtonActive-c4.png deleted file mode 100755 index 9ce9648bc..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c4.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c5.png b/public/css/src/desktop/button/bLittleButtonActive-c5.png deleted file mode 100755 index 0c4d476a7..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c5.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c6.png b/public/css/src/desktop/button/bLittleButtonActive-c6.png deleted file mode 100755 index 4b80f634b..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c6.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c7.png b/public/css/src/desktop/button/bLittleButtonActive-c7.png deleted file mode 100755 index 606d4a6e6..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c7.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c8.png b/public/css/src/desktop/button/bLittleButtonActive-c8.png deleted file mode 100644 index 4a677a76f..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c8.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive-c9.png b/public/css/src/desktop/button/bLittleButtonActive-c9.png deleted file mode 100644 index 0c4d476a7..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive-c9.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonActive.png b/public/css/src/desktop/button/bLittleButtonActive.png deleted file mode 100755 index e5f121a91..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop/button/bLittleButtonHover.png b/public/css/src/desktop/button/bLittleButtonHover.png deleted file mode 100755 index 3f41cb614..000000000 Binary files a/public/css/src/desktop/button/bLittleButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop/common/edit.png b/public/css/src/desktop/common/edit.png deleted file mode 100755 index 14b26038f..000000000 Binary files a/public/css/src/desktop/common/edit.png and /dev/null differ diff --git a/public/css/src/desktop/component/bHead.jpg b/public/css/src/desktop/component/bHead.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop/component/bHead.jpg and /dev/null differ diff --git a/public/css/src/desktop/component/bottom.png b/public/css/src/desktop/component/bottom.png deleted file mode 100755 index 92569bae7..000000000 Binary files a/public/css/src/desktop/component/bottom.png and /dev/null differ diff --git a/public/css/src/desktop/component/top.png b/public/css/src/desktop/component/top.png deleted file mode 100755 index 26a3ddff8..000000000 Binary files a/public/css/src/desktop/component/top.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-1.png b/public/css/src/desktop/faction/flag/flag-1.png deleted file mode 100755 index de13d52f2..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-1.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-10.png b/public/css/src/desktop/faction/flag/flag-10.png deleted file mode 100644 index 88f106c7d..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-10.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-11.png b/public/css/src/desktop/faction/flag/flag-11.png deleted file mode 100644 index a088403a6..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-11.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-12.png b/public/css/src/desktop/faction/flag/flag-12.png deleted file mode 100644 index 67c3f7a2a..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-12.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-2.png b/public/css/src/desktop/faction/flag/flag-2.png deleted file mode 100755 index 4c1f152b6..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-2.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-3.png b/public/css/src/desktop/faction/flag/flag-3.png deleted file mode 100755 index f74486464..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-3.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-4.png b/public/css/src/desktop/faction/flag/flag-4.png deleted file mode 100755 index 6961278cd..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-4.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-5.png b/public/css/src/desktop/faction/flag/flag-5.png deleted file mode 100755 index 7dd6732af..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-5.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-6.png b/public/css/src/desktop/faction/flag/flag-6.png deleted file mode 100755 index 7ce085e53..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-6.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-7.png b/public/css/src/desktop/faction/flag/flag-7.png deleted file mode 100755 index 481f5327b..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-7.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-8.png b/public/css/src/desktop/faction/flag/flag-8.png deleted file mode 100644 index fe60cebe9..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-8.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-9.png b/public/css/src/desktop/faction/flag/flag-9.png deleted file mode 100644 index 5067ac229..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-9.png and /dev/null differ diff --git a/public/css/src/desktop/faction/flag/flag-base.png b/public/css/src/desktop/faction/flag/flag-base.png deleted file mode 100644 index 4803b75c6..000000000 Binary files a/public/css/src/desktop/faction/flag/flag-base.png and /dev/null differ diff --git a/public/css/src/desktop/global/bButton.png b/public/css/src/desktop/global/bButton.png deleted file mode 100755 index a95d28b02..000000000 Binary files a/public/css/src/desktop/global/bButton.png and /dev/null differ diff --git a/public/css/src/desktop/global/bButtonHover.png b/public/css/src/desktop/global/bButtonHover.png deleted file mode 100755 index 59c3d64d0..000000000 Binary files a/public/css/src/desktop/global/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop/global/bButtonLeft.png b/public/css/src/desktop/global/bButtonLeft.png deleted file mode 100755 index f7cfb24b5..000000000 Binary files a/public/css/src/desktop/global/bButtonLeft.png and /dev/null differ diff --git a/public/css/src/desktop/global/bButtonRight.png b/public/css/src/desktop/global/bButtonRight.png deleted file mode 100755 index 0b8703f39..000000000 Binary files a/public/css/src/desktop/global/bButtonRight.png and /dev/null differ diff --git a/public/css/src/desktop/global/background.jpg b/public/css/src/desktop/global/background.jpg deleted file mode 100755 index 349c89f83..000000000 Binary files a/public/css/src/desktop/global/background.jpg and /dev/null differ diff --git a/public/css/src/desktop/global/highSmash.png b/public/css/src/desktop/global/highSmash.png deleted file mode 100755 index bdffc6ad1..000000000 Binary files a/public/css/src/desktop/global/highSmash.png and /dev/null differ diff --git a/public/css/src/desktop/global/lowSmash.png b/public/css/src/desktop/global/lowSmash.png deleted file mode 100755 index 0987e0e15..000000000 Binary files a/public/css/src/desktop/global/lowSmash.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bBind.png b/public/css/src/desktop/inscriptionSubnav/bBind.png deleted file mode 100755 index 1e88061b5..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bBind.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bBody.png b/public/css/src/desktop/inscriptionSubnav/bBody.png deleted file mode 100755 index dfd2b327f..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bBody.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bButton.png b/public/css/src/desktop/inscriptionSubnav/bButton.png deleted file mode 100755 index 5bb48f712..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bButton.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bButtonActive.png b/public/css/src/desktop/inscriptionSubnav/bButtonActive.png deleted file mode 100755 index 16de8dea7..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bButtonActive.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bButtonHover.png b/public/css/src/desktop/inscriptionSubnav/bButtonHover.png deleted file mode 100755 index 389cd12f4..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bButtonHover.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor0.png b/public/css/src/desktop/inscriptionSubnav/bFootColor0.png deleted file mode 100755 index 0d303467f..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor0.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor1.png b/public/css/src/desktop/inscriptionSubnav/bFootColor1.png deleted file mode 100755 index 672489dfe..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor1.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor10.png b/public/css/src/desktop/inscriptionSubnav/bFootColor10.png deleted file mode 100644 index 61b5f8f3f..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor10.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor11.png b/public/css/src/desktop/inscriptionSubnav/bFootColor11.png deleted file mode 100644 index aa7fb698b..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor11.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor12.png b/public/css/src/desktop/inscriptionSubnav/bFootColor12.png deleted file mode 100644 index 9aff5f861..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor12.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor2.png b/public/css/src/desktop/inscriptionSubnav/bFootColor2.png deleted file mode 100755 index 4e3e5cbcd..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor2.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor3.png b/public/css/src/desktop/inscriptionSubnav/bFootColor3.png deleted file mode 100755 index be25486a2..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor3.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor4.png b/public/css/src/desktop/inscriptionSubnav/bFootColor4.png deleted file mode 100755 index 3307bf822..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor4.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor5.png b/public/css/src/desktop/inscriptionSubnav/bFootColor5.png deleted file mode 100755 index 3e734e307..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor5.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor6.png b/public/css/src/desktop/inscriptionSubnav/bFootColor6.png deleted file mode 100755 index af1319b95..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor6.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor7.png b/public/css/src/desktop/inscriptionSubnav/bFootColor7.png deleted file mode 100755 index 662262274..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor7.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor8.png b/public/css/src/desktop/inscriptionSubnav/bFootColor8.png deleted file mode 100644 index d60f5376a..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor8.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bFootColor9.png b/public/css/src/desktop/inscriptionSubnav/bFootColor9.png deleted file mode 100644 index 0068870ff..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bFootColor9.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bHead.png b/public/css/src/desktop/inscriptionSubnav/bHead.png deleted file mode 100755 index efa66e21f..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bHead.png and /dev/null differ diff --git a/public/css/src/desktop/inscriptionSubnav/bLevel.png b/public/css/src/desktop/inscriptionSubnav/bLevel.png deleted file mode 100755 index 554fdc644..000000000 Binary files a/public/css/src/desktop/inscriptionSubnav/bLevel.png and /dev/null differ diff --git a/public/css/src/desktop/map/bLeftOption.png b/public/css/src/desktop/map/bLeftOption.png deleted file mode 100755 index ff1ee2680..000000000 Binary files a/public/css/src/desktop/map/bLeftOption.png and /dev/null differ diff --git a/public/css/src/desktop/map/bOption.png b/public/css/src/desktop/map/bOption.png deleted file mode 100755 index 85123037c..000000000 Binary files a/public/css/src/desktop/map/bOption.png and /dev/null differ diff --git a/public/css/src/desktop/map/bRightOption.png b/public/css/src/desktop/map/bRightOption.png deleted file mode 100755 index 77ce12b28..000000000 Binary files a/public/css/src/desktop/map/bRightOption.png and /dev/null differ diff --git a/public/css/src/desktop/map/common-v1/bLine.jpg b/public/css/src/desktop/map/common-v1/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v1/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v1/chuteDesArcontes b/public/css/src/desktop/map/common-v1/chuteDesArcontes deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v1/galaxy-large.jpg b/public/css/src/desktop/map/common-v1/galaxy-large.jpg deleted file mode 100644 index 3053aa137..000000000 Binary files a/public/css/src/desktop/map/common-v1/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v1/galaxy.jpg b/public/css/src/desktop/map/common-v1/galaxy.jpg deleted file mode 100644 index e389d2432..000000000 Binary files a/public/css/src/desktop/map/common-v1/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v1/map.jpg b/public/css/src/desktop/map/common-v1/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v1/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v2/bLine.jpg b/public/css/src/desktop/map/common-v2/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v2/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v2/galaxy-large.jpg b/public/css/src/desktop/map/common-v2/galaxy-large.jpg deleted file mode 100644 index 869be8d7c..000000000 Binary files a/public/css/src/desktop/map/common-v2/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v2/galaxy.jpg b/public/css/src/desktop/map/common-v2/galaxy.jpg deleted file mode 100644 index 7d733a01f..000000000 Binary files a/public/css/src/desktop/map/common-v2/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v2/map.jpg b/public/css/src/desktop/map/common-v2/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v2/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v2/revolteSeldarine b/public/css/src/desktop/map/common-v2/revolteSeldarine deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v3/bLine.jpg b/public/css/src/desktop/map/common-v3/bLine.jpg deleted file mode 100644 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v3/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v3/galaxy-large.jpg b/public/css/src/desktop/map/common-v3/galaxy-large.jpg deleted file mode 100644 index c41974535..000000000 Binary files a/public/css/src/desktop/map/common-v3/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v3/galaxy.jpg b/public/css/src/desktop/map/common-v3/galaxy.jpg deleted file mode 100644 index e7768de3b..000000000 Binary files a/public/css/src/desktop/map/common-v3/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v3/map.jpg b/public/css/src/desktop/map/common-v3/map.jpg deleted file mode 100644 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v3/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v3/revolutionCardanienne b/public/css/src/desktop/map/common-v3/revolutionCardanienne deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v3/revolutionCarnadienne b/public/css/src/desktop/map/common-v3/revolutionCarnadienne deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v4/bLine.jpg b/public/css/src/desktop/map/common-v4/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v4/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v4/empireContreAttaque b/public/css/src/desktop/map/common-v4/empireContreAttaque deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v4/galaxy-large.jpg b/public/css/src/desktop/map/common-v4/galaxy-large.jpg deleted file mode 100644 index 869be8d7c..000000000 Binary files a/public/css/src/desktop/map/common-v4/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v4/galaxy.jpg b/public/css/src/desktop/map/common-v4/galaxy.jpg deleted file mode 100755 index 7d733a01f..000000000 Binary files a/public/css/src/desktop/map/common-v4/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v4/map.jpg b/public/css/src/desktop/map/common-v4/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v4/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v5/bLine.jpg b/public/css/src/desktop/map/common-v5/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v5/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v5/galaxy-large.jpg b/public/css/src/desktop/map/common-v5/galaxy-large.jpg deleted file mode 100644 index ef9f95660..000000000 Binary files a/public/css/src/desktop/map/common-v5/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v5/galaxy.jpg b/public/css/src/desktop/map/common-v5/galaxy.jpg deleted file mode 100644 index 10b8a14ab..000000000 Binary files a/public/css/src/desktop/map/common-v5/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v5/map.jpg b/public/css/src/desktop/map/common-v5/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v5/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v5/renaissance b/public/css/src/desktop/map/common-v5/renaissance deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common-v6/bLine.jpg b/public/css/src/desktop/map/common-v6/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common-v6/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v6/galaxy-large.jpg b/public/css/src/desktop/map/common-v6/galaxy-large.jpg deleted file mode 100644 index 837332ad8..000000000 Binary files a/public/css/src/desktop/map/common-v6/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v6/galaxy.jpg b/public/css/src/desktop/map/common-v6/galaxy.jpg deleted file mode 100644 index 51438dc04..000000000 Binary files a/public/css/src/desktop/map/common-v6/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v6/map.jpg b/public/css/src/desktop/map/common-v6/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common-v6/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common-v6/s14 b/public/css/src/desktop/map/common-v6/s14 deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/common/bLine.jpg b/public/css/src/desktop/map/common/bLine.jpg deleted file mode 100755 index d641bc481..000000000 Binary files a/public/css/src/desktop/map/common/bLine.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common/galaxy-large.jpg b/public/css/src/desktop/map/common/galaxy-large.jpg deleted file mode 100644 index 837332ad8..000000000 Binary files a/public/css/src/desktop/map/common/galaxy-large.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common/galaxy.jpg b/public/css/src/desktop/map/common/galaxy.jpg deleted file mode 100644 index 51438dc04..000000000 Binary files a/public/css/src/desktop/map/common/galaxy.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common/map.jpg b/public/css/src/desktop/map/common/map.jpg deleted file mode 100755 index ad153811f..000000000 Binary files a/public/css/src/desktop/map/common/map.jpg and /dev/null differ diff --git a/public/css/src/desktop/map/common/s14 b/public/css/src/desktop/map/common/s14 deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/css/src/desktop/map/systems/default.png b/public/css/src/desktop/map/systems/default.png deleted file mode 100755 index 11dd420d1..000000000 Binary files a/public/css/src/desktop/map/systems/default.png and /dev/null differ diff --git a/public/css/src/desktop/module/indicator.gif b/public/css/src/desktop/module/indicator.gif deleted file mode 100755 index b2dce2d66..000000000 Binary files a/public/css/src/desktop/module/indicator.gif and /dev/null differ diff --git a/public/css/src/desktop/mover/bottom.png b/public/css/src/desktop/mover/bottom.png deleted file mode 100755 index 631ad9890..000000000 Binary files a/public/css/src/desktop/mover/bottom.png and /dev/null differ diff --git a/public/css/src/desktop/mover/left.png b/public/css/src/desktop/mover/left.png deleted file mode 100755 index 159129e6a..000000000 Binary files a/public/css/src/desktop/mover/left.png and /dev/null differ diff --git a/public/css/src/desktop/mover/right.png b/public/css/src/desktop/mover/right.png deleted file mode 100755 index cd257b2eb..000000000 Binary files a/public/css/src/desktop/mover/right.png and /dev/null differ diff --git a/public/css/src/desktop/mover/small-right.png b/public/css/src/desktop/mover/small-right.png deleted file mode 100755 index 0b7970433..000000000 Binary files a/public/css/src/desktop/mover/small-right.png and /dev/null differ diff --git a/public/css/src/desktop/mover/to-left.png b/public/css/src/desktop/mover/to-left.png deleted file mode 100755 index cffcef873..000000000 Binary files a/public/css/src/desktop/mover/to-left.png and /dev/null differ diff --git a/public/css/src/desktop/mover/to-right.png b/public/css/src/desktop/mover/to-right.png deleted file mode 100755 index b11a76710..000000000 Binary files a/public/css/src/desktop/mover/to-right.png and /dev/null differ diff --git a/public/css/src/desktop/mover/top.png b/public/css/src/desktop/mover/top.png deleted file mode 100755 index 330ebcfda..000000000 Binary files a/public/css/src/desktop/mover/top.png and /dev/null differ diff --git a/public/css/src/desktop/nav/bNav.png b/public/css/src/desktop/nav/bNav.png deleted file mode 100755 index d0d9d8cbf..000000000 Binary files a/public/css/src/desktop/nav/bNav.png and /dev/null differ diff --git a/public/css/src/desktop/nav/bNavBox.png b/public/css/src/desktop/nav/bNavBox.png deleted file mode 100755 index ec6242483..000000000 Binary files a/public/css/src/desktop/nav/bNavBox.png and /dev/null differ diff --git a/public/css/src/desktop/nav/bNavBoxLeft.png b/public/css/src/desktop/nav/bNavBoxLeft.png deleted file mode 100755 index 51d19dbd4..000000000 Binary files a/public/css/src/desktop/nav/bNavBoxLeft.png and /dev/null differ diff --git a/public/css/src/desktop/nav/bNavBoxRight.png b/public/css/src/desktop/nav/bNavBoxRight.png deleted file mode 100755 index 22c1e93be..000000000 Binary files a/public/css/src/desktop/nav/bNavBoxRight.png and /dev/null differ diff --git a/public/css/src/desktop/nav/button.png b/public/css/src/desktop/nav/button.png deleted file mode 100755 index a304009ab..000000000 Binary files a/public/css/src/desktop/nav/button.png and /dev/null differ diff --git a/public/css/src/desktop/nav/subnav.png b/public/css/src/desktop/nav/subnav.png deleted file mode 100755 index 6f6722eee..000000000 Binary files a/public/css/src/desktop/nav/subnav.png and /dev/null differ diff --git a/public/css/src/desktop/screen/base.jpg b/public/css/src/desktop/screen/base.jpg deleted file mode 100755 index cd515803f..000000000 Binary files a/public/css/src/desktop/screen/base.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/financial.jpg b/public/css/src/desktop/screen/financial.jpg deleted file mode 100755 index 5f8de9d9b..000000000 Binary files a/public/css/src/desktop/screen/financial.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/fleet.jpg b/public/css/src/desktop/screen/fleet.jpg deleted file mode 100755 index b19503312..000000000 Binary files a/public/css/src/desktop/screen/fleet.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/fleet.png b/public/css/src/desktop/screen/fleet.png deleted file mode 100755 index 33130a0d0..000000000 Binary files a/public/css/src/desktop/screen/fleet.png and /dev/null differ diff --git a/public/css/src/desktop/screen/message.jpg b/public/css/src/desktop/screen/message.jpg deleted file mode 100755 index 401581fcc..000000000 Binary files a/public/css/src/desktop/screen/message.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/profil.jpg b/public/css/src/desktop/screen/profil.jpg deleted file mode 100755 index b738cdd08..000000000 Binary files a/public/css/src/desktop/screen/profil.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1200.2.jpg b/public/css/src/desktop/screen/tmp/1200.2.jpg deleted file mode 100755 index 5f27094c9..000000000 Binary files a/public/css/src/desktop/screen/tmp/1200.2.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1200.5.jpg b/public/css/src/desktop/screen/tmp/1200.5.jpg deleted file mode 100755 index 0f3e8e508..000000000 Binary files a/public/css/src/desktop/screen/tmp/1200.5.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1200.7.jpg b/public/css/src/desktop/screen/tmp/1200.7.jpg deleted file mode 100755 index 95cb42045..000000000 Binary files a/public/css/src/desktop/screen/tmp/1200.7.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1201.2.jpg b/public/css/src/desktop/screen/tmp/1201.2.jpg deleted file mode 100755 index 91ac905c3..000000000 Binary files a/public/css/src/desktop/screen/tmp/1201.2.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1202.1.jpg b/public/css/src/desktop/screen/tmp/1202.1.jpg deleted file mode 100755 index 1ecd7c99b..000000000 Binary files a/public/css/src/desktop/screen/tmp/1202.1.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/1202.2.jpg b/public/css/src/desktop/screen/tmp/1202.2.jpg deleted file mode 100755 index b738cdd08..000000000 Binary files a/public/css/src/desktop/screen/tmp/1202.2.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/base.jpg b/public/css/src/desktop/screen/tmp/base.jpg deleted file mode 100755 index cd515803f..000000000 Binary files a/public/css/src/desktop/screen/tmp/base.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/financial.jpg b/public/css/src/desktop/screen/tmp/financial.jpg deleted file mode 100755 index 5f8de9d9b..000000000 Binary files a/public/css/src/desktop/screen/tmp/financial.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/fleet.jpg b/public/css/src/desktop/screen/tmp/fleet.jpg deleted file mode 100755 index d84304cfc..000000000 Binary files a/public/css/src/desktop/screen/tmp/fleet.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/flotte.jpg b/public/css/src/desktop/screen/tmp/flotte.jpg deleted file mode 100755 index 0d816e981..000000000 Binary files a/public/css/src/desktop/screen/tmp/flotte.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/message.jpg b/public/css/src/desktop/screen/tmp/message.jpg deleted file mode 100755 index 653dda28e..000000000 Binary files a/public/css/src/desktop/screen/tmp/message.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/profil.jpg b/public/css/src/desktop/screen/tmp/profil.jpg deleted file mode 100755 index ff752c160..000000000 Binary files a/public/css/src/desktop/screen/tmp/profil.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/radio.jpg b/public/css/src/desktop/screen/tmp/radio.jpg deleted file mode 100755 index 401581fcc..000000000 Binary files a/public/css/src/desktop/screen/tmp/radio.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/rapcombat02.png b/public/css/src/desktop/screen/tmp/rapcombat02.png deleted file mode 100755 index cad9af191..000000000 Binary files a/public/css/src/desktop/screen/tmp/rapcombat02.png and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/techno.jpg b/public/css/src/desktop/screen/tmp/techno.jpg deleted file mode 100755 index 7f690c3bb..000000000 Binary files a/public/css/src/desktop/screen/tmp/techno.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/technology.jpg b/public/css/src/desktop/screen/tmp/technology.jpg deleted file mode 100755 index 7581091eb..000000000 Binary files a/public/css/src/desktop/screen/tmp/technology.jpg and /dev/null differ diff --git a/public/css/src/desktop/screen/tmp/uni.jpg b/public/css/src/desktop/screen/tmp/uni.jpg deleted file mode 100755 index b8d5a8fa7..000000000 Binary files a/public/css/src/desktop/screen/tmp/uni.jpg and /dev/null differ diff --git a/public/css/src/desktop/squadron/squadron0.png b/public/css/src/desktop/squadron/squadron0.png deleted file mode 100755 index 0b88458e4..000000000 Binary files a/public/css/src/desktop/squadron/squadron0.png and /dev/null differ diff --git a/public/css/src/desktop/squadron/squadron1.png b/public/css/src/desktop/squadron/squadron1.png deleted file mode 100755 index 56c800f34..000000000 Binary files a/public/css/src/desktop/squadron/squadron1.png and /dev/null differ diff --git a/public/css/src/desktop/squadron/squadron2.png b/public/css/src/desktop/squadron/squadron2.png deleted file mode 100755 index cb4cf7a77..000000000 Binary files a/public/css/src/desktop/squadron/squadron2.png and /dev/null differ diff --git a/public/css/src/desktop/squadron/squadron3.png b/public/css/src/desktop/squadron/squadron3.png deleted file mode 100755 index 46bab42fe..000000000 Binary files a/public/css/src/desktop/squadron/squadron3.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/bottom.png b/public/css/src/desktop/subnav/bottom.png deleted file mode 100755 index d9ae06188..000000000 Binary files a/public/css/src/desktop/subnav/bottom.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c1.png b/public/css/src/desktop/subnav/button-active-c1.png deleted file mode 100755 index d0b098f1c..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c1.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c10.png b/public/css/src/desktop/subnav/button-active-c10.png deleted file mode 100644 index 69dacc321..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c10.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c11.png b/public/css/src/desktop/subnav/button-active-c11.png deleted file mode 100644 index f99a775b8..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c11.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c12.png b/public/css/src/desktop/subnav/button-active-c12.png deleted file mode 100644 index a8bf85c1d..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c12.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c2.png b/public/css/src/desktop/subnav/button-active-c2.png deleted file mode 100755 index c71d473f0..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c2.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c3.png b/public/css/src/desktop/subnav/button-active-c3.png deleted file mode 100755 index a8bf85c1d..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c3.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c4.png b/public/css/src/desktop/subnav/button-active-c4.png deleted file mode 100755 index c4cdd3862..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c4.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c5.png b/public/css/src/desktop/subnav/button-active-c5.png deleted file mode 100755 index 9126f6177..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c5.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c6.png b/public/css/src/desktop/subnav/button-active-c6.png deleted file mode 100755 index 871734bd5..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c6.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c7.png b/public/css/src/desktop/subnav/button-active-c7.png deleted file mode 100755 index 8646c4acd..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c7.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c8.png b/public/css/src/desktop/subnav/button-active-c8.png deleted file mode 100644 index c3bf892cf..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c8.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-active-c9.png b/public/css/src/desktop/subnav/button-active-c9.png deleted file mode 100644 index 9126f6177..000000000 Binary files a/public/css/src/desktop/subnav/button-active-c9.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button-striped.png b/public/css/src/desktop/subnav/button-striped.png deleted file mode 100755 index a26864939..000000000 Binary files a/public/css/src/desktop/subnav/button-striped.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/button.png b/public/css/src/desktop/subnav/button.png deleted file mode 100755 index ae1dbe5cd..000000000 Binary files a/public/css/src/desktop/subnav/button.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/middle.png b/public/css/src/desktop/subnav/middle.png deleted file mode 100755 index b0c99dd35..000000000 Binary files a/public/css/src/desktop/subnav/middle.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/middle2.png b/public/css/src/desktop/subnav/middle2.png deleted file mode 100755 index 0d38dcbdd..000000000 Binary files a/public/css/src/desktop/subnav/middle2.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/number.png b/public/css/src/desktop/subnav/number.png deleted file mode 100755 index cd5d934c7..000000000 Binary files a/public/css/src/desktop/subnav/number.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/til-hover.png b/public/css/src/desktop/subnav/til-hover.png deleted file mode 100755 index 09ffa7d24..000000000 Binary files a/public/css/src/desktop/subnav/til-hover.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/til-hover2.png b/public/css/src/desktop/subnav/til-hover2.png deleted file mode 100755 index 69b3cdfc6..000000000 Binary files a/public/css/src/desktop/subnav/til-hover2.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/til.png b/public/css/src/desktop/subnav/til.png deleted file mode 100755 index 38ca38a85..000000000 Binary files a/public/css/src/desktop/subnav/til.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/til2.png b/public/css/src/desktop/subnav/til2.png deleted file mode 100755 index 82e4a4dbc..000000000 Binary files a/public/css/src/desktop/subnav/til2.png and /dev/null differ diff --git a/public/css/src/desktop/subnav/top.png b/public/css/src/desktop/subnav/top.png deleted file mode 100755 index 03c68fe37..000000000 Binary files a/public/css/src/desktop/subnav/top.png and /dev/null differ diff --git a/public/css/src/desktop/tools/bToolBox.png b/public/css/src/desktop/tools/bToolBox.png deleted file mode 100755 index fa3df0f15..000000000 Binary files a/public/css/src/desktop/tools/bToolBox.png and /dev/null differ diff --git a/public/css/src/desktop/tools/bToolBoxLeft.png b/public/css/src/desktop/tools/bToolBoxLeft.png deleted file mode 100755 index fff566830..000000000 Binary files a/public/css/src/desktop/tools/bToolBoxLeft.png and /dev/null differ diff --git a/public/css/src/desktop/tools/bToolBoxRight.png b/public/css/src/desktop/tools/bToolBoxRight.png deleted file mode 100755 index eb1302b86..000000000 Binary files a/public/css/src/desktop/tools/bToolBoxRight.png and /dev/null differ diff --git a/public/css/src/desktop/tools/bTools.png b/public/css/src/desktop/tools/bTools.png deleted file mode 100755 index ad93cd0de..000000000 Binary files a/public/css/src/desktop/tools/bTools.png and /dev/null differ diff --git a/public/index.php b/public/index.php new file mode 100644 index 000000000..cf18ce026 --- /dev/null +++ b/public/index.php @@ -0,0 +1,7 @@ + new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); diff --git a/public/js/jquery1.8.2.min.js b/public/js/jquery1.8.2.min.js deleted file mode 100755 index 63174a0d6..000000000 --- a/public/js/jquery1.8.2.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v1.8.2 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/public/media-src/admin/bugtracker.png b/public/media-src/admin/bugtracker.png deleted file mode 100755 index 82cad84d7..000000000 Binary files a/public/media-src/admin/bugtracker.png and /dev/null differ diff --git a/public/media-src/admin/main.png b/public/media-src/admin/main.png deleted file mode 100755 index 0a38bbc2b..000000000 Binary files a/public/media-src/admin/main.png and /dev/null differ diff --git a/public/media-src/admin/roadmap.png b/public/media-src/admin/roadmap.png deleted file mode 100755 index 27ca359ce..000000000 Binary files a/public/media-src/admin/roadmap.png and /dev/null differ diff --git a/public/media-src/alert/antispy.png b/public/media-src/alert/antispy.png deleted file mode 100755 index 83987f7a2..000000000 Binary files a/public/media-src/alert/antispy.png and /dev/null differ diff --git a/public/media-src/alert/bug.png b/public/media-src/alert/bug.png deleted file mode 100755 index 3d6ad87da..000000000 Binary files a/public/media-src/alert/bug.png and /dev/null differ diff --git a/public/media-src/alert/credit.png b/public/media-src/alert/credit.png deleted file mode 100755 index e2894a418..000000000 Binary files a/public/media-src/alert/credit.png and /dev/null differ diff --git a/public/media-src/alert/dock1.png b/public/media-src/alert/dock1.png deleted file mode 100755 index 212487680..000000000 Binary files a/public/media-src/alert/dock1.png and /dev/null differ diff --git a/public/media-src/alert/dock2.png b/public/media-src/alert/dock2.png deleted file mode 100755 index 7d090afd0..000000000 Binary files a/public/media-src/alert/dock2.png and /dev/null differ diff --git a/public/media-src/alert/error.png b/public/media-src/alert/error.png deleted file mode 100755 index c8a8f4f43..000000000 Binary files a/public/media-src/alert/error.png and /dev/null differ diff --git a/public/media-src/alert/fight.png b/public/media-src/alert/fight.png deleted file mode 100755 index 9f0b67621..000000000 Binary files a/public/media-src/alert/fight.png and /dev/null differ diff --git a/public/media-src/alert/fillform.png b/public/media-src/alert/fillform.png deleted file mode 100755 index db9f8346e..000000000 Binary files a/public/media-src/alert/fillform.png and /dev/null differ diff --git a/public/media-src/alert/generator.png b/public/media-src/alert/generator.png deleted file mode 100755 index 3269dace9..000000000 Binary files a/public/media-src/alert/generator.png and /dev/null differ diff --git a/public/media-src/alert/info.png b/public/media-src/alert/info.png deleted file mode 100755 index 1ed7a8108..000000000 Binary files a/public/media-src/alert/info.png and /dev/null differ diff --git a/public/media-src/alert/market.png b/public/media-src/alert/market.png deleted file mode 100755 index 998b5cd46..000000000 Binary files a/public/media-src/alert/market.png and /dev/null differ diff --git a/public/media-src/alert/message.png b/public/media-src/alert/message.png deleted file mode 100755 index 0ff1da9f3..000000000 Binary files a/public/media-src/alert/message.png and /dev/null differ diff --git a/public/media-src/alert/refinery.png b/public/media-src/alert/refinery.png deleted file mode 100755 index 3f11b1797..000000000 Binary files a/public/media-src/alert/refinery.png and /dev/null differ diff --git a/public/media-src/alert/research.png b/public/media-src/alert/research.png deleted file mode 100755 index 4a8abd73f..000000000 Binary files a/public/media-src/alert/research.png and /dev/null differ diff --git a/public/media-src/alert/success.png b/public/media-src/alert/success.png deleted file mode 100755 index 0dbeee358..000000000 Binary files a/public/media-src/alert/success.png and /dev/null differ diff --git a/public/media-src/alert/techno.png b/public/media-src/alert/techno.png deleted file mode 100755 index 81b37f0d6..000000000 Binary files a/public/media-src/alert/techno.png and /dev/null differ diff --git a/public/media-src/alert/temp.png b/public/media-src/alert/temp.png deleted file mode 100755 index 5d587d7e4..000000000 Binary files a/public/media-src/alert/temp.png and /dev/null differ diff --git a/public/media-src/ally/big/color1.png b/public/media-src/ally/big/color1.png deleted file mode 100755 index 94a18d9d4..000000000 Binary files a/public/media-src/ally/big/color1.png and /dev/null differ diff --git a/public/media-src/ally/big/color10.png b/public/media-src/ally/big/color10.png deleted file mode 100644 index 8a76fb564..000000000 Binary files a/public/media-src/ally/big/color10.png and /dev/null differ diff --git a/public/media-src/ally/big/color11.png b/public/media-src/ally/big/color11.png deleted file mode 100644 index 946398044..000000000 Binary files a/public/media-src/ally/big/color11.png and /dev/null differ diff --git a/public/media-src/ally/big/color12.png b/public/media-src/ally/big/color12.png deleted file mode 100644 index d22d987c8..000000000 Binary files a/public/media-src/ally/big/color12.png and /dev/null differ diff --git a/public/media-src/ally/big/color2.png b/public/media-src/ally/big/color2.png deleted file mode 100755 index 3499b5550..000000000 Binary files a/public/media-src/ally/big/color2.png and /dev/null differ diff --git a/public/media-src/ally/big/color3.png b/public/media-src/ally/big/color3.png deleted file mode 100755 index 50f28897f..000000000 Binary files a/public/media-src/ally/big/color3.png and /dev/null differ diff --git a/public/media-src/ally/big/color4.png b/public/media-src/ally/big/color4.png deleted file mode 100755 index bed3c5efe..000000000 Binary files a/public/media-src/ally/big/color4.png and /dev/null differ diff --git a/public/media-src/ally/big/color5.png b/public/media-src/ally/big/color5.png deleted file mode 100755 index 18e106a06..000000000 Binary files a/public/media-src/ally/big/color5.png and /dev/null differ diff --git a/public/media-src/ally/big/color6.png b/public/media-src/ally/big/color6.png deleted file mode 100755 index 6e9036bac..000000000 Binary files a/public/media-src/ally/big/color6.png and /dev/null differ diff --git a/public/media-src/ally/big/color7.png b/public/media-src/ally/big/color7.png deleted file mode 100755 index 0af0dc517..000000000 Binary files a/public/media-src/ally/big/color7.png and /dev/null differ diff --git a/public/media-src/ally/big/color8.png b/public/media-src/ally/big/color8.png deleted file mode 100644 index 1aa44a760..000000000 Binary files a/public/media-src/ally/big/color8.png and /dev/null differ diff --git a/public/media-src/ally/big/color9.png b/public/media-src/ally/big/color9.png deleted file mode 100644 index 5d3ed8f23..000000000 Binary files a/public/media-src/ally/big/color9.png and /dev/null differ diff --git a/public/media-src/asylamba.jpg b/public/media-src/asylamba.jpg deleted file mode 100755 index 6b862fab7..000000000 Binary files a/public/media-src/asylamba.jpg and /dev/null differ diff --git a/public/media-src/avatar/big/001-1.png b/public/media-src/avatar/big/001-1.png deleted file mode 100755 index 64068890e..000000000 Binary files a/public/media-src/avatar/big/001-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-10.png b/public/media-src/avatar/big/001-10.png deleted file mode 100644 index 83e270455..000000000 Binary files a/public/media-src/avatar/big/001-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-11.png b/public/media-src/avatar/big/001-11.png deleted file mode 100644 index b4b18288a..000000000 Binary files a/public/media-src/avatar/big/001-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-12.png b/public/media-src/avatar/big/001-12.png deleted file mode 100644 index be847a0cd..000000000 Binary files a/public/media-src/avatar/big/001-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-2.png b/public/media-src/avatar/big/001-2.png deleted file mode 100755 index b4f96611e..000000000 Binary files a/public/media-src/avatar/big/001-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-3.png b/public/media-src/avatar/big/001-3.png deleted file mode 100755 index 0520fe749..000000000 Binary files a/public/media-src/avatar/big/001-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-4.png b/public/media-src/avatar/big/001-4.png deleted file mode 100755 index 574ec1c4f..000000000 Binary files a/public/media-src/avatar/big/001-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-5.png b/public/media-src/avatar/big/001-5.png deleted file mode 100755 index 4c5b4a390..000000000 Binary files a/public/media-src/avatar/big/001-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-6.png b/public/media-src/avatar/big/001-6.png deleted file mode 100755 index 5e633454d..000000000 Binary files a/public/media-src/avatar/big/001-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-7.png b/public/media-src/avatar/big/001-7.png deleted file mode 100755 index 2256d3007..000000000 Binary files a/public/media-src/avatar/big/001-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-8.png b/public/media-src/avatar/big/001-8.png deleted file mode 100644 index b164fdb45..000000000 Binary files a/public/media-src/avatar/big/001-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/001-9.png b/public/media-src/avatar/big/001-9.png deleted file mode 100644 index 054e30eb8..000000000 Binary files a/public/media-src/avatar/big/001-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-1.png b/public/media-src/avatar/big/002-1.png deleted file mode 100755 index 6a69d20ac..000000000 Binary files a/public/media-src/avatar/big/002-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-10.png b/public/media-src/avatar/big/002-10.png deleted file mode 100644 index ce9a6588f..000000000 Binary files a/public/media-src/avatar/big/002-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-11.png b/public/media-src/avatar/big/002-11.png deleted file mode 100644 index e57a5121c..000000000 Binary files a/public/media-src/avatar/big/002-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-12.png b/public/media-src/avatar/big/002-12.png deleted file mode 100644 index 91b59c801..000000000 Binary files a/public/media-src/avatar/big/002-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-2.png b/public/media-src/avatar/big/002-2.png deleted file mode 100755 index 9463a6fe3..000000000 Binary files a/public/media-src/avatar/big/002-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-3.png b/public/media-src/avatar/big/002-3.png deleted file mode 100755 index 54cdbf92e..000000000 Binary files a/public/media-src/avatar/big/002-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-4.png b/public/media-src/avatar/big/002-4.png deleted file mode 100755 index ad2f31521..000000000 Binary files a/public/media-src/avatar/big/002-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-5.png b/public/media-src/avatar/big/002-5.png deleted file mode 100755 index 63f375c9b..000000000 Binary files a/public/media-src/avatar/big/002-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-6.png b/public/media-src/avatar/big/002-6.png deleted file mode 100755 index 13195a025..000000000 Binary files a/public/media-src/avatar/big/002-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-7.png b/public/media-src/avatar/big/002-7.png deleted file mode 100755 index 5b5d71023..000000000 Binary files a/public/media-src/avatar/big/002-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-8.png b/public/media-src/avatar/big/002-8.png deleted file mode 100644 index e63d8eba1..000000000 Binary files a/public/media-src/avatar/big/002-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/002-9.png b/public/media-src/avatar/big/002-9.png deleted file mode 100644 index d5b7757eb..000000000 Binary files a/public/media-src/avatar/big/002-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-1.png b/public/media-src/avatar/big/003-1.png deleted file mode 100755 index 458e388aa..000000000 Binary files a/public/media-src/avatar/big/003-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-10.png b/public/media-src/avatar/big/003-10.png deleted file mode 100644 index dfc2a7f2a..000000000 Binary files a/public/media-src/avatar/big/003-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-11.png b/public/media-src/avatar/big/003-11.png deleted file mode 100644 index 3e5088f01..000000000 Binary files a/public/media-src/avatar/big/003-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-12.png b/public/media-src/avatar/big/003-12.png deleted file mode 100644 index 616656835..000000000 Binary files a/public/media-src/avatar/big/003-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-2.png b/public/media-src/avatar/big/003-2.png deleted file mode 100755 index ab11edabc..000000000 Binary files a/public/media-src/avatar/big/003-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-3.png b/public/media-src/avatar/big/003-3.png deleted file mode 100755 index d88b00a35..000000000 Binary files a/public/media-src/avatar/big/003-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-4.png b/public/media-src/avatar/big/003-4.png deleted file mode 100755 index a2e0070ac..000000000 Binary files a/public/media-src/avatar/big/003-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-5.png b/public/media-src/avatar/big/003-5.png deleted file mode 100755 index b8e9b3c63..000000000 Binary files a/public/media-src/avatar/big/003-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-6.png b/public/media-src/avatar/big/003-6.png deleted file mode 100755 index 226658148..000000000 Binary files a/public/media-src/avatar/big/003-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-7.png b/public/media-src/avatar/big/003-7.png deleted file mode 100755 index fcc62347d..000000000 Binary files a/public/media-src/avatar/big/003-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-8.png b/public/media-src/avatar/big/003-8.png deleted file mode 100644 index da6c19ee7..000000000 Binary files a/public/media-src/avatar/big/003-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/003-9.png b/public/media-src/avatar/big/003-9.png deleted file mode 100644 index 8d605b35e..000000000 Binary files a/public/media-src/avatar/big/003-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-1.png b/public/media-src/avatar/big/004-1.png deleted file mode 100755 index 0f78ca06c..000000000 Binary files a/public/media-src/avatar/big/004-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-10.png b/public/media-src/avatar/big/004-10.png deleted file mode 100644 index 7a3e400d7..000000000 Binary files a/public/media-src/avatar/big/004-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-11.png b/public/media-src/avatar/big/004-11.png deleted file mode 100644 index c6f984c11..000000000 Binary files a/public/media-src/avatar/big/004-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-12.png b/public/media-src/avatar/big/004-12.png deleted file mode 100644 index 951ab74d5..000000000 Binary files a/public/media-src/avatar/big/004-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-2.png b/public/media-src/avatar/big/004-2.png deleted file mode 100755 index 90cf3ee0f..000000000 Binary files a/public/media-src/avatar/big/004-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-3.png b/public/media-src/avatar/big/004-3.png deleted file mode 100755 index 760906570..000000000 Binary files a/public/media-src/avatar/big/004-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-4.png b/public/media-src/avatar/big/004-4.png deleted file mode 100755 index 2266ee413..000000000 Binary files a/public/media-src/avatar/big/004-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-5.png b/public/media-src/avatar/big/004-5.png deleted file mode 100755 index 0cdf40b82..000000000 Binary files a/public/media-src/avatar/big/004-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-6.png b/public/media-src/avatar/big/004-6.png deleted file mode 100755 index 02f90fbc8..000000000 Binary files a/public/media-src/avatar/big/004-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-7.png b/public/media-src/avatar/big/004-7.png deleted file mode 100755 index 64ab29321..000000000 Binary files a/public/media-src/avatar/big/004-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-8.png b/public/media-src/avatar/big/004-8.png deleted file mode 100644 index d37d5affa..000000000 Binary files a/public/media-src/avatar/big/004-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/004-9.png b/public/media-src/avatar/big/004-9.png deleted file mode 100644 index b8f3c6f0d..000000000 Binary files a/public/media-src/avatar/big/004-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-1.png b/public/media-src/avatar/big/005-1.png deleted file mode 100755 index 7f51cf57f..000000000 Binary files a/public/media-src/avatar/big/005-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-10.png b/public/media-src/avatar/big/005-10.png deleted file mode 100644 index 6f3efd72b..000000000 Binary files a/public/media-src/avatar/big/005-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-11.png b/public/media-src/avatar/big/005-11.png deleted file mode 100644 index 103f9fae7..000000000 Binary files a/public/media-src/avatar/big/005-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-12.png b/public/media-src/avatar/big/005-12.png deleted file mode 100644 index d760d6cee..000000000 Binary files a/public/media-src/avatar/big/005-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-2.png b/public/media-src/avatar/big/005-2.png deleted file mode 100755 index e55f40100..000000000 Binary files a/public/media-src/avatar/big/005-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-3.png b/public/media-src/avatar/big/005-3.png deleted file mode 100755 index 77207b141..000000000 Binary files a/public/media-src/avatar/big/005-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-4.png b/public/media-src/avatar/big/005-4.png deleted file mode 100755 index d1497d9f0..000000000 Binary files a/public/media-src/avatar/big/005-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-5.png b/public/media-src/avatar/big/005-5.png deleted file mode 100755 index 3534f2214..000000000 Binary files a/public/media-src/avatar/big/005-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-6.png b/public/media-src/avatar/big/005-6.png deleted file mode 100755 index 47faba705..000000000 Binary files a/public/media-src/avatar/big/005-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-7.png b/public/media-src/avatar/big/005-7.png deleted file mode 100755 index db82fb3e5..000000000 Binary files a/public/media-src/avatar/big/005-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-8.png b/public/media-src/avatar/big/005-8.png deleted file mode 100644 index 4323fcacc..000000000 Binary files a/public/media-src/avatar/big/005-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/005-9.png b/public/media-src/avatar/big/005-9.png deleted file mode 100644 index 7dcf502e2..000000000 Binary files a/public/media-src/avatar/big/005-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-1.png b/public/media-src/avatar/big/006-1.png deleted file mode 100755 index 01fd842d7..000000000 Binary files a/public/media-src/avatar/big/006-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-10.png b/public/media-src/avatar/big/006-10.png deleted file mode 100644 index 0a02560ac..000000000 Binary files a/public/media-src/avatar/big/006-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-11.png b/public/media-src/avatar/big/006-11.png deleted file mode 100644 index 6f4f664e7..000000000 Binary files a/public/media-src/avatar/big/006-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-12.png b/public/media-src/avatar/big/006-12.png deleted file mode 100644 index 57b704772..000000000 Binary files a/public/media-src/avatar/big/006-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-2.png b/public/media-src/avatar/big/006-2.png deleted file mode 100755 index bdccdadef..000000000 Binary files a/public/media-src/avatar/big/006-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-3.png b/public/media-src/avatar/big/006-3.png deleted file mode 100755 index 8c4427875..000000000 Binary files a/public/media-src/avatar/big/006-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-4.png b/public/media-src/avatar/big/006-4.png deleted file mode 100755 index 4160fe963..000000000 Binary files a/public/media-src/avatar/big/006-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-5.png b/public/media-src/avatar/big/006-5.png deleted file mode 100755 index 67b264779..000000000 Binary files a/public/media-src/avatar/big/006-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-6.png b/public/media-src/avatar/big/006-6.png deleted file mode 100755 index da84f980c..000000000 Binary files a/public/media-src/avatar/big/006-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-7.png b/public/media-src/avatar/big/006-7.png deleted file mode 100755 index 5a78c2162..000000000 Binary files a/public/media-src/avatar/big/006-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-8.png b/public/media-src/avatar/big/006-8.png deleted file mode 100644 index e94c6fd46..000000000 Binary files a/public/media-src/avatar/big/006-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/006-9.png b/public/media-src/avatar/big/006-9.png deleted file mode 100644 index 93560cc23..000000000 Binary files a/public/media-src/avatar/big/006-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-1.png b/public/media-src/avatar/big/007-1.png deleted file mode 100755 index f73e83ae7..000000000 Binary files a/public/media-src/avatar/big/007-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-10.png b/public/media-src/avatar/big/007-10.png deleted file mode 100644 index 327640759..000000000 Binary files a/public/media-src/avatar/big/007-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-11.png b/public/media-src/avatar/big/007-11.png deleted file mode 100644 index 4eaf64591..000000000 Binary files a/public/media-src/avatar/big/007-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-12.png b/public/media-src/avatar/big/007-12.png deleted file mode 100644 index fac296b45..000000000 Binary files a/public/media-src/avatar/big/007-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-2.png b/public/media-src/avatar/big/007-2.png deleted file mode 100755 index 2e838fc20..000000000 Binary files a/public/media-src/avatar/big/007-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-3.png b/public/media-src/avatar/big/007-3.png deleted file mode 100755 index a61df06ef..000000000 Binary files a/public/media-src/avatar/big/007-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-4.png b/public/media-src/avatar/big/007-4.png deleted file mode 100755 index bbe54ae7a..000000000 Binary files a/public/media-src/avatar/big/007-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-5.png b/public/media-src/avatar/big/007-5.png deleted file mode 100755 index 33dd23d51..000000000 Binary files a/public/media-src/avatar/big/007-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-6.png b/public/media-src/avatar/big/007-6.png deleted file mode 100755 index 6c52b0316..000000000 Binary files a/public/media-src/avatar/big/007-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-7.png b/public/media-src/avatar/big/007-7.png deleted file mode 100755 index ce8a21cb4..000000000 Binary files a/public/media-src/avatar/big/007-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-8.png b/public/media-src/avatar/big/007-8.png deleted file mode 100644 index 0426d7af0..000000000 Binary files a/public/media-src/avatar/big/007-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/007-9.png b/public/media-src/avatar/big/007-9.png deleted file mode 100644 index 8c62178cd..000000000 Binary files a/public/media-src/avatar/big/007-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-1.png b/public/media-src/avatar/big/008-1.png deleted file mode 100755 index 2b73780fb..000000000 Binary files a/public/media-src/avatar/big/008-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-10.png b/public/media-src/avatar/big/008-10.png deleted file mode 100644 index f49007e03..000000000 Binary files a/public/media-src/avatar/big/008-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-11.png b/public/media-src/avatar/big/008-11.png deleted file mode 100644 index 23bf5b5be..000000000 Binary files a/public/media-src/avatar/big/008-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-12.png b/public/media-src/avatar/big/008-12.png deleted file mode 100644 index fe705487f..000000000 Binary files a/public/media-src/avatar/big/008-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-2.png b/public/media-src/avatar/big/008-2.png deleted file mode 100755 index 6a102ee93..000000000 Binary files a/public/media-src/avatar/big/008-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-3.png b/public/media-src/avatar/big/008-3.png deleted file mode 100755 index 2b7388669..000000000 Binary files a/public/media-src/avatar/big/008-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-4.png b/public/media-src/avatar/big/008-4.png deleted file mode 100755 index a789083bc..000000000 Binary files a/public/media-src/avatar/big/008-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-5.png b/public/media-src/avatar/big/008-5.png deleted file mode 100755 index 8c5907bc2..000000000 Binary files a/public/media-src/avatar/big/008-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-6.png b/public/media-src/avatar/big/008-6.png deleted file mode 100755 index 104e7d048..000000000 Binary files a/public/media-src/avatar/big/008-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-7.png b/public/media-src/avatar/big/008-7.png deleted file mode 100755 index 9aa8f0efe..000000000 Binary files a/public/media-src/avatar/big/008-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-8.png b/public/media-src/avatar/big/008-8.png deleted file mode 100644 index b8f56f421..000000000 Binary files a/public/media-src/avatar/big/008-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/008-9.png b/public/media-src/avatar/big/008-9.png deleted file mode 100644 index d6063a639..000000000 Binary files a/public/media-src/avatar/big/008-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-1.png b/public/media-src/avatar/big/009-1.png deleted file mode 100755 index 7525a4bfa..000000000 Binary files a/public/media-src/avatar/big/009-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-10.png b/public/media-src/avatar/big/009-10.png deleted file mode 100644 index 021693b22..000000000 Binary files a/public/media-src/avatar/big/009-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-11.png b/public/media-src/avatar/big/009-11.png deleted file mode 100644 index 987670cae..000000000 Binary files a/public/media-src/avatar/big/009-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-12.png b/public/media-src/avatar/big/009-12.png deleted file mode 100644 index 68cca282f..000000000 Binary files a/public/media-src/avatar/big/009-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-2.png b/public/media-src/avatar/big/009-2.png deleted file mode 100755 index 874907b99..000000000 Binary files a/public/media-src/avatar/big/009-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-3.png b/public/media-src/avatar/big/009-3.png deleted file mode 100755 index a42c04927..000000000 Binary files a/public/media-src/avatar/big/009-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-4.png b/public/media-src/avatar/big/009-4.png deleted file mode 100755 index f2b4d4936..000000000 Binary files a/public/media-src/avatar/big/009-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-5.png b/public/media-src/avatar/big/009-5.png deleted file mode 100755 index 9cefd9007..000000000 Binary files a/public/media-src/avatar/big/009-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-6.png b/public/media-src/avatar/big/009-6.png deleted file mode 100755 index 9e5fa1c4d..000000000 Binary files a/public/media-src/avatar/big/009-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-7.png b/public/media-src/avatar/big/009-7.png deleted file mode 100755 index 848868f51..000000000 Binary files a/public/media-src/avatar/big/009-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-8.png b/public/media-src/avatar/big/009-8.png deleted file mode 100644 index 16500e827..000000000 Binary files a/public/media-src/avatar/big/009-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/009-9.png b/public/media-src/avatar/big/009-9.png deleted file mode 100644 index d569f2b3f..000000000 Binary files a/public/media-src/avatar/big/009-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-1.png b/public/media-src/avatar/big/010-1.png deleted file mode 100755 index 1da58c26c..000000000 Binary files a/public/media-src/avatar/big/010-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-10.png b/public/media-src/avatar/big/010-10.png deleted file mode 100644 index cd1a06717..000000000 Binary files a/public/media-src/avatar/big/010-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-11.png b/public/media-src/avatar/big/010-11.png deleted file mode 100644 index 8e4779d01..000000000 Binary files a/public/media-src/avatar/big/010-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-12.png b/public/media-src/avatar/big/010-12.png deleted file mode 100644 index 809aed4f6..000000000 Binary files a/public/media-src/avatar/big/010-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-2.png b/public/media-src/avatar/big/010-2.png deleted file mode 100755 index 8419ca5e9..000000000 Binary files a/public/media-src/avatar/big/010-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-3.png b/public/media-src/avatar/big/010-3.png deleted file mode 100755 index 839fbc19a..000000000 Binary files a/public/media-src/avatar/big/010-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-4.png b/public/media-src/avatar/big/010-4.png deleted file mode 100755 index 7f1f8e6e3..000000000 Binary files a/public/media-src/avatar/big/010-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-5.png b/public/media-src/avatar/big/010-5.png deleted file mode 100755 index 24a093281..000000000 Binary files a/public/media-src/avatar/big/010-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-6.png b/public/media-src/avatar/big/010-6.png deleted file mode 100755 index 251b2303f..000000000 Binary files a/public/media-src/avatar/big/010-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-7.png b/public/media-src/avatar/big/010-7.png deleted file mode 100755 index cb02c0b24..000000000 Binary files a/public/media-src/avatar/big/010-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-8.png b/public/media-src/avatar/big/010-8.png deleted file mode 100644 index 627e4f602..000000000 Binary files a/public/media-src/avatar/big/010-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/010-9.png b/public/media-src/avatar/big/010-9.png deleted file mode 100644 index 2146bf6f5..000000000 Binary files a/public/media-src/avatar/big/010-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-1.png b/public/media-src/avatar/big/011-1.png deleted file mode 100755 index f153e810d..000000000 Binary files a/public/media-src/avatar/big/011-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-10.png b/public/media-src/avatar/big/011-10.png deleted file mode 100644 index ce6a8b393..000000000 Binary files a/public/media-src/avatar/big/011-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-11.png b/public/media-src/avatar/big/011-11.png deleted file mode 100644 index 0ec1f0877..000000000 Binary files a/public/media-src/avatar/big/011-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-12.png b/public/media-src/avatar/big/011-12.png deleted file mode 100644 index c8782ae63..000000000 Binary files a/public/media-src/avatar/big/011-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-2.png b/public/media-src/avatar/big/011-2.png deleted file mode 100755 index 440ec7a77..000000000 Binary files a/public/media-src/avatar/big/011-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-3.png b/public/media-src/avatar/big/011-3.png deleted file mode 100755 index 59f32916d..000000000 Binary files a/public/media-src/avatar/big/011-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-4.png b/public/media-src/avatar/big/011-4.png deleted file mode 100755 index fff37d41f..000000000 Binary files a/public/media-src/avatar/big/011-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-5.png b/public/media-src/avatar/big/011-5.png deleted file mode 100755 index 93322cc37..000000000 Binary files a/public/media-src/avatar/big/011-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-6.png b/public/media-src/avatar/big/011-6.png deleted file mode 100755 index 499dbb275..000000000 Binary files a/public/media-src/avatar/big/011-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-7.png b/public/media-src/avatar/big/011-7.png deleted file mode 100755 index 6b258b61c..000000000 Binary files a/public/media-src/avatar/big/011-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-8.png b/public/media-src/avatar/big/011-8.png deleted file mode 100644 index 97fa31215..000000000 Binary files a/public/media-src/avatar/big/011-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/011-9.png b/public/media-src/avatar/big/011-9.png deleted file mode 100644 index e7383ca04..000000000 Binary files a/public/media-src/avatar/big/011-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-1.png b/public/media-src/avatar/big/012-1.png deleted file mode 100755 index 14915aabe..000000000 Binary files a/public/media-src/avatar/big/012-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-10.png b/public/media-src/avatar/big/012-10.png deleted file mode 100644 index e396b961f..000000000 Binary files a/public/media-src/avatar/big/012-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-11.png b/public/media-src/avatar/big/012-11.png deleted file mode 100644 index 41e1ae820..000000000 Binary files a/public/media-src/avatar/big/012-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-12.png b/public/media-src/avatar/big/012-12.png deleted file mode 100644 index 5b6ed8008..000000000 Binary files a/public/media-src/avatar/big/012-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-2.png b/public/media-src/avatar/big/012-2.png deleted file mode 100755 index 63adf30a3..000000000 Binary files a/public/media-src/avatar/big/012-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-3.png b/public/media-src/avatar/big/012-3.png deleted file mode 100755 index bb1445731..000000000 Binary files a/public/media-src/avatar/big/012-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-4.png b/public/media-src/avatar/big/012-4.png deleted file mode 100755 index 3ae7e42d8..000000000 Binary files a/public/media-src/avatar/big/012-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-5.png b/public/media-src/avatar/big/012-5.png deleted file mode 100755 index 5de98a9b3..000000000 Binary files a/public/media-src/avatar/big/012-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-6.png b/public/media-src/avatar/big/012-6.png deleted file mode 100755 index 48cdf37e3..000000000 Binary files a/public/media-src/avatar/big/012-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-7.png b/public/media-src/avatar/big/012-7.png deleted file mode 100755 index 0003822db..000000000 Binary files a/public/media-src/avatar/big/012-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-8.png b/public/media-src/avatar/big/012-8.png deleted file mode 100644 index 1c3bbf2c9..000000000 Binary files a/public/media-src/avatar/big/012-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/012-9.png b/public/media-src/avatar/big/012-9.png deleted file mode 100644 index 56789c684..000000000 Binary files a/public/media-src/avatar/big/012-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-1.png b/public/media-src/avatar/big/013-1.png deleted file mode 100755 index 72751fcba..000000000 Binary files a/public/media-src/avatar/big/013-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-10.png b/public/media-src/avatar/big/013-10.png deleted file mode 100644 index abc86a862..000000000 Binary files a/public/media-src/avatar/big/013-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-11.png b/public/media-src/avatar/big/013-11.png deleted file mode 100644 index b044fe623..000000000 Binary files a/public/media-src/avatar/big/013-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-12.png b/public/media-src/avatar/big/013-12.png deleted file mode 100644 index 0ce7ee3fb..000000000 Binary files a/public/media-src/avatar/big/013-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-2.png b/public/media-src/avatar/big/013-2.png deleted file mode 100755 index 7d2102b62..000000000 Binary files a/public/media-src/avatar/big/013-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-3.png b/public/media-src/avatar/big/013-3.png deleted file mode 100755 index 364f0b2c8..000000000 Binary files a/public/media-src/avatar/big/013-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-4.png b/public/media-src/avatar/big/013-4.png deleted file mode 100755 index fef7a04a6..000000000 Binary files a/public/media-src/avatar/big/013-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-5.png b/public/media-src/avatar/big/013-5.png deleted file mode 100755 index fc37cd778..000000000 Binary files a/public/media-src/avatar/big/013-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-6.png b/public/media-src/avatar/big/013-6.png deleted file mode 100755 index b2f4a0faf..000000000 Binary files a/public/media-src/avatar/big/013-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-7.png b/public/media-src/avatar/big/013-7.png deleted file mode 100755 index 1be148b38..000000000 Binary files a/public/media-src/avatar/big/013-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-8.png b/public/media-src/avatar/big/013-8.png deleted file mode 100644 index ab4152ceb..000000000 Binary files a/public/media-src/avatar/big/013-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/013-9.png b/public/media-src/avatar/big/013-9.png deleted file mode 100644 index d03250573..000000000 Binary files a/public/media-src/avatar/big/013-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-1.png b/public/media-src/avatar/big/014-1.png deleted file mode 100755 index b55272f80..000000000 Binary files a/public/media-src/avatar/big/014-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-10.png b/public/media-src/avatar/big/014-10.png deleted file mode 100644 index b34a75afe..000000000 Binary files a/public/media-src/avatar/big/014-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-11.png b/public/media-src/avatar/big/014-11.png deleted file mode 100644 index 0e4d02376..000000000 Binary files a/public/media-src/avatar/big/014-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-12.png b/public/media-src/avatar/big/014-12.png deleted file mode 100644 index f81749a58..000000000 Binary files a/public/media-src/avatar/big/014-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-2.png b/public/media-src/avatar/big/014-2.png deleted file mode 100755 index 60b151cf2..000000000 Binary files a/public/media-src/avatar/big/014-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-3.png b/public/media-src/avatar/big/014-3.png deleted file mode 100755 index 89169f95e..000000000 Binary files a/public/media-src/avatar/big/014-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-4.png b/public/media-src/avatar/big/014-4.png deleted file mode 100755 index 71c052d4d..000000000 Binary files a/public/media-src/avatar/big/014-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-5.png b/public/media-src/avatar/big/014-5.png deleted file mode 100755 index 570111909..000000000 Binary files a/public/media-src/avatar/big/014-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-6.png b/public/media-src/avatar/big/014-6.png deleted file mode 100755 index 3c1916f15..000000000 Binary files a/public/media-src/avatar/big/014-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-7.png b/public/media-src/avatar/big/014-7.png deleted file mode 100755 index b4d4806a5..000000000 Binary files a/public/media-src/avatar/big/014-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-8.png b/public/media-src/avatar/big/014-8.png deleted file mode 100644 index 5e8fe2201..000000000 Binary files a/public/media-src/avatar/big/014-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/014-9.png b/public/media-src/avatar/big/014-9.png deleted file mode 100644 index ff7d60865..000000000 Binary files a/public/media-src/avatar/big/014-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-1.png b/public/media-src/avatar/big/015-1.png deleted file mode 100755 index 54f119270..000000000 Binary files a/public/media-src/avatar/big/015-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-10.png b/public/media-src/avatar/big/015-10.png deleted file mode 100644 index 3c243b527..000000000 Binary files a/public/media-src/avatar/big/015-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-11.png b/public/media-src/avatar/big/015-11.png deleted file mode 100644 index f80ec4c50..000000000 Binary files a/public/media-src/avatar/big/015-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-12.png b/public/media-src/avatar/big/015-12.png deleted file mode 100644 index a35764d71..000000000 Binary files a/public/media-src/avatar/big/015-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-2.png b/public/media-src/avatar/big/015-2.png deleted file mode 100755 index 3005aacf5..000000000 Binary files a/public/media-src/avatar/big/015-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-3.png b/public/media-src/avatar/big/015-3.png deleted file mode 100755 index 17f5f54de..000000000 Binary files a/public/media-src/avatar/big/015-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-4.png b/public/media-src/avatar/big/015-4.png deleted file mode 100755 index a8072e9ff..000000000 Binary files a/public/media-src/avatar/big/015-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-5.png b/public/media-src/avatar/big/015-5.png deleted file mode 100755 index eef29d924..000000000 Binary files a/public/media-src/avatar/big/015-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-6.png b/public/media-src/avatar/big/015-6.png deleted file mode 100755 index 4a4846c72..000000000 Binary files a/public/media-src/avatar/big/015-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-7.png b/public/media-src/avatar/big/015-7.png deleted file mode 100755 index b1a764ac4..000000000 Binary files a/public/media-src/avatar/big/015-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-8.png b/public/media-src/avatar/big/015-8.png deleted file mode 100644 index ea71d363a..000000000 Binary files a/public/media-src/avatar/big/015-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/015-9.png b/public/media-src/avatar/big/015-9.png deleted file mode 100644 index b6500a40c..000000000 Binary files a/public/media-src/avatar/big/015-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-1.png b/public/media-src/avatar/big/016-1.png deleted file mode 100755 index 00bd6560e..000000000 Binary files a/public/media-src/avatar/big/016-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-10.png b/public/media-src/avatar/big/016-10.png deleted file mode 100644 index b7d9c65ed..000000000 Binary files a/public/media-src/avatar/big/016-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-11.png b/public/media-src/avatar/big/016-11.png deleted file mode 100644 index a24cc93c4..000000000 Binary files a/public/media-src/avatar/big/016-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-12.png b/public/media-src/avatar/big/016-12.png deleted file mode 100644 index 4d0f02389..000000000 Binary files a/public/media-src/avatar/big/016-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-2.png b/public/media-src/avatar/big/016-2.png deleted file mode 100755 index 52ce6c07d..000000000 Binary files a/public/media-src/avatar/big/016-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-3.png b/public/media-src/avatar/big/016-3.png deleted file mode 100755 index 85a68f4e9..000000000 Binary files a/public/media-src/avatar/big/016-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-4.png b/public/media-src/avatar/big/016-4.png deleted file mode 100755 index 215692892..000000000 Binary files a/public/media-src/avatar/big/016-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-5.png b/public/media-src/avatar/big/016-5.png deleted file mode 100755 index a5bd6961f..000000000 Binary files a/public/media-src/avatar/big/016-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-6.png b/public/media-src/avatar/big/016-6.png deleted file mode 100755 index e90e073ac..000000000 Binary files a/public/media-src/avatar/big/016-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-7.png b/public/media-src/avatar/big/016-7.png deleted file mode 100755 index 3bc90cb2a..000000000 Binary files a/public/media-src/avatar/big/016-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-8.png b/public/media-src/avatar/big/016-8.png deleted file mode 100644 index 594cd9b39..000000000 Binary files a/public/media-src/avatar/big/016-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/016-9.png b/public/media-src/avatar/big/016-9.png deleted file mode 100644 index 66ff8ce40..000000000 Binary files a/public/media-src/avatar/big/016-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-1.png b/public/media-src/avatar/big/017-1.png deleted file mode 100755 index 59eb74e95..000000000 Binary files a/public/media-src/avatar/big/017-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-10.png b/public/media-src/avatar/big/017-10.png deleted file mode 100644 index fc7d61604..000000000 Binary files a/public/media-src/avatar/big/017-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-11.png b/public/media-src/avatar/big/017-11.png deleted file mode 100644 index 049becb1e..000000000 Binary files a/public/media-src/avatar/big/017-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-12.png b/public/media-src/avatar/big/017-12.png deleted file mode 100644 index 8969d5d2e..000000000 Binary files a/public/media-src/avatar/big/017-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-2.png b/public/media-src/avatar/big/017-2.png deleted file mode 100755 index c8cb10931..000000000 Binary files a/public/media-src/avatar/big/017-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-3.png b/public/media-src/avatar/big/017-3.png deleted file mode 100755 index c6eb96723..000000000 Binary files a/public/media-src/avatar/big/017-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-4.png b/public/media-src/avatar/big/017-4.png deleted file mode 100755 index 10f51f1d9..000000000 Binary files a/public/media-src/avatar/big/017-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-5.png b/public/media-src/avatar/big/017-5.png deleted file mode 100755 index dd7396d1a..000000000 Binary files a/public/media-src/avatar/big/017-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-6.png b/public/media-src/avatar/big/017-6.png deleted file mode 100755 index c0462f0d1..000000000 Binary files a/public/media-src/avatar/big/017-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-7.png b/public/media-src/avatar/big/017-7.png deleted file mode 100755 index a9a1826c9..000000000 Binary files a/public/media-src/avatar/big/017-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-8.png b/public/media-src/avatar/big/017-8.png deleted file mode 100644 index 9165052e3..000000000 Binary files a/public/media-src/avatar/big/017-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/017-9.png b/public/media-src/avatar/big/017-9.png deleted file mode 100644 index 7b0bd830f..000000000 Binary files a/public/media-src/avatar/big/017-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-1.png b/public/media-src/avatar/big/018-1.png deleted file mode 100755 index 20268add3..000000000 Binary files a/public/media-src/avatar/big/018-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-10.png b/public/media-src/avatar/big/018-10.png deleted file mode 100644 index 0d858d658..000000000 Binary files a/public/media-src/avatar/big/018-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-11.png b/public/media-src/avatar/big/018-11.png deleted file mode 100644 index 97f74693e..000000000 Binary files a/public/media-src/avatar/big/018-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-12.png b/public/media-src/avatar/big/018-12.png deleted file mode 100644 index 036099604..000000000 Binary files a/public/media-src/avatar/big/018-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-2.png b/public/media-src/avatar/big/018-2.png deleted file mode 100755 index 0e75502df..000000000 Binary files a/public/media-src/avatar/big/018-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-3.png b/public/media-src/avatar/big/018-3.png deleted file mode 100755 index 497ca4cd1..000000000 Binary files a/public/media-src/avatar/big/018-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-4.png b/public/media-src/avatar/big/018-4.png deleted file mode 100755 index d69151945..000000000 Binary files a/public/media-src/avatar/big/018-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-5.png b/public/media-src/avatar/big/018-5.png deleted file mode 100755 index 0f81f2147..000000000 Binary files a/public/media-src/avatar/big/018-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-6.png b/public/media-src/avatar/big/018-6.png deleted file mode 100755 index fe6ae75b3..000000000 Binary files a/public/media-src/avatar/big/018-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-7.png b/public/media-src/avatar/big/018-7.png deleted file mode 100755 index bd7c3011c..000000000 Binary files a/public/media-src/avatar/big/018-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-8.png b/public/media-src/avatar/big/018-8.png deleted file mode 100644 index 35651fac3..000000000 Binary files a/public/media-src/avatar/big/018-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/018-9.png b/public/media-src/avatar/big/018-9.png deleted file mode 100644 index e2fa09fc1..000000000 Binary files a/public/media-src/avatar/big/018-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-1.png b/public/media-src/avatar/big/019-1.png deleted file mode 100755 index 79b22c97e..000000000 Binary files a/public/media-src/avatar/big/019-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-10.png b/public/media-src/avatar/big/019-10.png deleted file mode 100644 index baf6f9c01..000000000 Binary files a/public/media-src/avatar/big/019-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-11.png b/public/media-src/avatar/big/019-11.png deleted file mode 100644 index c6e6ba455..000000000 Binary files a/public/media-src/avatar/big/019-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-12.png b/public/media-src/avatar/big/019-12.png deleted file mode 100644 index fd1094503..000000000 Binary files a/public/media-src/avatar/big/019-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-2.png b/public/media-src/avatar/big/019-2.png deleted file mode 100755 index d5bad98cb..000000000 Binary files a/public/media-src/avatar/big/019-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-3.png b/public/media-src/avatar/big/019-3.png deleted file mode 100755 index 5a8f8ff43..000000000 Binary files a/public/media-src/avatar/big/019-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-4.png b/public/media-src/avatar/big/019-4.png deleted file mode 100755 index ab5762fe3..000000000 Binary files a/public/media-src/avatar/big/019-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-5.png b/public/media-src/avatar/big/019-5.png deleted file mode 100755 index e3c6f9af9..000000000 Binary files a/public/media-src/avatar/big/019-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-6.png b/public/media-src/avatar/big/019-6.png deleted file mode 100755 index 68137f653..000000000 Binary files a/public/media-src/avatar/big/019-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-7.png b/public/media-src/avatar/big/019-7.png deleted file mode 100755 index 6030d5995..000000000 Binary files a/public/media-src/avatar/big/019-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-8.png b/public/media-src/avatar/big/019-8.png deleted file mode 100644 index d59a18368..000000000 Binary files a/public/media-src/avatar/big/019-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/019-9.png b/public/media-src/avatar/big/019-9.png deleted file mode 100644 index 7093a824f..000000000 Binary files a/public/media-src/avatar/big/019-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-1.png b/public/media-src/avatar/big/020-1.png deleted file mode 100755 index 99f501757..000000000 Binary files a/public/media-src/avatar/big/020-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-10.png b/public/media-src/avatar/big/020-10.png deleted file mode 100644 index 479d40a15..000000000 Binary files a/public/media-src/avatar/big/020-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-11.png b/public/media-src/avatar/big/020-11.png deleted file mode 100644 index 32b9bf755..000000000 Binary files a/public/media-src/avatar/big/020-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-12.png b/public/media-src/avatar/big/020-12.png deleted file mode 100644 index 7ca7d9bd2..000000000 Binary files a/public/media-src/avatar/big/020-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-2.png b/public/media-src/avatar/big/020-2.png deleted file mode 100755 index 5efe61e00..000000000 Binary files a/public/media-src/avatar/big/020-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-3.png b/public/media-src/avatar/big/020-3.png deleted file mode 100755 index 34579de57..000000000 Binary files a/public/media-src/avatar/big/020-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-4.png b/public/media-src/avatar/big/020-4.png deleted file mode 100755 index dbf4083df..000000000 Binary files a/public/media-src/avatar/big/020-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-5.png b/public/media-src/avatar/big/020-5.png deleted file mode 100755 index cb592628c..000000000 Binary files a/public/media-src/avatar/big/020-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-6.png b/public/media-src/avatar/big/020-6.png deleted file mode 100755 index 586eef571..000000000 Binary files a/public/media-src/avatar/big/020-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-7.png b/public/media-src/avatar/big/020-7.png deleted file mode 100755 index a739d81a2..000000000 Binary files a/public/media-src/avatar/big/020-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-8.png b/public/media-src/avatar/big/020-8.png deleted file mode 100644 index dcb178fa5..000000000 Binary files a/public/media-src/avatar/big/020-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/020-9.png b/public/media-src/avatar/big/020-9.png deleted file mode 100644 index 07c6b2488..000000000 Binary files a/public/media-src/avatar/big/020-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-1.png b/public/media-src/avatar/big/021-1.png deleted file mode 100755 index a4ee2827c..000000000 Binary files a/public/media-src/avatar/big/021-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-10.png b/public/media-src/avatar/big/021-10.png deleted file mode 100644 index df4354318..000000000 Binary files a/public/media-src/avatar/big/021-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-11.png b/public/media-src/avatar/big/021-11.png deleted file mode 100644 index ca2820635..000000000 Binary files a/public/media-src/avatar/big/021-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-12.png b/public/media-src/avatar/big/021-12.png deleted file mode 100644 index a8c7b2a77..000000000 Binary files a/public/media-src/avatar/big/021-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-2.png b/public/media-src/avatar/big/021-2.png deleted file mode 100755 index a91da1894..000000000 Binary files a/public/media-src/avatar/big/021-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-3.png b/public/media-src/avatar/big/021-3.png deleted file mode 100755 index 674147b59..000000000 Binary files a/public/media-src/avatar/big/021-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-4.png b/public/media-src/avatar/big/021-4.png deleted file mode 100755 index 8063760f6..000000000 Binary files a/public/media-src/avatar/big/021-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-5.png b/public/media-src/avatar/big/021-5.png deleted file mode 100755 index b7929f8ee..000000000 Binary files a/public/media-src/avatar/big/021-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-6.png b/public/media-src/avatar/big/021-6.png deleted file mode 100755 index 95e8287bd..000000000 Binary files a/public/media-src/avatar/big/021-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-7.png b/public/media-src/avatar/big/021-7.png deleted file mode 100755 index d5833fcbc..000000000 Binary files a/public/media-src/avatar/big/021-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-8.png b/public/media-src/avatar/big/021-8.png deleted file mode 100644 index 61bb9cff2..000000000 Binary files a/public/media-src/avatar/big/021-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/021-9.png b/public/media-src/avatar/big/021-9.png deleted file mode 100644 index 99548a3d0..000000000 Binary files a/public/media-src/avatar/big/021-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-1.png b/public/media-src/avatar/big/022-1.png deleted file mode 100755 index 3f897b36d..000000000 Binary files a/public/media-src/avatar/big/022-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-10.png b/public/media-src/avatar/big/022-10.png deleted file mode 100644 index e4beb88ee..000000000 Binary files a/public/media-src/avatar/big/022-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-11.png b/public/media-src/avatar/big/022-11.png deleted file mode 100644 index 54043c36e..000000000 Binary files a/public/media-src/avatar/big/022-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-12.png b/public/media-src/avatar/big/022-12.png deleted file mode 100644 index 509c1d50e..000000000 Binary files a/public/media-src/avatar/big/022-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-2.png b/public/media-src/avatar/big/022-2.png deleted file mode 100755 index f3907ab22..000000000 Binary files a/public/media-src/avatar/big/022-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-3.png b/public/media-src/avatar/big/022-3.png deleted file mode 100755 index 09a6aa9a9..000000000 Binary files a/public/media-src/avatar/big/022-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-4.png b/public/media-src/avatar/big/022-4.png deleted file mode 100755 index 5c72a7a2e..000000000 Binary files a/public/media-src/avatar/big/022-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-5.png b/public/media-src/avatar/big/022-5.png deleted file mode 100755 index 50bfae887..000000000 Binary files a/public/media-src/avatar/big/022-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-6.png b/public/media-src/avatar/big/022-6.png deleted file mode 100755 index d51b08add..000000000 Binary files a/public/media-src/avatar/big/022-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-7.png b/public/media-src/avatar/big/022-7.png deleted file mode 100755 index 21b0ebdb4..000000000 Binary files a/public/media-src/avatar/big/022-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-8.png b/public/media-src/avatar/big/022-8.png deleted file mode 100644 index b0391e9f3..000000000 Binary files a/public/media-src/avatar/big/022-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/022-9.png b/public/media-src/avatar/big/022-9.png deleted file mode 100644 index c6db761b7..000000000 Binary files a/public/media-src/avatar/big/022-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-1.png b/public/media-src/avatar/big/023-1.png deleted file mode 100755 index e75bfdb53..000000000 Binary files a/public/media-src/avatar/big/023-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-10.png b/public/media-src/avatar/big/023-10.png deleted file mode 100644 index fc0e4360d..000000000 Binary files a/public/media-src/avatar/big/023-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-11.png b/public/media-src/avatar/big/023-11.png deleted file mode 100644 index 455df30cf..000000000 Binary files a/public/media-src/avatar/big/023-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-12.png b/public/media-src/avatar/big/023-12.png deleted file mode 100644 index fa4d45d1a..000000000 Binary files a/public/media-src/avatar/big/023-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-2.png b/public/media-src/avatar/big/023-2.png deleted file mode 100755 index b05e81ea1..000000000 Binary files a/public/media-src/avatar/big/023-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-3.png b/public/media-src/avatar/big/023-3.png deleted file mode 100755 index 6ad32fd90..000000000 Binary files a/public/media-src/avatar/big/023-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-4.png b/public/media-src/avatar/big/023-4.png deleted file mode 100755 index 7db146f91..000000000 Binary files a/public/media-src/avatar/big/023-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-5.png b/public/media-src/avatar/big/023-5.png deleted file mode 100755 index 693526b1e..000000000 Binary files a/public/media-src/avatar/big/023-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-6.png b/public/media-src/avatar/big/023-6.png deleted file mode 100755 index 93b87c1a4..000000000 Binary files a/public/media-src/avatar/big/023-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-7.png b/public/media-src/avatar/big/023-7.png deleted file mode 100755 index 174036300..000000000 Binary files a/public/media-src/avatar/big/023-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-8.png b/public/media-src/avatar/big/023-8.png deleted file mode 100644 index 4491bbd5f..000000000 Binary files a/public/media-src/avatar/big/023-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/023-9.png b/public/media-src/avatar/big/023-9.png deleted file mode 100644 index b92c2e354..000000000 Binary files a/public/media-src/avatar/big/023-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-1.png b/public/media-src/avatar/big/024-1.png deleted file mode 100755 index 3c3115369..000000000 Binary files a/public/media-src/avatar/big/024-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-10.png b/public/media-src/avatar/big/024-10.png deleted file mode 100644 index 93e2b8897..000000000 Binary files a/public/media-src/avatar/big/024-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-11.png b/public/media-src/avatar/big/024-11.png deleted file mode 100644 index ecb6dd694..000000000 Binary files a/public/media-src/avatar/big/024-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-12.png b/public/media-src/avatar/big/024-12.png deleted file mode 100644 index 0b93cab6e..000000000 Binary files a/public/media-src/avatar/big/024-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-2.png b/public/media-src/avatar/big/024-2.png deleted file mode 100755 index 824bf47ac..000000000 Binary files a/public/media-src/avatar/big/024-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-3.png b/public/media-src/avatar/big/024-3.png deleted file mode 100755 index 055141596..000000000 Binary files a/public/media-src/avatar/big/024-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-4.png b/public/media-src/avatar/big/024-4.png deleted file mode 100755 index 5c82b7526..000000000 Binary files a/public/media-src/avatar/big/024-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-5.png b/public/media-src/avatar/big/024-5.png deleted file mode 100755 index 78c74fe87..000000000 Binary files a/public/media-src/avatar/big/024-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-6.png b/public/media-src/avatar/big/024-6.png deleted file mode 100755 index ac4a02bcf..000000000 Binary files a/public/media-src/avatar/big/024-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-7.png b/public/media-src/avatar/big/024-7.png deleted file mode 100755 index 52d764ef9..000000000 Binary files a/public/media-src/avatar/big/024-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-8.png b/public/media-src/avatar/big/024-8.png deleted file mode 100644 index 4b4c44098..000000000 Binary files a/public/media-src/avatar/big/024-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/024-9.png b/public/media-src/avatar/big/024-9.png deleted file mode 100644 index 7d06a83f0..000000000 Binary files a/public/media-src/avatar/big/024-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-1.png b/public/media-src/avatar/big/025-1.png deleted file mode 100755 index d95518d6d..000000000 Binary files a/public/media-src/avatar/big/025-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-10.png b/public/media-src/avatar/big/025-10.png deleted file mode 100644 index c5993893a..000000000 Binary files a/public/media-src/avatar/big/025-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-11.png b/public/media-src/avatar/big/025-11.png deleted file mode 100644 index 56e5fd80c..000000000 Binary files a/public/media-src/avatar/big/025-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-12.png b/public/media-src/avatar/big/025-12.png deleted file mode 100644 index ab0eb0dc2..000000000 Binary files a/public/media-src/avatar/big/025-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-2.png b/public/media-src/avatar/big/025-2.png deleted file mode 100755 index abb2d1212..000000000 Binary files a/public/media-src/avatar/big/025-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-3.png b/public/media-src/avatar/big/025-3.png deleted file mode 100755 index a5b4bb1a0..000000000 Binary files a/public/media-src/avatar/big/025-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-4.png b/public/media-src/avatar/big/025-4.png deleted file mode 100755 index 834098eaa..000000000 Binary files a/public/media-src/avatar/big/025-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-5.png b/public/media-src/avatar/big/025-5.png deleted file mode 100755 index 750c51710..000000000 Binary files a/public/media-src/avatar/big/025-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-6.png b/public/media-src/avatar/big/025-6.png deleted file mode 100755 index c46f7119d..000000000 Binary files a/public/media-src/avatar/big/025-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-7.png b/public/media-src/avatar/big/025-7.png deleted file mode 100755 index 9995d75c3..000000000 Binary files a/public/media-src/avatar/big/025-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-8.png b/public/media-src/avatar/big/025-8.png deleted file mode 100644 index 80565d09a..000000000 Binary files a/public/media-src/avatar/big/025-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/025-9.png b/public/media-src/avatar/big/025-9.png deleted file mode 100644 index e83b4f819..000000000 Binary files a/public/media-src/avatar/big/025-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-1.png b/public/media-src/avatar/big/026-1.png deleted file mode 100755 index a2f4e4243..000000000 Binary files a/public/media-src/avatar/big/026-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-10.png b/public/media-src/avatar/big/026-10.png deleted file mode 100644 index 574ad326f..000000000 Binary files a/public/media-src/avatar/big/026-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-11.png b/public/media-src/avatar/big/026-11.png deleted file mode 100644 index d4bc38d27..000000000 Binary files a/public/media-src/avatar/big/026-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-12.png b/public/media-src/avatar/big/026-12.png deleted file mode 100644 index 608c2dc90..000000000 Binary files a/public/media-src/avatar/big/026-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-2.png b/public/media-src/avatar/big/026-2.png deleted file mode 100755 index 914d11660..000000000 Binary files a/public/media-src/avatar/big/026-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-3.png b/public/media-src/avatar/big/026-3.png deleted file mode 100755 index 667661001..000000000 Binary files a/public/media-src/avatar/big/026-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-4.png b/public/media-src/avatar/big/026-4.png deleted file mode 100755 index 75d21b7f1..000000000 Binary files a/public/media-src/avatar/big/026-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-5.png b/public/media-src/avatar/big/026-5.png deleted file mode 100755 index 55019b3e8..000000000 Binary files a/public/media-src/avatar/big/026-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-6.png b/public/media-src/avatar/big/026-6.png deleted file mode 100755 index c8dc91fc5..000000000 Binary files a/public/media-src/avatar/big/026-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-7.png b/public/media-src/avatar/big/026-7.png deleted file mode 100755 index 343501350..000000000 Binary files a/public/media-src/avatar/big/026-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-8.png b/public/media-src/avatar/big/026-8.png deleted file mode 100644 index 6bc7553cd..000000000 Binary files a/public/media-src/avatar/big/026-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/026-9.png b/public/media-src/avatar/big/026-9.png deleted file mode 100644 index d5bbece76..000000000 Binary files a/public/media-src/avatar/big/026-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-1.png b/public/media-src/avatar/big/027-1.png deleted file mode 100755 index 59ce3c5f5..000000000 Binary files a/public/media-src/avatar/big/027-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-10.png b/public/media-src/avatar/big/027-10.png deleted file mode 100644 index d7873d47e..000000000 Binary files a/public/media-src/avatar/big/027-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-11.png b/public/media-src/avatar/big/027-11.png deleted file mode 100644 index e132165c5..000000000 Binary files a/public/media-src/avatar/big/027-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-12.png b/public/media-src/avatar/big/027-12.png deleted file mode 100644 index 3a8c8d00a..000000000 Binary files a/public/media-src/avatar/big/027-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-2.png b/public/media-src/avatar/big/027-2.png deleted file mode 100755 index 838704ff9..000000000 Binary files a/public/media-src/avatar/big/027-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-3.png b/public/media-src/avatar/big/027-3.png deleted file mode 100755 index 6b4f36fce..000000000 Binary files a/public/media-src/avatar/big/027-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-4.png b/public/media-src/avatar/big/027-4.png deleted file mode 100755 index f3e4f15a9..000000000 Binary files a/public/media-src/avatar/big/027-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-5.png b/public/media-src/avatar/big/027-5.png deleted file mode 100755 index 1a4dd485c..000000000 Binary files a/public/media-src/avatar/big/027-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-6.png b/public/media-src/avatar/big/027-6.png deleted file mode 100755 index 4e5baf381..000000000 Binary files a/public/media-src/avatar/big/027-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-7.png b/public/media-src/avatar/big/027-7.png deleted file mode 100755 index ad99b4eb6..000000000 Binary files a/public/media-src/avatar/big/027-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-8.png b/public/media-src/avatar/big/027-8.png deleted file mode 100644 index 747ff54a7..000000000 Binary files a/public/media-src/avatar/big/027-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/027-9.png b/public/media-src/avatar/big/027-9.png deleted file mode 100644 index 969ee23a4..000000000 Binary files a/public/media-src/avatar/big/027-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-1.png b/public/media-src/avatar/big/028-1.png deleted file mode 100755 index 6ee84d8b9..000000000 Binary files a/public/media-src/avatar/big/028-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-10.png b/public/media-src/avatar/big/028-10.png deleted file mode 100644 index e17c52293..000000000 Binary files a/public/media-src/avatar/big/028-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-11.png b/public/media-src/avatar/big/028-11.png deleted file mode 100644 index 193dcaa96..000000000 Binary files a/public/media-src/avatar/big/028-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-12.png b/public/media-src/avatar/big/028-12.png deleted file mode 100644 index 796b2a59f..000000000 Binary files a/public/media-src/avatar/big/028-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-2.png b/public/media-src/avatar/big/028-2.png deleted file mode 100755 index e8cb419c3..000000000 Binary files a/public/media-src/avatar/big/028-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-3.png b/public/media-src/avatar/big/028-3.png deleted file mode 100755 index 7394d83d2..000000000 Binary files a/public/media-src/avatar/big/028-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-4.png b/public/media-src/avatar/big/028-4.png deleted file mode 100755 index db1f5ff7a..000000000 Binary files a/public/media-src/avatar/big/028-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-5.png b/public/media-src/avatar/big/028-5.png deleted file mode 100755 index f7583ff4a..000000000 Binary files a/public/media-src/avatar/big/028-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-6.png b/public/media-src/avatar/big/028-6.png deleted file mode 100755 index 36075e02e..000000000 Binary files a/public/media-src/avatar/big/028-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-7.png b/public/media-src/avatar/big/028-7.png deleted file mode 100755 index 8085edd5d..000000000 Binary files a/public/media-src/avatar/big/028-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-8.png b/public/media-src/avatar/big/028-8.png deleted file mode 100644 index 9c31f358b..000000000 Binary files a/public/media-src/avatar/big/028-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/028-9.png b/public/media-src/avatar/big/028-9.png deleted file mode 100644 index e7b422775..000000000 Binary files a/public/media-src/avatar/big/028-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-1.png b/public/media-src/avatar/big/029-1.png deleted file mode 100755 index c523670c6..000000000 Binary files a/public/media-src/avatar/big/029-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-10.png b/public/media-src/avatar/big/029-10.png deleted file mode 100644 index 46195e762..000000000 Binary files a/public/media-src/avatar/big/029-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-11.png b/public/media-src/avatar/big/029-11.png deleted file mode 100644 index 89c5d103a..000000000 Binary files a/public/media-src/avatar/big/029-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-12.png b/public/media-src/avatar/big/029-12.png deleted file mode 100644 index dd0c4632d..000000000 Binary files a/public/media-src/avatar/big/029-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-2.png b/public/media-src/avatar/big/029-2.png deleted file mode 100755 index 55cb32828..000000000 Binary files a/public/media-src/avatar/big/029-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-3.png b/public/media-src/avatar/big/029-3.png deleted file mode 100755 index de61d189b..000000000 Binary files a/public/media-src/avatar/big/029-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-4.png b/public/media-src/avatar/big/029-4.png deleted file mode 100755 index c12c90e52..000000000 Binary files a/public/media-src/avatar/big/029-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-5.png b/public/media-src/avatar/big/029-5.png deleted file mode 100755 index a9ddfa849..000000000 Binary files a/public/media-src/avatar/big/029-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-6.png b/public/media-src/avatar/big/029-6.png deleted file mode 100755 index fc505172e..000000000 Binary files a/public/media-src/avatar/big/029-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-7.png b/public/media-src/avatar/big/029-7.png deleted file mode 100755 index ef736ee08..000000000 Binary files a/public/media-src/avatar/big/029-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-8.png b/public/media-src/avatar/big/029-8.png deleted file mode 100644 index 8a00c8495..000000000 Binary files a/public/media-src/avatar/big/029-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/029-9.png b/public/media-src/avatar/big/029-9.png deleted file mode 100644 index caa4c8bea..000000000 Binary files a/public/media-src/avatar/big/029-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-1.png b/public/media-src/avatar/big/030-1.png deleted file mode 100755 index 0cff1efaa..000000000 Binary files a/public/media-src/avatar/big/030-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-10.png b/public/media-src/avatar/big/030-10.png deleted file mode 100644 index 1c5a44c1b..000000000 Binary files a/public/media-src/avatar/big/030-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-11.png b/public/media-src/avatar/big/030-11.png deleted file mode 100644 index 6a2fa69a8..000000000 Binary files a/public/media-src/avatar/big/030-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-12.png b/public/media-src/avatar/big/030-12.png deleted file mode 100644 index 412570956..000000000 Binary files a/public/media-src/avatar/big/030-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-2.png b/public/media-src/avatar/big/030-2.png deleted file mode 100755 index 1f970fef4..000000000 Binary files a/public/media-src/avatar/big/030-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-3.png b/public/media-src/avatar/big/030-3.png deleted file mode 100755 index a3875167c..000000000 Binary files a/public/media-src/avatar/big/030-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-4.png b/public/media-src/avatar/big/030-4.png deleted file mode 100755 index 6978a21a9..000000000 Binary files a/public/media-src/avatar/big/030-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-5.png b/public/media-src/avatar/big/030-5.png deleted file mode 100755 index fa0b5f6c6..000000000 Binary files a/public/media-src/avatar/big/030-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-6.png b/public/media-src/avatar/big/030-6.png deleted file mode 100755 index 3a267aa67..000000000 Binary files a/public/media-src/avatar/big/030-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-7.png b/public/media-src/avatar/big/030-7.png deleted file mode 100755 index 74763a1a1..000000000 Binary files a/public/media-src/avatar/big/030-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-8.png b/public/media-src/avatar/big/030-8.png deleted file mode 100644 index 38ba92740..000000000 Binary files a/public/media-src/avatar/big/030-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/030-9.png b/public/media-src/avatar/big/030-9.png deleted file mode 100644 index 3f5381dfe..000000000 Binary files a/public/media-src/avatar/big/030-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-1.png b/public/media-src/avatar/big/031-1.png deleted file mode 100755 index 576542f47..000000000 Binary files a/public/media-src/avatar/big/031-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-10.png b/public/media-src/avatar/big/031-10.png deleted file mode 100644 index 2c411a37a..000000000 Binary files a/public/media-src/avatar/big/031-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-11.png b/public/media-src/avatar/big/031-11.png deleted file mode 100644 index bfbf83c10..000000000 Binary files a/public/media-src/avatar/big/031-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-12.png b/public/media-src/avatar/big/031-12.png deleted file mode 100644 index 9f256c102..000000000 Binary files a/public/media-src/avatar/big/031-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-2.png b/public/media-src/avatar/big/031-2.png deleted file mode 100755 index 4f8db50cd..000000000 Binary files a/public/media-src/avatar/big/031-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-3.png b/public/media-src/avatar/big/031-3.png deleted file mode 100755 index f3bbde32f..000000000 Binary files a/public/media-src/avatar/big/031-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-4.png b/public/media-src/avatar/big/031-4.png deleted file mode 100755 index 7eeb74c53..000000000 Binary files a/public/media-src/avatar/big/031-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-5.png b/public/media-src/avatar/big/031-5.png deleted file mode 100755 index 7d718aeb2..000000000 Binary files a/public/media-src/avatar/big/031-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-6.png b/public/media-src/avatar/big/031-6.png deleted file mode 100755 index 11232fde2..000000000 Binary files a/public/media-src/avatar/big/031-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-7.png b/public/media-src/avatar/big/031-7.png deleted file mode 100755 index eed83a864..000000000 Binary files a/public/media-src/avatar/big/031-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-8.png b/public/media-src/avatar/big/031-8.png deleted file mode 100644 index a315aa503..000000000 Binary files a/public/media-src/avatar/big/031-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/031-9.png b/public/media-src/avatar/big/031-9.png deleted file mode 100644 index 7a8eb88e2..000000000 Binary files a/public/media-src/avatar/big/031-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-1.png b/public/media-src/avatar/big/032-1.png deleted file mode 100755 index 426fa8582..000000000 Binary files a/public/media-src/avatar/big/032-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-10.png b/public/media-src/avatar/big/032-10.png deleted file mode 100644 index c94b7c9c2..000000000 Binary files a/public/media-src/avatar/big/032-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-11.png b/public/media-src/avatar/big/032-11.png deleted file mode 100644 index 6c805aceb..000000000 Binary files a/public/media-src/avatar/big/032-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-12.png b/public/media-src/avatar/big/032-12.png deleted file mode 100644 index a536381dc..000000000 Binary files a/public/media-src/avatar/big/032-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-2.png b/public/media-src/avatar/big/032-2.png deleted file mode 100755 index ec138dd7b..000000000 Binary files a/public/media-src/avatar/big/032-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-3.png b/public/media-src/avatar/big/032-3.png deleted file mode 100755 index 302e72efc..000000000 Binary files a/public/media-src/avatar/big/032-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-4.png b/public/media-src/avatar/big/032-4.png deleted file mode 100755 index 2fbbefb14..000000000 Binary files a/public/media-src/avatar/big/032-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-5.png b/public/media-src/avatar/big/032-5.png deleted file mode 100755 index 1f10fa39e..000000000 Binary files a/public/media-src/avatar/big/032-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-6.png b/public/media-src/avatar/big/032-6.png deleted file mode 100755 index 87dbcd308..000000000 Binary files a/public/media-src/avatar/big/032-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-7.png b/public/media-src/avatar/big/032-7.png deleted file mode 100755 index 53917570e..000000000 Binary files a/public/media-src/avatar/big/032-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-8.png b/public/media-src/avatar/big/032-8.png deleted file mode 100644 index 3791aa736..000000000 Binary files a/public/media-src/avatar/big/032-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/032-9.png b/public/media-src/avatar/big/032-9.png deleted file mode 100644 index cdaea1a24..000000000 Binary files a/public/media-src/avatar/big/032-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-1.png b/public/media-src/avatar/big/033-1.png deleted file mode 100755 index bdae42394..000000000 Binary files a/public/media-src/avatar/big/033-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-10.png b/public/media-src/avatar/big/033-10.png deleted file mode 100644 index a3f0e1338..000000000 Binary files a/public/media-src/avatar/big/033-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-11.png b/public/media-src/avatar/big/033-11.png deleted file mode 100644 index 9fd57e3ed..000000000 Binary files a/public/media-src/avatar/big/033-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-12.png b/public/media-src/avatar/big/033-12.png deleted file mode 100644 index 91cd9b127..000000000 Binary files a/public/media-src/avatar/big/033-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-2.png b/public/media-src/avatar/big/033-2.png deleted file mode 100755 index bc58395b0..000000000 Binary files a/public/media-src/avatar/big/033-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-3.png b/public/media-src/avatar/big/033-3.png deleted file mode 100755 index 9b0231b52..000000000 Binary files a/public/media-src/avatar/big/033-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-4.png b/public/media-src/avatar/big/033-4.png deleted file mode 100755 index be90036ab..000000000 Binary files a/public/media-src/avatar/big/033-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-5.png b/public/media-src/avatar/big/033-5.png deleted file mode 100755 index 8459296b7..000000000 Binary files a/public/media-src/avatar/big/033-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-6.png b/public/media-src/avatar/big/033-6.png deleted file mode 100755 index 15842dea5..000000000 Binary files a/public/media-src/avatar/big/033-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-7.png b/public/media-src/avatar/big/033-7.png deleted file mode 100755 index f5bff9803..000000000 Binary files a/public/media-src/avatar/big/033-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-8.png b/public/media-src/avatar/big/033-8.png deleted file mode 100644 index 9729b422d..000000000 Binary files a/public/media-src/avatar/big/033-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/033-9.png b/public/media-src/avatar/big/033-9.png deleted file mode 100644 index 3ad820bdc..000000000 Binary files a/public/media-src/avatar/big/033-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-1.png b/public/media-src/avatar/big/034-1.png deleted file mode 100755 index 0d9d61516..000000000 Binary files a/public/media-src/avatar/big/034-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-10.png b/public/media-src/avatar/big/034-10.png deleted file mode 100644 index 238d03ddf..000000000 Binary files a/public/media-src/avatar/big/034-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-11.png b/public/media-src/avatar/big/034-11.png deleted file mode 100644 index c5f9e6b97..000000000 Binary files a/public/media-src/avatar/big/034-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-12.png b/public/media-src/avatar/big/034-12.png deleted file mode 100644 index 83906abe9..000000000 Binary files a/public/media-src/avatar/big/034-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-2.png b/public/media-src/avatar/big/034-2.png deleted file mode 100755 index 8ecce8827..000000000 Binary files a/public/media-src/avatar/big/034-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-3.png b/public/media-src/avatar/big/034-3.png deleted file mode 100755 index fd06c2b47..000000000 Binary files a/public/media-src/avatar/big/034-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-4.png b/public/media-src/avatar/big/034-4.png deleted file mode 100755 index 9f4241501..000000000 Binary files a/public/media-src/avatar/big/034-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-5.png b/public/media-src/avatar/big/034-5.png deleted file mode 100755 index f95730591..000000000 Binary files a/public/media-src/avatar/big/034-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-6.png b/public/media-src/avatar/big/034-6.png deleted file mode 100755 index da2b24157..000000000 Binary files a/public/media-src/avatar/big/034-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-7.png b/public/media-src/avatar/big/034-7.png deleted file mode 100755 index db556ee10..000000000 Binary files a/public/media-src/avatar/big/034-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-8.png b/public/media-src/avatar/big/034-8.png deleted file mode 100644 index 7d0fe84ac..000000000 Binary files a/public/media-src/avatar/big/034-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/034-9.png b/public/media-src/avatar/big/034-9.png deleted file mode 100644 index 558b7a663..000000000 Binary files a/public/media-src/avatar/big/034-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-1.png b/public/media-src/avatar/big/035-1.png deleted file mode 100755 index f25c890bb..000000000 Binary files a/public/media-src/avatar/big/035-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-10.png b/public/media-src/avatar/big/035-10.png deleted file mode 100644 index c70dd20a6..000000000 Binary files a/public/media-src/avatar/big/035-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-11.png b/public/media-src/avatar/big/035-11.png deleted file mode 100644 index b2739c6d6..000000000 Binary files a/public/media-src/avatar/big/035-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-12.png b/public/media-src/avatar/big/035-12.png deleted file mode 100644 index cf1f06478..000000000 Binary files a/public/media-src/avatar/big/035-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-2.png b/public/media-src/avatar/big/035-2.png deleted file mode 100755 index b656907a9..000000000 Binary files a/public/media-src/avatar/big/035-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-3.png b/public/media-src/avatar/big/035-3.png deleted file mode 100755 index f2f232265..000000000 Binary files a/public/media-src/avatar/big/035-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-4.png b/public/media-src/avatar/big/035-4.png deleted file mode 100755 index 5fa39ff97..000000000 Binary files a/public/media-src/avatar/big/035-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-5.png b/public/media-src/avatar/big/035-5.png deleted file mode 100755 index 8c4923fad..000000000 Binary files a/public/media-src/avatar/big/035-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-6.png b/public/media-src/avatar/big/035-6.png deleted file mode 100755 index 566946f54..000000000 Binary files a/public/media-src/avatar/big/035-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-7.png b/public/media-src/avatar/big/035-7.png deleted file mode 100755 index 0e0413efb..000000000 Binary files a/public/media-src/avatar/big/035-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-8.png b/public/media-src/avatar/big/035-8.png deleted file mode 100644 index 17b4263cb..000000000 Binary files a/public/media-src/avatar/big/035-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/035-9.png b/public/media-src/avatar/big/035-9.png deleted file mode 100644 index 731e731e9..000000000 Binary files a/public/media-src/avatar/big/035-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-1.png b/public/media-src/avatar/big/036-1.png deleted file mode 100755 index 8908edc60..000000000 Binary files a/public/media-src/avatar/big/036-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-10.png b/public/media-src/avatar/big/036-10.png deleted file mode 100644 index ba6b53d35..000000000 Binary files a/public/media-src/avatar/big/036-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-11.png b/public/media-src/avatar/big/036-11.png deleted file mode 100644 index e238929c3..000000000 Binary files a/public/media-src/avatar/big/036-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-12.png b/public/media-src/avatar/big/036-12.png deleted file mode 100644 index f1428fb4b..000000000 Binary files a/public/media-src/avatar/big/036-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-2.png b/public/media-src/avatar/big/036-2.png deleted file mode 100755 index 607d73b97..000000000 Binary files a/public/media-src/avatar/big/036-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-3.png b/public/media-src/avatar/big/036-3.png deleted file mode 100755 index de26d7319..000000000 Binary files a/public/media-src/avatar/big/036-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-4.png b/public/media-src/avatar/big/036-4.png deleted file mode 100755 index 581b74810..000000000 Binary files a/public/media-src/avatar/big/036-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-5.png b/public/media-src/avatar/big/036-5.png deleted file mode 100755 index a2d9d4cd4..000000000 Binary files a/public/media-src/avatar/big/036-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-6.png b/public/media-src/avatar/big/036-6.png deleted file mode 100755 index fcd0ec3c3..000000000 Binary files a/public/media-src/avatar/big/036-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-7.png b/public/media-src/avatar/big/036-7.png deleted file mode 100755 index 3f331a290..000000000 Binary files a/public/media-src/avatar/big/036-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-8.png b/public/media-src/avatar/big/036-8.png deleted file mode 100644 index 734a1eb7f..000000000 Binary files a/public/media-src/avatar/big/036-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/036-9.png b/public/media-src/avatar/big/036-9.png deleted file mode 100644 index c4563b775..000000000 Binary files a/public/media-src/avatar/big/036-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-1.png b/public/media-src/avatar/big/037-1.png deleted file mode 100755 index 898866864..000000000 Binary files a/public/media-src/avatar/big/037-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-10.png b/public/media-src/avatar/big/037-10.png deleted file mode 100644 index d652ca003..000000000 Binary files a/public/media-src/avatar/big/037-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-11.png b/public/media-src/avatar/big/037-11.png deleted file mode 100644 index 42df90c95..000000000 Binary files a/public/media-src/avatar/big/037-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-12.png b/public/media-src/avatar/big/037-12.png deleted file mode 100644 index b2359196e..000000000 Binary files a/public/media-src/avatar/big/037-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-2.png b/public/media-src/avatar/big/037-2.png deleted file mode 100755 index e3929739d..000000000 Binary files a/public/media-src/avatar/big/037-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-3.png b/public/media-src/avatar/big/037-3.png deleted file mode 100755 index 109b992df..000000000 Binary files a/public/media-src/avatar/big/037-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-4.png b/public/media-src/avatar/big/037-4.png deleted file mode 100755 index abfd59727..000000000 Binary files a/public/media-src/avatar/big/037-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-5.png b/public/media-src/avatar/big/037-5.png deleted file mode 100755 index 3d662df85..000000000 Binary files a/public/media-src/avatar/big/037-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-6.png b/public/media-src/avatar/big/037-6.png deleted file mode 100755 index a02a6c54a..000000000 Binary files a/public/media-src/avatar/big/037-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-7.png b/public/media-src/avatar/big/037-7.png deleted file mode 100755 index 671c8dac7..000000000 Binary files a/public/media-src/avatar/big/037-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-8.png b/public/media-src/avatar/big/037-8.png deleted file mode 100644 index ba4c027f8..000000000 Binary files a/public/media-src/avatar/big/037-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/037-9.png b/public/media-src/avatar/big/037-9.png deleted file mode 100644 index 35b778362..000000000 Binary files a/public/media-src/avatar/big/037-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-1.png b/public/media-src/avatar/big/038-1.png deleted file mode 100755 index ed574ab22..000000000 Binary files a/public/media-src/avatar/big/038-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-10.png b/public/media-src/avatar/big/038-10.png deleted file mode 100644 index f6afbdac8..000000000 Binary files a/public/media-src/avatar/big/038-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-11.png b/public/media-src/avatar/big/038-11.png deleted file mode 100644 index 2c9f8f221..000000000 Binary files a/public/media-src/avatar/big/038-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-12.png b/public/media-src/avatar/big/038-12.png deleted file mode 100644 index aea245ea2..000000000 Binary files a/public/media-src/avatar/big/038-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-2.png b/public/media-src/avatar/big/038-2.png deleted file mode 100755 index d06471750..000000000 Binary files a/public/media-src/avatar/big/038-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-3.png b/public/media-src/avatar/big/038-3.png deleted file mode 100755 index 0059443a3..000000000 Binary files a/public/media-src/avatar/big/038-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-4.png b/public/media-src/avatar/big/038-4.png deleted file mode 100755 index b710304c4..000000000 Binary files a/public/media-src/avatar/big/038-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-5.png b/public/media-src/avatar/big/038-5.png deleted file mode 100755 index 2c67701a3..000000000 Binary files a/public/media-src/avatar/big/038-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-6.png b/public/media-src/avatar/big/038-6.png deleted file mode 100755 index 5dff9342c..000000000 Binary files a/public/media-src/avatar/big/038-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-7.png b/public/media-src/avatar/big/038-7.png deleted file mode 100755 index 4439f1008..000000000 Binary files a/public/media-src/avatar/big/038-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-8.png b/public/media-src/avatar/big/038-8.png deleted file mode 100644 index 1ebb61e5a..000000000 Binary files a/public/media-src/avatar/big/038-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/038-9.png b/public/media-src/avatar/big/038-9.png deleted file mode 100644 index ff23fca68..000000000 Binary files a/public/media-src/avatar/big/038-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-1.png b/public/media-src/avatar/big/039-1.png deleted file mode 100755 index b4d1ec43f..000000000 Binary files a/public/media-src/avatar/big/039-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-10.png b/public/media-src/avatar/big/039-10.png deleted file mode 100644 index a3a77755c..000000000 Binary files a/public/media-src/avatar/big/039-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-11.png b/public/media-src/avatar/big/039-11.png deleted file mode 100644 index 8bfc70bc7..000000000 Binary files a/public/media-src/avatar/big/039-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-12.png b/public/media-src/avatar/big/039-12.png deleted file mode 100644 index 56adc40dc..000000000 Binary files a/public/media-src/avatar/big/039-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-2.png b/public/media-src/avatar/big/039-2.png deleted file mode 100755 index e2543fbf4..000000000 Binary files a/public/media-src/avatar/big/039-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-3.png b/public/media-src/avatar/big/039-3.png deleted file mode 100755 index a61a2c17a..000000000 Binary files a/public/media-src/avatar/big/039-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-4.png b/public/media-src/avatar/big/039-4.png deleted file mode 100755 index 33af802d1..000000000 Binary files a/public/media-src/avatar/big/039-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-5.png b/public/media-src/avatar/big/039-5.png deleted file mode 100755 index b4ad14f50..000000000 Binary files a/public/media-src/avatar/big/039-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-6.png b/public/media-src/avatar/big/039-6.png deleted file mode 100755 index 6dbecf1bf..000000000 Binary files a/public/media-src/avatar/big/039-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-7.png b/public/media-src/avatar/big/039-7.png deleted file mode 100755 index ec46beed5..000000000 Binary files a/public/media-src/avatar/big/039-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-8.png b/public/media-src/avatar/big/039-8.png deleted file mode 100644 index 8762e6b2a..000000000 Binary files a/public/media-src/avatar/big/039-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/039-9.png b/public/media-src/avatar/big/039-9.png deleted file mode 100644 index cdf931100..000000000 Binary files a/public/media-src/avatar/big/039-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-1.png b/public/media-src/avatar/big/040-1.png deleted file mode 100755 index 8846436eb..000000000 Binary files a/public/media-src/avatar/big/040-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-10.png b/public/media-src/avatar/big/040-10.png deleted file mode 100644 index 3a31bedb6..000000000 Binary files a/public/media-src/avatar/big/040-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-11.png b/public/media-src/avatar/big/040-11.png deleted file mode 100644 index 32df876be..000000000 Binary files a/public/media-src/avatar/big/040-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-12.png b/public/media-src/avatar/big/040-12.png deleted file mode 100644 index 895f83164..000000000 Binary files a/public/media-src/avatar/big/040-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-2.png b/public/media-src/avatar/big/040-2.png deleted file mode 100755 index 59bd317e8..000000000 Binary files a/public/media-src/avatar/big/040-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-3.png b/public/media-src/avatar/big/040-3.png deleted file mode 100755 index 862fc58b8..000000000 Binary files a/public/media-src/avatar/big/040-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-4.png b/public/media-src/avatar/big/040-4.png deleted file mode 100755 index d0419e9b6..000000000 Binary files a/public/media-src/avatar/big/040-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-5.png b/public/media-src/avatar/big/040-5.png deleted file mode 100755 index 8fe21ea21..000000000 Binary files a/public/media-src/avatar/big/040-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-6.png b/public/media-src/avatar/big/040-6.png deleted file mode 100755 index c12ce3069..000000000 Binary files a/public/media-src/avatar/big/040-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-7.png b/public/media-src/avatar/big/040-7.png deleted file mode 100755 index 35b26e219..000000000 Binary files a/public/media-src/avatar/big/040-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-8.png b/public/media-src/avatar/big/040-8.png deleted file mode 100644 index 8b2173ef1..000000000 Binary files a/public/media-src/avatar/big/040-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/040-9.png b/public/media-src/avatar/big/040-9.png deleted file mode 100644 index 6bc984675..000000000 Binary files a/public/media-src/avatar/big/040-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-1.png b/public/media-src/avatar/big/041-1.png deleted file mode 100755 index f0de2d4c4..000000000 Binary files a/public/media-src/avatar/big/041-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-10.png b/public/media-src/avatar/big/041-10.png deleted file mode 100644 index cfbd47e04..000000000 Binary files a/public/media-src/avatar/big/041-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-11.png b/public/media-src/avatar/big/041-11.png deleted file mode 100644 index 7ad51f42a..000000000 Binary files a/public/media-src/avatar/big/041-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-12.png b/public/media-src/avatar/big/041-12.png deleted file mode 100644 index 848a366dc..000000000 Binary files a/public/media-src/avatar/big/041-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-2.png b/public/media-src/avatar/big/041-2.png deleted file mode 100755 index 01c7968c8..000000000 Binary files a/public/media-src/avatar/big/041-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-3.png b/public/media-src/avatar/big/041-3.png deleted file mode 100755 index 2cba58fc4..000000000 Binary files a/public/media-src/avatar/big/041-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-4.png b/public/media-src/avatar/big/041-4.png deleted file mode 100755 index 3ef0e5f9c..000000000 Binary files a/public/media-src/avatar/big/041-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-5.png b/public/media-src/avatar/big/041-5.png deleted file mode 100755 index fb61aada4..000000000 Binary files a/public/media-src/avatar/big/041-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-6.png b/public/media-src/avatar/big/041-6.png deleted file mode 100755 index 39be5cf13..000000000 Binary files a/public/media-src/avatar/big/041-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-7.png b/public/media-src/avatar/big/041-7.png deleted file mode 100755 index cde09ec2f..000000000 Binary files a/public/media-src/avatar/big/041-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-8.png b/public/media-src/avatar/big/041-8.png deleted file mode 100644 index 70541efd2..000000000 Binary files a/public/media-src/avatar/big/041-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/041-9.png b/public/media-src/avatar/big/041-9.png deleted file mode 100644 index 8ac643429..000000000 Binary files a/public/media-src/avatar/big/041-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-1.png b/public/media-src/avatar/big/042-1.png deleted file mode 100755 index 2780e010e..000000000 Binary files a/public/media-src/avatar/big/042-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-10.png b/public/media-src/avatar/big/042-10.png deleted file mode 100644 index 041cd2369..000000000 Binary files a/public/media-src/avatar/big/042-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-11.png b/public/media-src/avatar/big/042-11.png deleted file mode 100644 index cd530f37f..000000000 Binary files a/public/media-src/avatar/big/042-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-12.png b/public/media-src/avatar/big/042-12.png deleted file mode 100644 index f159ba87b..000000000 Binary files a/public/media-src/avatar/big/042-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-2.png b/public/media-src/avatar/big/042-2.png deleted file mode 100755 index 36106232e..000000000 Binary files a/public/media-src/avatar/big/042-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-3.png b/public/media-src/avatar/big/042-3.png deleted file mode 100755 index 8fa9201d3..000000000 Binary files a/public/media-src/avatar/big/042-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-4.png b/public/media-src/avatar/big/042-4.png deleted file mode 100755 index 9d177a839..000000000 Binary files a/public/media-src/avatar/big/042-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-5.png b/public/media-src/avatar/big/042-5.png deleted file mode 100755 index 44707f2db..000000000 Binary files a/public/media-src/avatar/big/042-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-6.png b/public/media-src/avatar/big/042-6.png deleted file mode 100755 index 8ea84a593..000000000 Binary files a/public/media-src/avatar/big/042-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-7.png b/public/media-src/avatar/big/042-7.png deleted file mode 100755 index 7f0cd3ff9..000000000 Binary files a/public/media-src/avatar/big/042-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-8.png b/public/media-src/avatar/big/042-8.png deleted file mode 100644 index 17d880bdd..000000000 Binary files a/public/media-src/avatar/big/042-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/042-9.png b/public/media-src/avatar/big/042-9.png deleted file mode 100644 index df88ed312..000000000 Binary files a/public/media-src/avatar/big/042-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-1.png b/public/media-src/avatar/big/043-1.png deleted file mode 100755 index c17248162..000000000 Binary files a/public/media-src/avatar/big/043-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-10.png b/public/media-src/avatar/big/043-10.png deleted file mode 100644 index cb30c8af0..000000000 Binary files a/public/media-src/avatar/big/043-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-11.png b/public/media-src/avatar/big/043-11.png deleted file mode 100644 index 18ea2eb4f..000000000 Binary files a/public/media-src/avatar/big/043-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-12.png b/public/media-src/avatar/big/043-12.png deleted file mode 100644 index f2a20821e..000000000 Binary files a/public/media-src/avatar/big/043-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-2.png b/public/media-src/avatar/big/043-2.png deleted file mode 100755 index 401d403cc..000000000 Binary files a/public/media-src/avatar/big/043-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-3.png b/public/media-src/avatar/big/043-3.png deleted file mode 100755 index 9ab479cea..000000000 Binary files a/public/media-src/avatar/big/043-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-4.png b/public/media-src/avatar/big/043-4.png deleted file mode 100755 index d140eb019..000000000 Binary files a/public/media-src/avatar/big/043-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-5.png b/public/media-src/avatar/big/043-5.png deleted file mode 100755 index 9701fa327..000000000 Binary files a/public/media-src/avatar/big/043-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-6.png b/public/media-src/avatar/big/043-6.png deleted file mode 100755 index 7fc2a65d0..000000000 Binary files a/public/media-src/avatar/big/043-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-7.png b/public/media-src/avatar/big/043-7.png deleted file mode 100755 index 977b16548..000000000 Binary files a/public/media-src/avatar/big/043-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-8.png b/public/media-src/avatar/big/043-8.png deleted file mode 100644 index 27b209028..000000000 Binary files a/public/media-src/avatar/big/043-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/043-9.png b/public/media-src/avatar/big/043-9.png deleted file mode 100644 index b01344da5..000000000 Binary files a/public/media-src/avatar/big/043-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-1.png b/public/media-src/avatar/big/044-1.png deleted file mode 100755 index 9baba1c86..000000000 Binary files a/public/media-src/avatar/big/044-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-10.png b/public/media-src/avatar/big/044-10.png deleted file mode 100644 index f822d62ff..000000000 Binary files a/public/media-src/avatar/big/044-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-11.png b/public/media-src/avatar/big/044-11.png deleted file mode 100644 index e4c2748e7..000000000 Binary files a/public/media-src/avatar/big/044-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-12.png b/public/media-src/avatar/big/044-12.png deleted file mode 100644 index ed46044b1..000000000 Binary files a/public/media-src/avatar/big/044-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-2.png b/public/media-src/avatar/big/044-2.png deleted file mode 100755 index 7caef1b48..000000000 Binary files a/public/media-src/avatar/big/044-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-3.png b/public/media-src/avatar/big/044-3.png deleted file mode 100755 index c66cf7394..000000000 Binary files a/public/media-src/avatar/big/044-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-4.png b/public/media-src/avatar/big/044-4.png deleted file mode 100755 index 8f216745f..000000000 Binary files a/public/media-src/avatar/big/044-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-5.png b/public/media-src/avatar/big/044-5.png deleted file mode 100755 index 7abbad2cd..000000000 Binary files a/public/media-src/avatar/big/044-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-6.png b/public/media-src/avatar/big/044-6.png deleted file mode 100755 index 0a7c3e2c5..000000000 Binary files a/public/media-src/avatar/big/044-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-7.png b/public/media-src/avatar/big/044-7.png deleted file mode 100755 index abd6908b1..000000000 Binary files a/public/media-src/avatar/big/044-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-8.png b/public/media-src/avatar/big/044-8.png deleted file mode 100644 index 9292bfa39..000000000 Binary files a/public/media-src/avatar/big/044-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/044-9.png b/public/media-src/avatar/big/044-9.png deleted file mode 100644 index c7134e25e..000000000 Binary files a/public/media-src/avatar/big/044-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-1.png b/public/media-src/avatar/big/045-1.png deleted file mode 100755 index 9793a108c..000000000 Binary files a/public/media-src/avatar/big/045-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-10.png b/public/media-src/avatar/big/045-10.png deleted file mode 100644 index fb5715c3d..000000000 Binary files a/public/media-src/avatar/big/045-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-11.png b/public/media-src/avatar/big/045-11.png deleted file mode 100644 index 1aa7f9cd9..000000000 Binary files a/public/media-src/avatar/big/045-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-12.png b/public/media-src/avatar/big/045-12.png deleted file mode 100644 index 590b4b57d..000000000 Binary files a/public/media-src/avatar/big/045-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-2.png b/public/media-src/avatar/big/045-2.png deleted file mode 100755 index 24b72b337..000000000 Binary files a/public/media-src/avatar/big/045-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-3.png b/public/media-src/avatar/big/045-3.png deleted file mode 100755 index be60991a7..000000000 Binary files a/public/media-src/avatar/big/045-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-4.png b/public/media-src/avatar/big/045-4.png deleted file mode 100755 index bcb4c84b4..000000000 Binary files a/public/media-src/avatar/big/045-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-5.png b/public/media-src/avatar/big/045-5.png deleted file mode 100755 index 25b25301a..000000000 Binary files a/public/media-src/avatar/big/045-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-6.png b/public/media-src/avatar/big/045-6.png deleted file mode 100755 index bd273ba70..000000000 Binary files a/public/media-src/avatar/big/045-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-7.png b/public/media-src/avatar/big/045-7.png deleted file mode 100755 index d36081ade..000000000 Binary files a/public/media-src/avatar/big/045-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-8.png b/public/media-src/avatar/big/045-8.png deleted file mode 100644 index 56c23fb2c..000000000 Binary files a/public/media-src/avatar/big/045-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/045-9.png b/public/media-src/avatar/big/045-9.png deleted file mode 100644 index bc88b49d7..000000000 Binary files a/public/media-src/avatar/big/045-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-1.png b/public/media-src/avatar/big/046-1.png deleted file mode 100755 index ecaf8c346..000000000 Binary files a/public/media-src/avatar/big/046-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-10.png b/public/media-src/avatar/big/046-10.png deleted file mode 100644 index a2c0badc6..000000000 Binary files a/public/media-src/avatar/big/046-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-11.png b/public/media-src/avatar/big/046-11.png deleted file mode 100644 index fafb6a128..000000000 Binary files a/public/media-src/avatar/big/046-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-12.png b/public/media-src/avatar/big/046-12.png deleted file mode 100644 index 77ea25ccb..000000000 Binary files a/public/media-src/avatar/big/046-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-2.png b/public/media-src/avatar/big/046-2.png deleted file mode 100755 index 4cd1babb3..000000000 Binary files a/public/media-src/avatar/big/046-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-3.png b/public/media-src/avatar/big/046-3.png deleted file mode 100755 index 88868200d..000000000 Binary files a/public/media-src/avatar/big/046-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-4.png b/public/media-src/avatar/big/046-4.png deleted file mode 100755 index 0355e2bf8..000000000 Binary files a/public/media-src/avatar/big/046-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-5.png b/public/media-src/avatar/big/046-5.png deleted file mode 100755 index f597eba23..000000000 Binary files a/public/media-src/avatar/big/046-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-6.png b/public/media-src/avatar/big/046-6.png deleted file mode 100755 index b0781523a..000000000 Binary files a/public/media-src/avatar/big/046-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-7.png b/public/media-src/avatar/big/046-7.png deleted file mode 100755 index f2b8abd3b..000000000 Binary files a/public/media-src/avatar/big/046-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-8.png b/public/media-src/avatar/big/046-8.png deleted file mode 100644 index afa3ef4a8..000000000 Binary files a/public/media-src/avatar/big/046-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/046-9.png b/public/media-src/avatar/big/046-9.png deleted file mode 100644 index f49a52fbd..000000000 Binary files a/public/media-src/avatar/big/046-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-1.png b/public/media-src/avatar/big/047-1.png deleted file mode 100755 index 32b2fa828..000000000 Binary files a/public/media-src/avatar/big/047-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-10.png b/public/media-src/avatar/big/047-10.png deleted file mode 100644 index 450d4e727..000000000 Binary files a/public/media-src/avatar/big/047-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-11.png b/public/media-src/avatar/big/047-11.png deleted file mode 100644 index 82e1f246e..000000000 Binary files a/public/media-src/avatar/big/047-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-12.png b/public/media-src/avatar/big/047-12.png deleted file mode 100644 index da3009647..000000000 Binary files a/public/media-src/avatar/big/047-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-2.png b/public/media-src/avatar/big/047-2.png deleted file mode 100755 index 46a7a3a3b..000000000 Binary files a/public/media-src/avatar/big/047-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-3.png b/public/media-src/avatar/big/047-3.png deleted file mode 100755 index c9338238a..000000000 Binary files a/public/media-src/avatar/big/047-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-4.png b/public/media-src/avatar/big/047-4.png deleted file mode 100755 index 827d2f07f..000000000 Binary files a/public/media-src/avatar/big/047-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-5.png b/public/media-src/avatar/big/047-5.png deleted file mode 100755 index 70521b06f..000000000 Binary files a/public/media-src/avatar/big/047-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-6.png b/public/media-src/avatar/big/047-6.png deleted file mode 100755 index ffd0ef76b..000000000 Binary files a/public/media-src/avatar/big/047-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-7.png b/public/media-src/avatar/big/047-7.png deleted file mode 100755 index 42129adb7..000000000 Binary files a/public/media-src/avatar/big/047-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-8.png b/public/media-src/avatar/big/047-8.png deleted file mode 100644 index 631296d3f..000000000 Binary files a/public/media-src/avatar/big/047-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/047-9.png b/public/media-src/avatar/big/047-9.png deleted file mode 100644 index 571fe966d..000000000 Binary files a/public/media-src/avatar/big/047-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-1.png b/public/media-src/avatar/big/048-1.png deleted file mode 100755 index 5ba735dde..000000000 Binary files a/public/media-src/avatar/big/048-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-10.png b/public/media-src/avatar/big/048-10.png deleted file mode 100644 index 8037dd28a..000000000 Binary files a/public/media-src/avatar/big/048-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-11.png b/public/media-src/avatar/big/048-11.png deleted file mode 100644 index 4c9fdc382..000000000 Binary files a/public/media-src/avatar/big/048-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-12.png b/public/media-src/avatar/big/048-12.png deleted file mode 100644 index b1ac5b118..000000000 Binary files a/public/media-src/avatar/big/048-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-2.png b/public/media-src/avatar/big/048-2.png deleted file mode 100755 index 669bbe443..000000000 Binary files a/public/media-src/avatar/big/048-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-3.png b/public/media-src/avatar/big/048-3.png deleted file mode 100755 index b5367a39c..000000000 Binary files a/public/media-src/avatar/big/048-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-4.png b/public/media-src/avatar/big/048-4.png deleted file mode 100755 index fc665898c..000000000 Binary files a/public/media-src/avatar/big/048-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-5.png b/public/media-src/avatar/big/048-5.png deleted file mode 100755 index e7ebee5da..000000000 Binary files a/public/media-src/avatar/big/048-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-6.png b/public/media-src/avatar/big/048-6.png deleted file mode 100755 index 3049b3dc3..000000000 Binary files a/public/media-src/avatar/big/048-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-7.png b/public/media-src/avatar/big/048-7.png deleted file mode 100755 index 71b3cf00d..000000000 Binary files a/public/media-src/avatar/big/048-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-8.png b/public/media-src/avatar/big/048-8.png deleted file mode 100644 index 44a1aab1a..000000000 Binary files a/public/media-src/avatar/big/048-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/048-9.png b/public/media-src/avatar/big/048-9.png deleted file mode 100644 index 2f4fedd92..000000000 Binary files a/public/media-src/avatar/big/048-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-1.png b/public/media-src/avatar/big/049-1.png deleted file mode 100755 index ed65fb044..000000000 Binary files a/public/media-src/avatar/big/049-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-10.png b/public/media-src/avatar/big/049-10.png deleted file mode 100644 index 1c9e5695c..000000000 Binary files a/public/media-src/avatar/big/049-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-11.png b/public/media-src/avatar/big/049-11.png deleted file mode 100644 index 239f281dd..000000000 Binary files a/public/media-src/avatar/big/049-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-12.png b/public/media-src/avatar/big/049-12.png deleted file mode 100644 index ebe89af24..000000000 Binary files a/public/media-src/avatar/big/049-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-2.png b/public/media-src/avatar/big/049-2.png deleted file mode 100755 index 23cbf259d..000000000 Binary files a/public/media-src/avatar/big/049-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-3.png b/public/media-src/avatar/big/049-3.png deleted file mode 100755 index 678265313..000000000 Binary files a/public/media-src/avatar/big/049-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-4.png b/public/media-src/avatar/big/049-4.png deleted file mode 100755 index bc24a578c..000000000 Binary files a/public/media-src/avatar/big/049-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-5.png b/public/media-src/avatar/big/049-5.png deleted file mode 100755 index 95e241f49..000000000 Binary files a/public/media-src/avatar/big/049-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-6.png b/public/media-src/avatar/big/049-6.png deleted file mode 100755 index 96af09fe0..000000000 Binary files a/public/media-src/avatar/big/049-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-7.png b/public/media-src/avatar/big/049-7.png deleted file mode 100755 index 15a1843a5..000000000 Binary files a/public/media-src/avatar/big/049-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-8.png b/public/media-src/avatar/big/049-8.png deleted file mode 100644 index 70238ad3e..000000000 Binary files a/public/media-src/avatar/big/049-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/049-9.png b/public/media-src/avatar/big/049-9.png deleted file mode 100644 index b31da6012..000000000 Binary files a/public/media-src/avatar/big/049-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-1.png b/public/media-src/avatar/big/050-1.png deleted file mode 100755 index 8a6a5bbe2..000000000 Binary files a/public/media-src/avatar/big/050-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-10.png b/public/media-src/avatar/big/050-10.png deleted file mode 100644 index 515742e16..000000000 Binary files a/public/media-src/avatar/big/050-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-11.png b/public/media-src/avatar/big/050-11.png deleted file mode 100644 index cdcd414dd..000000000 Binary files a/public/media-src/avatar/big/050-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-12.png b/public/media-src/avatar/big/050-12.png deleted file mode 100644 index 994a7e989..000000000 Binary files a/public/media-src/avatar/big/050-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-2.png b/public/media-src/avatar/big/050-2.png deleted file mode 100755 index 3aed86796..000000000 Binary files a/public/media-src/avatar/big/050-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-3.png b/public/media-src/avatar/big/050-3.png deleted file mode 100755 index 716ea2063..000000000 Binary files a/public/media-src/avatar/big/050-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-4.png b/public/media-src/avatar/big/050-4.png deleted file mode 100755 index 242f2ce49..000000000 Binary files a/public/media-src/avatar/big/050-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-5.png b/public/media-src/avatar/big/050-5.png deleted file mode 100755 index ddee9ceff..000000000 Binary files a/public/media-src/avatar/big/050-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-6.png b/public/media-src/avatar/big/050-6.png deleted file mode 100755 index e76e3bcde..000000000 Binary files a/public/media-src/avatar/big/050-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-7.png b/public/media-src/avatar/big/050-7.png deleted file mode 100755 index 691e0118c..000000000 Binary files a/public/media-src/avatar/big/050-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-8.png b/public/media-src/avatar/big/050-8.png deleted file mode 100644 index 0ae04b276..000000000 Binary files a/public/media-src/avatar/big/050-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/050-9.png b/public/media-src/avatar/big/050-9.png deleted file mode 100644 index 22b44cae6..000000000 Binary files a/public/media-src/avatar/big/050-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-1.png b/public/media-src/avatar/big/051-1.png deleted file mode 100755 index f116e5ffc..000000000 Binary files a/public/media-src/avatar/big/051-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-10.png b/public/media-src/avatar/big/051-10.png deleted file mode 100644 index d2fb13fa3..000000000 Binary files a/public/media-src/avatar/big/051-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-11.png b/public/media-src/avatar/big/051-11.png deleted file mode 100644 index 661fa9162..000000000 Binary files a/public/media-src/avatar/big/051-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-12.png b/public/media-src/avatar/big/051-12.png deleted file mode 100644 index e270f40fb..000000000 Binary files a/public/media-src/avatar/big/051-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-2.png b/public/media-src/avatar/big/051-2.png deleted file mode 100755 index 9ff790740..000000000 Binary files a/public/media-src/avatar/big/051-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-3.png b/public/media-src/avatar/big/051-3.png deleted file mode 100755 index 6247b5bb5..000000000 Binary files a/public/media-src/avatar/big/051-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-4.png b/public/media-src/avatar/big/051-4.png deleted file mode 100755 index d9c012a3f..000000000 Binary files a/public/media-src/avatar/big/051-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-5.png b/public/media-src/avatar/big/051-5.png deleted file mode 100755 index c063d93e3..000000000 Binary files a/public/media-src/avatar/big/051-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-6.png b/public/media-src/avatar/big/051-6.png deleted file mode 100755 index 050a3647e..000000000 Binary files a/public/media-src/avatar/big/051-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-7.png b/public/media-src/avatar/big/051-7.png deleted file mode 100755 index 45fb0d7ac..000000000 Binary files a/public/media-src/avatar/big/051-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-8.png b/public/media-src/avatar/big/051-8.png deleted file mode 100644 index f401dc8b1..000000000 Binary files a/public/media-src/avatar/big/051-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/051-9.png b/public/media-src/avatar/big/051-9.png deleted file mode 100644 index 3ec519ad2..000000000 Binary files a/public/media-src/avatar/big/051-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-1.png b/public/media-src/avatar/big/052-1.png deleted file mode 100755 index 9157be996..000000000 Binary files a/public/media-src/avatar/big/052-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-10.png b/public/media-src/avatar/big/052-10.png deleted file mode 100644 index 5995a456a..000000000 Binary files a/public/media-src/avatar/big/052-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-11.png b/public/media-src/avatar/big/052-11.png deleted file mode 100644 index 9c266394b..000000000 Binary files a/public/media-src/avatar/big/052-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-12.png b/public/media-src/avatar/big/052-12.png deleted file mode 100644 index 59690dcc1..000000000 Binary files a/public/media-src/avatar/big/052-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-2.png b/public/media-src/avatar/big/052-2.png deleted file mode 100755 index 3b48f49c8..000000000 Binary files a/public/media-src/avatar/big/052-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-3.png b/public/media-src/avatar/big/052-3.png deleted file mode 100755 index 2ddc1b81b..000000000 Binary files a/public/media-src/avatar/big/052-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-4.png b/public/media-src/avatar/big/052-4.png deleted file mode 100755 index 7a76fc403..000000000 Binary files a/public/media-src/avatar/big/052-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-5.png b/public/media-src/avatar/big/052-5.png deleted file mode 100755 index b70f94f96..000000000 Binary files a/public/media-src/avatar/big/052-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-6.png b/public/media-src/avatar/big/052-6.png deleted file mode 100755 index 2669d3d1e..000000000 Binary files a/public/media-src/avatar/big/052-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-7.png b/public/media-src/avatar/big/052-7.png deleted file mode 100755 index c2000af24..000000000 Binary files a/public/media-src/avatar/big/052-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-8.png b/public/media-src/avatar/big/052-8.png deleted file mode 100644 index ae22c5413..000000000 Binary files a/public/media-src/avatar/big/052-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/052-9.png b/public/media-src/avatar/big/052-9.png deleted file mode 100644 index 27f0f6d68..000000000 Binary files a/public/media-src/avatar/big/052-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-1.png b/public/media-src/avatar/big/053-1.png deleted file mode 100755 index f7b59e63f..000000000 Binary files a/public/media-src/avatar/big/053-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-10.png b/public/media-src/avatar/big/053-10.png deleted file mode 100644 index 82465890d..000000000 Binary files a/public/media-src/avatar/big/053-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-11.png b/public/media-src/avatar/big/053-11.png deleted file mode 100644 index aeac43c21..000000000 Binary files a/public/media-src/avatar/big/053-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-12.png b/public/media-src/avatar/big/053-12.png deleted file mode 100644 index 084985103..000000000 Binary files a/public/media-src/avatar/big/053-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-2.png b/public/media-src/avatar/big/053-2.png deleted file mode 100755 index 9b1f04457..000000000 Binary files a/public/media-src/avatar/big/053-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-3.png b/public/media-src/avatar/big/053-3.png deleted file mode 100755 index 89c2f4987..000000000 Binary files a/public/media-src/avatar/big/053-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-4.png b/public/media-src/avatar/big/053-4.png deleted file mode 100755 index a15604084..000000000 Binary files a/public/media-src/avatar/big/053-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-5.png b/public/media-src/avatar/big/053-5.png deleted file mode 100755 index 34a38c8a5..000000000 Binary files a/public/media-src/avatar/big/053-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-6.png b/public/media-src/avatar/big/053-6.png deleted file mode 100755 index 609f18ad6..000000000 Binary files a/public/media-src/avatar/big/053-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-7.png b/public/media-src/avatar/big/053-7.png deleted file mode 100755 index 5a40b0e11..000000000 Binary files a/public/media-src/avatar/big/053-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-8.png b/public/media-src/avatar/big/053-8.png deleted file mode 100644 index 3cfcb7d3d..000000000 Binary files a/public/media-src/avatar/big/053-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/053-9.png b/public/media-src/avatar/big/053-9.png deleted file mode 100644 index d24d07ed5..000000000 Binary files a/public/media-src/avatar/big/053-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-1.png b/public/media-src/avatar/big/054-1.png deleted file mode 100755 index dd2e5aa9d..000000000 Binary files a/public/media-src/avatar/big/054-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-10.png b/public/media-src/avatar/big/054-10.png deleted file mode 100644 index d606add7e..000000000 Binary files a/public/media-src/avatar/big/054-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-11.png b/public/media-src/avatar/big/054-11.png deleted file mode 100644 index 5650ea8b2..000000000 Binary files a/public/media-src/avatar/big/054-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-12.png b/public/media-src/avatar/big/054-12.png deleted file mode 100644 index 701068fa1..000000000 Binary files a/public/media-src/avatar/big/054-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-2.png b/public/media-src/avatar/big/054-2.png deleted file mode 100755 index a0a3de3a5..000000000 Binary files a/public/media-src/avatar/big/054-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-3.png b/public/media-src/avatar/big/054-3.png deleted file mode 100755 index 39aaf087f..000000000 Binary files a/public/media-src/avatar/big/054-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-4.png b/public/media-src/avatar/big/054-4.png deleted file mode 100755 index eac4dd2ad..000000000 Binary files a/public/media-src/avatar/big/054-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-5.png b/public/media-src/avatar/big/054-5.png deleted file mode 100755 index 9f56fd64a..000000000 Binary files a/public/media-src/avatar/big/054-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-6.png b/public/media-src/avatar/big/054-6.png deleted file mode 100755 index f75f2a564..000000000 Binary files a/public/media-src/avatar/big/054-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-7.png b/public/media-src/avatar/big/054-7.png deleted file mode 100755 index ca7d0d930..000000000 Binary files a/public/media-src/avatar/big/054-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-8.png b/public/media-src/avatar/big/054-8.png deleted file mode 100644 index a45d7b62b..000000000 Binary files a/public/media-src/avatar/big/054-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/054-9.png b/public/media-src/avatar/big/054-9.png deleted file mode 100644 index 5f607cd3d..000000000 Binary files a/public/media-src/avatar/big/054-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-1.png b/public/media-src/avatar/big/055-1.png deleted file mode 100755 index 95ee61a70..000000000 Binary files a/public/media-src/avatar/big/055-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-10.png b/public/media-src/avatar/big/055-10.png deleted file mode 100644 index 6919ecc85..000000000 Binary files a/public/media-src/avatar/big/055-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-11.png b/public/media-src/avatar/big/055-11.png deleted file mode 100644 index e79916d3c..000000000 Binary files a/public/media-src/avatar/big/055-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-12.png b/public/media-src/avatar/big/055-12.png deleted file mode 100644 index cc9d94135..000000000 Binary files a/public/media-src/avatar/big/055-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-2.png b/public/media-src/avatar/big/055-2.png deleted file mode 100755 index 8477fc4d1..000000000 Binary files a/public/media-src/avatar/big/055-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-3.png b/public/media-src/avatar/big/055-3.png deleted file mode 100755 index 2153674a6..000000000 Binary files a/public/media-src/avatar/big/055-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-4.png b/public/media-src/avatar/big/055-4.png deleted file mode 100755 index aa2daccd5..000000000 Binary files a/public/media-src/avatar/big/055-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-5.png b/public/media-src/avatar/big/055-5.png deleted file mode 100755 index 1482dcb31..000000000 Binary files a/public/media-src/avatar/big/055-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-6.png b/public/media-src/avatar/big/055-6.png deleted file mode 100755 index 5e567c1e0..000000000 Binary files a/public/media-src/avatar/big/055-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-7.png b/public/media-src/avatar/big/055-7.png deleted file mode 100755 index f4acab78d..000000000 Binary files a/public/media-src/avatar/big/055-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-8.png b/public/media-src/avatar/big/055-8.png deleted file mode 100644 index 11e5246db..000000000 Binary files a/public/media-src/avatar/big/055-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/055-9.png b/public/media-src/avatar/big/055-9.png deleted file mode 100644 index ad74a9047..000000000 Binary files a/public/media-src/avatar/big/055-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-1.png b/public/media-src/avatar/big/056-1.png deleted file mode 100755 index 058801391..000000000 Binary files a/public/media-src/avatar/big/056-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-10.png b/public/media-src/avatar/big/056-10.png deleted file mode 100644 index a7da96c52..000000000 Binary files a/public/media-src/avatar/big/056-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-11.png b/public/media-src/avatar/big/056-11.png deleted file mode 100644 index ee5515232..000000000 Binary files a/public/media-src/avatar/big/056-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-12.png b/public/media-src/avatar/big/056-12.png deleted file mode 100644 index f33f9b857..000000000 Binary files a/public/media-src/avatar/big/056-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-2.png b/public/media-src/avatar/big/056-2.png deleted file mode 100755 index 1f6ee859d..000000000 Binary files a/public/media-src/avatar/big/056-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-3.png b/public/media-src/avatar/big/056-3.png deleted file mode 100755 index 5c00273e1..000000000 Binary files a/public/media-src/avatar/big/056-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-4.png b/public/media-src/avatar/big/056-4.png deleted file mode 100755 index c1a240dff..000000000 Binary files a/public/media-src/avatar/big/056-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-5.png b/public/media-src/avatar/big/056-5.png deleted file mode 100755 index 33e6c37c3..000000000 Binary files a/public/media-src/avatar/big/056-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-6.png b/public/media-src/avatar/big/056-6.png deleted file mode 100755 index 93755045d..000000000 Binary files a/public/media-src/avatar/big/056-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-7.png b/public/media-src/avatar/big/056-7.png deleted file mode 100755 index 5f05c33c4..000000000 Binary files a/public/media-src/avatar/big/056-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-8.png b/public/media-src/avatar/big/056-8.png deleted file mode 100644 index 8f5e034a8..000000000 Binary files a/public/media-src/avatar/big/056-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/056-9.png b/public/media-src/avatar/big/056-9.png deleted file mode 100644 index fff74cdb4..000000000 Binary files a/public/media-src/avatar/big/056-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-1.png b/public/media-src/avatar/big/057-1.png deleted file mode 100755 index 18f99ee18..000000000 Binary files a/public/media-src/avatar/big/057-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-10.png b/public/media-src/avatar/big/057-10.png deleted file mode 100644 index 1d24f9ce4..000000000 Binary files a/public/media-src/avatar/big/057-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-11.png b/public/media-src/avatar/big/057-11.png deleted file mode 100644 index 976e1566a..000000000 Binary files a/public/media-src/avatar/big/057-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-12.png b/public/media-src/avatar/big/057-12.png deleted file mode 100644 index 4e954e4a6..000000000 Binary files a/public/media-src/avatar/big/057-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-2.png b/public/media-src/avatar/big/057-2.png deleted file mode 100755 index 3af079993..000000000 Binary files a/public/media-src/avatar/big/057-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-3.png b/public/media-src/avatar/big/057-3.png deleted file mode 100755 index 7b1f832b8..000000000 Binary files a/public/media-src/avatar/big/057-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-4.png b/public/media-src/avatar/big/057-4.png deleted file mode 100755 index b38fe7428..000000000 Binary files a/public/media-src/avatar/big/057-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-5.png b/public/media-src/avatar/big/057-5.png deleted file mode 100755 index e351091ff..000000000 Binary files a/public/media-src/avatar/big/057-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-6.png b/public/media-src/avatar/big/057-6.png deleted file mode 100755 index 507b272cf..000000000 Binary files a/public/media-src/avatar/big/057-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-7.png b/public/media-src/avatar/big/057-7.png deleted file mode 100755 index 366f179c8..000000000 Binary files a/public/media-src/avatar/big/057-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-8.png b/public/media-src/avatar/big/057-8.png deleted file mode 100644 index 0ce1806e3..000000000 Binary files a/public/media-src/avatar/big/057-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/057-9.png b/public/media-src/avatar/big/057-9.png deleted file mode 100644 index 0d451e138..000000000 Binary files a/public/media-src/avatar/big/057-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-1.png b/public/media-src/avatar/big/058-1.png deleted file mode 100755 index ca474721b..000000000 Binary files a/public/media-src/avatar/big/058-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-10.png b/public/media-src/avatar/big/058-10.png deleted file mode 100644 index 6ccd689f8..000000000 Binary files a/public/media-src/avatar/big/058-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-11.png b/public/media-src/avatar/big/058-11.png deleted file mode 100644 index 98b8f257d..000000000 Binary files a/public/media-src/avatar/big/058-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-12.png b/public/media-src/avatar/big/058-12.png deleted file mode 100644 index b9f3898d3..000000000 Binary files a/public/media-src/avatar/big/058-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-2.png b/public/media-src/avatar/big/058-2.png deleted file mode 100755 index 54666278d..000000000 Binary files a/public/media-src/avatar/big/058-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-3.png b/public/media-src/avatar/big/058-3.png deleted file mode 100755 index 6338f9aec..000000000 Binary files a/public/media-src/avatar/big/058-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-4.png b/public/media-src/avatar/big/058-4.png deleted file mode 100755 index 5f2ca7ec7..000000000 Binary files a/public/media-src/avatar/big/058-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-5.png b/public/media-src/avatar/big/058-5.png deleted file mode 100755 index cfac5f446..000000000 Binary files a/public/media-src/avatar/big/058-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-6.png b/public/media-src/avatar/big/058-6.png deleted file mode 100755 index 6bac1e16f..000000000 Binary files a/public/media-src/avatar/big/058-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-7.png b/public/media-src/avatar/big/058-7.png deleted file mode 100755 index 576478a3f..000000000 Binary files a/public/media-src/avatar/big/058-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-8.png b/public/media-src/avatar/big/058-8.png deleted file mode 100644 index 5a37d3799..000000000 Binary files a/public/media-src/avatar/big/058-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/058-9.png b/public/media-src/avatar/big/058-9.png deleted file mode 100644 index 818b4892a..000000000 Binary files a/public/media-src/avatar/big/058-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-1.png b/public/media-src/avatar/big/059-1.png deleted file mode 100755 index 2f63561cc..000000000 Binary files a/public/media-src/avatar/big/059-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-10.png b/public/media-src/avatar/big/059-10.png deleted file mode 100644 index eb73e37c4..000000000 Binary files a/public/media-src/avatar/big/059-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-11.png b/public/media-src/avatar/big/059-11.png deleted file mode 100644 index e60821e19..000000000 Binary files a/public/media-src/avatar/big/059-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-12.png b/public/media-src/avatar/big/059-12.png deleted file mode 100644 index 7703ca630..000000000 Binary files a/public/media-src/avatar/big/059-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-2.png b/public/media-src/avatar/big/059-2.png deleted file mode 100755 index 82f914ea5..000000000 Binary files a/public/media-src/avatar/big/059-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-3.png b/public/media-src/avatar/big/059-3.png deleted file mode 100755 index 130175c12..000000000 Binary files a/public/media-src/avatar/big/059-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-4.png b/public/media-src/avatar/big/059-4.png deleted file mode 100755 index dc4233a11..000000000 Binary files a/public/media-src/avatar/big/059-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-5.png b/public/media-src/avatar/big/059-5.png deleted file mode 100755 index b0220ee27..000000000 Binary files a/public/media-src/avatar/big/059-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-6.png b/public/media-src/avatar/big/059-6.png deleted file mode 100755 index 62ca0651d..000000000 Binary files a/public/media-src/avatar/big/059-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-7.png b/public/media-src/avatar/big/059-7.png deleted file mode 100755 index 296ebe0f3..000000000 Binary files a/public/media-src/avatar/big/059-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-8.png b/public/media-src/avatar/big/059-8.png deleted file mode 100644 index 91ee5e4ba..000000000 Binary files a/public/media-src/avatar/big/059-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/059-9.png b/public/media-src/avatar/big/059-9.png deleted file mode 100644 index 2b703ba6e..000000000 Binary files a/public/media-src/avatar/big/059-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-1.png b/public/media-src/avatar/big/060-1.png deleted file mode 100755 index 7712da0c1..000000000 Binary files a/public/media-src/avatar/big/060-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-10.png b/public/media-src/avatar/big/060-10.png deleted file mode 100644 index a54b08b0e..000000000 Binary files a/public/media-src/avatar/big/060-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-11.png b/public/media-src/avatar/big/060-11.png deleted file mode 100644 index aa01d3047..000000000 Binary files a/public/media-src/avatar/big/060-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-12.png b/public/media-src/avatar/big/060-12.png deleted file mode 100644 index 3e7cecd9a..000000000 Binary files a/public/media-src/avatar/big/060-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-2.png b/public/media-src/avatar/big/060-2.png deleted file mode 100755 index 000e66567..000000000 Binary files a/public/media-src/avatar/big/060-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-3.png b/public/media-src/avatar/big/060-3.png deleted file mode 100755 index 770ada360..000000000 Binary files a/public/media-src/avatar/big/060-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-4.png b/public/media-src/avatar/big/060-4.png deleted file mode 100755 index aefbb4ad2..000000000 Binary files a/public/media-src/avatar/big/060-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-5.png b/public/media-src/avatar/big/060-5.png deleted file mode 100755 index 14750cb4d..000000000 Binary files a/public/media-src/avatar/big/060-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-6.png b/public/media-src/avatar/big/060-6.png deleted file mode 100755 index 5db1e3e4d..000000000 Binary files a/public/media-src/avatar/big/060-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-7.png b/public/media-src/avatar/big/060-7.png deleted file mode 100755 index 8de32b776..000000000 Binary files a/public/media-src/avatar/big/060-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-8.png b/public/media-src/avatar/big/060-8.png deleted file mode 100644 index 5a079306b..000000000 Binary files a/public/media-src/avatar/big/060-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/060-9.png b/public/media-src/avatar/big/060-9.png deleted file mode 100644 index 7e4cf49b7..000000000 Binary files a/public/media-src/avatar/big/060-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-1.png b/public/media-src/avatar/big/061-1.png deleted file mode 100755 index 0e4de6440..000000000 Binary files a/public/media-src/avatar/big/061-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-10.png b/public/media-src/avatar/big/061-10.png deleted file mode 100644 index 8192b787c..000000000 Binary files a/public/media-src/avatar/big/061-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-11.png b/public/media-src/avatar/big/061-11.png deleted file mode 100644 index c0ac6ea8c..000000000 Binary files a/public/media-src/avatar/big/061-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-12.png b/public/media-src/avatar/big/061-12.png deleted file mode 100644 index abe623575..000000000 Binary files a/public/media-src/avatar/big/061-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-2.png b/public/media-src/avatar/big/061-2.png deleted file mode 100755 index a84fcef03..000000000 Binary files a/public/media-src/avatar/big/061-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-3.png b/public/media-src/avatar/big/061-3.png deleted file mode 100755 index 92ca874c1..000000000 Binary files a/public/media-src/avatar/big/061-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-4.png b/public/media-src/avatar/big/061-4.png deleted file mode 100755 index 0eff4a5dd..000000000 Binary files a/public/media-src/avatar/big/061-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-5.png b/public/media-src/avatar/big/061-5.png deleted file mode 100755 index f506b150e..000000000 Binary files a/public/media-src/avatar/big/061-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-6.png b/public/media-src/avatar/big/061-6.png deleted file mode 100755 index d777c2f0c..000000000 Binary files a/public/media-src/avatar/big/061-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-7.png b/public/media-src/avatar/big/061-7.png deleted file mode 100755 index 33a3cfc56..000000000 Binary files a/public/media-src/avatar/big/061-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-8.png b/public/media-src/avatar/big/061-8.png deleted file mode 100644 index fcec8e33a..000000000 Binary files a/public/media-src/avatar/big/061-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/061-9.png b/public/media-src/avatar/big/061-9.png deleted file mode 100644 index 914c70618..000000000 Binary files a/public/media-src/avatar/big/061-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-1.png b/public/media-src/avatar/big/062-1.png deleted file mode 100755 index 8e132b8e1..000000000 Binary files a/public/media-src/avatar/big/062-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-10.png b/public/media-src/avatar/big/062-10.png deleted file mode 100644 index 41e682912..000000000 Binary files a/public/media-src/avatar/big/062-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-11.png b/public/media-src/avatar/big/062-11.png deleted file mode 100644 index bbdf19fc9..000000000 Binary files a/public/media-src/avatar/big/062-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-12.png b/public/media-src/avatar/big/062-12.png deleted file mode 100644 index 246d45bfc..000000000 Binary files a/public/media-src/avatar/big/062-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-2.png b/public/media-src/avatar/big/062-2.png deleted file mode 100755 index e0520b1a5..000000000 Binary files a/public/media-src/avatar/big/062-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-3.png b/public/media-src/avatar/big/062-3.png deleted file mode 100755 index 103673a18..000000000 Binary files a/public/media-src/avatar/big/062-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-4.png b/public/media-src/avatar/big/062-4.png deleted file mode 100755 index 46117c3a1..000000000 Binary files a/public/media-src/avatar/big/062-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-5.png b/public/media-src/avatar/big/062-5.png deleted file mode 100755 index a3ac02254..000000000 Binary files a/public/media-src/avatar/big/062-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-6.png b/public/media-src/avatar/big/062-6.png deleted file mode 100755 index cad35b41c..000000000 Binary files a/public/media-src/avatar/big/062-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-7.png b/public/media-src/avatar/big/062-7.png deleted file mode 100755 index 85a106da5..000000000 Binary files a/public/media-src/avatar/big/062-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-8.png b/public/media-src/avatar/big/062-8.png deleted file mode 100644 index 9addc5d4f..000000000 Binary files a/public/media-src/avatar/big/062-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/062-9.png b/public/media-src/avatar/big/062-9.png deleted file mode 100644 index 6bd3614b2..000000000 Binary files a/public/media-src/avatar/big/062-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-1.png b/public/media-src/avatar/big/063-1.png deleted file mode 100755 index 8c1330b09..000000000 Binary files a/public/media-src/avatar/big/063-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-10.png b/public/media-src/avatar/big/063-10.png deleted file mode 100644 index 00a79a2c5..000000000 Binary files a/public/media-src/avatar/big/063-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-11.png b/public/media-src/avatar/big/063-11.png deleted file mode 100644 index bd0fc0d4c..000000000 Binary files a/public/media-src/avatar/big/063-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-12.png b/public/media-src/avatar/big/063-12.png deleted file mode 100644 index d42b77e09..000000000 Binary files a/public/media-src/avatar/big/063-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-2.png b/public/media-src/avatar/big/063-2.png deleted file mode 100755 index 50181f62e..000000000 Binary files a/public/media-src/avatar/big/063-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-3.png b/public/media-src/avatar/big/063-3.png deleted file mode 100755 index 9b34b498a..000000000 Binary files a/public/media-src/avatar/big/063-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-4.png b/public/media-src/avatar/big/063-4.png deleted file mode 100755 index 6faf9f68e..000000000 Binary files a/public/media-src/avatar/big/063-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-5.png b/public/media-src/avatar/big/063-5.png deleted file mode 100755 index acaec4c9d..000000000 Binary files a/public/media-src/avatar/big/063-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-6.png b/public/media-src/avatar/big/063-6.png deleted file mode 100755 index 08265134b..000000000 Binary files a/public/media-src/avatar/big/063-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-7.png b/public/media-src/avatar/big/063-7.png deleted file mode 100755 index 47269acc2..000000000 Binary files a/public/media-src/avatar/big/063-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-8.png b/public/media-src/avatar/big/063-8.png deleted file mode 100644 index c0f6b529a..000000000 Binary files a/public/media-src/avatar/big/063-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/063-9.png b/public/media-src/avatar/big/063-9.png deleted file mode 100644 index b905da06e..000000000 Binary files a/public/media-src/avatar/big/063-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-1.png b/public/media-src/avatar/big/064-1.png deleted file mode 100755 index 5507e6bb8..000000000 Binary files a/public/media-src/avatar/big/064-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-10.png b/public/media-src/avatar/big/064-10.png deleted file mode 100644 index 833110b6e..000000000 Binary files a/public/media-src/avatar/big/064-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-11.png b/public/media-src/avatar/big/064-11.png deleted file mode 100644 index abbb78639..000000000 Binary files a/public/media-src/avatar/big/064-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-12.png b/public/media-src/avatar/big/064-12.png deleted file mode 100644 index 60faa829b..000000000 Binary files a/public/media-src/avatar/big/064-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-2.png b/public/media-src/avatar/big/064-2.png deleted file mode 100755 index 659150d02..000000000 Binary files a/public/media-src/avatar/big/064-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-3.png b/public/media-src/avatar/big/064-3.png deleted file mode 100755 index f677030fc..000000000 Binary files a/public/media-src/avatar/big/064-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-4.png b/public/media-src/avatar/big/064-4.png deleted file mode 100755 index 694d635e3..000000000 Binary files a/public/media-src/avatar/big/064-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-5.png b/public/media-src/avatar/big/064-5.png deleted file mode 100755 index a0ef5dd0f..000000000 Binary files a/public/media-src/avatar/big/064-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-6.png b/public/media-src/avatar/big/064-6.png deleted file mode 100755 index c9ff3b18b..000000000 Binary files a/public/media-src/avatar/big/064-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-7.png b/public/media-src/avatar/big/064-7.png deleted file mode 100755 index 2e2001408..000000000 Binary files a/public/media-src/avatar/big/064-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-8.png b/public/media-src/avatar/big/064-8.png deleted file mode 100644 index f804e94b5..000000000 Binary files a/public/media-src/avatar/big/064-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/064-9.png b/public/media-src/avatar/big/064-9.png deleted file mode 100644 index 5311a6ca8..000000000 Binary files a/public/media-src/avatar/big/064-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-1.png b/public/media-src/avatar/big/065-1.png deleted file mode 100755 index 876778bbc..000000000 Binary files a/public/media-src/avatar/big/065-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-10.png b/public/media-src/avatar/big/065-10.png deleted file mode 100644 index 0b6f8aac0..000000000 Binary files a/public/media-src/avatar/big/065-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-11.png b/public/media-src/avatar/big/065-11.png deleted file mode 100644 index eba9383f8..000000000 Binary files a/public/media-src/avatar/big/065-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-12.png b/public/media-src/avatar/big/065-12.png deleted file mode 100644 index 927f91d30..000000000 Binary files a/public/media-src/avatar/big/065-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-2.png b/public/media-src/avatar/big/065-2.png deleted file mode 100755 index 7da03a083..000000000 Binary files a/public/media-src/avatar/big/065-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-3.png b/public/media-src/avatar/big/065-3.png deleted file mode 100755 index 6de2e5a66..000000000 Binary files a/public/media-src/avatar/big/065-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-4.png b/public/media-src/avatar/big/065-4.png deleted file mode 100755 index 0367af5e1..000000000 Binary files a/public/media-src/avatar/big/065-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-5.png b/public/media-src/avatar/big/065-5.png deleted file mode 100755 index 9f96dcaa9..000000000 Binary files a/public/media-src/avatar/big/065-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-6.png b/public/media-src/avatar/big/065-6.png deleted file mode 100755 index ed3a60771..000000000 Binary files a/public/media-src/avatar/big/065-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-7.png b/public/media-src/avatar/big/065-7.png deleted file mode 100755 index f45b3ba02..000000000 Binary files a/public/media-src/avatar/big/065-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-8.png b/public/media-src/avatar/big/065-8.png deleted file mode 100644 index 2c81e5335..000000000 Binary files a/public/media-src/avatar/big/065-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/065-9.png b/public/media-src/avatar/big/065-9.png deleted file mode 100644 index 2f405045b..000000000 Binary files a/public/media-src/avatar/big/065-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-1.png b/public/media-src/avatar/big/066-1.png deleted file mode 100755 index a2ba3121e..000000000 Binary files a/public/media-src/avatar/big/066-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-10.png b/public/media-src/avatar/big/066-10.png deleted file mode 100644 index a0a845c5e..000000000 Binary files a/public/media-src/avatar/big/066-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-11.png b/public/media-src/avatar/big/066-11.png deleted file mode 100644 index 6eeb444b2..000000000 Binary files a/public/media-src/avatar/big/066-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-12.png b/public/media-src/avatar/big/066-12.png deleted file mode 100644 index 23610faba..000000000 Binary files a/public/media-src/avatar/big/066-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-2.png b/public/media-src/avatar/big/066-2.png deleted file mode 100755 index 031eb0c3a..000000000 Binary files a/public/media-src/avatar/big/066-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-3.png b/public/media-src/avatar/big/066-3.png deleted file mode 100755 index fc6e38b74..000000000 Binary files a/public/media-src/avatar/big/066-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-4.png b/public/media-src/avatar/big/066-4.png deleted file mode 100755 index c8669e700..000000000 Binary files a/public/media-src/avatar/big/066-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-5.png b/public/media-src/avatar/big/066-5.png deleted file mode 100755 index 48e927005..000000000 Binary files a/public/media-src/avatar/big/066-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-6.png b/public/media-src/avatar/big/066-6.png deleted file mode 100755 index 58691ece2..000000000 Binary files a/public/media-src/avatar/big/066-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-7.png b/public/media-src/avatar/big/066-7.png deleted file mode 100755 index 52d38596a..000000000 Binary files a/public/media-src/avatar/big/066-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-8.png b/public/media-src/avatar/big/066-8.png deleted file mode 100644 index 0c7635f90..000000000 Binary files a/public/media-src/avatar/big/066-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/066-9.png b/public/media-src/avatar/big/066-9.png deleted file mode 100644 index 169be923d..000000000 Binary files a/public/media-src/avatar/big/066-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-1.png b/public/media-src/avatar/big/067-1.png deleted file mode 100755 index e28e25929..000000000 Binary files a/public/media-src/avatar/big/067-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-10.png b/public/media-src/avatar/big/067-10.png deleted file mode 100644 index ecb94af51..000000000 Binary files a/public/media-src/avatar/big/067-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-11.png b/public/media-src/avatar/big/067-11.png deleted file mode 100644 index ea5009a01..000000000 Binary files a/public/media-src/avatar/big/067-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-12.png b/public/media-src/avatar/big/067-12.png deleted file mode 100644 index 7a3265819..000000000 Binary files a/public/media-src/avatar/big/067-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-2.png b/public/media-src/avatar/big/067-2.png deleted file mode 100755 index 0bfd32e48..000000000 Binary files a/public/media-src/avatar/big/067-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-3.png b/public/media-src/avatar/big/067-3.png deleted file mode 100755 index 267b52163..000000000 Binary files a/public/media-src/avatar/big/067-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-4.png b/public/media-src/avatar/big/067-4.png deleted file mode 100755 index 257ee41b9..000000000 Binary files a/public/media-src/avatar/big/067-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-5.png b/public/media-src/avatar/big/067-5.png deleted file mode 100755 index 428e36bcc..000000000 Binary files a/public/media-src/avatar/big/067-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-6.png b/public/media-src/avatar/big/067-6.png deleted file mode 100755 index 4ce98c51c..000000000 Binary files a/public/media-src/avatar/big/067-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-7.png b/public/media-src/avatar/big/067-7.png deleted file mode 100755 index 29d39702b..000000000 Binary files a/public/media-src/avatar/big/067-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-8.png b/public/media-src/avatar/big/067-8.png deleted file mode 100644 index c7c9d4655..000000000 Binary files a/public/media-src/avatar/big/067-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/067-9.png b/public/media-src/avatar/big/067-9.png deleted file mode 100644 index cf837c83d..000000000 Binary files a/public/media-src/avatar/big/067-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-1.png b/public/media-src/avatar/big/068-1.png deleted file mode 100755 index e6e98329e..000000000 Binary files a/public/media-src/avatar/big/068-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-10.png b/public/media-src/avatar/big/068-10.png deleted file mode 100644 index cb0d6b4ea..000000000 Binary files a/public/media-src/avatar/big/068-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-11.png b/public/media-src/avatar/big/068-11.png deleted file mode 100644 index 1f1cca0da..000000000 Binary files a/public/media-src/avatar/big/068-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-12.png b/public/media-src/avatar/big/068-12.png deleted file mode 100644 index ef9735801..000000000 Binary files a/public/media-src/avatar/big/068-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-2.png b/public/media-src/avatar/big/068-2.png deleted file mode 100755 index 86c82aeef..000000000 Binary files a/public/media-src/avatar/big/068-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-3.png b/public/media-src/avatar/big/068-3.png deleted file mode 100755 index 4fd045f37..000000000 Binary files a/public/media-src/avatar/big/068-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-4.png b/public/media-src/avatar/big/068-4.png deleted file mode 100755 index b0b2a8207..000000000 Binary files a/public/media-src/avatar/big/068-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-5.png b/public/media-src/avatar/big/068-5.png deleted file mode 100755 index 8c6eb1b26..000000000 Binary files a/public/media-src/avatar/big/068-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-6.png b/public/media-src/avatar/big/068-6.png deleted file mode 100755 index 18495f702..000000000 Binary files a/public/media-src/avatar/big/068-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-7.png b/public/media-src/avatar/big/068-7.png deleted file mode 100755 index 745cfd1f6..000000000 Binary files a/public/media-src/avatar/big/068-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-8.png b/public/media-src/avatar/big/068-8.png deleted file mode 100644 index f52caa82f..000000000 Binary files a/public/media-src/avatar/big/068-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/068-9.png b/public/media-src/avatar/big/068-9.png deleted file mode 100644 index d3c698a17..000000000 Binary files a/public/media-src/avatar/big/068-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-1.png b/public/media-src/avatar/big/069-1.png deleted file mode 100755 index 684c975c8..000000000 Binary files a/public/media-src/avatar/big/069-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-10.png b/public/media-src/avatar/big/069-10.png deleted file mode 100644 index 6a1ddf813..000000000 Binary files a/public/media-src/avatar/big/069-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-11.png b/public/media-src/avatar/big/069-11.png deleted file mode 100644 index cb35f0355..000000000 Binary files a/public/media-src/avatar/big/069-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-12.png b/public/media-src/avatar/big/069-12.png deleted file mode 100644 index fec2cc687..000000000 Binary files a/public/media-src/avatar/big/069-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-2.png b/public/media-src/avatar/big/069-2.png deleted file mode 100755 index b0bab669f..000000000 Binary files a/public/media-src/avatar/big/069-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-3.png b/public/media-src/avatar/big/069-3.png deleted file mode 100755 index e7289159c..000000000 Binary files a/public/media-src/avatar/big/069-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-4.png b/public/media-src/avatar/big/069-4.png deleted file mode 100755 index dd21226e8..000000000 Binary files a/public/media-src/avatar/big/069-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-5.png b/public/media-src/avatar/big/069-5.png deleted file mode 100755 index 24b9f1d4d..000000000 Binary files a/public/media-src/avatar/big/069-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-6.png b/public/media-src/avatar/big/069-6.png deleted file mode 100755 index 7ca3a8835..000000000 Binary files a/public/media-src/avatar/big/069-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-7.png b/public/media-src/avatar/big/069-7.png deleted file mode 100755 index 4aff22762..000000000 Binary files a/public/media-src/avatar/big/069-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-8.png b/public/media-src/avatar/big/069-8.png deleted file mode 100644 index 932eb1975..000000000 Binary files a/public/media-src/avatar/big/069-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/069-9.png b/public/media-src/avatar/big/069-9.png deleted file mode 100644 index e4c691e98..000000000 Binary files a/public/media-src/avatar/big/069-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-1.png b/public/media-src/avatar/big/070-1.png deleted file mode 100755 index 1f1054e22..000000000 Binary files a/public/media-src/avatar/big/070-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-10.png b/public/media-src/avatar/big/070-10.png deleted file mode 100644 index 65775d0d4..000000000 Binary files a/public/media-src/avatar/big/070-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-11.png b/public/media-src/avatar/big/070-11.png deleted file mode 100644 index bb9e81f84..000000000 Binary files a/public/media-src/avatar/big/070-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-12.png b/public/media-src/avatar/big/070-12.png deleted file mode 100644 index 3698839b8..000000000 Binary files a/public/media-src/avatar/big/070-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-2.png b/public/media-src/avatar/big/070-2.png deleted file mode 100755 index 7b4adef56..000000000 Binary files a/public/media-src/avatar/big/070-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-3.png b/public/media-src/avatar/big/070-3.png deleted file mode 100755 index 506a71e97..000000000 Binary files a/public/media-src/avatar/big/070-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-4.png b/public/media-src/avatar/big/070-4.png deleted file mode 100755 index d061c19b1..000000000 Binary files a/public/media-src/avatar/big/070-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-5.png b/public/media-src/avatar/big/070-5.png deleted file mode 100755 index 34eb412f0..000000000 Binary files a/public/media-src/avatar/big/070-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-6.png b/public/media-src/avatar/big/070-6.png deleted file mode 100755 index 0129dd7bb..000000000 Binary files a/public/media-src/avatar/big/070-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-7.png b/public/media-src/avatar/big/070-7.png deleted file mode 100755 index 0b8fc8fe8..000000000 Binary files a/public/media-src/avatar/big/070-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-8.png b/public/media-src/avatar/big/070-8.png deleted file mode 100644 index 9fa1425d4..000000000 Binary files a/public/media-src/avatar/big/070-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/070-9.png b/public/media-src/avatar/big/070-9.png deleted file mode 100644 index ddc68c09d..000000000 Binary files a/public/media-src/avatar/big/070-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-1.png b/public/media-src/avatar/big/071-1.png deleted file mode 100755 index 283dbb6c3..000000000 Binary files a/public/media-src/avatar/big/071-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-10.png b/public/media-src/avatar/big/071-10.png deleted file mode 100644 index 38e8da4e1..000000000 Binary files a/public/media-src/avatar/big/071-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-11.png b/public/media-src/avatar/big/071-11.png deleted file mode 100644 index e51df91e2..000000000 Binary files a/public/media-src/avatar/big/071-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-12.png b/public/media-src/avatar/big/071-12.png deleted file mode 100644 index 577900c55..000000000 Binary files a/public/media-src/avatar/big/071-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-2.png b/public/media-src/avatar/big/071-2.png deleted file mode 100755 index 73b6296a0..000000000 Binary files a/public/media-src/avatar/big/071-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-3.png b/public/media-src/avatar/big/071-3.png deleted file mode 100755 index 3029b5e80..000000000 Binary files a/public/media-src/avatar/big/071-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-4.png b/public/media-src/avatar/big/071-4.png deleted file mode 100755 index 1da0b6e15..000000000 Binary files a/public/media-src/avatar/big/071-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-5.png b/public/media-src/avatar/big/071-5.png deleted file mode 100755 index a7d4e218f..000000000 Binary files a/public/media-src/avatar/big/071-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-6.png b/public/media-src/avatar/big/071-6.png deleted file mode 100755 index 452075a80..000000000 Binary files a/public/media-src/avatar/big/071-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-7.png b/public/media-src/avatar/big/071-7.png deleted file mode 100755 index 88ce4ca0d..000000000 Binary files a/public/media-src/avatar/big/071-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-8.png b/public/media-src/avatar/big/071-8.png deleted file mode 100644 index 936e7aa05..000000000 Binary files a/public/media-src/avatar/big/071-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/071-9.png b/public/media-src/avatar/big/071-9.png deleted file mode 100644 index 1e712d9ad..000000000 Binary files a/public/media-src/avatar/big/071-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-1.png b/public/media-src/avatar/big/072-1.png deleted file mode 100755 index 054c84ceb..000000000 Binary files a/public/media-src/avatar/big/072-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-10.png b/public/media-src/avatar/big/072-10.png deleted file mode 100644 index 910d5a784..000000000 Binary files a/public/media-src/avatar/big/072-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-11.png b/public/media-src/avatar/big/072-11.png deleted file mode 100644 index 2662dc03a..000000000 Binary files a/public/media-src/avatar/big/072-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-12.png b/public/media-src/avatar/big/072-12.png deleted file mode 100644 index 869bae7ae..000000000 Binary files a/public/media-src/avatar/big/072-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-2.png b/public/media-src/avatar/big/072-2.png deleted file mode 100755 index 1f2e0cbc9..000000000 Binary files a/public/media-src/avatar/big/072-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-3.png b/public/media-src/avatar/big/072-3.png deleted file mode 100755 index 589c11b5f..000000000 Binary files a/public/media-src/avatar/big/072-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-4.png b/public/media-src/avatar/big/072-4.png deleted file mode 100755 index 4f5bba6bb..000000000 Binary files a/public/media-src/avatar/big/072-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-5.png b/public/media-src/avatar/big/072-5.png deleted file mode 100755 index 03db8f083..000000000 Binary files a/public/media-src/avatar/big/072-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-6.png b/public/media-src/avatar/big/072-6.png deleted file mode 100755 index 3ddaa1aea..000000000 Binary files a/public/media-src/avatar/big/072-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-7.png b/public/media-src/avatar/big/072-7.png deleted file mode 100755 index 09fee3073..000000000 Binary files a/public/media-src/avatar/big/072-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-8.png b/public/media-src/avatar/big/072-8.png deleted file mode 100644 index ce8faec40..000000000 Binary files a/public/media-src/avatar/big/072-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/072-9.png b/public/media-src/avatar/big/072-9.png deleted file mode 100644 index 4e48371e6..000000000 Binary files a/public/media-src/avatar/big/072-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-1.png b/public/media-src/avatar/big/073-1.png deleted file mode 100755 index 9c4580d2e..000000000 Binary files a/public/media-src/avatar/big/073-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-10.png b/public/media-src/avatar/big/073-10.png deleted file mode 100644 index e962f28a2..000000000 Binary files a/public/media-src/avatar/big/073-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-11.png b/public/media-src/avatar/big/073-11.png deleted file mode 100644 index fdd0c8c26..000000000 Binary files a/public/media-src/avatar/big/073-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-12.png b/public/media-src/avatar/big/073-12.png deleted file mode 100644 index c01ca229b..000000000 Binary files a/public/media-src/avatar/big/073-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-2.png b/public/media-src/avatar/big/073-2.png deleted file mode 100755 index 55a90c868..000000000 Binary files a/public/media-src/avatar/big/073-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-3.png b/public/media-src/avatar/big/073-3.png deleted file mode 100755 index ab2949352..000000000 Binary files a/public/media-src/avatar/big/073-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-4.png b/public/media-src/avatar/big/073-4.png deleted file mode 100755 index ccce565c2..000000000 Binary files a/public/media-src/avatar/big/073-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-5.png b/public/media-src/avatar/big/073-5.png deleted file mode 100755 index 06336e67e..000000000 Binary files a/public/media-src/avatar/big/073-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-6.png b/public/media-src/avatar/big/073-6.png deleted file mode 100755 index 68969e053..000000000 Binary files a/public/media-src/avatar/big/073-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-7.png b/public/media-src/avatar/big/073-7.png deleted file mode 100755 index 725419bd7..000000000 Binary files a/public/media-src/avatar/big/073-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-8.png b/public/media-src/avatar/big/073-8.png deleted file mode 100644 index 49eea31c4..000000000 Binary files a/public/media-src/avatar/big/073-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/073-9.png b/public/media-src/avatar/big/073-9.png deleted file mode 100644 index 5dbd8161d..000000000 Binary files a/public/media-src/avatar/big/073-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-1.png b/public/media-src/avatar/big/074-1.png deleted file mode 100755 index ca6a08f97..000000000 Binary files a/public/media-src/avatar/big/074-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-10.png b/public/media-src/avatar/big/074-10.png deleted file mode 100644 index a4281d6dd..000000000 Binary files a/public/media-src/avatar/big/074-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-11.png b/public/media-src/avatar/big/074-11.png deleted file mode 100644 index 1b1952bc9..000000000 Binary files a/public/media-src/avatar/big/074-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-12.png b/public/media-src/avatar/big/074-12.png deleted file mode 100644 index b357695b1..000000000 Binary files a/public/media-src/avatar/big/074-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-2.png b/public/media-src/avatar/big/074-2.png deleted file mode 100755 index d801eb848..000000000 Binary files a/public/media-src/avatar/big/074-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-3.png b/public/media-src/avatar/big/074-3.png deleted file mode 100755 index 54b8897b5..000000000 Binary files a/public/media-src/avatar/big/074-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-4.png b/public/media-src/avatar/big/074-4.png deleted file mode 100755 index 10cfbe7e8..000000000 Binary files a/public/media-src/avatar/big/074-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-5.png b/public/media-src/avatar/big/074-5.png deleted file mode 100755 index a87730b31..000000000 Binary files a/public/media-src/avatar/big/074-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-6.png b/public/media-src/avatar/big/074-6.png deleted file mode 100755 index a36703146..000000000 Binary files a/public/media-src/avatar/big/074-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-7.png b/public/media-src/avatar/big/074-7.png deleted file mode 100755 index 8ce328ddb..000000000 Binary files a/public/media-src/avatar/big/074-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-8.png b/public/media-src/avatar/big/074-8.png deleted file mode 100644 index 580ceb2f2..000000000 Binary files a/public/media-src/avatar/big/074-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/074-9.png b/public/media-src/avatar/big/074-9.png deleted file mode 100644 index e078aef5d..000000000 Binary files a/public/media-src/avatar/big/074-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-1.png b/public/media-src/avatar/big/075-1.png deleted file mode 100755 index 282c23b63..000000000 Binary files a/public/media-src/avatar/big/075-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-10.png b/public/media-src/avatar/big/075-10.png deleted file mode 100644 index 12093ea07..000000000 Binary files a/public/media-src/avatar/big/075-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-11.png b/public/media-src/avatar/big/075-11.png deleted file mode 100644 index 23241b370..000000000 Binary files a/public/media-src/avatar/big/075-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-12.png b/public/media-src/avatar/big/075-12.png deleted file mode 100644 index bc6aa5a2a..000000000 Binary files a/public/media-src/avatar/big/075-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-2.png b/public/media-src/avatar/big/075-2.png deleted file mode 100755 index 7755bb774..000000000 Binary files a/public/media-src/avatar/big/075-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-3.png b/public/media-src/avatar/big/075-3.png deleted file mode 100755 index c6a4e9d96..000000000 Binary files a/public/media-src/avatar/big/075-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-4.png b/public/media-src/avatar/big/075-4.png deleted file mode 100755 index 84dde7f8f..000000000 Binary files a/public/media-src/avatar/big/075-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-5.png b/public/media-src/avatar/big/075-5.png deleted file mode 100755 index afa8bdb77..000000000 Binary files a/public/media-src/avatar/big/075-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-6.png b/public/media-src/avatar/big/075-6.png deleted file mode 100755 index a08a710ba..000000000 Binary files a/public/media-src/avatar/big/075-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-7.png b/public/media-src/avatar/big/075-7.png deleted file mode 100755 index ce9315a06..000000000 Binary files a/public/media-src/avatar/big/075-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-8.png b/public/media-src/avatar/big/075-8.png deleted file mode 100644 index 7c8a87776..000000000 Binary files a/public/media-src/avatar/big/075-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/075-9.png b/public/media-src/avatar/big/075-9.png deleted file mode 100644 index 2768adba7..000000000 Binary files a/public/media-src/avatar/big/075-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-1.png b/public/media-src/avatar/big/076-1.png deleted file mode 100755 index 9e802f849..000000000 Binary files a/public/media-src/avatar/big/076-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-10.png b/public/media-src/avatar/big/076-10.png deleted file mode 100644 index 8e1f0b64c..000000000 Binary files a/public/media-src/avatar/big/076-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-11.png b/public/media-src/avatar/big/076-11.png deleted file mode 100644 index 211b2d15f..000000000 Binary files a/public/media-src/avatar/big/076-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-12.png b/public/media-src/avatar/big/076-12.png deleted file mode 100644 index 7e17e5bcd..000000000 Binary files a/public/media-src/avatar/big/076-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-2.png b/public/media-src/avatar/big/076-2.png deleted file mode 100755 index b5d482e44..000000000 Binary files a/public/media-src/avatar/big/076-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-3.png b/public/media-src/avatar/big/076-3.png deleted file mode 100755 index 1de6af28a..000000000 Binary files a/public/media-src/avatar/big/076-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-4.png b/public/media-src/avatar/big/076-4.png deleted file mode 100755 index 76359c6ad..000000000 Binary files a/public/media-src/avatar/big/076-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-5.png b/public/media-src/avatar/big/076-5.png deleted file mode 100755 index 5de782f35..000000000 Binary files a/public/media-src/avatar/big/076-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-6.png b/public/media-src/avatar/big/076-6.png deleted file mode 100755 index d0a5185e5..000000000 Binary files a/public/media-src/avatar/big/076-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-7.png b/public/media-src/avatar/big/076-7.png deleted file mode 100755 index d59e1b49f..000000000 Binary files a/public/media-src/avatar/big/076-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-8.png b/public/media-src/avatar/big/076-8.png deleted file mode 100644 index c73c0e10e..000000000 Binary files a/public/media-src/avatar/big/076-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/076-9.png b/public/media-src/avatar/big/076-9.png deleted file mode 100644 index cd9256875..000000000 Binary files a/public/media-src/avatar/big/076-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-1.png b/public/media-src/avatar/big/077-1.png deleted file mode 100755 index 2f5ea53f5..000000000 Binary files a/public/media-src/avatar/big/077-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-10.png b/public/media-src/avatar/big/077-10.png deleted file mode 100644 index 6201e0a67..000000000 Binary files a/public/media-src/avatar/big/077-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-11.png b/public/media-src/avatar/big/077-11.png deleted file mode 100644 index 57bfebac0..000000000 Binary files a/public/media-src/avatar/big/077-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-12.png b/public/media-src/avatar/big/077-12.png deleted file mode 100644 index 8b6d5e1d3..000000000 Binary files a/public/media-src/avatar/big/077-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-2.png b/public/media-src/avatar/big/077-2.png deleted file mode 100755 index 1e000b2e9..000000000 Binary files a/public/media-src/avatar/big/077-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-3.png b/public/media-src/avatar/big/077-3.png deleted file mode 100755 index cafffa419..000000000 Binary files a/public/media-src/avatar/big/077-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-4.png b/public/media-src/avatar/big/077-4.png deleted file mode 100755 index 8e1f95a01..000000000 Binary files a/public/media-src/avatar/big/077-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-5.png b/public/media-src/avatar/big/077-5.png deleted file mode 100755 index 7ad2192ee..000000000 Binary files a/public/media-src/avatar/big/077-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-6.png b/public/media-src/avatar/big/077-6.png deleted file mode 100755 index de952e5cc..000000000 Binary files a/public/media-src/avatar/big/077-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-7.png b/public/media-src/avatar/big/077-7.png deleted file mode 100755 index 83d80e872..000000000 Binary files a/public/media-src/avatar/big/077-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-8.png b/public/media-src/avatar/big/077-8.png deleted file mode 100644 index f85fb980c..000000000 Binary files a/public/media-src/avatar/big/077-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/077-9.png b/public/media-src/avatar/big/077-9.png deleted file mode 100644 index 30e6d433d..000000000 Binary files a/public/media-src/avatar/big/077-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-1.png b/public/media-src/avatar/big/078-1.png deleted file mode 100755 index 260542405..000000000 Binary files a/public/media-src/avatar/big/078-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-10.png b/public/media-src/avatar/big/078-10.png deleted file mode 100644 index 6eebbc70d..000000000 Binary files a/public/media-src/avatar/big/078-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-11.png b/public/media-src/avatar/big/078-11.png deleted file mode 100644 index 7c1da2eab..000000000 Binary files a/public/media-src/avatar/big/078-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-12.png b/public/media-src/avatar/big/078-12.png deleted file mode 100644 index 5d6601d1c..000000000 Binary files a/public/media-src/avatar/big/078-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-2.png b/public/media-src/avatar/big/078-2.png deleted file mode 100755 index 9a612537e..000000000 Binary files a/public/media-src/avatar/big/078-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-3.png b/public/media-src/avatar/big/078-3.png deleted file mode 100755 index 1e0b3649f..000000000 Binary files a/public/media-src/avatar/big/078-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-4.png b/public/media-src/avatar/big/078-4.png deleted file mode 100755 index cab24d7e0..000000000 Binary files a/public/media-src/avatar/big/078-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-5.png b/public/media-src/avatar/big/078-5.png deleted file mode 100755 index 43f8b1cc0..000000000 Binary files a/public/media-src/avatar/big/078-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-6.png b/public/media-src/avatar/big/078-6.png deleted file mode 100755 index a723d14a6..000000000 Binary files a/public/media-src/avatar/big/078-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-7.png b/public/media-src/avatar/big/078-7.png deleted file mode 100755 index d3fe077c7..000000000 Binary files a/public/media-src/avatar/big/078-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-8.png b/public/media-src/avatar/big/078-8.png deleted file mode 100644 index f9601a523..000000000 Binary files a/public/media-src/avatar/big/078-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/078-9.png b/public/media-src/avatar/big/078-9.png deleted file mode 100644 index 9985bfde3..000000000 Binary files a/public/media-src/avatar/big/078-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-1.png b/public/media-src/avatar/big/079-1.png deleted file mode 100755 index 954477366..000000000 Binary files a/public/media-src/avatar/big/079-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-10.png b/public/media-src/avatar/big/079-10.png deleted file mode 100644 index 6ed8bd079..000000000 Binary files a/public/media-src/avatar/big/079-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-11.png b/public/media-src/avatar/big/079-11.png deleted file mode 100644 index 16c5940dd..000000000 Binary files a/public/media-src/avatar/big/079-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-12.png b/public/media-src/avatar/big/079-12.png deleted file mode 100644 index b5182266c..000000000 Binary files a/public/media-src/avatar/big/079-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-2.png b/public/media-src/avatar/big/079-2.png deleted file mode 100755 index ae6ee3043..000000000 Binary files a/public/media-src/avatar/big/079-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-3.png b/public/media-src/avatar/big/079-3.png deleted file mode 100755 index 7b30cb5e9..000000000 Binary files a/public/media-src/avatar/big/079-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-4.png b/public/media-src/avatar/big/079-4.png deleted file mode 100755 index 398b60306..000000000 Binary files a/public/media-src/avatar/big/079-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-5.png b/public/media-src/avatar/big/079-5.png deleted file mode 100755 index 283ae1cd3..000000000 Binary files a/public/media-src/avatar/big/079-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-6.png b/public/media-src/avatar/big/079-6.png deleted file mode 100755 index bf80a6e25..000000000 Binary files a/public/media-src/avatar/big/079-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-7.png b/public/media-src/avatar/big/079-7.png deleted file mode 100755 index 34b64f1d2..000000000 Binary files a/public/media-src/avatar/big/079-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-8.png b/public/media-src/avatar/big/079-8.png deleted file mode 100644 index f1671f972..000000000 Binary files a/public/media-src/avatar/big/079-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/079-9.png b/public/media-src/avatar/big/079-9.png deleted file mode 100644 index 5f9662397..000000000 Binary files a/public/media-src/avatar/big/079-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-1.png b/public/media-src/avatar/big/080-1.png deleted file mode 100755 index 254b547b9..000000000 Binary files a/public/media-src/avatar/big/080-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-10.png b/public/media-src/avatar/big/080-10.png deleted file mode 100644 index d06e4780e..000000000 Binary files a/public/media-src/avatar/big/080-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-11.png b/public/media-src/avatar/big/080-11.png deleted file mode 100644 index 313086d40..000000000 Binary files a/public/media-src/avatar/big/080-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-12.png b/public/media-src/avatar/big/080-12.png deleted file mode 100644 index 3969c8aa6..000000000 Binary files a/public/media-src/avatar/big/080-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-2.png b/public/media-src/avatar/big/080-2.png deleted file mode 100755 index 5f516c021..000000000 Binary files a/public/media-src/avatar/big/080-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-3.png b/public/media-src/avatar/big/080-3.png deleted file mode 100755 index 73174b5d5..000000000 Binary files a/public/media-src/avatar/big/080-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-4.png b/public/media-src/avatar/big/080-4.png deleted file mode 100755 index a669082a4..000000000 Binary files a/public/media-src/avatar/big/080-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-5.png b/public/media-src/avatar/big/080-5.png deleted file mode 100755 index 633574a35..000000000 Binary files a/public/media-src/avatar/big/080-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-6.png b/public/media-src/avatar/big/080-6.png deleted file mode 100755 index fba7aae50..000000000 Binary files a/public/media-src/avatar/big/080-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-7.png b/public/media-src/avatar/big/080-7.png deleted file mode 100755 index cca91f97e..000000000 Binary files a/public/media-src/avatar/big/080-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-8.png b/public/media-src/avatar/big/080-8.png deleted file mode 100644 index 9fabee669..000000000 Binary files a/public/media-src/avatar/big/080-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/080-9.png b/public/media-src/avatar/big/080-9.png deleted file mode 100644 index fddc2b2e2..000000000 Binary files a/public/media-src/avatar/big/080-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-1.png b/public/media-src/avatar/big/900-1.png deleted file mode 100644 index cec676f10..000000000 Binary files a/public/media-src/avatar/big/900-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-10.png b/public/media-src/avatar/big/900-10.png deleted file mode 100644 index 569a2d213..000000000 Binary files a/public/media-src/avatar/big/900-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-11.png b/public/media-src/avatar/big/900-11.png deleted file mode 100644 index 27c28b985..000000000 Binary files a/public/media-src/avatar/big/900-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-12.png b/public/media-src/avatar/big/900-12.png deleted file mode 100644 index 34e2392ed..000000000 Binary files a/public/media-src/avatar/big/900-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-2.png b/public/media-src/avatar/big/900-2.png deleted file mode 100644 index efe608584..000000000 Binary files a/public/media-src/avatar/big/900-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-3.png b/public/media-src/avatar/big/900-3.png deleted file mode 100644 index 934e7628b..000000000 Binary files a/public/media-src/avatar/big/900-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-4.png b/public/media-src/avatar/big/900-4.png deleted file mode 100644 index f95300e3f..000000000 Binary files a/public/media-src/avatar/big/900-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-5.png b/public/media-src/avatar/big/900-5.png deleted file mode 100644 index b330fc73f..000000000 Binary files a/public/media-src/avatar/big/900-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-6.png b/public/media-src/avatar/big/900-6.png deleted file mode 100644 index be902791a..000000000 Binary files a/public/media-src/avatar/big/900-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-7.png b/public/media-src/avatar/big/900-7.png deleted file mode 100644 index 56172df26..000000000 Binary files a/public/media-src/avatar/big/900-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-8.png b/public/media-src/avatar/big/900-8.png deleted file mode 100644 index c6a5ae517..000000000 Binary files a/public/media-src/avatar/big/900-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/900-9.png b/public/media-src/avatar/big/900-9.png deleted file mode 100644 index d59b0268f..000000000 Binary files a/public/media-src/avatar/big/900-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-1.png b/public/media-src/avatar/big/901-1.png deleted file mode 100644 index 4435afa2d..000000000 Binary files a/public/media-src/avatar/big/901-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-10.png b/public/media-src/avatar/big/901-10.png deleted file mode 100644 index dd97259c9..000000000 Binary files a/public/media-src/avatar/big/901-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-11.png b/public/media-src/avatar/big/901-11.png deleted file mode 100644 index e43ddb7e5..000000000 Binary files a/public/media-src/avatar/big/901-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-12.png b/public/media-src/avatar/big/901-12.png deleted file mode 100644 index 1f26980d4..000000000 Binary files a/public/media-src/avatar/big/901-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-2.png b/public/media-src/avatar/big/901-2.png deleted file mode 100644 index de150f48b..000000000 Binary files a/public/media-src/avatar/big/901-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-3.png b/public/media-src/avatar/big/901-3.png deleted file mode 100644 index 9671765ab..000000000 Binary files a/public/media-src/avatar/big/901-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-4.png b/public/media-src/avatar/big/901-4.png deleted file mode 100644 index 72382c0aa..000000000 Binary files a/public/media-src/avatar/big/901-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-5.png b/public/media-src/avatar/big/901-5.png deleted file mode 100644 index 0b41b04d1..000000000 Binary files a/public/media-src/avatar/big/901-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-6.png b/public/media-src/avatar/big/901-6.png deleted file mode 100644 index 5bbf7b4f5..000000000 Binary files a/public/media-src/avatar/big/901-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-7.png b/public/media-src/avatar/big/901-7.png deleted file mode 100644 index d12c1dc28..000000000 Binary files a/public/media-src/avatar/big/901-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-8.png b/public/media-src/avatar/big/901-8.png deleted file mode 100644 index f22407755..000000000 Binary files a/public/media-src/avatar/big/901-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/901-9.png b/public/media-src/avatar/big/901-9.png deleted file mode 100644 index a5794a04d..000000000 Binary files a/public/media-src/avatar/big/901-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-1.png b/public/media-src/avatar/big/902-1.png deleted file mode 100644 index 77c2d06a9..000000000 Binary files a/public/media-src/avatar/big/902-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-10.png b/public/media-src/avatar/big/902-10.png deleted file mode 100644 index 1b1509f6f..000000000 Binary files a/public/media-src/avatar/big/902-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-11.png b/public/media-src/avatar/big/902-11.png deleted file mode 100644 index 340bb77b2..000000000 Binary files a/public/media-src/avatar/big/902-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-12.png b/public/media-src/avatar/big/902-12.png deleted file mode 100644 index b95018f25..000000000 Binary files a/public/media-src/avatar/big/902-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-2.png b/public/media-src/avatar/big/902-2.png deleted file mode 100644 index b0913dfb4..000000000 Binary files a/public/media-src/avatar/big/902-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-3.png b/public/media-src/avatar/big/902-3.png deleted file mode 100644 index 578db13c6..000000000 Binary files a/public/media-src/avatar/big/902-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-4.png b/public/media-src/avatar/big/902-4.png deleted file mode 100644 index 1a35f0783..000000000 Binary files a/public/media-src/avatar/big/902-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-5.png b/public/media-src/avatar/big/902-5.png deleted file mode 100644 index 22fe9f1cf..000000000 Binary files a/public/media-src/avatar/big/902-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-6.png b/public/media-src/avatar/big/902-6.png deleted file mode 100644 index b6ccab6ec..000000000 Binary files a/public/media-src/avatar/big/902-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-7.png b/public/media-src/avatar/big/902-7.png deleted file mode 100644 index 33bbc057a..000000000 Binary files a/public/media-src/avatar/big/902-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-8.png b/public/media-src/avatar/big/902-8.png deleted file mode 100644 index f58e9a7ae..000000000 Binary files a/public/media-src/avatar/big/902-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/902-9.png b/public/media-src/avatar/big/902-9.png deleted file mode 100644 index 5b6738385..000000000 Binary files a/public/media-src/avatar/big/902-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-1.png b/public/media-src/avatar/big/903-1.png deleted file mode 100644 index 0ff02d6f2..000000000 Binary files a/public/media-src/avatar/big/903-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-10.png b/public/media-src/avatar/big/903-10.png deleted file mode 100644 index 982bf619e..000000000 Binary files a/public/media-src/avatar/big/903-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-11.png b/public/media-src/avatar/big/903-11.png deleted file mode 100644 index 50162355f..000000000 Binary files a/public/media-src/avatar/big/903-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-12.png b/public/media-src/avatar/big/903-12.png deleted file mode 100644 index 6302186ee..000000000 Binary files a/public/media-src/avatar/big/903-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-2.png b/public/media-src/avatar/big/903-2.png deleted file mode 100644 index d067bfe09..000000000 Binary files a/public/media-src/avatar/big/903-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-3.png b/public/media-src/avatar/big/903-3.png deleted file mode 100644 index c3f1b0b23..000000000 Binary files a/public/media-src/avatar/big/903-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-4.png b/public/media-src/avatar/big/903-4.png deleted file mode 100644 index 3bd3d2b03..000000000 Binary files a/public/media-src/avatar/big/903-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-5.png b/public/media-src/avatar/big/903-5.png deleted file mode 100644 index 74330eb1e..000000000 Binary files a/public/media-src/avatar/big/903-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-6.png b/public/media-src/avatar/big/903-6.png deleted file mode 100644 index af7d97c10..000000000 Binary files a/public/media-src/avatar/big/903-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-7.png b/public/media-src/avatar/big/903-7.png deleted file mode 100644 index a28dbe7f8..000000000 Binary files a/public/media-src/avatar/big/903-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-8.png b/public/media-src/avatar/big/903-8.png deleted file mode 100644 index 38d75ec1b..000000000 Binary files a/public/media-src/avatar/big/903-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/903-9.png b/public/media-src/avatar/big/903-9.png deleted file mode 100644 index fc3219eee..000000000 Binary files a/public/media-src/avatar/big/903-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-1.png b/public/media-src/avatar/big/904-1.png deleted file mode 100644 index 6fe6e809d..000000000 Binary files a/public/media-src/avatar/big/904-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-10.png b/public/media-src/avatar/big/904-10.png deleted file mode 100644 index 8d06a39f9..000000000 Binary files a/public/media-src/avatar/big/904-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-11.png b/public/media-src/avatar/big/904-11.png deleted file mode 100644 index 0ac2fbf90..000000000 Binary files a/public/media-src/avatar/big/904-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-12.png b/public/media-src/avatar/big/904-12.png deleted file mode 100644 index 5fbc1f7ec..000000000 Binary files a/public/media-src/avatar/big/904-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-2.png b/public/media-src/avatar/big/904-2.png deleted file mode 100644 index f67cc29de..000000000 Binary files a/public/media-src/avatar/big/904-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-3.png b/public/media-src/avatar/big/904-3.png deleted file mode 100644 index 2f1b62c86..000000000 Binary files a/public/media-src/avatar/big/904-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-4.png b/public/media-src/avatar/big/904-4.png deleted file mode 100644 index 8926890cd..000000000 Binary files a/public/media-src/avatar/big/904-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-5.png b/public/media-src/avatar/big/904-5.png deleted file mode 100644 index 80b63b344..000000000 Binary files a/public/media-src/avatar/big/904-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-6.png b/public/media-src/avatar/big/904-6.png deleted file mode 100644 index 17abbca3c..000000000 Binary files a/public/media-src/avatar/big/904-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-7.png b/public/media-src/avatar/big/904-7.png deleted file mode 100644 index 6b6d76df4..000000000 Binary files a/public/media-src/avatar/big/904-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-8.png b/public/media-src/avatar/big/904-8.png deleted file mode 100644 index 22062c130..000000000 Binary files a/public/media-src/avatar/big/904-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/904-9.png b/public/media-src/avatar/big/904-9.png deleted file mode 100644 index 778bf2bc1..000000000 Binary files a/public/media-src/avatar/big/904-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-1.png b/public/media-src/avatar/big/905-1.png deleted file mode 100644 index 3a92f7ae0..000000000 Binary files a/public/media-src/avatar/big/905-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-10.png b/public/media-src/avatar/big/905-10.png deleted file mode 100644 index f8c68031c..000000000 Binary files a/public/media-src/avatar/big/905-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-11.png b/public/media-src/avatar/big/905-11.png deleted file mode 100644 index ae2e3f709..000000000 Binary files a/public/media-src/avatar/big/905-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-12.png b/public/media-src/avatar/big/905-12.png deleted file mode 100644 index 5c9eb2cbf..000000000 Binary files a/public/media-src/avatar/big/905-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-2.png b/public/media-src/avatar/big/905-2.png deleted file mode 100644 index fab14282c..000000000 Binary files a/public/media-src/avatar/big/905-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-3.png b/public/media-src/avatar/big/905-3.png deleted file mode 100644 index a6afa32cb..000000000 Binary files a/public/media-src/avatar/big/905-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-4.png b/public/media-src/avatar/big/905-4.png deleted file mode 100644 index 18d617234..000000000 Binary files a/public/media-src/avatar/big/905-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-5.png b/public/media-src/avatar/big/905-5.png deleted file mode 100644 index 4f40722fc..000000000 Binary files a/public/media-src/avatar/big/905-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-6.png b/public/media-src/avatar/big/905-6.png deleted file mode 100644 index 1093009c7..000000000 Binary files a/public/media-src/avatar/big/905-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-7.png b/public/media-src/avatar/big/905-7.png deleted file mode 100644 index 6d2d634e0..000000000 Binary files a/public/media-src/avatar/big/905-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-8.png b/public/media-src/avatar/big/905-8.png deleted file mode 100644 index bda58c8f1..000000000 Binary files a/public/media-src/avatar/big/905-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/905-9.png b/public/media-src/avatar/big/905-9.png deleted file mode 100644 index 9074e5684..000000000 Binary files a/public/media-src/avatar/big/905-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-1.png b/public/media-src/avatar/big/color-1.png deleted file mode 100755 index 8e9f9db11..000000000 Binary files a/public/media-src/avatar/big/color-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-10.png b/public/media-src/avatar/big/color-10.png deleted file mode 100644 index 8a76fb564..000000000 Binary files a/public/media-src/avatar/big/color-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-11.png b/public/media-src/avatar/big/color-11.png deleted file mode 100644 index 946398044..000000000 Binary files a/public/media-src/avatar/big/color-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-12.png b/public/media-src/avatar/big/color-12.png deleted file mode 100644 index d22d987c8..000000000 Binary files a/public/media-src/avatar/big/color-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-2.png b/public/media-src/avatar/big/color-2.png deleted file mode 100755 index a9f334321..000000000 Binary files a/public/media-src/avatar/big/color-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-3.png b/public/media-src/avatar/big/color-3.png deleted file mode 100755 index 4670a5bd8..000000000 Binary files a/public/media-src/avatar/big/color-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-4.png b/public/media-src/avatar/big/color-4.png deleted file mode 100755 index 4c3eee7cd..000000000 Binary files a/public/media-src/avatar/big/color-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-5.png b/public/media-src/avatar/big/color-5.png deleted file mode 100755 index f37548615..000000000 Binary files a/public/media-src/avatar/big/color-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-6.png b/public/media-src/avatar/big/color-6.png deleted file mode 100755 index 93afdeab9..000000000 Binary files a/public/media-src/avatar/big/color-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-7.png b/public/media-src/avatar/big/color-7.png deleted file mode 100755 index 2af72bbba..000000000 Binary files a/public/media-src/avatar/big/color-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-8.png b/public/media-src/avatar/big/color-8.png deleted file mode 100644 index c66c0eeda..000000000 Binary files a/public/media-src/avatar/big/color-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/color-9.png b/public/media-src/avatar/big/color-9.png deleted file mode 100644 index 1bae6ca62..000000000 Binary files a/public/media-src/avatar/big/color-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/empty.png b/public/media-src/avatar/big/empty.png deleted file mode 100755 index 706db82d8..000000000 Binary files a/public/media-src/avatar/big/empty.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-1.png b/public/media-src/avatar/big/jm-1.png deleted file mode 100755 index b4ff820f2..000000000 Binary files a/public/media-src/avatar/big/jm-1.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-10.png b/public/media-src/avatar/big/jm-10.png deleted file mode 100644 index cfa3111ab..000000000 Binary files a/public/media-src/avatar/big/jm-10.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-11.png b/public/media-src/avatar/big/jm-11.png deleted file mode 100644 index 1a06ac069..000000000 Binary files a/public/media-src/avatar/big/jm-11.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-12.png b/public/media-src/avatar/big/jm-12.png deleted file mode 100644 index 9c33e8ebe..000000000 Binary files a/public/media-src/avatar/big/jm-12.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-2.png b/public/media-src/avatar/big/jm-2.png deleted file mode 100755 index 32918c624..000000000 Binary files a/public/media-src/avatar/big/jm-2.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-3.png b/public/media-src/avatar/big/jm-3.png deleted file mode 100755 index 838685d4a..000000000 Binary files a/public/media-src/avatar/big/jm-3.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-4.png b/public/media-src/avatar/big/jm-4.png deleted file mode 100755 index 7ad9db134..000000000 Binary files a/public/media-src/avatar/big/jm-4.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-5.png b/public/media-src/avatar/big/jm-5.png deleted file mode 100755 index c06762e6b..000000000 Binary files a/public/media-src/avatar/big/jm-5.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-6.png b/public/media-src/avatar/big/jm-6.png deleted file mode 100755 index 915d10f52..000000000 Binary files a/public/media-src/avatar/big/jm-6.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-7.png b/public/media-src/avatar/big/jm-7.png deleted file mode 100755 index 3d5383eb6..000000000 Binary files a/public/media-src/avatar/big/jm-7.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-8.png b/public/media-src/avatar/big/jm-8.png deleted file mode 100644 index e67935838..000000000 Binary files a/public/media-src/avatar/big/jm-8.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm-9.png b/public/media-src/avatar/big/jm-9.png deleted file mode 100644 index c06762e6b..000000000 Binary files a/public/media-src/avatar/big/jm-9.png and /dev/null differ diff --git a/public/media-src/avatar/big/jm.png b/public/media-src/avatar/big/jm.png deleted file mode 100755 index 772c25a31..000000000 Binary files a/public/media-src/avatar/big/jm.png and /dev/null differ diff --git a/public/media-src/avatar/big/multi.png b/public/media-src/avatar/big/multi.png deleted file mode 100644 index 706db82d8..000000000 Binary files a/public/media-src/avatar/big/multi.png and /dev/null differ diff --git a/public/media-src/avatar/big/rebel.png b/public/media-src/avatar/big/rebel.png deleted file mode 100755 index e9ce93638..000000000 Binary files a/public/media-src/avatar/big/rebel.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-1.png b/public/media-src/avatar/medium/001-1.png deleted file mode 100755 index fddcf63b9..000000000 Binary files a/public/media-src/avatar/medium/001-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-10.png b/public/media-src/avatar/medium/001-10.png deleted file mode 100644 index 80e9ad32d..000000000 Binary files a/public/media-src/avatar/medium/001-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-11.png b/public/media-src/avatar/medium/001-11.png deleted file mode 100644 index edfba8081..000000000 Binary files a/public/media-src/avatar/medium/001-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-12.png b/public/media-src/avatar/medium/001-12.png deleted file mode 100644 index a392d2bdf..000000000 Binary files a/public/media-src/avatar/medium/001-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-2.png b/public/media-src/avatar/medium/001-2.png deleted file mode 100755 index 011ef9858..000000000 Binary files a/public/media-src/avatar/medium/001-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-3.png b/public/media-src/avatar/medium/001-3.png deleted file mode 100755 index 785320828..000000000 Binary files a/public/media-src/avatar/medium/001-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-4.png b/public/media-src/avatar/medium/001-4.png deleted file mode 100755 index 034646814..000000000 Binary files a/public/media-src/avatar/medium/001-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-5.png b/public/media-src/avatar/medium/001-5.png deleted file mode 100755 index 95ec0a77d..000000000 Binary files a/public/media-src/avatar/medium/001-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-6.png b/public/media-src/avatar/medium/001-6.png deleted file mode 100755 index 2b1ea4ed7..000000000 Binary files a/public/media-src/avatar/medium/001-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-7.png b/public/media-src/avatar/medium/001-7.png deleted file mode 100755 index 694e32575..000000000 Binary files a/public/media-src/avatar/medium/001-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-8.png b/public/media-src/avatar/medium/001-8.png deleted file mode 100644 index 57efac15b..000000000 Binary files a/public/media-src/avatar/medium/001-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/001-9.png b/public/media-src/avatar/medium/001-9.png deleted file mode 100644 index 11c0d4182..000000000 Binary files a/public/media-src/avatar/medium/001-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-1.png b/public/media-src/avatar/medium/002-1.png deleted file mode 100755 index 3a6ea63aa..000000000 Binary files a/public/media-src/avatar/medium/002-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-10.png b/public/media-src/avatar/medium/002-10.png deleted file mode 100644 index 9ff730730..000000000 Binary files a/public/media-src/avatar/medium/002-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-11.png b/public/media-src/avatar/medium/002-11.png deleted file mode 100644 index affc5430d..000000000 Binary files a/public/media-src/avatar/medium/002-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-12.png b/public/media-src/avatar/medium/002-12.png deleted file mode 100644 index 928a243f8..000000000 Binary files a/public/media-src/avatar/medium/002-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-2.png b/public/media-src/avatar/medium/002-2.png deleted file mode 100755 index 7bf43e3bd..000000000 Binary files a/public/media-src/avatar/medium/002-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-3.png b/public/media-src/avatar/medium/002-3.png deleted file mode 100755 index 528c18114..000000000 Binary files a/public/media-src/avatar/medium/002-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-4.png b/public/media-src/avatar/medium/002-4.png deleted file mode 100755 index 2d254ba6c..000000000 Binary files a/public/media-src/avatar/medium/002-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-5.png b/public/media-src/avatar/medium/002-5.png deleted file mode 100755 index 7fd804327..000000000 Binary files a/public/media-src/avatar/medium/002-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-6.png b/public/media-src/avatar/medium/002-6.png deleted file mode 100755 index f214f6166..000000000 Binary files a/public/media-src/avatar/medium/002-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-7.png b/public/media-src/avatar/medium/002-7.png deleted file mode 100755 index 152beb527..000000000 Binary files a/public/media-src/avatar/medium/002-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-8.png b/public/media-src/avatar/medium/002-8.png deleted file mode 100644 index 7d36b21bb..000000000 Binary files a/public/media-src/avatar/medium/002-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/002-9.png b/public/media-src/avatar/medium/002-9.png deleted file mode 100644 index 0273ffbac..000000000 Binary files a/public/media-src/avatar/medium/002-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-1.png b/public/media-src/avatar/medium/003-1.png deleted file mode 100755 index a73b9e854..000000000 Binary files a/public/media-src/avatar/medium/003-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-10.png b/public/media-src/avatar/medium/003-10.png deleted file mode 100644 index 04ee4b44c..000000000 Binary files a/public/media-src/avatar/medium/003-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-11.png b/public/media-src/avatar/medium/003-11.png deleted file mode 100644 index 9da5c2ee0..000000000 Binary files a/public/media-src/avatar/medium/003-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-12.png b/public/media-src/avatar/medium/003-12.png deleted file mode 100644 index 987fcf7b8..000000000 Binary files a/public/media-src/avatar/medium/003-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-2.png b/public/media-src/avatar/medium/003-2.png deleted file mode 100755 index 8571a8659..000000000 Binary files a/public/media-src/avatar/medium/003-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-3.png b/public/media-src/avatar/medium/003-3.png deleted file mode 100755 index 954bcc9cf..000000000 Binary files a/public/media-src/avatar/medium/003-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-4.png b/public/media-src/avatar/medium/003-4.png deleted file mode 100755 index 991a56d24..000000000 Binary files a/public/media-src/avatar/medium/003-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-5.png b/public/media-src/avatar/medium/003-5.png deleted file mode 100755 index 62ea6ecfb..000000000 Binary files a/public/media-src/avatar/medium/003-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-6.png b/public/media-src/avatar/medium/003-6.png deleted file mode 100755 index d8eee4f4e..000000000 Binary files a/public/media-src/avatar/medium/003-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-7.png b/public/media-src/avatar/medium/003-7.png deleted file mode 100755 index 5d8365910..000000000 Binary files a/public/media-src/avatar/medium/003-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-8.png b/public/media-src/avatar/medium/003-8.png deleted file mode 100644 index 54efaa068..000000000 Binary files a/public/media-src/avatar/medium/003-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/003-9.png b/public/media-src/avatar/medium/003-9.png deleted file mode 100644 index a18426d30..000000000 Binary files a/public/media-src/avatar/medium/003-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-1.png b/public/media-src/avatar/medium/004-1.png deleted file mode 100755 index 9c21aecee..000000000 Binary files a/public/media-src/avatar/medium/004-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-10.png b/public/media-src/avatar/medium/004-10.png deleted file mode 100644 index 7d8abcc1a..000000000 Binary files a/public/media-src/avatar/medium/004-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-11.png b/public/media-src/avatar/medium/004-11.png deleted file mode 100644 index 70b730e74..000000000 Binary files a/public/media-src/avatar/medium/004-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-12.png b/public/media-src/avatar/medium/004-12.png deleted file mode 100644 index f1c188cb3..000000000 Binary files a/public/media-src/avatar/medium/004-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-2.png b/public/media-src/avatar/medium/004-2.png deleted file mode 100755 index e69aa4e58..000000000 Binary files a/public/media-src/avatar/medium/004-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-3.png b/public/media-src/avatar/medium/004-3.png deleted file mode 100755 index 011d39579..000000000 Binary files a/public/media-src/avatar/medium/004-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-4.png b/public/media-src/avatar/medium/004-4.png deleted file mode 100755 index c15cfb9fe..000000000 Binary files a/public/media-src/avatar/medium/004-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-5.png b/public/media-src/avatar/medium/004-5.png deleted file mode 100755 index 49a25364c..000000000 Binary files a/public/media-src/avatar/medium/004-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-6.png b/public/media-src/avatar/medium/004-6.png deleted file mode 100755 index f99a942b9..000000000 Binary files a/public/media-src/avatar/medium/004-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-7.png b/public/media-src/avatar/medium/004-7.png deleted file mode 100755 index b65bff708..000000000 Binary files a/public/media-src/avatar/medium/004-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-8.png b/public/media-src/avatar/medium/004-8.png deleted file mode 100644 index be2b7c477..000000000 Binary files a/public/media-src/avatar/medium/004-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/004-9.png b/public/media-src/avatar/medium/004-9.png deleted file mode 100644 index f1bd57d1b..000000000 Binary files a/public/media-src/avatar/medium/004-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-1.png b/public/media-src/avatar/medium/005-1.png deleted file mode 100755 index 915924ae3..000000000 Binary files a/public/media-src/avatar/medium/005-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-10.png b/public/media-src/avatar/medium/005-10.png deleted file mode 100644 index 354cee746..000000000 Binary files a/public/media-src/avatar/medium/005-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-11.png b/public/media-src/avatar/medium/005-11.png deleted file mode 100644 index 27aee5167..000000000 Binary files a/public/media-src/avatar/medium/005-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-12.png b/public/media-src/avatar/medium/005-12.png deleted file mode 100644 index 7bf7a402f..000000000 Binary files a/public/media-src/avatar/medium/005-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-2.png b/public/media-src/avatar/medium/005-2.png deleted file mode 100755 index a987afc09..000000000 Binary files a/public/media-src/avatar/medium/005-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-3.png b/public/media-src/avatar/medium/005-3.png deleted file mode 100755 index ac8dac3d6..000000000 Binary files a/public/media-src/avatar/medium/005-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-4.png b/public/media-src/avatar/medium/005-4.png deleted file mode 100755 index fd3e73cee..000000000 Binary files a/public/media-src/avatar/medium/005-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-5.png b/public/media-src/avatar/medium/005-5.png deleted file mode 100755 index 0f1e8b425..000000000 Binary files a/public/media-src/avatar/medium/005-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-6.png b/public/media-src/avatar/medium/005-6.png deleted file mode 100755 index 4c3f59c24..000000000 Binary files a/public/media-src/avatar/medium/005-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-7.png b/public/media-src/avatar/medium/005-7.png deleted file mode 100755 index 8101b03f7..000000000 Binary files a/public/media-src/avatar/medium/005-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-8.png b/public/media-src/avatar/medium/005-8.png deleted file mode 100644 index 6bcc9d32e..000000000 Binary files a/public/media-src/avatar/medium/005-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/005-9.png b/public/media-src/avatar/medium/005-9.png deleted file mode 100644 index 71152b3bc..000000000 Binary files a/public/media-src/avatar/medium/005-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-1.png b/public/media-src/avatar/medium/006-1.png deleted file mode 100755 index 834529017..000000000 Binary files a/public/media-src/avatar/medium/006-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-10.png b/public/media-src/avatar/medium/006-10.png deleted file mode 100644 index 6b6b7e2a0..000000000 Binary files a/public/media-src/avatar/medium/006-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-11.png b/public/media-src/avatar/medium/006-11.png deleted file mode 100644 index a2bd84df1..000000000 Binary files a/public/media-src/avatar/medium/006-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-12.png b/public/media-src/avatar/medium/006-12.png deleted file mode 100644 index 8a764a319..000000000 Binary files a/public/media-src/avatar/medium/006-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-2.png b/public/media-src/avatar/medium/006-2.png deleted file mode 100755 index b064576c9..000000000 Binary files a/public/media-src/avatar/medium/006-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-3.png b/public/media-src/avatar/medium/006-3.png deleted file mode 100755 index 884585881..000000000 Binary files a/public/media-src/avatar/medium/006-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-4.png b/public/media-src/avatar/medium/006-4.png deleted file mode 100755 index 434eb0e68..000000000 Binary files a/public/media-src/avatar/medium/006-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-5.png b/public/media-src/avatar/medium/006-5.png deleted file mode 100755 index 4658ed362..000000000 Binary files a/public/media-src/avatar/medium/006-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-6.png b/public/media-src/avatar/medium/006-6.png deleted file mode 100755 index 62d1077d4..000000000 Binary files a/public/media-src/avatar/medium/006-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-7.png b/public/media-src/avatar/medium/006-7.png deleted file mode 100755 index 96a4c42d6..000000000 Binary files a/public/media-src/avatar/medium/006-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-8.png b/public/media-src/avatar/medium/006-8.png deleted file mode 100644 index 8246bdad5..000000000 Binary files a/public/media-src/avatar/medium/006-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/006-9.png b/public/media-src/avatar/medium/006-9.png deleted file mode 100644 index 6f4ebb458..000000000 Binary files a/public/media-src/avatar/medium/006-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-1.png b/public/media-src/avatar/medium/007-1.png deleted file mode 100755 index 0e9892dc3..000000000 Binary files a/public/media-src/avatar/medium/007-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-10.png b/public/media-src/avatar/medium/007-10.png deleted file mode 100644 index 752e924bb..000000000 Binary files a/public/media-src/avatar/medium/007-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-11.png b/public/media-src/avatar/medium/007-11.png deleted file mode 100644 index 438bfc836..000000000 Binary files a/public/media-src/avatar/medium/007-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-12.png b/public/media-src/avatar/medium/007-12.png deleted file mode 100644 index db5c9d530..000000000 Binary files a/public/media-src/avatar/medium/007-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-2.png b/public/media-src/avatar/medium/007-2.png deleted file mode 100755 index c38d5a593..000000000 Binary files a/public/media-src/avatar/medium/007-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-3.png b/public/media-src/avatar/medium/007-3.png deleted file mode 100755 index b71b3024f..000000000 Binary files a/public/media-src/avatar/medium/007-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-4.png b/public/media-src/avatar/medium/007-4.png deleted file mode 100755 index 2dd82f3e0..000000000 Binary files a/public/media-src/avatar/medium/007-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-5.png b/public/media-src/avatar/medium/007-5.png deleted file mode 100755 index 52f87993a..000000000 Binary files a/public/media-src/avatar/medium/007-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-6.png b/public/media-src/avatar/medium/007-6.png deleted file mode 100755 index 8ca998c0c..000000000 Binary files a/public/media-src/avatar/medium/007-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-7.png b/public/media-src/avatar/medium/007-7.png deleted file mode 100755 index 6db4773c0..000000000 Binary files a/public/media-src/avatar/medium/007-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-8.png b/public/media-src/avatar/medium/007-8.png deleted file mode 100644 index 557d14d29..000000000 Binary files a/public/media-src/avatar/medium/007-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/007-9.png b/public/media-src/avatar/medium/007-9.png deleted file mode 100644 index 7886f8a37..000000000 Binary files a/public/media-src/avatar/medium/007-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-1.png b/public/media-src/avatar/medium/008-1.png deleted file mode 100755 index df12c66ac..000000000 Binary files a/public/media-src/avatar/medium/008-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-10.png b/public/media-src/avatar/medium/008-10.png deleted file mode 100644 index 9d8861721..000000000 Binary files a/public/media-src/avatar/medium/008-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-11.png b/public/media-src/avatar/medium/008-11.png deleted file mode 100644 index 85dbd598d..000000000 Binary files a/public/media-src/avatar/medium/008-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-12.png b/public/media-src/avatar/medium/008-12.png deleted file mode 100644 index dab8605bf..000000000 Binary files a/public/media-src/avatar/medium/008-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-2.png b/public/media-src/avatar/medium/008-2.png deleted file mode 100755 index 5e5de3634..000000000 Binary files a/public/media-src/avatar/medium/008-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-3.png b/public/media-src/avatar/medium/008-3.png deleted file mode 100755 index cc5318b42..000000000 Binary files a/public/media-src/avatar/medium/008-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-4.png b/public/media-src/avatar/medium/008-4.png deleted file mode 100755 index bc79b5395..000000000 Binary files a/public/media-src/avatar/medium/008-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-5.png b/public/media-src/avatar/medium/008-5.png deleted file mode 100755 index 3dd2aaf32..000000000 Binary files a/public/media-src/avatar/medium/008-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-6.png b/public/media-src/avatar/medium/008-6.png deleted file mode 100755 index 162c8c9a6..000000000 Binary files a/public/media-src/avatar/medium/008-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-7.png b/public/media-src/avatar/medium/008-7.png deleted file mode 100755 index d9b79b658..000000000 Binary files a/public/media-src/avatar/medium/008-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-8.png b/public/media-src/avatar/medium/008-8.png deleted file mode 100644 index 91ebbf8e5..000000000 Binary files a/public/media-src/avatar/medium/008-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/008-9.png b/public/media-src/avatar/medium/008-9.png deleted file mode 100644 index 34158b5c5..000000000 Binary files a/public/media-src/avatar/medium/008-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-1.png b/public/media-src/avatar/medium/009-1.png deleted file mode 100755 index 65cc600e0..000000000 Binary files a/public/media-src/avatar/medium/009-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-10.png b/public/media-src/avatar/medium/009-10.png deleted file mode 100644 index 914c8a250..000000000 Binary files a/public/media-src/avatar/medium/009-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-11.png b/public/media-src/avatar/medium/009-11.png deleted file mode 100644 index 25fde97cb..000000000 Binary files a/public/media-src/avatar/medium/009-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-12.png b/public/media-src/avatar/medium/009-12.png deleted file mode 100644 index 4245741cd..000000000 Binary files a/public/media-src/avatar/medium/009-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-2.png b/public/media-src/avatar/medium/009-2.png deleted file mode 100755 index bfbc1a5d9..000000000 Binary files a/public/media-src/avatar/medium/009-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-3.png b/public/media-src/avatar/medium/009-3.png deleted file mode 100755 index 14a34d66b..000000000 Binary files a/public/media-src/avatar/medium/009-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-4.png b/public/media-src/avatar/medium/009-4.png deleted file mode 100755 index f1d9e9925..000000000 Binary files a/public/media-src/avatar/medium/009-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-5.png b/public/media-src/avatar/medium/009-5.png deleted file mode 100755 index 78b42da08..000000000 Binary files a/public/media-src/avatar/medium/009-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-6.png b/public/media-src/avatar/medium/009-6.png deleted file mode 100755 index b860257db..000000000 Binary files a/public/media-src/avatar/medium/009-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-7.png b/public/media-src/avatar/medium/009-7.png deleted file mode 100755 index 8ba275d8f..000000000 Binary files a/public/media-src/avatar/medium/009-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-8.png b/public/media-src/avatar/medium/009-8.png deleted file mode 100644 index 8c5933e80..000000000 Binary files a/public/media-src/avatar/medium/009-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/009-9.png b/public/media-src/avatar/medium/009-9.png deleted file mode 100644 index 9fb2239d6..000000000 Binary files a/public/media-src/avatar/medium/009-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-1.png b/public/media-src/avatar/medium/010-1.png deleted file mode 100755 index c9bbd1c95..000000000 Binary files a/public/media-src/avatar/medium/010-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-10.png b/public/media-src/avatar/medium/010-10.png deleted file mode 100644 index 0066f1cd1..000000000 Binary files a/public/media-src/avatar/medium/010-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-11.png b/public/media-src/avatar/medium/010-11.png deleted file mode 100644 index 77311cbf2..000000000 Binary files a/public/media-src/avatar/medium/010-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-12.png b/public/media-src/avatar/medium/010-12.png deleted file mode 100644 index 8aa34e8fc..000000000 Binary files a/public/media-src/avatar/medium/010-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-2.png b/public/media-src/avatar/medium/010-2.png deleted file mode 100755 index 672462c03..000000000 Binary files a/public/media-src/avatar/medium/010-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-3.png b/public/media-src/avatar/medium/010-3.png deleted file mode 100755 index 10d40a919..000000000 Binary files a/public/media-src/avatar/medium/010-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-4.png b/public/media-src/avatar/medium/010-4.png deleted file mode 100755 index 211d014b4..000000000 Binary files a/public/media-src/avatar/medium/010-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-5.png b/public/media-src/avatar/medium/010-5.png deleted file mode 100755 index cbf982a21..000000000 Binary files a/public/media-src/avatar/medium/010-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-6.png b/public/media-src/avatar/medium/010-6.png deleted file mode 100755 index 934939a13..000000000 Binary files a/public/media-src/avatar/medium/010-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-7.png b/public/media-src/avatar/medium/010-7.png deleted file mode 100755 index ae91a5e3f..000000000 Binary files a/public/media-src/avatar/medium/010-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-8.png b/public/media-src/avatar/medium/010-8.png deleted file mode 100644 index 7197451f3..000000000 Binary files a/public/media-src/avatar/medium/010-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/010-9.png b/public/media-src/avatar/medium/010-9.png deleted file mode 100644 index 7c0ca10e6..000000000 Binary files a/public/media-src/avatar/medium/010-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-1.png b/public/media-src/avatar/medium/011-1.png deleted file mode 100755 index b13af1685..000000000 Binary files a/public/media-src/avatar/medium/011-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-10.png b/public/media-src/avatar/medium/011-10.png deleted file mode 100644 index 386ea91a2..000000000 Binary files a/public/media-src/avatar/medium/011-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-11.png b/public/media-src/avatar/medium/011-11.png deleted file mode 100644 index 0196cb0dc..000000000 Binary files a/public/media-src/avatar/medium/011-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-12.png b/public/media-src/avatar/medium/011-12.png deleted file mode 100644 index 5ece3d2eb..000000000 Binary files a/public/media-src/avatar/medium/011-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-2.png b/public/media-src/avatar/medium/011-2.png deleted file mode 100755 index 69026767e..000000000 Binary files a/public/media-src/avatar/medium/011-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-3.png b/public/media-src/avatar/medium/011-3.png deleted file mode 100755 index 1950b8913..000000000 Binary files a/public/media-src/avatar/medium/011-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-4.png b/public/media-src/avatar/medium/011-4.png deleted file mode 100755 index 2ad5f987c..000000000 Binary files a/public/media-src/avatar/medium/011-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-5.png b/public/media-src/avatar/medium/011-5.png deleted file mode 100755 index 0fb408a83..000000000 Binary files a/public/media-src/avatar/medium/011-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-6.png b/public/media-src/avatar/medium/011-6.png deleted file mode 100755 index 3b8f8a680..000000000 Binary files a/public/media-src/avatar/medium/011-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-7.png b/public/media-src/avatar/medium/011-7.png deleted file mode 100755 index 36c314439..000000000 Binary files a/public/media-src/avatar/medium/011-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-8.png b/public/media-src/avatar/medium/011-8.png deleted file mode 100644 index 68167a4c2..000000000 Binary files a/public/media-src/avatar/medium/011-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/011-9.png b/public/media-src/avatar/medium/011-9.png deleted file mode 100644 index f129dde82..000000000 Binary files a/public/media-src/avatar/medium/011-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-1.png b/public/media-src/avatar/medium/012-1.png deleted file mode 100755 index a11fc7470..000000000 Binary files a/public/media-src/avatar/medium/012-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-10.png b/public/media-src/avatar/medium/012-10.png deleted file mode 100644 index f019b1dc5..000000000 Binary files a/public/media-src/avatar/medium/012-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-11.png b/public/media-src/avatar/medium/012-11.png deleted file mode 100644 index 3bd370fdd..000000000 Binary files a/public/media-src/avatar/medium/012-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-12.png b/public/media-src/avatar/medium/012-12.png deleted file mode 100644 index 1c25a987a..000000000 Binary files a/public/media-src/avatar/medium/012-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-2.png b/public/media-src/avatar/medium/012-2.png deleted file mode 100755 index 10891b0c7..000000000 Binary files a/public/media-src/avatar/medium/012-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-3.png b/public/media-src/avatar/medium/012-3.png deleted file mode 100755 index 3fa021af8..000000000 Binary files a/public/media-src/avatar/medium/012-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-4.png b/public/media-src/avatar/medium/012-4.png deleted file mode 100755 index 81527d859..000000000 Binary files a/public/media-src/avatar/medium/012-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-5.png b/public/media-src/avatar/medium/012-5.png deleted file mode 100755 index 82a9ae9e2..000000000 Binary files a/public/media-src/avatar/medium/012-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-6.png b/public/media-src/avatar/medium/012-6.png deleted file mode 100755 index 5ba33c174..000000000 Binary files a/public/media-src/avatar/medium/012-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-7.png b/public/media-src/avatar/medium/012-7.png deleted file mode 100755 index 8a6ac5efc..000000000 Binary files a/public/media-src/avatar/medium/012-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-8.png b/public/media-src/avatar/medium/012-8.png deleted file mode 100644 index d02505904..000000000 Binary files a/public/media-src/avatar/medium/012-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/012-9.png b/public/media-src/avatar/medium/012-9.png deleted file mode 100644 index 2dcab9a62..000000000 Binary files a/public/media-src/avatar/medium/012-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-1.png b/public/media-src/avatar/medium/013-1.png deleted file mode 100755 index 44142811d..000000000 Binary files a/public/media-src/avatar/medium/013-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-10.png b/public/media-src/avatar/medium/013-10.png deleted file mode 100644 index 5d9516ade..000000000 Binary files a/public/media-src/avatar/medium/013-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-11.png b/public/media-src/avatar/medium/013-11.png deleted file mode 100644 index a13c3d7d1..000000000 Binary files a/public/media-src/avatar/medium/013-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-12.png b/public/media-src/avatar/medium/013-12.png deleted file mode 100644 index bb3ad9c8b..000000000 Binary files a/public/media-src/avatar/medium/013-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-2.png b/public/media-src/avatar/medium/013-2.png deleted file mode 100755 index 7b86b7c5d..000000000 Binary files a/public/media-src/avatar/medium/013-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-3.png b/public/media-src/avatar/medium/013-3.png deleted file mode 100755 index 8248fa91b..000000000 Binary files a/public/media-src/avatar/medium/013-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-4.png b/public/media-src/avatar/medium/013-4.png deleted file mode 100755 index db198108b..000000000 Binary files a/public/media-src/avatar/medium/013-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-5.png b/public/media-src/avatar/medium/013-5.png deleted file mode 100755 index 2ebfd9deb..000000000 Binary files a/public/media-src/avatar/medium/013-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-6.png b/public/media-src/avatar/medium/013-6.png deleted file mode 100755 index be11947b6..000000000 Binary files a/public/media-src/avatar/medium/013-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-7.png b/public/media-src/avatar/medium/013-7.png deleted file mode 100755 index 3fc3716c5..000000000 Binary files a/public/media-src/avatar/medium/013-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-8.png b/public/media-src/avatar/medium/013-8.png deleted file mode 100644 index fedd6be58..000000000 Binary files a/public/media-src/avatar/medium/013-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/013-9.png b/public/media-src/avatar/medium/013-9.png deleted file mode 100644 index 2e29d58c4..000000000 Binary files a/public/media-src/avatar/medium/013-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-1.png b/public/media-src/avatar/medium/014-1.png deleted file mode 100755 index 0c97a02ff..000000000 Binary files a/public/media-src/avatar/medium/014-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-10.png b/public/media-src/avatar/medium/014-10.png deleted file mode 100644 index a9be885e0..000000000 Binary files a/public/media-src/avatar/medium/014-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-11.png b/public/media-src/avatar/medium/014-11.png deleted file mode 100644 index ba12d5854..000000000 Binary files a/public/media-src/avatar/medium/014-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-12.png b/public/media-src/avatar/medium/014-12.png deleted file mode 100644 index 35e3a4cc5..000000000 Binary files a/public/media-src/avatar/medium/014-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-2.png b/public/media-src/avatar/medium/014-2.png deleted file mode 100755 index 178af62f7..000000000 Binary files a/public/media-src/avatar/medium/014-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-3.png b/public/media-src/avatar/medium/014-3.png deleted file mode 100755 index 31c9fd695..000000000 Binary files a/public/media-src/avatar/medium/014-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-4.png b/public/media-src/avatar/medium/014-4.png deleted file mode 100755 index 5790419dd..000000000 Binary files a/public/media-src/avatar/medium/014-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-5.png b/public/media-src/avatar/medium/014-5.png deleted file mode 100755 index 5b2845fcd..000000000 Binary files a/public/media-src/avatar/medium/014-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-6.png b/public/media-src/avatar/medium/014-6.png deleted file mode 100755 index 1e9a48ee6..000000000 Binary files a/public/media-src/avatar/medium/014-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-7.png b/public/media-src/avatar/medium/014-7.png deleted file mode 100755 index 1ff5588c7..000000000 Binary files a/public/media-src/avatar/medium/014-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-8.png b/public/media-src/avatar/medium/014-8.png deleted file mode 100644 index 522de2bef..000000000 Binary files a/public/media-src/avatar/medium/014-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/014-9.png b/public/media-src/avatar/medium/014-9.png deleted file mode 100644 index a3a1f2260..000000000 Binary files a/public/media-src/avatar/medium/014-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-1.png b/public/media-src/avatar/medium/015-1.png deleted file mode 100755 index 765cab1b7..000000000 Binary files a/public/media-src/avatar/medium/015-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-10.png b/public/media-src/avatar/medium/015-10.png deleted file mode 100644 index ddf508e43..000000000 Binary files a/public/media-src/avatar/medium/015-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-11.png b/public/media-src/avatar/medium/015-11.png deleted file mode 100644 index cf139b4cd..000000000 Binary files a/public/media-src/avatar/medium/015-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-12.png b/public/media-src/avatar/medium/015-12.png deleted file mode 100644 index d75609461..000000000 Binary files a/public/media-src/avatar/medium/015-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-2.png b/public/media-src/avatar/medium/015-2.png deleted file mode 100755 index 3579c970a..000000000 Binary files a/public/media-src/avatar/medium/015-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-3.png b/public/media-src/avatar/medium/015-3.png deleted file mode 100755 index dc373ade3..000000000 Binary files a/public/media-src/avatar/medium/015-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-4.png b/public/media-src/avatar/medium/015-4.png deleted file mode 100755 index 568f16514..000000000 Binary files a/public/media-src/avatar/medium/015-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-5.png b/public/media-src/avatar/medium/015-5.png deleted file mode 100755 index 3650bbeb4..000000000 Binary files a/public/media-src/avatar/medium/015-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-6.png b/public/media-src/avatar/medium/015-6.png deleted file mode 100755 index a23f9730a..000000000 Binary files a/public/media-src/avatar/medium/015-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-7.png b/public/media-src/avatar/medium/015-7.png deleted file mode 100755 index a9f485c48..000000000 Binary files a/public/media-src/avatar/medium/015-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-8.png b/public/media-src/avatar/medium/015-8.png deleted file mode 100644 index 832eac68b..000000000 Binary files a/public/media-src/avatar/medium/015-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/015-9.png b/public/media-src/avatar/medium/015-9.png deleted file mode 100644 index 1747d60ba..000000000 Binary files a/public/media-src/avatar/medium/015-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-1.png b/public/media-src/avatar/medium/016-1.png deleted file mode 100755 index 808b64ca1..000000000 Binary files a/public/media-src/avatar/medium/016-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-10.png b/public/media-src/avatar/medium/016-10.png deleted file mode 100644 index 8dd3aba48..000000000 Binary files a/public/media-src/avatar/medium/016-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-11.png b/public/media-src/avatar/medium/016-11.png deleted file mode 100644 index 2786c6721..000000000 Binary files a/public/media-src/avatar/medium/016-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-12.png b/public/media-src/avatar/medium/016-12.png deleted file mode 100644 index 3d5676b08..000000000 Binary files a/public/media-src/avatar/medium/016-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-2.png b/public/media-src/avatar/medium/016-2.png deleted file mode 100755 index ae959e162..000000000 Binary files a/public/media-src/avatar/medium/016-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-3.png b/public/media-src/avatar/medium/016-3.png deleted file mode 100755 index f303b891a..000000000 Binary files a/public/media-src/avatar/medium/016-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-4.png b/public/media-src/avatar/medium/016-4.png deleted file mode 100755 index fd527f802..000000000 Binary files a/public/media-src/avatar/medium/016-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-5.png b/public/media-src/avatar/medium/016-5.png deleted file mode 100755 index 16122b1f5..000000000 Binary files a/public/media-src/avatar/medium/016-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-6.png b/public/media-src/avatar/medium/016-6.png deleted file mode 100755 index 026dead9a..000000000 Binary files a/public/media-src/avatar/medium/016-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-7.png b/public/media-src/avatar/medium/016-7.png deleted file mode 100755 index e9978093a..000000000 Binary files a/public/media-src/avatar/medium/016-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-8.png b/public/media-src/avatar/medium/016-8.png deleted file mode 100644 index dde208dd1..000000000 Binary files a/public/media-src/avatar/medium/016-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/016-9.png b/public/media-src/avatar/medium/016-9.png deleted file mode 100644 index 1656ee601..000000000 Binary files a/public/media-src/avatar/medium/016-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-1.png b/public/media-src/avatar/medium/017-1.png deleted file mode 100755 index c60c73cf3..000000000 Binary files a/public/media-src/avatar/medium/017-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-10.png b/public/media-src/avatar/medium/017-10.png deleted file mode 100644 index 1ab4b2b08..000000000 Binary files a/public/media-src/avatar/medium/017-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-11.png b/public/media-src/avatar/medium/017-11.png deleted file mode 100644 index 5d191c0d9..000000000 Binary files a/public/media-src/avatar/medium/017-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-12.png b/public/media-src/avatar/medium/017-12.png deleted file mode 100644 index ebaf96323..000000000 Binary files a/public/media-src/avatar/medium/017-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-2.png b/public/media-src/avatar/medium/017-2.png deleted file mode 100755 index 41bd31b86..000000000 Binary files a/public/media-src/avatar/medium/017-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-3.png b/public/media-src/avatar/medium/017-3.png deleted file mode 100755 index 964b8cb24..000000000 Binary files a/public/media-src/avatar/medium/017-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-4.png b/public/media-src/avatar/medium/017-4.png deleted file mode 100755 index 0ce1edf9e..000000000 Binary files a/public/media-src/avatar/medium/017-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-5.png b/public/media-src/avatar/medium/017-5.png deleted file mode 100755 index 999db3f20..000000000 Binary files a/public/media-src/avatar/medium/017-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-6.png b/public/media-src/avatar/medium/017-6.png deleted file mode 100755 index 3c1e2f5c5..000000000 Binary files a/public/media-src/avatar/medium/017-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-7.png b/public/media-src/avatar/medium/017-7.png deleted file mode 100755 index ce79826f8..000000000 Binary files a/public/media-src/avatar/medium/017-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-8.png b/public/media-src/avatar/medium/017-8.png deleted file mode 100644 index ccfbb2ed3..000000000 Binary files a/public/media-src/avatar/medium/017-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/017-9.png b/public/media-src/avatar/medium/017-9.png deleted file mode 100644 index 7fccc50d1..000000000 Binary files a/public/media-src/avatar/medium/017-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-1.png b/public/media-src/avatar/medium/018-1.png deleted file mode 100755 index d9622ee0e..000000000 Binary files a/public/media-src/avatar/medium/018-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-10.png b/public/media-src/avatar/medium/018-10.png deleted file mode 100644 index d4d6e6c27..000000000 Binary files a/public/media-src/avatar/medium/018-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-11.png b/public/media-src/avatar/medium/018-11.png deleted file mode 100644 index 1bae4d4d2..000000000 Binary files a/public/media-src/avatar/medium/018-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-12.png b/public/media-src/avatar/medium/018-12.png deleted file mode 100644 index bf3729c7a..000000000 Binary files a/public/media-src/avatar/medium/018-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-2.png b/public/media-src/avatar/medium/018-2.png deleted file mode 100755 index 79ea1ca4e..000000000 Binary files a/public/media-src/avatar/medium/018-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-3.png b/public/media-src/avatar/medium/018-3.png deleted file mode 100755 index 22aae96e8..000000000 Binary files a/public/media-src/avatar/medium/018-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-4.png b/public/media-src/avatar/medium/018-4.png deleted file mode 100755 index 2756b4316..000000000 Binary files a/public/media-src/avatar/medium/018-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-5.png b/public/media-src/avatar/medium/018-5.png deleted file mode 100755 index 4a6c0a6e2..000000000 Binary files a/public/media-src/avatar/medium/018-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-6.png b/public/media-src/avatar/medium/018-6.png deleted file mode 100755 index 0e788a2ea..000000000 Binary files a/public/media-src/avatar/medium/018-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-7.png b/public/media-src/avatar/medium/018-7.png deleted file mode 100755 index 052215f44..000000000 Binary files a/public/media-src/avatar/medium/018-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-8.png b/public/media-src/avatar/medium/018-8.png deleted file mode 100644 index 642457151..000000000 Binary files a/public/media-src/avatar/medium/018-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/018-9.png b/public/media-src/avatar/medium/018-9.png deleted file mode 100644 index 41f429d9f..000000000 Binary files a/public/media-src/avatar/medium/018-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-1.png b/public/media-src/avatar/medium/019-1.png deleted file mode 100755 index 5e7186482..000000000 Binary files a/public/media-src/avatar/medium/019-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-10.png b/public/media-src/avatar/medium/019-10.png deleted file mode 100644 index aa9b5ca89..000000000 Binary files a/public/media-src/avatar/medium/019-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-11.png b/public/media-src/avatar/medium/019-11.png deleted file mode 100644 index ebaa188a7..000000000 Binary files a/public/media-src/avatar/medium/019-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-12.png b/public/media-src/avatar/medium/019-12.png deleted file mode 100644 index 4d0c4975c..000000000 Binary files a/public/media-src/avatar/medium/019-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-2.png b/public/media-src/avatar/medium/019-2.png deleted file mode 100755 index c56b85d27..000000000 Binary files a/public/media-src/avatar/medium/019-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-3.png b/public/media-src/avatar/medium/019-3.png deleted file mode 100755 index 6dc3c1894..000000000 Binary files a/public/media-src/avatar/medium/019-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-4.png b/public/media-src/avatar/medium/019-4.png deleted file mode 100755 index d085bf7a1..000000000 Binary files a/public/media-src/avatar/medium/019-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-5.png b/public/media-src/avatar/medium/019-5.png deleted file mode 100755 index 268d30376..000000000 Binary files a/public/media-src/avatar/medium/019-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-6.png b/public/media-src/avatar/medium/019-6.png deleted file mode 100755 index 48fd620b9..000000000 Binary files a/public/media-src/avatar/medium/019-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-7.png b/public/media-src/avatar/medium/019-7.png deleted file mode 100755 index 733e731c5..000000000 Binary files a/public/media-src/avatar/medium/019-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-8.png b/public/media-src/avatar/medium/019-8.png deleted file mode 100644 index cb2566ec4..000000000 Binary files a/public/media-src/avatar/medium/019-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/019-9.png b/public/media-src/avatar/medium/019-9.png deleted file mode 100644 index d89a17909..000000000 Binary files a/public/media-src/avatar/medium/019-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-1.png b/public/media-src/avatar/medium/020-1.png deleted file mode 100755 index 85527765c..000000000 Binary files a/public/media-src/avatar/medium/020-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-10.png b/public/media-src/avatar/medium/020-10.png deleted file mode 100644 index 4dace88e8..000000000 Binary files a/public/media-src/avatar/medium/020-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-11.png b/public/media-src/avatar/medium/020-11.png deleted file mode 100644 index 4cfb504f4..000000000 Binary files a/public/media-src/avatar/medium/020-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-12.png b/public/media-src/avatar/medium/020-12.png deleted file mode 100644 index c0776cda1..000000000 Binary files a/public/media-src/avatar/medium/020-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-2.png b/public/media-src/avatar/medium/020-2.png deleted file mode 100755 index 4ad457e5b..000000000 Binary files a/public/media-src/avatar/medium/020-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-3.png b/public/media-src/avatar/medium/020-3.png deleted file mode 100755 index 1709aa1c1..000000000 Binary files a/public/media-src/avatar/medium/020-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-4.png b/public/media-src/avatar/medium/020-4.png deleted file mode 100755 index 00919e2b7..000000000 Binary files a/public/media-src/avatar/medium/020-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-5.png b/public/media-src/avatar/medium/020-5.png deleted file mode 100755 index d8d91de40..000000000 Binary files a/public/media-src/avatar/medium/020-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-6.png b/public/media-src/avatar/medium/020-6.png deleted file mode 100755 index a10646aea..000000000 Binary files a/public/media-src/avatar/medium/020-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-7.png b/public/media-src/avatar/medium/020-7.png deleted file mode 100755 index 12884dc84..000000000 Binary files a/public/media-src/avatar/medium/020-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-8.png b/public/media-src/avatar/medium/020-8.png deleted file mode 100644 index 730647162..000000000 Binary files a/public/media-src/avatar/medium/020-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/020-9.png b/public/media-src/avatar/medium/020-9.png deleted file mode 100644 index 1afc9ed18..000000000 Binary files a/public/media-src/avatar/medium/020-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-1.png b/public/media-src/avatar/medium/021-1.png deleted file mode 100755 index 1305664c5..000000000 Binary files a/public/media-src/avatar/medium/021-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-10.png b/public/media-src/avatar/medium/021-10.png deleted file mode 100644 index 303324804..000000000 Binary files a/public/media-src/avatar/medium/021-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-11.png b/public/media-src/avatar/medium/021-11.png deleted file mode 100644 index c23903c1d..000000000 Binary files a/public/media-src/avatar/medium/021-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-12.png b/public/media-src/avatar/medium/021-12.png deleted file mode 100644 index 3e031e977..000000000 Binary files a/public/media-src/avatar/medium/021-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-2.png b/public/media-src/avatar/medium/021-2.png deleted file mode 100755 index 40b8b35ac..000000000 Binary files a/public/media-src/avatar/medium/021-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-3.png b/public/media-src/avatar/medium/021-3.png deleted file mode 100755 index 82f26bd1a..000000000 Binary files a/public/media-src/avatar/medium/021-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-4.png b/public/media-src/avatar/medium/021-4.png deleted file mode 100755 index 931ef8e3a..000000000 Binary files a/public/media-src/avatar/medium/021-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-5.png b/public/media-src/avatar/medium/021-5.png deleted file mode 100755 index 746b348d7..000000000 Binary files a/public/media-src/avatar/medium/021-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-6.png b/public/media-src/avatar/medium/021-6.png deleted file mode 100755 index 2d3d7d003..000000000 Binary files a/public/media-src/avatar/medium/021-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-7.png b/public/media-src/avatar/medium/021-7.png deleted file mode 100755 index 3e02f1c66..000000000 Binary files a/public/media-src/avatar/medium/021-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-8.png b/public/media-src/avatar/medium/021-8.png deleted file mode 100644 index 62ef28cf0..000000000 Binary files a/public/media-src/avatar/medium/021-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/021-9.png b/public/media-src/avatar/medium/021-9.png deleted file mode 100644 index 77240802b..000000000 Binary files a/public/media-src/avatar/medium/021-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-1.png b/public/media-src/avatar/medium/022-1.png deleted file mode 100755 index f53685f25..000000000 Binary files a/public/media-src/avatar/medium/022-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-10.png b/public/media-src/avatar/medium/022-10.png deleted file mode 100644 index b2d2beff8..000000000 Binary files a/public/media-src/avatar/medium/022-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-11.png b/public/media-src/avatar/medium/022-11.png deleted file mode 100644 index 298b22073..000000000 Binary files a/public/media-src/avatar/medium/022-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-12.png b/public/media-src/avatar/medium/022-12.png deleted file mode 100644 index f69bb2266..000000000 Binary files a/public/media-src/avatar/medium/022-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-2.png b/public/media-src/avatar/medium/022-2.png deleted file mode 100755 index 6e43f28be..000000000 Binary files a/public/media-src/avatar/medium/022-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-3.png b/public/media-src/avatar/medium/022-3.png deleted file mode 100755 index 449f89859..000000000 Binary files a/public/media-src/avatar/medium/022-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-4.png b/public/media-src/avatar/medium/022-4.png deleted file mode 100755 index b1a4bd63c..000000000 Binary files a/public/media-src/avatar/medium/022-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-5.png b/public/media-src/avatar/medium/022-5.png deleted file mode 100755 index 15c3bba67..000000000 Binary files a/public/media-src/avatar/medium/022-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-6.png b/public/media-src/avatar/medium/022-6.png deleted file mode 100755 index d25ddf2f1..000000000 Binary files a/public/media-src/avatar/medium/022-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-7.png b/public/media-src/avatar/medium/022-7.png deleted file mode 100755 index 1f9554b2e..000000000 Binary files a/public/media-src/avatar/medium/022-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-8.png b/public/media-src/avatar/medium/022-8.png deleted file mode 100644 index 621493a5f..000000000 Binary files a/public/media-src/avatar/medium/022-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/022-9.png b/public/media-src/avatar/medium/022-9.png deleted file mode 100644 index 1505f231d..000000000 Binary files a/public/media-src/avatar/medium/022-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-1.png b/public/media-src/avatar/medium/023-1.png deleted file mode 100755 index a0d7864d4..000000000 Binary files a/public/media-src/avatar/medium/023-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-10.png b/public/media-src/avatar/medium/023-10.png deleted file mode 100644 index 5e3c2c5a7..000000000 Binary files a/public/media-src/avatar/medium/023-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-11.png b/public/media-src/avatar/medium/023-11.png deleted file mode 100644 index ad0a17106..000000000 Binary files a/public/media-src/avatar/medium/023-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-12.png b/public/media-src/avatar/medium/023-12.png deleted file mode 100644 index 5f35d9a8f..000000000 Binary files a/public/media-src/avatar/medium/023-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-2.png b/public/media-src/avatar/medium/023-2.png deleted file mode 100755 index cfe2d1fdf..000000000 Binary files a/public/media-src/avatar/medium/023-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-3.png b/public/media-src/avatar/medium/023-3.png deleted file mode 100755 index 95b689c04..000000000 Binary files a/public/media-src/avatar/medium/023-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-4.png b/public/media-src/avatar/medium/023-4.png deleted file mode 100755 index 8847bc012..000000000 Binary files a/public/media-src/avatar/medium/023-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-5.png b/public/media-src/avatar/medium/023-5.png deleted file mode 100755 index b33f8184b..000000000 Binary files a/public/media-src/avatar/medium/023-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-6.png b/public/media-src/avatar/medium/023-6.png deleted file mode 100755 index b7298a3ea..000000000 Binary files a/public/media-src/avatar/medium/023-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-7.png b/public/media-src/avatar/medium/023-7.png deleted file mode 100755 index bb087a8db..000000000 Binary files a/public/media-src/avatar/medium/023-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-8.png b/public/media-src/avatar/medium/023-8.png deleted file mode 100644 index d06a1bc0f..000000000 Binary files a/public/media-src/avatar/medium/023-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/023-9.png b/public/media-src/avatar/medium/023-9.png deleted file mode 100644 index 4f3dcb304..000000000 Binary files a/public/media-src/avatar/medium/023-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-1.png b/public/media-src/avatar/medium/024-1.png deleted file mode 100755 index 78b26996e..000000000 Binary files a/public/media-src/avatar/medium/024-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-10.png b/public/media-src/avatar/medium/024-10.png deleted file mode 100644 index 60353e6a8..000000000 Binary files a/public/media-src/avatar/medium/024-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-11.png b/public/media-src/avatar/medium/024-11.png deleted file mode 100644 index d9e201344..000000000 Binary files a/public/media-src/avatar/medium/024-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-12.png b/public/media-src/avatar/medium/024-12.png deleted file mode 100644 index 0847e9623..000000000 Binary files a/public/media-src/avatar/medium/024-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-2.png b/public/media-src/avatar/medium/024-2.png deleted file mode 100755 index ec019a1ad..000000000 Binary files a/public/media-src/avatar/medium/024-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-3.png b/public/media-src/avatar/medium/024-3.png deleted file mode 100755 index a4c16aca4..000000000 Binary files a/public/media-src/avatar/medium/024-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-4.png b/public/media-src/avatar/medium/024-4.png deleted file mode 100755 index b8c83f800..000000000 Binary files a/public/media-src/avatar/medium/024-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-5.png b/public/media-src/avatar/medium/024-5.png deleted file mode 100755 index 9c97215fc..000000000 Binary files a/public/media-src/avatar/medium/024-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-6.png b/public/media-src/avatar/medium/024-6.png deleted file mode 100755 index ad9e09f94..000000000 Binary files a/public/media-src/avatar/medium/024-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-7.png b/public/media-src/avatar/medium/024-7.png deleted file mode 100755 index f8d241ff1..000000000 Binary files a/public/media-src/avatar/medium/024-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-8.png b/public/media-src/avatar/medium/024-8.png deleted file mode 100644 index 7d45f26b8..000000000 Binary files a/public/media-src/avatar/medium/024-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/024-9.png b/public/media-src/avatar/medium/024-9.png deleted file mode 100644 index a57709362..000000000 Binary files a/public/media-src/avatar/medium/024-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-1.png b/public/media-src/avatar/medium/025-1.png deleted file mode 100755 index f7866d04e..000000000 Binary files a/public/media-src/avatar/medium/025-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-10.png b/public/media-src/avatar/medium/025-10.png deleted file mode 100644 index 635cb5db6..000000000 Binary files a/public/media-src/avatar/medium/025-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-11.png b/public/media-src/avatar/medium/025-11.png deleted file mode 100644 index 21b6ec29e..000000000 Binary files a/public/media-src/avatar/medium/025-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-12.png b/public/media-src/avatar/medium/025-12.png deleted file mode 100644 index 99d9167f5..000000000 Binary files a/public/media-src/avatar/medium/025-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-2.png b/public/media-src/avatar/medium/025-2.png deleted file mode 100755 index b10df7851..000000000 Binary files a/public/media-src/avatar/medium/025-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-3.png b/public/media-src/avatar/medium/025-3.png deleted file mode 100755 index 18f22faa0..000000000 Binary files a/public/media-src/avatar/medium/025-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-4.png b/public/media-src/avatar/medium/025-4.png deleted file mode 100755 index 40811c8c1..000000000 Binary files a/public/media-src/avatar/medium/025-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-5.png b/public/media-src/avatar/medium/025-5.png deleted file mode 100755 index c7333e20f..000000000 Binary files a/public/media-src/avatar/medium/025-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-6.png b/public/media-src/avatar/medium/025-6.png deleted file mode 100755 index eb2e8bc9a..000000000 Binary files a/public/media-src/avatar/medium/025-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-7.png b/public/media-src/avatar/medium/025-7.png deleted file mode 100755 index 94e4a88bb..000000000 Binary files a/public/media-src/avatar/medium/025-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-8.png b/public/media-src/avatar/medium/025-8.png deleted file mode 100644 index 7be1573b6..000000000 Binary files a/public/media-src/avatar/medium/025-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/025-9.png b/public/media-src/avatar/medium/025-9.png deleted file mode 100644 index a5ef9ab83..000000000 Binary files a/public/media-src/avatar/medium/025-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-1.png b/public/media-src/avatar/medium/026-1.png deleted file mode 100755 index 6bf810efe..000000000 Binary files a/public/media-src/avatar/medium/026-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-10.png b/public/media-src/avatar/medium/026-10.png deleted file mode 100644 index eb6e5170a..000000000 Binary files a/public/media-src/avatar/medium/026-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-11.png b/public/media-src/avatar/medium/026-11.png deleted file mode 100644 index 6257328f7..000000000 Binary files a/public/media-src/avatar/medium/026-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-12.png b/public/media-src/avatar/medium/026-12.png deleted file mode 100644 index cc76cc310..000000000 Binary files a/public/media-src/avatar/medium/026-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-2.png b/public/media-src/avatar/medium/026-2.png deleted file mode 100755 index f277b4932..000000000 Binary files a/public/media-src/avatar/medium/026-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-3.png b/public/media-src/avatar/medium/026-3.png deleted file mode 100755 index 0a8cbbf79..000000000 Binary files a/public/media-src/avatar/medium/026-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-4.png b/public/media-src/avatar/medium/026-4.png deleted file mode 100755 index f2df6f144..000000000 Binary files a/public/media-src/avatar/medium/026-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-5.png b/public/media-src/avatar/medium/026-5.png deleted file mode 100755 index 5830da5ca..000000000 Binary files a/public/media-src/avatar/medium/026-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-6.png b/public/media-src/avatar/medium/026-6.png deleted file mode 100755 index eb6897652..000000000 Binary files a/public/media-src/avatar/medium/026-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-7.png b/public/media-src/avatar/medium/026-7.png deleted file mode 100755 index 075326369..000000000 Binary files a/public/media-src/avatar/medium/026-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-8.png b/public/media-src/avatar/medium/026-8.png deleted file mode 100644 index ce9bbc5ec..000000000 Binary files a/public/media-src/avatar/medium/026-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/026-9.png b/public/media-src/avatar/medium/026-9.png deleted file mode 100644 index 695f86e53..000000000 Binary files a/public/media-src/avatar/medium/026-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-1.png b/public/media-src/avatar/medium/027-1.png deleted file mode 100755 index 8a9871cb3..000000000 Binary files a/public/media-src/avatar/medium/027-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-10.png b/public/media-src/avatar/medium/027-10.png deleted file mode 100644 index f2b1cf003..000000000 Binary files a/public/media-src/avatar/medium/027-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-11.png b/public/media-src/avatar/medium/027-11.png deleted file mode 100644 index cc8604bf6..000000000 Binary files a/public/media-src/avatar/medium/027-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-12.png b/public/media-src/avatar/medium/027-12.png deleted file mode 100644 index 3f90a8993..000000000 Binary files a/public/media-src/avatar/medium/027-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-2.png b/public/media-src/avatar/medium/027-2.png deleted file mode 100755 index 4fd992c9e..000000000 Binary files a/public/media-src/avatar/medium/027-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-3.png b/public/media-src/avatar/medium/027-3.png deleted file mode 100755 index 1a04c4efb..000000000 Binary files a/public/media-src/avatar/medium/027-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-4.png b/public/media-src/avatar/medium/027-4.png deleted file mode 100755 index 88b79fe7e..000000000 Binary files a/public/media-src/avatar/medium/027-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-5.png b/public/media-src/avatar/medium/027-5.png deleted file mode 100755 index 1b092cd4c..000000000 Binary files a/public/media-src/avatar/medium/027-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-6.png b/public/media-src/avatar/medium/027-6.png deleted file mode 100755 index 476924e2f..000000000 Binary files a/public/media-src/avatar/medium/027-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-7.png b/public/media-src/avatar/medium/027-7.png deleted file mode 100755 index 653478935..000000000 Binary files a/public/media-src/avatar/medium/027-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-8.png b/public/media-src/avatar/medium/027-8.png deleted file mode 100644 index 2b4f08ded..000000000 Binary files a/public/media-src/avatar/medium/027-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/027-9.png b/public/media-src/avatar/medium/027-9.png deleted file mode 100644 index 751fbf93c..000000000 Binary files a/public/media-src/avatar/medium/027-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-1.png b/public/media-src/avatar/medium/028-1.png deleted file mode 100755 index 6bc885e26..000000000 Binary files a/public/media-src/avatar/medium/028-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-10.png b/public/media-src/avatar/medium/028-10.png deleted file mode 100644 index b87af815d..000000000 Binary files a/public/media-src/avatar/medium/028-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-11.png b/public/media-src/avatar/medium/028-11.png deleted file mode 100644 index 6998ceecf..000000000 Binary files a/public/media-src/avatar/medium/028-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-12.png b/public/media-src/avatar/medium/028-12.png deleted file mode 100644 index 450cb5b7a..000000000 Binary files a/public/media-src/avatar/medium/028-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-2.png b/public/media-src/avatar/medium/028-2.png deleted file mode 100755 index 07b088f98..000000000 Binary files a/public/media-src/avatar/medium/028-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-3.png b/public/media-src/avatar/medium/028-3.png deleted file mode 100755 index d1ca5cd97..000000000 Binary files a/public/media-src/avatar/medium/028-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-4.png b/public/media-src/avatar/medium/028-4.png deleted file mode 100755 index f8d708933..000000000 Binary files a/public/media-src/avatar/medium/028-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-5.png b/public/media-src/avatar/medium/028-5.png deleted file mode 100755 index e5f4a5d13..000000000 Binary files a/public/media-src/avatar/medium/028-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-6.png b/public/media-src/avatar/medium/028-6.png deleted file mode 100755 index 7ac7c8c66..000000000 Binary files a/public/media-src/avatar/medium/028-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-7.png b/public/media-src/avatar/medium/028-7.png deleted file mode 100755 index f8794f3b2..000000000 Binary files a/public/media-src/avatar/medium/028-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-8.png b/public/media-src/avatar/medium/028-8.png deleted file mode 100644 index e222721db..000000000 Binary files a/public/media-src/avatar/medium/028-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/028-9.png b/public/media-src/avatar/medium/028-9.png deleted file mode 100644 index c401c55be..000000000 Binary files a/public/media-src/avatar/medium/028-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-1.png b/public/media-src/avatar/medium/029-1.png deleted file mode 100755 index ed1d0a3b4..000000000 Binary files a/public/media-src/avatar/medium/029-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-10.png b/public/media-src/avatar/medium/029-10.png deleted file mode 100644 index efeb81e31..000000000 Binary files a/public/media-src/avatar/medium/029-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-11.png b/public/media-src/avatar/medium/029-11.png deleted file mode 100644 index 5ea125249..000000000 Binary files a/public/media-src/avatar/medium/029-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-12.png b/public/media-src/avatar/medium/029-12.png deleted file mode 100644 index ff02762c6..000000000 Binary files a/public/media-src/avatar/medium/029-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-2.png b/public/media-src/avatar/medium/029-2.png deleted file mode 100755 index 3a503a85c..000000000 Binary files a/public/media-src/avatar/medium/029-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-3.png b/public/media-src/avatar/medium/029-3.png deleted file mode 100755 index 0bf0e1222..000000000 Binary files a/public/media-src/avatar/medium/029-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-4.png b/public/media-src/avatar/medium/029-4.png deleted file mode 100755 index 76f4eca71..000000000 Binary files a/public/media-src/avatar/medium/029-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-5.png b/public/media-src/avatar/medium/029-5.png deleted file mode 100755 index 7d275c47d..000000000 Binary files a/public/media-src/avatar/medium/029-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-6.png b/public/media-src/avatar/medium/029-6.png deleted file mode 100755 index 2bb20ea61..000000000 Binary files a/public/media-src/avatar/medium/029-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-7.png b/public/media-src/avatar/medium/029-7.png deleted file mode 100755 index 8dfa16cdc..000000000 Binary files a/public/media-src/avatar/medium/029-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-8.png b/public/media-src/avatar/medium/029-8.png deleted file mode 100644 index 874fdd5ac..000000000 Binary files a/public/media-src/avatar/medium/029-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/029-9.png b/public/media-src/avatar/medium/029-9.png deleted file mode 100644 index 98fb366c3..000000000 Binary files a/public/media-src/avatar/medium/029-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-1.png b/public/media-src/avatar/medium/030-1.png deleted file mode 100755 index 44847f07a..000000000 Binary files a/public/media-src/avatar/medium/030-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-10.png b/public/media-src/avatar/medium/030-10.png deleted file mode 100644 index e9e77a786..000000000 Binary files a/public/media-src/avatar/medium/030-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-11.png b/public/media-src/avatar/medium/030-11.png deleted file mode 100644 index 0cde20ab8..000000000 Binary files a/public/media-src/avatar/medium/030-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-12.png b/public/media-src/avatar/medium/030-12.png deleted file mode 100644 index acdfa3a33..000000000 Binary files a/public/media-src/avatar/medium/030-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-2.png b/public/media-src/avatar/medium/030-2.png deleted file mode 100755 index 53a6801ef..000000000 Binary files a/public/media-src/avatar/medium/030-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-3.png b/public/media-src/avatar/medium/030-3.png deleted file mode 100755 index 37ab44c8b..000000000 Binary files a/public/media-src/avatar/medium/030-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-4.png b/public/media-src/avatar/medium/030-4.png deleted file mode 100755 index 403d55b3f..000000000 Binary files a/public/media-src/avatar/medium/030-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-5.png b/public/media-src/avatar/medium/030-5.png deleted file mode 100755 index c9266a98f..000000000 Binary files a/public/media-src/avatar/medium/030-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-6.png b/public/media-src/avatar/medium/030-6.png deleted file mode 100755 index 9014ca3ba..000000000 Binary files a/public/media-src/avatar/medium/030-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-7.png b/public/media-src/avatar/medium/030-7.png deleted file mode 100755 index 8f3f827dd..000000000 Binary files a/public/media-src/avatar/medium/030-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-8.png b/public/media-src/avatar/medium/030-8.png deleted file mode 100644 index fa29aa5f3..000000000 Binary files a/public/media-src/avatar/medium/030-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/030-9.png b/public/media-src/avatar/medium/030-9.png deleted file mode 100644 index 08b31086a..000000000 Binary files a/public/media-src/avatar/medium/030-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-1.png b/public/media-src/avatar/medium/031-1.png deleted file mode 100755 index 403a09a51..000000000 Binary files a/public/media-src/avatar/medium/031-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-10.png b/public/media-src/avatar/medium/031-10.png deleted file mode 100644 index 4cccf86e1..000000000 Binary files a/public/media-src/avatar/medium/031-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-11.png b/public/media-src/avatar/medium/031-11.png deleted file mode 100644 index fabf0e530..000000000 Binary files a/public/media-src/avatar/medium/031-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-12.png b/public/media-src/avatar/medium/031-12.png deleted file mode 100644 index 47b041594..000000000 Binary files a/public/media-src/avatar/medium/031-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-2.png b/public/media-src/avatar/medium/031-2.png deleted file mode 100755 index d89611e98..000000000 Binary files a/public/media-src/avatar/medium/031-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-3.png b/public/media-src/avatar/medium/031-3.png deleted file mode 100755 index 62e8bf2da..000000000 Binary files a/public/media-src/avatar/medium/031-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-4.png b/public/media-src/avatar/medium/031-4.png deleted file mode 100755 index 6974be4f1..000000000 Binary files a/public/media-src/avatar/medium/031-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-5.png b/public/media-src/avatar/medium/031-5.png deleted file mode 100755 index 3b9ba52f2..000000000 Binary files a/public/media-src/avatar/medium/031-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-6.png b/public/media-src/avatar/medium/031-6.png deleted file mode 100755 index 7167cb3e2..000000000 Binary files a/public/media-src/avatar/medium/031-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-7.png b/public/media-src/avatar/medium/031-7.png deleted file mode 100755 index 0bc52f24a..000000000 Binary files a/public/media-src/avatar/medium/031-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-8.png b/public/media-src/avatar/medium/031-8.png deleted file mode 100644 index fb00e1b81..000000000 Binary files a/public/media-src/avatar/medium/031-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/031-9.png b/public/media-src/avatar/medium/031-9.png deleted file mode 100644 index f14849d63..000000000 Binary files a/public/media-src/avatar/medium/031-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-1.png b/public/media-src/avatar/medium/032-1.png deleted file mode 100755 index 4560ba679..000000000 Binary files a/public/media-src/avatar/medium/032-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-10.png b/public/media-src/avatar/medium/032-10.png deleted file mode 100644 index 9acb9e666..000000000 Binary files a/public/media-src/avatar/medium/032-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-11.png b/public/media-src/avatar/medium/032-11.png deleted file mode 100644 index 21caa8982..000000000 Binary files a/public/media-src/avatar/medium/032-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-12.png b/public/media-src/avatar/medium/032-12.png deleted file mode 100644 index 14b664eda..000000000 Binary files a/public/media-src/avatar/medium/032-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-2.png b/public/media-src/avatar/medium/032-2.png deleted file mode 100755 index 11ba20311..000000000 Binary files a/public/media-src/avatar/medium/032-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-3.png b/public/media-src/avatar/medium/032-3.png deleted file mode 100755 index c918eee62..000000000 Binary files a/public/media-src/avatar/medium/032-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-4.png b/public/media-src/avatar/medium/032-4.png deleted file mode 100755 index 8843e1b5e..000000000 Binary files a/public/media-src/avatar/medium/032-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-5.png b/public/media-src/avatar/medium/032-5.png deleted file mode 100755 index 3f5fac924..000000000 Binary files a/public/media-src/avatar/medium/032-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-6.png b/public/media-src/avatar/medium/032-6.png deleted file mode 100755 index 552c0c840..000000000 Binary files a/public/media-src/avatar/medium/032-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-7.png b/public/media-src/avatar/medium/032-7.png deleted file mode 100755 index b95574579..000000000 Binary files a/public/media-src/avatar/medium/032-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-8.png b/public/media-src/avatar/medium/032-8.png deleted file mode 100644 index b552f3982..000000000 Binary files a/public/media-src/avatar/medium/032-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/032-9.png b/public/media-src/avatar/medium/032-9.png deleted file mode 100644 index f9a6e607f..000000000 Binary files a/public/media-src/avatar/medium/032-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-1.png b/public/media-src/avatar/medium/033-1.png deleted file mode 100755 index 9709c47fb..000000000 Binary files a/public/media-src/avatar/medium/033-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-10.png b/public/media-src/avatar/medium/033-10.png deleted file mode 100644 index 58ea90f3b..000000000 Binary files a/public/media-src/avatar/medium/033-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-11.png b/public/media-src/avatar/medium/033-11.png deleted file mode 100644 index f1c347932..000000000 Binary files a/public/media-src/avatar/medium/033-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-12.png b/public/media-src/avatar/medium/033-12.png deleted file mode 100644 index bb33489a6..000000000 Binary files a/public/media-src/avatar/medium/033-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-2.png b/public/media-src/avatar/medium/033-2.png deleted file mode 100755 index e56d34baf..000000000 Binary files a/public/media-src/avatar/medium/033-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-3.png b/public/media-src/avatar/medium/033-3.png deleted file mode 100755 index aca599bbc..000000000 Binary files a/public/media-src/avatar/medium/033-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-4.png b/public/media-src/avatar/medium/033-4.png deleted file mode 100755 index adb1125b2..000000000 Binary files a/public/media-src/avatar/medium/033-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-5.png b/public/media-src/avatar/medium/033-5.png deleted file mode 100755 index 51715cbf8..000000000 Binary files a/public/media-src/avatar/medium/033-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-6.png b/public/media-src/avatar/medium/033-6.png deleted file mode 100755 index afd00100f..000000000 Binary files a/public/media-src/avatar/medium/033-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-7.png b/public/media-src/avatar/medium/033-7.png deleted file mode 100755 index 661cbff9e..000000000 Binary files a/public/media-src/avatar/medium/033-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-8.png b/public/media-src/avatar/medium/033-8.png deleted file mode 100644 index d0aa3feb6..000000000 Binary files a/public/media-src/avatar/medium/033-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/033-9.png b/public/media-src/avatar/medium/033-9.png deleted file mode 100644 index 9ef3185f9..000000000 Binary files a/public/media-src/avatar/medium/033-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-1.png b/public/media-src/avatar/medium/034-1.png deleted file mode 100755 index 71b5508e7..000000000 Binary files a/public/media-src/avatar/medium/034-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-10.png b/public/media-src/avatar/medium/034-10.png deleted file mode 100644 index b89d7cd30..000000000 Binary files a/public/media-src/avatar/medium/034-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-11.png b/public/media-src/avatar/medium/034-11.png deleted file mode 100644 index 3ab573a00..000000000 Binary files a/public/media-src/avatar/medium/034-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-12.png b/public/media-src/avatar/medium/034-12.png deleted file mode 100644 index cc82e0e96..000000000 Binary files a/public/media-src/avatar/medium/034-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-2.png b/public/media-src/avatar/medium/034-2.png deleted file mode 100755 index 58fca6210..000000000 Binary files a/public/media-src/avatar/medium/034-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-3.png b/public/media-src/avatar/medium/034-3.png deleted file mode 100755 index 99875e363..000000000 Binary files a/public/media-src/avatar/medium/034-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-4.png b/public/media-src/avatar/medium/034-4.png deleted file mode 100755 index 148c3787f..000000000 Binary files a/public/media-src/avatar/medium/034-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-5.png b/public/media-src/avatar/medium/034-5.png deleted file mode 100755 index a3bb377c1..000000000 Binary files a/public/media-src/avatar/medium/034-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-6.png b/public/media-src/avatar/medium/034-6.png deleted file mode 100755 index 1ab6c6e0f..000000000 Binary files a/public/media-src/avatar/medium/034-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-7.png b/public/media-src/avatar/medium/034-7.png deleted file mode 100755 index 4a9fedb2f..000000000 Binary files a/public/media-src/avatar/medium/034-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-8.png b/public/media-src/avatar/medium/034-8.png deleted file mode 100644 index fe799a5a3..000000000 Binary files a/public/media-src/avatar/medium/034-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/034-9.png b/public/media-src/avatar/medium/034-9.png deleted file mode 100644 index 4bbb156d0..000000000 Binary files a/public/media-src/avatar/medium/034-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-1.png b/public/media-src/avatar/medium/035-1.png deleted file mode 100755 index 88f9e8fcb..000000000 Binary files a/public/media-src/avatar/medium/035-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-10.png b/public/media-src/avatar/medium/035-10.png deleted file mode 100644 index 2380f3146..000000000 Binary files a/public/media-src/avatar/medium/035-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-11.png b/public/media-src/avatar/medium/035-11.png deleted file mode 100644 index 5ceb4a5de..000000000 Binary files a/public/media-src/avatar/medium/035-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-12.png b/public/media-src/avatar/medium/035-12.png deleted file mode 100644 index f406fc24f..000000000 Binary files a/public/media-src/avatar/medium/035-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-2.png b/public/media-src/avatar/medium/035-2.png deleted file mode 100755 index 7f865a181..000000000 Binary files a/public/media-src/avatar/medium/035-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-3.png b/public/media-src/avatar/medium/035-3.png deleted file mode 100755 index 8f606f52c..000000000 Binary files a/public/media-src/avatar/medium/035-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-4.png b/public/media-src/avatar/medium/035-4.png deleted file mode 100755 index b2e8912cc..000000000 Binary files a/public/media-src/avatar/medium/035-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-5.png b/public/media-src/avatar/medium/035-5.png deleted file mode 100755 index 3d4d161ec..000000000 Binary files a/public/media-src/avatar/medium/035-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-6.png b/public/media-src/avatar/medium/035-6.png deleted file mode 100755 index 256f723a3..000000000 Binary files a/public/media-src/avatar/medium/035-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-7.png b/public/media-src/avatar/medium/035-7.png deleted file mode 100755 index d7378fddd..000000000 Binary files a/public/media-src/avatar/medium/035-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-8.png b/public/media-src/avatar/medium/035-8.png deleted file mode 100644 index cda05f172..000000000 Binary files a/public/media-src/avatar/medium/035-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/035-9.png b/public/media-src/avatar/medium/035-9.png deleted file mode 100644 index ad7ac121b..000000000 Binary files a/public/media-src/avatar/medium/035-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-1.png b/public/media-src/avatar/medium/036-1.png deleted file mode 100755 index ecc3d721f..000000000 Binary files a/public/media-src/avatar/medium/036-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-10.png b/public/media-src/avatar/medium/036-10.png deleted file mode 100644 index a4e3913d4..000000000 Binary files a/public/media-src/avatar/medium/036-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-11.png b/public/media-src/avatar/medium/036-11.png deleted file mode 100644 index c55180929..000000000 Binary files a/public/media-src/avatar/medium/036-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-12.png b/public/media-src/avatar/medium/036-12.png deleted file mode 100644 index e4a548655..000000000 Binary files a/public/media-src/avatar/medium/036-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-2.png b/public/media-src/avatar/medium/036-2.png deleted file mode 100755 index ca2d1ea32..000000000 Binary files a/public/media-src/avatar/medium/036-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-3.png b/public/media-src/avatar/medium/036-3.png deleted file mode 100755 index f6739c2ad..000000000 Binary files a/public/media-src/avatar/medium/036-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-4.png b/public/media-src/avatar/medium/036-4.png deleted file mode 100755 index 893e4dfc0..000000000 Binary files a/public/media-src/avatar/medium/036-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-5.png b/public/media-src/avatar/medium/036-5.png deleted file mode 100755 index eb80fbdd2..000000000 Binary files a/public/media-src/avatar/medium/036-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-6.png b/public/media-src/avatar/medium/036-6.png deleted file mode 100755 index 37c473c4c..000000000 Binary files a/public/media-src/avatar/medium/036-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-7.png b/public/media-src/avatar/medium/036-7.png deleted file mode 100755 index 09b76097a..000000000 Binary files a/public/media-src/avatar/medium/036-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-8.png b/public/media-src/avatar/medium/036-8.png deleted file mode 100644 index 9a320b862..000000000 Binary files a/public/media-src/avatar/medium/036-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/036-9.png b/public/media-src/avatar/medium/036-9.png deleted file mode 100644 index f7b7a35a8..000000000 Binary files a/public/media-src/avatar/medium/036-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-1.png b/public/media-src/avatar/medium/037-1.png deleted file mode 100755 index 0ffda5427..000000000 Binary files a/public/media-src/avatar/medium/037-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-10.png b/public/media-src/avatar/medium/037-10.png deleted file mode 100644 index ea15245f7..000000000 Binary files a/public/media-src/avatar/medium/037-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-11.png b/public/media-src/avatar/medium/037-11.png deleted file mode 100644 index b9e53e973..000000000 Binary files a/public/media-src/avatar/medium/037-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-12.png b/public/media-src/avatar/medium/037-12.png deleted file mode 100644 index a63300167..000000000 Binary files a/public/media-src/avatar/medium/037-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-2.png b/public/media-src/avatar/medium/037-2.png deleted file mode 100755 index 096ed3aad..000000000 Binary files a/public/media-src/avatar/medium/037-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-3.png b/public/media-src/avatar/medium/037-3.png deleted file mode 100755 index 2eee7316a..000000000 Binary files a/public/media-src/avatar/medium/037-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-4.png b/public/media-src/avatar/medium/037-4.png deleted file mode 100755 index c0388b44e..000000000 Binary files a/public/media-src/avatar/medium/037-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-5.png b/public/media-src/avatar/medium/037-5.png deleted file mode 100755 index 80bcd6a3e..000000000 Binary files a/public/media-src/avatar/medium/037-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-6.png b/public/media-src/avatar/medium/037-6.png deleted file mode 100755 index 8060d3e91..000000000 Binary files a/public/media-src/avatar/medium/037-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-7.png b/public/media-src/avatar/medium/037-7.png deleted file mode 100755 index 92eea8f80..000000000 Binary files a/public/media-src/avatar/medium/037-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-8.png b/public/media-src/avatar/medium/037-8.png deleted file mode 100644 index 48f473bf7..000000000 Binary files a/public/media-src/avatar/medium/037-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/037-9.png b/public/media-src/avatar/medium/037-9.png deleted file mode 100644 index 5ebe2f29b..000000000 Binary files a/public/media-src/avatar/medium/037-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-1.png b/public/media-src/avatar/medium/038-1.png deleted file mode 100755 index ba741890a..000000000 Binary files a/public/media-src/avatar/medium/038-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-10.png b/public/media-src/avatar/medium/038-10.png deleted file mode 100644 index 55c9eb2b5..000000000 Binary files a/public/media-src/avatar/medium/038-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-11.png b/public/media-src/avatar/medium/038-11.png deleted file mode 100644 index 48974c0cf..000000000 Binary files a/public/media-src/avatar/medium/038-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-12.png b/public/media-src/avatar/medium/038-12.png deleted file mode 100644 index 6bad03d52..000000000 Binary files a/public/media-src/avatar/medium/038-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-2.png b/public/media-src/avatar/medium/038-2.png deleted file mode 100755 index c804c59b2..000000000 Binary files a/public/media-src/avatar/medium/038-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-3.png b/public/media-src/avatar/medium/038-3.png deleted file mode 100755 index bda69e781..000000000 Binary files a/public/media-src/avatar/medium/038-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-4.png b/public/media-src/avatar/medium/038-4.png deleted file mode 100755 index 95562f7ee..000000000 Binary files a/public/media-src/avatar/medium/038-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-5.png b/public/media-src/avatar/medium/038-5.png deleted file mode 100755 index bfa8c8ae5..000000000 Binary files a/public/media-src/avatar/medium/038-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-6.png b/public/media-src/avatar/medium/038-6.png deleted file mode 100755 index f2e1e5dd0..000000000 Binary files a/public/media-src/avatar/medium/038-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-7.png b/public/media-src/avatar/medium/038-7.png deleted file mode 100755 index 35cefb732..000000000 Binary files a/public/media-src/avatar/medium/038-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-8.png b/public/media-src/avatar/medium/038-8.png deleted file mode 100644 index d8c6e5bfe..000000000 Binary files a/public/media-src/avatar/medium/038-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/038-9.png b/public/media-src/avatar/medium/038-9.png deleted file mode 100644 index 631c0b56b..000000000 Binary files a/public/media-src/avatar/medium/038-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-1.png b/public/media-src/avatar/medium/039-1.png deleted file mode 100755 index 4ed6a02b9..000000000 Binary files a/public/media-src/avatar/medium/039-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-10.png b/public/media-src/avatar/medium/039-10.png deleted file mode 100644 index b3d633acd..000000000 Binary files a/public/media-src/avatar/medium/039-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-11.png b/public/media-src/avatar/medium/039-11.png deleted file mode 100644 index 091d6b7a7..000000000 Binary files a/public/media-src/avatar/medium/039-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-12.png b/public/media-src/avatar/medium/039-12.png deleted file mode 100644 index 9c4850ec6..000000000 Binary files a/public/media-src/avatar/medium/039-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-2.png b/public/media-src/avatar/medium/039-2.png deleted file mode 100755 index 10cd62862..000000000 Binary files a/public/media-src/avatar/medium/039-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-3.png b/public/media-src/avatar/medium/039-3.png deleted file mode 100755 index 4f2ebe1a3..000000000 Binary files a/public/media-src/avatar/medium/039-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-4.png b/public/media-src/avatar/medium/039-4.png deleted file mode 100755 index 20f262783..000000000 Binary files a/public/media-src/avatar/medium/039-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-5.png b/public/media-src/avatar/medium/039-5.png deleted file mode 100755 index 374cea993..000000000 Binary files a/public/media-src/avatar/medium/039-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-6.png b/public/media-src/avatar/medium/039-6.png deleted file mode 100755 index fa20b425b..000000000 Binary files a/public/media-src/avatar/medium/039-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-7.png b/public/media-src/avatar/medium/039-7.png deleted file mode 100755 index 95a39fc0d..000000000 Binary files a/public/media-src/avatar/medium/039-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-8.png b/public/media-src/avatar/medium/039-8.png deleted file mode 100644 index d9e6bde23..000000000 Binary files a/public/media-src/avatar/medium/039-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/039-9.png b/public/media-src/avatar/medium/039-9.png deleted file mode 100644 index 17d46a3e6..000000000 Binary files a/public/media-src/avatar/medium/039-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-1.png b/public/media-src/avatar/medium/040-1.png deleted file mode 100755 index eadd2fb7c..000000000 Binary files a/public/media-src/avatar/medium/040-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-10.png b/public/media-src/avatar/medium/040-10.png deleted file mode 100644 index a112a082c..000000000 Binary files a/public/media-src/avatar/medium/040-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-11.png b/public/media-src/avatar/medium/040-11.png deleted file mode 100644 index 1e50a2262..000000000 Binary files a/public/media-src/avatar/medium/040-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-12.png b/public/media-src/avatar/medium/040-12.png deleted file mode 100644 index e87bed012..000000000 Binary files a/public/media-src/avatar/medium/040-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-2.png b/public/media-src/avatar/medium/040-2.png deleted file mode 100755 index 579464117..000000000 Binary files a/public/media-src/avatar/medium/040-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-3.png b/public/media-src/avatar/medium/040-3.png deleted file mode 100755 index 00c595a92..000000000 Binary files a/public/media-src/avatar/medium/040-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-4.png b/public/media-src/avatar/medium/040-4.png deleted file mode 100755 index 8749cdec8..000000000 Binary files a/public/media-src/avatar/medium/040-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-5.png b/public/media-src/avatar/medium/040-5.png deleted file mode 100755 index b8336f340..000000000 Binary files a/public/media-src/avatar/medium/040-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-6.png b/public/media-src/avatar/medium/040-6.png deleted file mode 100755 index ea488dbe7..000000000 Binary files a/public/media-src/avatar/medium/040-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-7.png b/public/media-src/avatar/medium/040-7.png deleted file mode 100755 index 3623ec0c0..000000000 Binary files a/public/media-src/avatar/medium/040-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-8.png b/public/media-src/avatar/medium/040-8.png deleted file mode 100644 index a840f73ec..000000000 Binary files a/public/media-src/avatar/medium/040-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/040-9.png b/public/media-src/avatar/medium/040-9.png deleted file mode 100644 index 2013430ea..000000000 Binary files a/public/media-src/avatar/medium/040-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-1.png b/public/media-src/avatar/medium/041-1.png deleted file mode 100755 index 2684ebe2d..000000000 Binary files a/public/media-src/avatar/medium/041-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-10.png b/public/media-src/avatar/medium/041-10.png deleted file mode 100644 index 215d27822..000000000 Binary files a/public/media-src/avatar/medium/041-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-11.png b/public/media-src/avatar/medium/041-11.png deleted file mode 100644 index 4cd981530..000000000 Binary files a/public/media-src/avatar/medium/041-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-12.png b/public/media-src/avatar/medium/041-12.png deleted file mode 100644 index e2263e4f2..000000000 Binary files a/public/media-src/avatar/medium/041-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-2.png b/public/media-src/avatar/medium/041-2.png deleted file mode 100755 index 4664e1d8a..000000000 Binary files a/public/media-src/avatar/medium/041-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-3.png b/public/media-src/avatar/medium/041-3.png deleted file mode 100755 index 549a0861b..000000000 Binary files a/public/media-src/avatar/medium/041-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-4.png b/public/media-src/avatar/medium/041-4.png deleted file mode 100755 index 5e38f1e00..000000000 Binary files a/public/media-src/avatar/medium/041-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-5.png b/public/media-src/avatar/medium/041-5.png deleted file mode 100755 index b233d5a4f..000000000 Binary files a/public/media-src/avatar/medium/041-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-6.png b/public/media-src/avatar/medium/041-6.png deleted file mode 100755 index 80b19eca4..000000000 Binary files a/public/media-src/avatar/medium/041-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-7.png b/public/media-src/avatar/medium/041-7.png deleted file mode 100755 index 2c9beb9ca..000000000 Binary files a/public/media-src/avatar/medium/041-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-8.png b/public/media-src/avatar/medium/041-8.png deleted file mode 100644 index 213b1260b..000000000 Binary files a/public/media-src/avatar/medium/041-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/041-9.png b/public/media-src/avatar/medium/041-9.png deleted file mode 100644 index 65c653987..000000000 Binary files a/public/media-src/avatar/medium/041-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-1.png b/public/media-src/avatar/medium/042-1.png deleted file mode 100755 index f50474d74..000000000 Binary files a/public/media-src/avatar/medium/042-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-10.png b/public/media-src/avatar/medium/042-10.png deleted file mode 100644 index 6b426c84b..000000000 Binary files a/public/media-src/avatar/medium/042-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-11.png b/public/media-src/avatar/medium/042-11.png deleted file mode 100644 index b0dfcf145..000000000 Binary files a/public/media-src/avatar/medium/042-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-12.png b/public/media-src/avatar/medium/042-12.png deleted file mode 100644 index 63d269c65..000000000 Binary files a/public/media-src/avatar/medium/042-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-2.png b/public/media-src/avatar/medium/042-2.png deleted file mode 100755 index c20b5940d..000000000 Binary files a/public/media-src/avatar/medium/042-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-3.png b/public/media-src/avatar/medium/042-3.png deleted file mode 100755 index 7385b8850..000000000 Binary files a/public/media-src/avatar/medium/042-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-4.png b/public/media-src/avatar/medium/042-4.png deleted file mode 100755 index ebb1f4483..000000000 Binary files a/public/media-src/avatar/medium/042-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-5.png b/public/media-src/avatar/medium/042-5.png deleted file mode 100755 index 1c916703b..000000000 Binary files a/public/media-src/avatar/medium/042-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-6.png b/public/media-src/avatar/medium/042-6.png deleted file mode 100755 index 7fe1a74a5..000000000 Binary files a/public/media-src/avatar/medium/042-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-7.png b/public/media-src/avatar/medium/042-7.png deleted file mode 100755 index 3ba772435..000000000 Binary files a/public/media-src/avatar/medium/042-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-8.png b/public/media-src/avatar/medium/042-8.png deleted file mode 100644 index d8a4759ea..000000000 Binary files a/public/media-src/avatar/medium/042-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/042-9.png b/public/media-src/avatar/medium/042-9.png deleted file mode 100644 index 564187939..000000000 Binary files a/public/media-src/avatar/medium/042-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-1.png b/public/media-src/avatar/medium/043-1.png deleted file mode 100755 index c656f7c52..000000000 Binary files a/public/media-src/avatar/medium/043-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-10.png b/public/media-src/avatar/medium/043-10.png deleted file mode 100644 index 3a338f7ca..000000000 Binary files a/public/media-src/avatar/medium/043-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-11.png b/public/media-src/avatar/medium/043-11.png deleted file mode 100644 index 53c28ea57..000000000 Binary files a/public/media-src/avatar/medium/043-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-12.png b/public/media-src/avatar/medium/043-12.png deleted file mode 100644 index 79b9cc68c..000000000 Binary files a/public/media-src/avatar/medium/043-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-2.png b/public/media-src/avatar/medium/043-2.png deleted file mode 100755 index dc863a83d..000000000 Binary files a/public/media-src/avatar/medium/043-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-3.png b/public/media-src/avatar/medium/043-3.png deleted file mode 100755 index 99df860ae..000000000 Binary files a/public/media-src/avatar/medium/043-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-4.png b/public/media-src/avatar/medium/043-4.png deleted file mode 100755 index fc8b7ce0e..000000000 Binary files a/public/media-src/avatar/medium/043-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-5.png b/public/media-src/avatar/medium/043-5.png deleted file mode 100755 index d8216acee..000000000 Binary files a/public/media-src/avatar/medium/043-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-6.png b/public/media-src/avatar/medium/043-6.png deleted file mode 100755 index 9c3e2a1c0..000000000 Binary files a/public/media-src/avatar/medium/043-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-7.png b/public/media-src/avatar/medium/043-7.png deleted file mode 100755 index 055fa2049..000000000 Binary files a/public/media-src/avatar/medium/043-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-8.png b/public/media-src/avatar/medium/043-8.png deleted file mode 100644 index 41b62cead..000000000 Binary files a/public/media-src/avatar/medium/043-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/043-9.png b/public/media-src/avatar/medium/043-9.png deleted file mode 100644 index a914c4057..000000000 Binary files a/public/media-src/avatar/medium/043-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-1.png b/public/media-src/avatar/medium/044-1.png deleted file mode 100755 index 47a83eb31..000000000 Binary files a/public/media-src/avatar/medium/044-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-10.png b/public/media-src/avatar/medium/044-10.png deleted file mode 100644 index a77d8dc9a..000000000 Binary files a/public/media-src/avatar/medium/044-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-11.png b/public/media-src/avatar/medium/044-11.png deleted file mode 100644 index fd1b7172a..000000000 Binary files a/public/media-src/avatar/medium/044-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-12.png b/public/media-src/avatar/medium/044-12.png deleted file mode 100644 index 73874ed56..000000000 Binary files a/public/media-src/avatar/medium/044-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-2.png b/public/media-src/avatar/medium/044-2.png deleted file mode 100755 index 29cdbb269..000000000 Binary files a/public/media-src/avatar/medium/044-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-3.png b/public/media-src/avatar/medium/044-3.png deleted file mode 100755 index 06d90e7c3..000000000 Binary files a/public/media-src/avatar/medium/044-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-4.png b/public/media-src/avatar/medium/044-4.png deleted file mode 100755 index 184a98b7c..000000000 Binary files a/public/media-src/avatar/medium/044-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-5.png b/public/media-src/avatar/medium/044-5.png deleted file mode 100755 index 0d1158852..000000000 Binary files a/public/media-src/avatar/medium/044-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-6.png b/public/media-src/avatar/medium/044-6.png deleted file mode 100755 index d000357be..000000000 Binary files a/public/media-src/avatar/medium/044-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-7.png b/public/media-src/avatar/medium/044-7.png deleted file mode 100755 index 671399b6d..000000000 Binary files a/public/media-src/avatar/medium/044-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-8.png b/public/media-src/avatar/medium/044-8.png deleted file mode 100644 index d6b784d66..000000000 Binary files a/public/media-src/avatar/medium/044-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/044-9.png b/public/media-src/avatar/medium/044-9.png deleted file mode 100644 index 6a20478e0..000000000 Binary files a/public/media-src/avatar/medium/044-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-1.png b/public/media-src/avatar/medium/045-1.png deleted file mode 100755 index 0eab327ad..000000000 Binary files a/public/media-src/avatar/medium/045-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-10.png b/public/media-src/avatar/medium/045-10.png deleted file mode 100644 index b7e6ff754..000000000 Binary files a/public/media-src/avatar/medium/045-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-11.png b/public/media-src/avatar/medium/045-11.png deleted file mode 100644 index 63e034c8a..000000000 Binary files a/public/media-src/avatar/medium/045-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-12.png b/public/media-src/avatar/medium/045-12.png deleted file mode 100644 index 807d2eda3..000000000 Binary files a/public/media-src/avatar/medium/045-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-2.png b/public/media-src/avatar/medium/045-2.png deleted file mode 100755 index 2aea48849..000000000 Binary files a/public/media-src/avatar/medium/045-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-3.png b/public/media-src/avatar/medium/045-3.png deleted file mode 100755 index 4c9b116f6..000000000 Binary files a/public/media-src/avatar/medium/045-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-4.png b/public/media-src/avatar/medium/045-4.png deleted file mode 100755 index 5b18cc2c6..000000000 Binary files a/public/media-src/avatar/medium/045-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-5.png b/public/media-src/avatar/medium/045-5.png deleted file mode 100755 index d6f3776bd..000000000 Binary files a/public/media-src/avatar/medium/045-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-6.png b/public/media-src/avatar/medium/045-6.png deleted file mode 100755 index 7de43e00d..000000000 Binary files a/public/media-src/avatar/medium/045-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-7.png b/public/media-src/avatar/medium/045-7.png deleted file mode 100755 index aa4284221..000000000 Binary files a/public/media-src/avatar/medium/045-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-8.png b/public/media-src/avatar/medium/045-8.png deleted file mode 100644 index 2e92b1c5c..000000000 Binary files a/public/media-src/avatar/medium/045-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/045-9.png b/public/media-src/avatar/medium/045-9.png deleted file mode 100644 index 5c7abec13..000000000 Binary files a/public/media-src/avatar/medium/045-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-1.png b/public/media-src/avatar/medium/046-1.png deleted file mode 100755 index 9eca0fd8d..000000000 Binary files a/public/media-src/avatar/medium/046-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-10.png b/public/media-src/avatar/medium/046-10.png deleted file mode 100644 index aded88a97..000000000 Binary files a/public/media-src/avatar/medium/046-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-11.png b/public/media-src/avatar/medium/046-11.png deleted file mode 100644 index 70cfe7d95..000000000 Binary files a/public/media-src/avatar/medium/046-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-12.png b/public/media-src/avatar/medium/046-12.png deleted file mode 100644 index 5323c8e8f..000000000 Binary files a/public/media-src/avatar/medium/046-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-2.png b/public/media-src/avatar/medium/046-2.png deleted file mode 100755 index 9f45c838c..000000000 Binary files a/public/media-src/avatar/medium/046-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-3.png b/public/media-src/avatar/medium/046-3.png deleted file mode 100755 index a8460dd6e..000000000 Binary files a/public/media-src/avatar/medium/046-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-4.png b/public/media-src/avatar/medium/046-4.png deleted file mode 100755 index 514dd9f8c..000000000 Binary files a/public/media-src/avatar/medium/046-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-5.png b/public/media-src/avatar/medium/046-5.png deleted file mode 100755 index 923381b78..000000000 Binary files a/public/media-src/avatar/medium/046-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-6.png b/public/media-src/avatar/medium/046-6.png deleted file mode 100755 index 38f9939f0..000000000 Binary files a/public/media-src/avatar/medium/046-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-7.png b/public/media-src/avatar/medium/046-7.png deleted file mode 100755 index 861a6bd25..000000000 Binary files a/public/media-src/avatar/medium/046-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-8.png b/public/media-src/avatar/medium/046-8.png deleted file mode 100644 index c1f779993..000000000 Binary files a/public/media-src/avatar/medium/046-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/046-9.png b/public/media-src/avatar/medium/046-9.png deleted file mode 100644 index 7d59b0b82..000000000 Binary files a/public/media-src/avatar/medium/046-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-1.png b/public/media-src/avatar/medium/047-1.png deleted file mode 100755 index 7f895b68e..000000000 Binary files a/public/media-src/avatar/medium/047-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-10.png b/public/media-src/avatar/medium/047-10.png deleted file mode 100644 index 621f87e2b..000000000 Binary files a/public/media-src/avatar/medium/047-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-11.png b/public/media-src/avatar/medium/047-11.png deleted file mode 100644 index 20bfbe549..000000000 Binary files a/public/media-src/avatar/medium/047-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-12.png b/public/media-src/avatar/medium/047-12.png deleted file mode 100644 index 599e4cb7e..000000000 Binary files a/public/media-src/avatar/medium/047-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-2.png b/public/media-src/avatar/medium/047-2.png deleted file mode 100755 index f20483d31..000000000 Binary files a/public/media-src/avatar/medium/047-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-3.png b/public/media-src/avatar/medium/047-3.png deleted file mode 100755 index b230db81e..000000000 Binary files a/public/media-src/avatar/medium/047-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-4.png b/public/media-src/avatar/medium/047-4.png deleted file mode 100755 index ba7afccbd..000000000 Binary files a/public/media-src/avatar/medium/047-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-5.png b/public/media-src/avatar/medium/047-5.png deleted file mode 100755 index 3cc8670a2..000000000 Binary files a/public/media-src/avatar/medium/047-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-6.png b/public/media-src/avatar/medium/047-6.png deleted file mode 100755 index 7c79d851c..000000000 Binary files a/public/media-src/avatar/medium/047-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-7.png b/public/media-src/avatar/medium/047-7.png deleted file mode 100755 index 52b2a6d4e..000000000 Binary files a/public/media-src/avatar/medium/047-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-8.png b/public/media-src/avatar/medium/047-8.png deleted file mode 100644 index 2e651daff..000000000 Binary files a/public/media-src/avatar/medium/047-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/047-9.png b/public/media-src/avatar/medium/047-9.png deleted file mode 100644 index 904db88f9..000000000 Binary files a/public/media-src/avatar/medium/047-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-1.png b/public/media-src/avatar/medium/048-1.png deleted file mode 100755 index ad0074d59..000000000 Binary files a/public/media-src/avatar/medium/048-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-10.png b/public/media-src/avatar/medium/048-10.png deleted file mode 100644 index 6250c7b09..000000000 Binary files a/public/media-src/avatar/medium/048-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-11.png b/public/media-src/avatar/medium/048-11.png deleted file mode 100644 index 422bad015..000000000 Binary files a/public/media-src/avatar/medium/048-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-12.png b/public/media-src/avatar/medium/048-12.png deleted file mode 100644 index 6e86e274a..000000000 Binary files a/public/media-src/avatar/medium/048-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-2.png b/public/media-src/avatar/medium/048-2.png deleted file mode 100755 index 9e456f91b..000000000 Binary files a/public/media-src/avatar/medium/048-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-3.png b/public/media-src/avatar/medium/048-3.png deleted file mode 100755 index 2d274fb4b..000000000 Binary files a/public/media-src/avatar/medium/048-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-4.png b/public/media-src/avatar/medium/048-4.png deleted file mode 100755 index cc6aa575f..000000000 Binary files a/public/media-src/avatar/medium/048-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-5.png b/public/media-src/avatar/medium/048-5.png deleted file mode 100755 index 3f2dac415..000000000 Binary files a/public/media-src/avatar/medium/048-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-6.png b/public/media-src/avatar/medium/048-6.png deleted file mode 100755 index c1fe7f648..000000000 Binary files a/public/media-src/avatar/medium/048-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-7.png b/public/media-src/avatar/medium/048-7.png deleted file mode 100755 index 8e7ded17d..000000000 Binary files a/public/media-src/avatar/medium/048-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-8.png b/public/media-src/avatar/medium/048-8.png deleted file mode 100644 index 03d8ff7f6..000000000 Binary files a/public/media-src/avatar/medium/048-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/048-9.png b/public/media-src/avatar/medium/048-9.png deleted file mode 100644 index a41c3eec0..000000000 Binary files a/public/media-src/avatar/medium/048-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-1.png b/public/media-src/avatar/medium/049-1.png deleted file mode 100755 index 685540e6f..000000000 Binary files a/public/media-src/avatar/medium/049-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-10.png b/public/media-src/avatar/medium/049-10.png deleted file mode 100644 index 61331b5c8..000000000 Binary files a/public/media-src/avatar/medium/049-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-11.png b/public/media-src/avatar/medium/049-11.png deleted file mode 100644 index 3a0c6e69d..000000000 Binary files a/public/media-src/avatar/medium/049-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-12.png b/public/media-src/avatar/medium/049-12.png deleted file mode 100644 index ab5b5b6aa..000000000 Binary files a/public/media-src/avatar/medium/049-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-2.png b/public/media-src/avatar/medium/049-2.png deleted file mode 100755 index 61313800b..000000000 Binary files a/public/media-src/avatar/medium/049-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-3.png b/public/media-src/avatar/medium/049-3.png deleted file mode 100755 index 963b84661..000000000 Binary files a/public/media-src/avatar/medium/049-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-4.png b/public/media-src/avatar/medium/049-4.png deleted file mode 100755 index 19ba6da44..000000000 Binary files a/public/media-src/avatar/medium/049-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-5.png b/public/media-src/avatar/medium/049-5.png deleted file mode 100755 index 1169fa6c9..000000000 Binary files a/public/media-src/avatar/medium/049-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-6.png b/public/media-src/avatar/medium/049-6.png deleted file mode 100755 index caf4160e2..000000000 Binary files a/public/media-src/avatar/medium/049-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-7.png b/public/media-src/avatar/medium/049-7.png deleted file mode 100755 index 6309565fc..000000000 Binary files a/public/media-src/avatar/medium/049-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-8.png b/public/media-src/avatar/medium/049-8.png deleted file mode 100644 index 74f84dcb6..000000000 Binary files a/public/media-src/avatar/medium/049-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/049-9.png b/public/media-src/avatar/medium/049-9.png deleted file mode 100644 index e11462b8b..000000000 Binary files a/public/media-src/avatar/medium/049-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-1.png b/public/media-src/avatar/medium/050-1.png deleted file mode 100755 index 130219ea1..000000000 Binary files a/public/media-src/avatar/medium/050-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-10.png b/public/media-src/avatar/medium/050-10.png deleted file mode 100644 index ddadca145..000000000 Binary files a/public/media-src/avatar/medium/050-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-11.png b/public/media-src/avatar/medium/050-11.png deleted file mode 100644 index 177a686b3..000000000 Binary files a/public/media-src/avatar/medium/050-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-12.png b/public/media-src/avatar/medium/050-12.png deleted file mode 100644 index 04f6c6f2c..000000000 Binary files a/public/media-src/avatar/medium/050-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-2.png b/public/media-src/avatar/medium/050-2.png deleted file mode 100755 index b47cdf3da..000000000 Binary files a/public/media-src/avatar/medium/050-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-3.png b/public/media-src/avatar/medium/050-3.png deleted file mode 100755 index 15bdf204f..000000000 Binary files a/public/media-src/avatar/medium/050-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-4.png b/public/media-src/avatar/medium/050-4.png deleted file mode 100755 index b92abaf95..000000000 Binary files a/public/media-src/avatar/medium/050-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-5.png b/public/media-src/avatar/medium/050-5.png deleted file mode 100755 index b7dd4bbe5..000000000 Binary files a/public/media-src/avatar/medium/050-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-6.png b/public/media-src/avatar/medium/050-6.png deleted file mode 100755 index 2e2e74a79..000000000 Binary files a/public/media-src/avatar/medium/050-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-7.png b/public/media-src/avatar/medium/050-7.png deleted file mode 100755 index 7e6deabab..000000000 Binary files a/public/media-src/avatar/medium/050-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-8.png b/public/media-src/avatar/medium/050-8.png deleted file mode 100644 index a9952a064..000000000 Binary files a/public/media-src/avatar/medium/050-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/050-9.png b/public/media-src/avatar/medium/050-9.png deleted file mode 100644 index 329cf11ac..000000000 Binary files a/public/media-src/avatar/medium/050-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-1.png b/public/media-src/avatar/medium/051-1.png deleted file mode 100755 index 45ea0c970..000000000 Binary files a/public/media-src/avatar/medium/051-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-10.png b/public/media-src/avatar/medium/051-10.png deleted file mode 100644 index d36f83002..000000000 Binary files a/public/media-src/avatar/medium/051-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-11.png b/public/media-src/avatar/medium/051-11.png deleted file mode 100644 index c1072f239..000000000 Binary files a/public/media-src/avatar/medium/051-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-12.png b/public/media-src/avatar/medium/051-12.png deleted file mode 100644 index db8a02c3f..000000000 Binary files a/public/media-src/avatar/medium/051-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-2.png b/public/media-src/avatar/medium/051-2.png deleted file mode 100755 index ac110df2e..000000000 Binary files a/public/media-src/avatar/medium/051-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-3.png b/public/media-src/avatar/medium/051-3.png deleted file mode 100755 index c94ad05dd..000000000 Binary files a/public/media-src/avatar/medium/051-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-4.png b/public/media-src/avatar/medium/051-4.png deleted file mode 100755 index 9a38b3a92..000000000 Binary files a/public/media-src/avatar/medium/051-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-5.png b/public/media-src/avatar/medium/051-5.png deleted file mode 100755 index c91a7aff1..000000000 Binary files a/public/media-src/avatar/medium/051-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-6.png b/public/media-src/avatar/medium/051-6.png deleted file mode 100755 index 314c39519..000000000 Binary files a/public/media-src/avatar/medium/051-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-7.png b/public/media-src/avatar/medium/051-7.png deleted file mode 100755 index c84ba07e9..000000000 Binary files a/public/media-src/avatar/medium/051-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-8.png b/public/media-src/avatar/medium/051-8.png deleted file mode 100644 index 1f85d266c..000000000 Binary files a/public/media-src/avatar/medium/051-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/051-9.png b/public/media-src/avatar/medium/051-9.png deleted file mode 100644 index e701a41fc..000000000 Binary files a/public/media-src/avatar/medium/051-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-1.png b/public/media-src/avatar/medium/052-1.png deleted file mode 100755 index 2547a20b6..000000000 Binary files a/public/media-src/avatar/medium/052-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-10.png b/public/media-src/avatar/medium/052-10.png deleted file mode 100644 index 0104baebe..000000000 Binary files a/public/media-src/avatar/medium/052-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-11.png b/public/media-src/avatar/medium/052-11.png deleted file mode 100644 index 707d3ba96..000000000 Binary files a/public/media-src/avatar/medium/052-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-12.png b/public/media-src/avatar/medium/052-12.png deleted file mode 100644 index 98b30538e..000000000 Binary files a/public/media-src/avatar/medium/052-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-2.png b/public/media-src/avatar/medium/052-2.png deleted file mode 100755 index 80a6a11d5..000000000 Binary files a/public/media-src/avatar/medium/052-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-3.png b/public/media-src/avatar/medium/052-3.png deleted file mode 100755 index fa87969d5..000000000 Binary files a/public/media-src/avatar/medium/052-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-4.png b/public/media-src/avatar/medium/052-4.png deleted file mode 100755 index daba22e6e..000000000 Binary files a/public/media-src/avatar/medium/052-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-5.png b/public/media-src/avatar/medium/052-5.png deleted file mode 100755 index 2e9380bda..000000000 Binary files a/public/media-src/avatar/medium/052-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-6.png b/public/media-src/avatar/medium/052-6.png deleted file mode 100755 index 51892d7bb..000000000 Binary files a/public/media-src/avatar/medium/052-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-7.png b/public/media-src/avatar/medium/052-7.png deleted file mode 100755 index 57158d3ec..000000000 Binary files a/public/media-src/avatar/medium/052-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-8.png b/public/media-src/avatar/medium/052-8.png deleted file mode 100644 index b8adb780e..000000000 Binary files a/public/media-src/avatar/medium/052-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/052-9.png b/public/media-src/avatar/medium/052-9.png deleted file mode 100644 index 48c08e50e..000000000 Binary files a/public/media-src/avatar/medium/052-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-1.png b/public/media-src/avatar/medium/053-1.png deleted file mode 100755 index 84ea67c13..000000000 Binary files a/public/media-src/avatar/medium/053-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-10.png b/public/media-src/avatar/medium/053-10.png deleted file mode 100644 index 1a7c9c63d..000000000 Binary files a/public/media-src/avatar/medium/053-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-11.png b/public/media-src/avatar/medium/053-11.png deleted file mode 100644 index e612a66b7..000000000 Binary files a/public/media-src/avatar/medium/053-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-12.png b/public/media-src/avatar/medium/053-12.png deleted file mode 100644 index 98d494c7f..000000000 Binary files a/public/media-src/avatar/medium/053-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-2.png b/public/media-src/avatar/medium/053-2.png deleted file mode 100755 index ff2e334be..000000000 Binary files a/public/media-src/avatar/medium/053-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-3.png b/public/media-src/avatar/medium/053-3.png deleted file mode 100755 index c88efff4e..000000000 Binary files a/public/media-src/avatar/medium/053-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-4.png b/public/media-src/avatar/medium/053-4.png deleted file mode 100755 index d0a54dbe6..000000000 Binary files a/public/media-src/avatar/medium/053-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-5.png b/public/media-src/avatar/medium/053-5.png deleted file mode 100755 index a3ba15c0e..000000000 Binary files a/public/media-src/avatar/medium/053-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-6.png b/public/media-src/avatar/medium/053-6.png deleted file mode 100755 index 9ff434d21..000000000 Binary files a/public/media-src/avatar/medium/053-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-7.png b/public/media-src/avatar/medium/053-7.png deleted file mode 100755 index 54c80a6ba..000000000 Binary files a/public/media-src/avatar/medium/053-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-8.png b/public/media-src/avatar/medium/053-8.png deleted file mode 100644 index bdaed7bc7..000000000 Binary files a/public/media-src/avatar/medium/053-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/053-9.png b/public/media-src/avatar/medium/053-9.png deleted file mode 100644 index 15c3fcd85..000000000 Binary files a/public/media-src/avatar/medium/053-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-1.png b/public/media-src/avatar/medium/054-1.png deleted file mode 100755 index fa336e4fe..000000000 Binary files a/public/media-src/avatar/medium/054-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-10.png b/public/media-src/avatar/medium/054-10.png deleted file mode 100644 index dfd045863..000000000 Binary files a/public/media-src/avatar/medium/054-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-11.png b/public/media-src/avatar/medium/054-11.png deleted file mode 100644 index 383e1fa56..000000000 Binary files a/public/media-src/avatar/medium/054-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-12.png b/public/media-src/avatar/medium/054-12.png deleted file mode 100644 index 9ed46f22b..000000000 Binary files a/public/media-src/avatar/medium/054-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-2.png b/public/media-src/avatar/medium/054-2.png deleted file mode 100755 index b78957395..000000000 Binary files a/public/media-src/avatar/medium/054-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-3.png b/public/media-src/avatar/medium/054-3.png deleted file mode 100755 index 71a1bb10f..000000000 Binary files a/public/media-src/avatar/medium/054-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-4.png b/public/media-src/avatar/medium/054-4.png deleted file mode 100755 index 236e3fe8c..000000000 Binary files a/public/media-src/avatar/medium/054-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-5.png b/public/media-src/avatar/medium/054-5.png deleted file mode 100755 index b7336d1cd..000000000 Binary files a/public/media-src/avatar/medium/054-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-6.png b/public/media-src/avatar/medium/054-6.png deleted file mode 100755 index e87457e2e..000000000 Binary files a/public/media-src/avatar/medium/054-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-7.png b/public/media-src/avatar/medium/054-7.png deleted file mode 100755 index fd405bc59..000000000 Binary files a/public/media-src/avatar/medium/054-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-8.png b/public/media-src/avatar/medium/054-8.png deleted file mode 100644 index 7a4939a9f..000000000 Binary files a/public/media-src/avatar/medium/054-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/054-9.png b/public/media-src/avatar/medium/054-9.png deleted file mode 100644 index 2949a855b..000000000 Binary files a/public/media-src/avatar/medium/054-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-1.png b/public/media-src/avatar/medium/055-1.png deleted file mode 100755 index 3278d38b4..000000000 Binary files a/public/media-src/avatar/medium/055-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-10.png b/public/media-src/avatar/medium/055-10.png deleted file mode 100644 index 466e12fc2..000000000 Binary files a/public/media-src/avatar/medium/055-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-11.png b/public/media-src/avatar/medium/055-11.png deleted file mode 100644 index 2aba74724..000000000 Binary files a/public/media-src/avatar/medium/055-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-12.png b/public/media-src/avatar/medium/055-12.png deleted file mode 100644 index e98235ac3..000000000 Binary files a/public/media-src/avatar/medium/055-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-2.png b/public/media-src/avatar/medium/055-2.png deleted file mode 100755 index d3f030488..000000000 Binary files a/public/media-src/avatar/medium/055-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-3.png b/public/media-src/avatar/medium/055-3.png deleted file mode 100755 index 9e8e8a2f8..000000000 Binary files a/public/media-src/avatar/medium/055-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-4.png b/public/media-src/avatar/medium/055-4.png deleted file mode 100755 index 4c2aafbe4..000000000 Binary files a/public/media-src/avatar/medium/055-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-5.png b/public/media-src/avatar/medium/055-5.png deleted file mode 100755 index f32f277be..000000000 Binary files a/public/media-src/avatar/medium/055-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-6.png b/public/media-src/avatar/medium/055-6.png deleted file mode 100755 index 22481de77..000000000 Binary files a/public/media-src/avatar/medium/055-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-7.png b/public/media-src/avatar/medium/055-7.png deleted file mode 100755 index 554575b83..000000000 Binary files a/public/media-src/avatar/medium/055-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-8.png b/public/media-src/avatar/medium/055-8.png deleted file mode 100644 index 95e64d456..000000000 Binary files a/public/media-src/avatar/medium/055-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/055-9.png b/public/media-src/avatar/medium/055-9.png deleted file mode 100644 index e1c41a557..000000000 Binary files a/public/media-src/avatar/medium/055-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-1.png b/public/media-src/avatar/medium/056-1.png deleted file mode 100755 index b6fd55d6d..000000000 Binary files a/public/media-src/avatar/medium/056-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-10.png b/public/media-src/avatar/medium/056-10.png deleted file mode 100644 index c925857d0..000000000 Binary files a/public/media-src/avatar/medium/056-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-11.png b/public/media-src/avatar/medium/056-11.png deleted file mode 100644 index d6bf69b9e..000000000 Binary files a/public/media-src/avatar/medium/056-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-12.png b/public/media-src/avatar/medium/056-12.png deleted file mode 100644 index 56ce8f59c..000000000 Binary files a/public/media-src/avatar/medium/056-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-2.png b/public/media-src/avatar/medium/056-2.png deleted file mode 100755 index de9ba4bdf..000000000 Binary files a/public/media-src/avatar/medium/056-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-3.png b/public/media-src/avatar/medium/056-3.png deleted file mode 100755 index 9defd7189..000000000 Binary files a/public/media-src/avatar/medium/056-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-4.png b/public/media-src/avatar/medium/056-4.png deleted file mode 100755 index 79deba2b2..000000000 Binary files a/public/media-src/avatar/medium/056-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-5.png b/public/media-src/avatar/medium/056-5.png deleted file mode 100755 index 8ee70360a..000000000 Binary files a/public/media-src/avatar/medium/056-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-6.png b/public/media-src/avatar/medium/056-6.png deleted file mode 100755 index e30aefd03..000000000 Binary files a/public/media-src/avatar/medium/056-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-7.png b/public/media-src/avatar/medium/056-7.png deleted file mode 100755 index 9b912de3c..000000000 Binary files a/public/media-src/avatar/medium/056-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-8.png b/public/media-src/avatar/medium/056-8.png deleted file mode 100644 index e96b5840d..000000000 Binary files a/public/media-src/avatar/medium/056-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/056-9.png b/public/media-src/avatar/medium/056-9.png deleted file mode 100644 index a7b5ae1b7..000000000 Binary files a/public/media-src/avatar/medium/056-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-1.png b/public/media-src/avatar/medium/057-1.png deleted file mode 100755 index d2a2a75c3..000000000 Binary files a/public/media-src/avatar/medium/057-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-10.png b/public/media-src/avatar/medium/057-10.png deleted file mode 100644 index 886e19dfb..000000000 Binary files a/public/media-src/avatar/medium/057-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-11.png b/public/media-src/avatar/medium/057-11.png deleted file mode 100644 index 011f020ae..000000000 Binary files a/public/media-src/avatar/medium/057-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-12.png b/public/media-src/avatar/medium/057-12.png deleted file mode 100644 index a46242bff..000000000 Binary files a/public/media-src/avatar/medium/057-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-2.png b/public/media-src/avatar/medium/057-2.png deleted file mode 100755 index ac1a3bbb0..000000000 Binary files a/public/media-src/avatar/medium/057-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-3.png b/public/media-src/avatar/medium/057-3.png deleted file mode 100755 index 49df05d33..000000000 Binary files a/public/media-src/avatar/medium/057-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-4.png b/public/media-src/avatar/medium/057-4.png deleted file mode 100755 index 0436adae7..000000000 Binary files a/public/media-src/avatar/medium/057-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-5.png b/public/media-src/avatar/medium/057-5.png deleted file mode 100755 index ce75fc8ce..000000000 Binary files a/public/media-src/avatar/medium/057-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-6.png b/public/media-src/avatar/medium/057-6.png deleted file mode 100755 index 6da9b6562..000000000 Binary files a/public/media-src/avatar/medium/057-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-7.png b/public/media-src/avatar/medium/057-7.png deleted file mode 100755 index 0e37b30d6..000000000 Binary files a/public/media-src/avatar/medium/057-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-8.png b/public/media-src/avatar/medium/057-8.png deleted file mode 100644 index 2b56e596b..000000000 Binary files a/public/media-src/avatar/medium/057-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/057-9.png b/public/media-src/avatar/medium/057-9.png deleted file mode 100644 index fd81c9d64..000000000 Binary files a/public/media-src/avatar/medium/057-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-1.png b/public/media-src/avatar/medium/058-1.png deleted file mode 100755 index 4e395144b..000000000 Binary files a/public/media-src/avatar/medium/058-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-10.png b/public/media-src/avatar/medium/058-10.png deleted file mode 100644 index ec1323c92..000000000 Binary files a/public/media-src/avatar/medium/058-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-11.png b/public/media-src/avatar/medium/058-11.png deleted file mode 100644 index 24a914f82..000000000 Binary files a/public/media-src/avatar/medium/058-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-12.png b/public/media-src/avatar/medium/058-12.png deleted file mode 100644 index b5de69a41..000000000 Binary files a/public/media-src/avatar/medium/058-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-2.png b/public/media-src/avatar/medium/058-2.png deleted file mode 100755 index f5154ba6a..000000000 Binary files a/public/media-src/avatar/medium/058-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-3.png b/public/media-src/avatar/medium/058-3.png deleted file mode 100755 index 520aa5304..000000000 Binary files a/public/media-src/avatar/medium/058-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-4.png b/public/media-src/avatar/medium/058-4.png deleted file mode 100755 index 939b6fb7c..000000000 Binary files a/public/media-src/avatar/medium/058-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-5.png b/public/media-src/avatar/medium/058-5.png deleted file mode 100755 index d256267d2..000000000 Binary files a/public/media-src/avatar/medium/058-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-6.png b/public/media-src/avatar/medium/058-6.png deleted file mode 100755 index 1deeb0f34..000000000 Binary files a/public/media-src/avatar/medium/058-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-7.png b/public/media-src/avatar/medium/058-7.png deleted file mode 100755 index a1c72fa09..000000000 Binary files a/public/media-src/avatar/medium/058-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-8.png b/public/media-src/avatar/medium/058-8.png deleted file mode 100644 index a6c0e3ed4..000000000 Binary files a/public/media-src/avatar/medium/058-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/058-9.png b/public/media-src/avatar/medium/058-9.png deleted file mode 100644 index 38d3d605d..000000000 Binary files a/public/media-src/avatar/medium/058-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-1.png b/public/media-src/avatar/medium/059-1.png deleted file mode 100755 index 7ac445e80..000000000 Binary files a/public/media-src/avatar/medium/059-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-10.png b/public/media-src/avatar/medium/059-10.png deleted file mode 100644 index 78d8afb6b..000000000 Binary files a/public/media-src/avatar/medium/059-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-11.png b/public/media-src/avatar/medium/059-11.png deleted file mode 100644 index fb15dbbd5..000000000 Binary files a/public/media-src/avatar/medium/059-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-12.png b/public/media-src/avatar/medium/059-12.png deleted file mode 100644 index fd77980c1..000000000 Binary files a/public/media-src/avatar/medium/059-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-2.png b/public/media-src/avatar/medium/059-2.png deleted file mode 100755 index b06e31c22..000000000 Binary files a/public/media-src/avatar/medium/059-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-3.png b/public/media-src/avatar/medium/059-3.png deleted file mode 100755 index dbf7f718c..000000000 Binary files a/public/media-src/avatar/medium/059-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-4.png b/public/media-src/avatar/medium/059-4.png deleted file mode 100755 index 7165dbf8e..000000000 Binary files a/public/media-src/avatar/medium/059-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-5.png b/public/media-src/avatar/medium/059-5.png deleted file mode 100755 index 367b883c5..000000000 Binary files a/public/media-src/avatar/medium/059-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-6.png b/public/media-src/avatar/medium/059-6.png deleted file mode 100755 index 986a158d8..000000000 Binary files a/public/media-src/avatar/medium/059-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-7.png b/public/media-src/avatar/medium/059-7.png deleted file mode 100755 index 42431097c..000000000 Binary files a/public/media-src/avatar/medium/059-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-8.png b/public/media-src/avatar/medium/059-8.png deleted file mode 100644 index 3ecc73457..000000000 Binary files a/public/media-src/avatar/medium/059-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/059-9.png b/public/media-src/avatar/medium/059-9.png deleted file mode 100644 index bf27826cb..000000000 Binary files a/public/media-src/avatar/medium/059-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-1.png b/public/media-src/avatar/medium/060-1.png deleted file mode 100755 index 3a641a7de..000000000 Binary files a/public/media-src/avatar/medium/060-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-10.png b/public/media-src/avatar/medium/060-10.png deleted file mode 100644 index e789a84f9..000000000 Binary files a/public/media-src/avatar/medium/060-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-11.png b/public/media-src/avatar/medium/060-11.png deleted file mode 100644 index bb726b268..000000000 Binary files a/public/media-src/avatar/medium/060-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-12.png b/public/media-src/avatar/medium/060-12.png deleted file mode 100644 index b266b4ecf..000000000 Binary files a/public/media-src/avatar/medium/060-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-2.png b/public/media-src/avatar/medium/060-2.png deleted file mode 100755 index 9f668b75a..000000000 Binary files a/public/media-src/avatar/medium/060-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-3.png b/public/media-src/avatar/medium/060-3.png deleted file mode 100755 index b2476b393..000000000 Binary files a/public/media-src/avatar/medium/060-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-4.png b/public/media-src/avatar/medium/060-4.png deleted file mode 100755 index 65726ee12..000000000 Binary files a/public/media-src/avatar/medium/060-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-5.png b/public/media-src/avatar/medium/060-5.png deleted file mode 100755 index 175446f74..000000000 Binary files a/public/media-src/avatar/medium/060-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-6.png b/public/media-src/avatar/medium/060-6.png deleted file mode 100755 index 0d4ef8d09..000000000 Binary files a/public/media-src/avatar/medium/060-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-7.png b/public/media-src/avatar/medium/060-7.png deleted file mode 100755 index 4eff983ac..000000000 Binary files a/public/media-src/avatar/medium/060-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-8.png b/public/media-src/avatar/medium/060-8.png deleted file mode 100644 index 79b33ede7..000000000 Binary files a/public/media-src/avatar/medium/060-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/060-9.png b/public/media-src/avatar/medium/060-9.png deleted file mode 100644 index d8b582a51..000000000 Binary files a/public/media-src/avatar/medium/060-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-1.png b/public/media-src/avatar/medium/061-1.png deleted file mode 100755 index b79ada166..000000000 Binary files a/public/media-src/avatar/medium/061-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-10.png b/public/media-src/avatar/medium/061-10.png deleted file mode 100644 index 2f8b158bf..000000000 Binary files a/public/media-src/avatar/medium/061-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-11.png b/public/media-src/avatar/medium/061-11.png deleted file mode 100644 index 3e34979c0..000000000 Binary files a/public/media-src/avatar/medium/061-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-12.png b/public/media-src/avatar/medium/061-12.png deleted file mode 100644 index 45eae7b20..000000000 Binary files a/public/media-src/avatar/medium/061-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-2.png b/public/media-src/avatar/medium/061-2.png deleted file mode 100755 index 298e3b02d..000000000 Binary files a/public/media-src/avatar/medium/061-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-3.png b/public/media-src/avatar/medium/061-3.png deleted file mode 100755 index 2deea876e..000000000 Binary files a/public/media-src/avatar/medium/061-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-4.png b/public/media-src/avatar/medium/061-4.png deleted file mode 100755 index 163359d22..000000000 Binary files a/public/media-src/avatar/medium/061-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-5.png b/public/media-src/avatar/medium/061-5.png deleted file mode 100755 index 2a579ed06..000000000 Binary files a/public/media-src/avatar/medium/061-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-6.png b/public/media-src/avatar/medium/061-6.png deleted file mode 100755 index 0bf5830de..000000000 Binary files a/public/media-src/avatar/medium/061-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-7.png b/public/media-src/avatar/medium/061-7.png deleted file mode 100755 index cacd60896..000000000 Binary files a/public/media-src/avatar/medium/061-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-8.png b/public/media-src/avatar/medium/061-8.png deleted file mode 100644 index 6ed538ad7..000000000 Binary files a/public/media-src/avatar/medium/061-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/061-9.png b/public/media-src/avatar/medium/061-9.png deleted file mode 100644 index 16cb2205f..000000000 Binary files a/public/media-src/avatar/medium/061-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-1.png b/public/media-src/avatar/medium/062-1.png deleted file mode 100755 index 0ad207825..000000000 Binary files a/public/media-src/avatar/medium/062-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-10.png b/public/media-src/avatar/medium/062-10.png deleted file mode 100644 index b3b2001c9..000000000 Binary files a/public/media-src/avatar/medium/062-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-11.png b/public/media-src/avatar/medium/062-11.png deleted file mode 100644 index 9a0cd41bf..000000000 Binary files a/public/media-src/avatar/medium/062-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-12.png b/public/media-src/avatar/medium/062-12.png deleted file mode 100644 index eb92f0b2f..000000000 Binary files a/public/media-src/avatar/medium/062-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-2.png b/public/media-src/avatar/medium/062-2.png deleted file mode 100755 index 65663b044..000000000 Binary files a/public/media-src/avatar/medium/062-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-3.png b/public/media-src/avatar/medium/062-3.png deleted file mode 100755 index 0df8799ff..000000000 Binary files a/public/media-src/avatar/medium/062-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-4.png b/public/media-src/avatar/medium/062-4.png deleted file mode 100755 index 05907aebd..000000000 Binary files a/public/media-src/avatar/medium/062-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-5.png b/public/media-src/avatar/medium/062-5.png deleted file mode 100755 index 9f410646f..000000000 Binary files a/public/media-src/avatar/medium/062-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-6.png b/public/media-src/avatar/medium/062-6.png deleted file mode 100755 index 61636d313..000000000 Binary files a/public/media-src/avatar/medium/062-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-7.png b/public/media-src/avatar/medium/062-7.png deleted file mode 100755 index a19afb8b0..000000000 Binary files a/public/media-src/avatar/medium/062-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-8.png b/public/media-src/avatar/medium/062-8.png deleted file mode 100644 index 97ed57488..000000000 Binary files a/public/media-src/avatar/medium/062-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/062-9.png b/public/media-src/avatar/medium/062-9.png deleted file mode 100644 index 819d1f01c..000000000 Binary files a/public/media-src/avatar/medium/062-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-1.png b/public/media-src/avatar/medium/063-1.png deleted file mode 100755 index 558a3fa75..000000000 Binary files a/public/media-src/avatar/medium/063-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-10.png b/public/media-src/avatar/medium/063-10.png deleted file mode 100644 index 185075b0d..000000000 Binary files a/public/media-src/avatar/medium/063-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-11.png b/public/media-src/avatar/medium/063-11.png deleted file mode 100644 index c9e76a0c7..000000000 Binary files a/public/media-src/avatar/medium/063-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-12.png b/public/media-src/avatar/medium/063-12.png deleted file mode 100644 index 7a8ec610c..000000000 Binary files a/public/media-src/avatar/medium/063-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-2.png b/public/media-src/avatar/medium/063-2.png deleted file mode 100755 index 7998735fa..000000000 Binary files a/public/media-src/avatar/medium/063-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-3.png b/public/media-src/avatar/medium/063-3.png deleted file mode 100755 index d9fce6e3f..000000000 Binary files a/public/media-src/avatar/medium/063-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-4.png b/public/media-src/avatar/medium/063-4.png deleted file mode 100755 index 6b1d75a57..000000000 Binary files a/public/media-src/avatar/medium/063-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-5.png b/public/media-src/avatar/medium/063-5.png deleted file mode 100755 index 4d04aa1d1..000000000 Binary files a/public/media-src/avatar/medium/063-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-6.png b/public/media-src/avatar/medium/063-6.png deleted file mode 100755 index 944308023..000000000 Binary files a/public/media-src/avatar/medium/063-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-7.png b/public/media-src/avatar/medium/063-7.png deleted file mode 100755 index 7697042b4..000000000 Binary files a/public/media-src/avatar/medium/063-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-8.png b/public/media-src/avatar/medium/063-8.png deleted file mode 100644 index 405ae10af..000000000 Binary files a/public/media-src/avatar/medium/063-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/063-9.png b/public/media-src/avatar/medium/063-9.png deleted file mode 100644 index 7aca1a9ca..000000000 Binary files a/public/media-src/avatar/medium/063-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-1.png b/public/media-src/avatar/medium/064-1.png deleted file mode 100755 index 41439febf..000000000 Binary files a/public/media-src/avatar/medium/064-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-10.png b/public/media-src/avatar/medium/064-10.png deleted file mode 100644 index 8b65081b9..000000000 Binary files a/public/media-src/avatar/medium/064-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-11.png b/public/media-src/avatar/medium/064-11.png deleted file mode 100644 index 854418ec9..000000000 Binary files a/public/media-src/avatar/medium/064-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-12.png b/public/media-src/avatar/medium/064-12.png deleted file mode 100644 index a6d1f1c1e..000000000 Binary files a/public/media-src/avatar/medium/064-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-2.png b/public/media-src/avatar/medium/064-2.png deleted file mode 100755 index e9b17cba5..000000000 Binary files a/public/media-src/avatar/medium/064-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-3.png b/public/media-src/avatar/medium/064-3.png deleted file mode 100755 index 5f3d24ac7..000000000 Binary files a/public/media-src/avatar/medium/064-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-4.png b/public/media-src/avatar/medium/064-4.png deleted file mode 100755 index e6e747a65..000000000 Binary files a/public/media-src/avatar/medium/064-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-5.png b/public/media-src/avatar/medium/064-5.png deleted file mode 100755 index 7a1012f4e..000000000 Binary files a/public/media-src/avatar/medium/064-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-6.png b/public/media-src/avatar/medium/064-6.png deleted file mode 100755 index fd2f432d3..000000000 Binary files a/public/media-src/avatar/medium/064-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-7.png b/public/media-src/avatar/medium/064-7.png deleted file mode 100755 index 13737471d..000000000 Binary files a/public/media-src/avatar/medium/064-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-8.png b/public/media-src/avatar/medium/064-8.png deleted file mode 100644 index b20d1c08c..000000000 Binary files a/public/media-src/avatar/medium/064-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/064-9.png b/public/media-src/avatar/medium/064-9.png deleted file mode 100644 index 9c08b5b1d..000000000 Binary files a/public/media-src/avatar/medium/064-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-1.png b/public/media-src/avatar/medium/065-1.png deleted file mode 100755 index 66cc20a3f..000000000 Binary files a/public/media-src/avatar/medium/065-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-10.png b/public/media-src/avatar/medium/065-10.png deleted file mode 100644 index eada10376..000000000 Binary files a/public/media-src/avatar/medium/065-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-11.png b/public/media-src/avatar/medium/065-11.png deleted file mode 100644 index 9699f3238..000000000 Binary files a/public/media-src/avatar/medium/065-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-12.png b/public/media-src/avatar/medium/065-12.png deleted file mode 100644 index d9ab29608..000000000 Binary files a/public/media-src/avatar/medium/065-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-2.png b/public/media-src/avatar/medium/065-2.png deleted file mode 100755 index 9cfb0689d..000000000 Binary files a/public/media-src/avatar/medium/065-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-3.png b/public/media-src/avatar/medium/065-3.png deleted file mode 100755 index ca1a9c512..000000000 Binary files a/public/media-src/avatar/medium/065-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-4.png b/public/media-src/avatar/medium/065-4.png deleted file mode 100755 index 2c40a0582..000000000 Binary files a/public/media-src/avatar/medium/065-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-5.png b/public/media-src/avatar/medium/065-5.png deleted file mode 100755 index b84793c49..000000000 Binary files a/public/media-src/avatar/medium/065-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-6.png b/public/media-src/avatar/medium/065-6.png deleted file mode 100755 index 805e6fe41..000000000 Binary files a/public/media-src/avatar/medium/065-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-7.png b/public/media-src/avatar/medium/065-7.png deleted file mode 100755 index d82491d4d..000000000 Binary files a/public/media-src/avatar/medium/065-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-8.png b/public/media-src/avatar/medium/065-8.png deleted file mode 100644 index 9fb096a4e..000000000 Binary files a/public/media-src/avatar/medium/065-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/065-9.png b/public/media-src/avatar/medium/065-9.png deleted file mode 100644 index ab90613ca..000000000 Binary files a/public/media-src/avatar/medium/065-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-1.png b/public/media-src/avatar/medium/066-1.png deleted file mode 100755 index 030846e99..000000000 Binary files a/public/media-src/avatar/medium/066-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-10.png b/public/media-src/avatar/medium/066-10.png deleted file mode 100644 index 14d7c1e91..000000000 Binary files a/public/media-src/avatar/medium/066-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-11.png b/public/media-src/avatar/medium/066-11.png deleted file mode 100644 index 5fbd3120f..000000000 Binary files a/public/media-src/avatar/medium/066-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-12.png b/public/media-src/avatar/medium/066-12.png deleted file mode 100644 index b95b59d22..000000000 Binary files a/public/media-src/avatar/medium/066-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-2.png b/public/media-src/avatar/medium/066-2.png deleted file mode 100755 index 117ca066d..000000000 Binary files a/public/media-src/avatar/medium/066-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-3.png b/public/media-src/avatar/medium/066-3.png deleted file mode 100755 index 6dcbce223..000000000 Binary files a/public/media-src/avatar/medium/066-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-4.png b/public/media-src/avatar/medium/066-4.png deleted file mode 100755 index 6d1643ec6..000000000 Binary files a/public/media-src/avatar/medium/066-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-5.png b/public/media-src/avatar/medium/066-5.png deleted file mode 100755 index 6a1dc68af..000000000 Binary files a/public/media-src/avatar/medium/066-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-6.png b/public/media-src/avatar/medium/066-6.png deleted file mode 100755 index 4cfaffbc1..000000000 Binary files a/public/media-src/avatar/medium/066-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-7.png b/public/media-src/avatar/medium/066-7.png deleted file mode 100755 index 3a4a82582..000000000 Binary files a/public/media-src/avatar/medium/066-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-8.png b/public/media-src/avatar/medium/066-8.png deleted file mode 100644 index 0509245d6..000000000 Binary files a/public/media-src/avatar/medium/066-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/066-9.png b/public/media-src/avatar/medium/066-9.png deleted file mode 100644 index c820ca152..000000000 Binary files a/public/media-src/avatar/medium/066-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-1.png b/public/media-src/avatar/medium/067-1.png deleted file mode 100755 index 13f493504..000000000 Binary files a/public/media-src/avatar/medium/067-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-10.png b/public/media-src/avatar/medium/067-10.png deleted file mode 100644 index 08501d4bf..000000000 Binary files a/public/media-src/avatar/medium/067-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-11.png b/public/media-src/avatar/medium/067-11.png deleted file mode 100644 index 279d1ef39..000000000 Binary files a/public/media-src/avatar/medium/067-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-12.png b/public/media-src/avatar/medium/067-12.png deleted file mode 100644 index f3e70e10a..000000000 Binary files a/public/media-src/avatar/medium/067-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-2.png b/public/media-src/avatar/medium/067-2.png deleted file mode 100755 index f1580f1c7..000000000 Binary files a/public/media-src/avatar/medium/067-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-3.png b/public/media-src/avatar/medium/067-3.png deleted file mode 100755 index 9f97044e7..000000000 Binary files a/public/media-src/avatar/medium/067-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-4.png b/public/media-src/avatar/medium/067-4.png deleted file mode 100755 index c68a524f2..000000000 Binary files a/public/media-src/avatar/medium/067-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-5.png b/public/media-src/avatar/medium/067-5.png deleted file mode 100755 index 37360dcc7..000000000 Binary files a/public/media-src/avatar/medium/067-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-6.png b/public/media-src/avatar/medium/067-6.png deleted file mode 100755 index a5030c24a..000000000 Binary files a/public/media-src/avatar/medium/067-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-7.png b/public/media-src/avatar/medium/067-7.png deleted file mode 100755 index ea74c1f76..000000000 Binary files a/public/media-src/avatar/medium/067-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-8.png b/public/media-src/avatar/medium/067-8.png deleted file mode 100644 index 81d9b888e..000000000 Binary files a/public/media-src/avatar/medium/067-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/067-9.png b/public/media-src/avatar/medium/067-9.png deleted file mode 100644 index 9367e2157..000000000 Binary files a/public/media-src/avatar/medium/067-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-1.png b/public/media-src/avatar/medium/068-1.png deleted file mode 100755 index 7626d4986..000000000 Binary files a/public/media-src/avatar/medium/068-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-10.png b/public/media-src/avatar/medium/068-10.png deleted file mode 100644 index e9142b116..000000000 Binary files a/public/media-src/avatar/medium/068-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-11.png b/public/media-src/avatar/medium/068-11.png deleted file mode 100644 index 16ffae53c..000000000 Binary files a/public/media-src/avatar/medium/068-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-12.png b/public/media-src/avatar/medium/068-12.png deleted file mode 100644 index 8e6745be8..000000000 Binary files a/public/media-src/avatar/medium/068-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-2.png b/public/media-src/avatar/medium/068-2.png deleted file mode 100755 index 4da1b8d7a..000000000 Binary files a/public/media-src/avatar/medium/068-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-3.png b/public/media-src/avatar/medium/068-3.png deleted file mode 100755 index 300cc352f..000000000 Binary files a/public/media-src/avatar/medium/068-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-4.png b/public/media-src/avatar/medium/068-4.png deleted file mode 100755 index d952f8a0c..000000000 Binary files a/public/media-src/avatar/medium/068-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-5.png b/public/media-src/avatar/medium/068-5.png deleted file mode 100755 index 8fd3a1805..000000000 Binary files a/public/media-src/avatar/medium/068-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-6.png b/public/media-src/avatar/medium/068-6.png deleted file mode 100755 index 76d0f1c9a..000000000 Binary files a/public/media-src/avatar/medium/068-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-7.png b/public/media-src/avatar/medium/068-7.png deleted file mode 100755 index d5c437230..000000000 Binary files a/public/media-src/avatar/medium/068-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-8.png b/public/media-src/avatar/medium/068-8.png deleted file mode 100644 index ac7e84df3..000000000 Binary files a/public/media-src/avatar/medium/068-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/068-9.png b/public/media-src/avatar/medium/068-9.png deleted file mode 100644 index a4ec125b7..000000000 Binary files a/public/media-src/avatar/medium/068-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-1.png b/public/media-src/avatar/medium/069-1.png deleted file mode 100755 index eed8518f0..000000000 Binary files a/public/media-src/avatar/medium/069-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-10.png b/public/media-src/avatar/medium/069-10.png deleted file mode 100644 index 4af952e44..000000000 Binary files a/public/media-src/avatar/medium/069-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-11.png b/public/media-src/avatar/medium/069-11.png deleted file mode 100644 index 514ca6580..000000000 Binary files a/public/media-src/avatar/medium/069-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-12.png b/public/media-src/avatar/medium/069-12.png deleted file mode 100644 index 4099aaad2..000000000 Binary files a/public/media-src/avatar/medium/069-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-2.png b/public/media-src/avatar/medium/069-2.png deleted file mode 100755 index f97112a1b..000000000 Binary files a/public/media-src/avatar/medium/069-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-3.png b/public/media-src/avatar/medium/069-3.png deleted file mode 100755 index 0f117eb94..000000000 Binary files a/public/media-src/avatar/medium/069-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-4.png b/public/media-src/avatar/medium/069-4.png deleted file mode 100755 index 380363092..000000000 Binary files a/public/media-src/avatar/medium/069-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-5.png b/public/media-src/avatar/medium/069-5.png deleted file mode 100755 index 4c928ad60..000000000 Binary files a/public/media-src/avatar/medium/069-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-6.png b/public/media-src/avatar/medium/069-6.png deleted file mode 100755 index 43523cb34..000000000 Binary files a/public/media-src/avatar/medium/069-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-7.png b/public/media-src/avatar/medium/069-7.png deleted file mode 100755 index b239d5b8b..000000000 Binary files a/public/media-src/avatar/medium/069-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-8.png b/public/media-src/avatar/medium/069-8.png deleted file mode 100644 index f4aa9b66f..000000000 Binary files a/public/media-src/avatar/medium/069-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/069-9.png b/public/media-src/avatar/medium/069-9.png deleted file mode 100644 index 53a78d5e4..000000000 Binary files a/public/media-src/avatar/medium/069-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-1.png b/public/media-src/avatar/medium/070-1.png deleted file mode 100755 index 792270878..000000000 Binary files a/public/media-src/avatar/medium/070-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-10.png b/public/media-src/avatar/medium/070-10.png deleted file mode 100644 index 6d256d281..000000000 Binary files a/public/media-src/avatar/medium/070-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-11.png b/public/media-src/avatar/medium/070-11.png deleted file mode 100644 index 8eea6d6c3..000000000 Binary files a/public/media-src/avatar/medium/070-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-12.png b/public/media-src/avatar/medium/070-12.png deleted file mode 100644 index f908b1297..000000000 Binary files a/public/media-src/avatar/medium/070-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-2.png b/public/media-src/avatar/medium/070-2.png deleted file mode 100755 index a59bcfc02..000000000 Binary files a/public/media-src/avatar/medium/070-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-3.png b/public/media-src/avatar/medium/070-3.png deleted file mode 100755 index 04996c3c8..000000000 Binary files a/public/media-src/avatar/medium/070-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-4.png b/public/media-src/avatar/medium/070-4.png deleted file mode 100755 index cb6fc3372..000000000 Binary files a/public/media-src/avatar/medium/070-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-5.png b/public/media-src/avatar/medium/070-5.png deleted file mode 100755 index 58573ac70..000000000 Binary files a/public/media-src/avatar/medium/070-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-6.png b/public/media-src/avatar/medium/070-6.png deleted file mode 100755 index 53575b5d4..000000000 Binary files a/public/media-src/avatar/medium/070-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-7.png b/public/media-src/avatar/medium/070-7.png deleted file mode 100755 index bbaad75c5..000000000 Binary files a/public/media-src/avatar/medium/070-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-8.png b/public/media-src/avatar/medium/070-8.png deleted file mode 100644 index 93802112d..000000000 Binary files a/public/media-src/avatar/medium/070-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/070-9.png b/public/media-src/avatar/medium/070-9.png deleted file mode 100644 index a0ed3e43a..000000000 Binary files a/public/media-src/avatar/medium/070-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-1.png b/public/media-src/avatar/medium/071-1.png deleted file mode 100755 index 7f0fa5e30..000000000 Binary files a/public/media-src/avatar/medium/071-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-10.png b/public/media-src/avatar/medium/071-10.png deleted file mode 100644 index cfdb2458d..000000000 Binary files a/public/media-src/avatar/medium/071-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-11.png b/public/media-src/avatar/medium/071-11.png deleted file mode 100644 index 2dd007666..000000000 Binary files a/public/media-src/avatar/medium/071-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-12.png b/public/media-src/avatar/medium/071-12.png deleted file mode 100644 index dec5b8cd3..000000000 Binary files a/public/media-src/avatar/medium/071-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-2.png b/public/media-src/avatar/medium/071-2.png deleted file mode 100755 index e57ae5ff0..000000000 Binary files a/public/media-src/avatar/medium/071-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-3.png b/public/media-src/avatar/medium/071-3.png deleted file mode 100755 index a9fdfe703..000000000 Binary files a/public/media-src/avatar/medium/071-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-4.png b/public/media-src/avatar/medium/071-4.png deleted file mode 100755 index cf45926b2..000000000 Binary files a/public/media-src/avatar/medium/071-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-5.png b/public/media-src/avatar/medium/071-5.png deleted file mode 100755 index b5f59caa2..000000000 Binary files a/public/media-src/avatar/medium/071-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-6.png b/public/media-src/avatar/medium/071-6.png deleted file mode 100755 index fcc99ef39..000000000 Binary files a/public/media-src/avatar/medium/071-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-7.png b/public/media-src/avatar/medium/071-7.png deleted file mode 100755 index abf265137..000000000 Binary files a/public/media-src/avatar/medium/071-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-8.png b/public/media-src/avatar/medium/071-8.png deleted file mode 100644 index c21b91505..000000000 Binary files a/public/media-src/avatar/medium/071-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/071-9.png b/public/media-src/avatar/medium/071-9.png deleted file mode 100644 index 69d498dea..000000000 Binary files a/public/media-src/avatar/medium/071-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-1.png b/public/media-src/avatar/medium/072-1.png deleted file mode 100755 index 5d49570c7..000000000 Binary files a/public/media-src/avatar/medium/072-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-10.png b/public/media-src/avatar/medium/072-10.png deleted file mode 100644 index 5504e8a67..000000000 Binary files a/public/media-src/avatar/medium/072-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-11.png b/public/media-src/avatar/medium/072-11.png deleted file mode 100644 index a5cdb724f..000000000 Binary files a/public/media-src/avatar/medium/072-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-12.png b/public/media-src/avatar/medium/072-12.png deleted file mode 100644 index 925e68f60..000000000 Binary files a/public/media-src/avatar/medium/072-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-2.png b/public/media-src/avatar/medium/072-2.png deleted file mode 100755 index 3b1cd0f77..000000000 Binary files a/public/media-src/avatar/medium/072-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-3.png b/public/media-src/avatar/medium/072-3.png deleted file mode 100755 index 3f5bffd36..000000000 Binary files a/public/media-src/avatar/medium/072-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-4.png b/public/media-src/avatar/medium/072-4.png deleted file mode 100755 index cd713036b..000000000 Binary files a/public/media-src/avatar/medium/072-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-5.png b/public/media-src/avatar/medium/072-5.png deleted file mode 100755 index 00f68a73f..000000000 Binary files a/public/media-src/avatar/medium/072-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-6.png b/public/media-src/avatar/medium/072-6.png deleted file mode 100755 index 30cd65884..000000000 Binary files a/public/media-src/avatar/medium/072-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-7.png b/public/media-src/avatar/medium/072-7.png deleted file mode 100755 index 67a017809..000000000 Binary files a/public/media-src/avatar/medium/072-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-8.png b/public/media-src/avatar/medium/072-8.png deleted file mode 100644 index f5d2ff55c..000000000 Binary files a/public/media-src/avatar/medium/072-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/072-9.png b/public/media-src/avatar/medium/072-9.png deleted file mode 100644 index c73d612d5..000000000 Binary files a/public/media-src/avatar/medium/072-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-1.png b/public/media-src/avatar/medium/073-1.png deleted file mode 100755 index 01f699299..000000000 Binary files a/public/media-src/avatar/medium/073-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-10.png b/public/media-src/avatar/medium/073-10.png deleted file mode 100644 index 2bf1dfc1b..000000000 Binary files a/public/media-src/avatar/medium/073-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-11.png b/public/media-src/avatar/medium/073-11.png deleted file mode 100644 index febdadb02..000000000 Binary files a/public/media-src/avatar/medium/073-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-12.png b/public/media-src/avatar/medium/073-12.png deleted file mode 100644 index a065942f0..000000000 Binary files a/public/media-src/avatar/medium/073-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-2.png b/public/media-src/avatar/medium/073-2.png deleted file mode 100755 index c01960bd9..000000000 Binary files a/public/media-src/avatar/medium/073-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-3.png b/public/media-src/avatar/medium/073-3.png deleted file mode 100755 index 31ee0434c..000000000 Binary files a/public/media-src/avatar/medium/073-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-4.png b/public/media-src/avatar/medium/073-4.png deleted file mode 100755 index 3c64e3875..000000000 Binary files a/public/media-src/avatar/medium/073-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-5.png b/public/media-src/avatar/medium/073-5.png deleted file mode 100755 index 32dea7304..000000000 Binary files a/public/media-src/avatar/medium/073-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-6.png b/public/media-src/avatar/medium/073-6.png deleted file mode 100755 index be5f9450a..000000000 Binary files a/public/media-src/avatar/medium/073-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-7.png b/public/media-src/avatar/medium/073-7.png deleted file mode 100755 index 364d0aab8..000000000 Binary files a/public/media-src/avatar/medium/073-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-8.png b/public/media-src/avatar/medium/073-8.png deleted file mode 100644 index 5687f3df7..000000000 Binary files a/public/media-src/avatar/medium/073-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/073-9.png b/public/media-src/avatar/medium/073-9.png deleted file mode 100644 index 2787ae606..000000000 Binary files a/public/media-src/avatar/medium/073-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-1.png b/public/media-src/avatar/medium/074-1.png deleted file mode 100755 index 7178d9d42..000000000 Binary files a/public/media-src/avatar/medium/074-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-10.png b/public/media-src/avatar/medium/074-10.png deleted file mode 100644 index e32220c7c..000000000 Binary files a/public/media-src/avatar/medium/074-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-11.png b/public/media-src/avatar/medium/074-11.png deleted file mode 100644 index 389eb55f5..000000000 Binary files a/public/media-src/avatar/medium/074-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-12.png b/public/media-src/avatar/medium/074-12.png deleted file mode 100644 index ed84a7b1d..000000000 Binary files a/public/media-src/avatar/medium/074-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-2.png b/public/media-src/avatar/medium/074-2.png deleted file mode 100755 index 76635a0c8..000000000 Binary files a/public/media-src/avatar/medium/074-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-3.png b/public/media-src/avatar/medium/074-3.png deleted file mode 100755 index eaf9fb49e..000000000 Binary files a/public/media-src/avatar/medium/074-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-4.png b/public/media-src/avatar/medium/074-4.png deleted file mode 100755 index af368ec42..000000000 Binary files a/public/media-src/avatar/medium/074-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-5.png b/public/media-src/avatar/medium/074-5.png deleted file mode 100755 index 669d493fd..000000000 Binary files a/public/media-src/avatar/medium/074-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-6.png b/public/media-src/avatar/medium/074-6.png deleted file mode 100755 index b4523c099..000000000 Binary files a/public/media-src/avatar/medium/074-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-7.png b/public/media-src/avatar/medium/074-7.png deleted file mode 100755 index 2bc26e315..000000000 Binary files a/public/media-src/avatar/medium/074-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-8.png b/public/media-src/avatar/medium/074-8.png deleted file mode 100644 index 4d62a5404..000000000 Binary files a/public/media-src/avatar/medium/074-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/074-9.png b/public/media-src/avatar/medium/074-9.png deleted file mode 100644 index 968c47d47..000000000 Binary files a/public/media-src/avatar/medium/074-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-1.png b/public/media-src/avatar/medium/075-1.png deleted file mode 100755 index 9c9a1303a..000000000 Binary files a/public/media-src/avatar/medium/075-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-10.png b/public/media-src/avatar/medium/075-10.png deleted file mode 100644 index bf0303078..000000000 Binary files a/public/media-src/avatar/medium/075-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-11.png b/public/media-src/avatar/medium/075-11.png deleted file mode 100644 index a8c518255..000000000 Binary files a/public/media-src/avatar/medium/075-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-12.png b/public/media-src/avatar/medium/075-12.png deleted file mode 100644 index e90998949..000000000 Binary files a/public/media-src/avatar/medium/075-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-2.png b/public/media-src/avatar/medium/075-2.png deleted file mode 100755 index 076720698..000000000 Binary files a/public/media-src/avatar/medium/075-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-3.png b/public/media-src/avatar/medium/075-3.png deleted file mode 100755 index 94a2031d6..000000000 Binary files a/public/media-src/avatar/medium/075-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-4.png b/public/media-src/avatar/medium/075-4.png deleted file mode 100755 index 25e5f9f38..000000000 Binary files a/public/media-src/avatar/medium/075-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-5.png b/public/media-src/avatar/medium/075-5.png deleted file mode 100755 index df0c10b7e..000000000 Binary files a/public/media-src/avatar/medium/075-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-6.png b/public/media-src/avatar/medium/075-6.png deleted file mode 100755 index 2727b4875..000000000 Binary files a/public/media-src/avatar/medium/075-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-7.png b/public/media-src/avatar/medium/075-7.png deleted file mode 100755 index 7a707af7b..000000000 Binary files a/public/media-src/avatar/medium/075-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-8.png b/public/media-src/avatar/medium/075-8.png deleted file mode 100644 index 5e515612f..000000000 Binary files a/public/media-src/avatar/medium/075-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/075-9.png b/public/media-src/avatar/medium/075-9.png deleted file mode 100644 index fc36903a5..000000000 Binary files a/public/media-src/avatar/medium/075-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-1.png b/public/media-src/avatar/medium/076-1.png deleted file mode 100755 index 4e4dcddd4..000000000 Binary files a/public/media-src/avatar/medium/076-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-10.png b/public/media-src/avatar/medium/076-10.png deleted file mode 100644 index 2482e680b..000000000 Binary files a/public/media-src/avatar/medium/076-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-11.png b/public/media-src/avatar/medium/076-11.png deleted file mode 100644 index 948b82556..000000000 Binary files a/public/media-src/avatar/medium/076-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-12.png b/public/media-src/avatar/medium/076-12.png deleted file mode 100644 index 0832855fb..000000000 Binary files a/public/media-src/avatar/medium/076-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-2.png b/public/media-src/avatar/medium/076-2.png deleted file mode 100755 index bf155b369..000000000 Binary files a/public/media-src/avatar/medium/076-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-3.png b/public/media-src/avatar/medium/076-3.png deleted file mode 100755 index 9b07fa15b..000000000 Binary files a/public/media-src/avatar/medium/076-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-4.png b/public/media-src/avatar/medium/076-4.png deleted file mode 100755 index 4f2288260..000000000 Binary files a/public/media-src/avatar/medium/076-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-5.png b/public/media-src/avatar/medium/076-5.png deleted file mode 100755 index 3b112c5c2..000000000 Binary files a/public/media-src/avatar/medium/076-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-6.png b/public/media-src/avatar/medium/076-6.png deleted file mode 100755 index ad078cb51..000000000 Binary files a/public/media-src/avatar/medium/076-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-7.png b/public/media-src/avatar/medium/076-7.png deleted file mode 100755 index 9308186ae..000000000 Binary files a/public/media-src/avatar/medium/076-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-8.png b/public/media-src/avatar/medium/076-8.png deleted file mode 100644 index 8fa3dbdca..000000000 Binary files a/public/media-src/avatar/medium/076-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/076-9.png b/public/media-src/avatar/medium/076-9.png deleted file mode 100644 index dccbc15fc..000000000 Binary files a/public/media-src/avatar/medium/076-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-1.png b/public/media-src/avatar/medium/077-1.png deleted file mode 100755 index 171e5a587..000000000 Binary files a/public/media-src/avatar/medium/077-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-10.png b/public/media-src/avatar/medium/077-10.png deleted file mode 100644 index 6cfae7421..000000000 Binary files a/public/media-src/avatar/medium/077-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-11.png b/public/media-src/avatar/medium/077-11.png deleted file mode 100644 index e90b6cd08..000000000 Binary files a/public/media-src/avatar/medium/077-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-12.png b/public/media-src/avatar/medium/077-12.png deleted file mode 100644 index 084581d40..000000000 Binary files a/public/media-src/avatar/medium/077-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-2.png b/public/media-src/avatar/medium/077-2.png deleted file mode 100755 index c8373a8fb..000000000 Binary files a/public/media-src/avatar/medium/077-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-3.png b/public/media-src/avatar/medium/077-3.png deleted file mode 100755 index 24c779693..000000000 Binary files a/public/media-src/avatar/medium/077-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-4.png b/public/media-src/avatar/medium/077-4.png deleted file mode 100755 index adb25ec87..000000000 Binary files a/public/media-src/avatar/medium/077-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-5.png b/public/media-src/avatar/medium/077-5.png deleted file mode 100755 index 6005d61be..000000000 Binary files a/public/media-src/avatar/medium/077-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-6.png b/public/media-src/avatar/medium/077-6.png deleted file mode 100755 index 40ad23854..000000000 Binary files a/public/media-src/avatar/medium/077-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-7.png b/public/media-src/avatar/medium/077-7.png deleted file mode 100755 index 392ed01d0..000000000 Binary files a/public/media-src/avatar/medium/077-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-8.png b/public/media-src/avatar/medium/077-8.png deleted file mode 100644 index c654669a1..000000000 Binary files a/public/media-src/avatar/medium/077-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/077-9.png b/public/media-src/avatar/medium/077-9.png deleted file mode 100644 index cc6573f10..000000000 Binary files a/public/media-src/avatar/medium/077-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-1.png b/public/media-src/avatar/medium/078-1.png deleted file mode 100755 index d80be22ce..000000000 Binary files a/public/media-src/avatar/medium/078-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-10.png b/public/media-src/avatar/medium/078-10.png deleted file mode 100644 index c79997368..000000000 Binary files a/public/media-src/avatar/medium/078-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-11.png b/public/media-src/avatar/medium/078-11.png deleted file mode 100644 index edd17b628..000000000 Binary files a/public/media-src/avatar/medium/078-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-12.png b/public/media-src/avatar/medium/078-12.png deleted file mode 100644 index 5f2a414f9..000000000 Binary files a/public/media-src/avatar/medium/078-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-2.png b/public/media-src/avatar/medium/078-2.png deleted file mode 100755 index 5a45a16bd..000000000 Binary files a/public/media-src/avatar/medium/078-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-3.png b/public/media-src/avatar/medium/078-3.png deleted file mode 100755 index c4c695532..000000000 Binary files a/public/media-src/avatar/medium/078-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-4.png b/public/media-src/avatar/medium/078-4.png deleted file mode 100755 index a29e65b3b..000000000 Binary files a/public/media-src/avatar/medium/078-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-5.png b/public/media-src/avatar/medium/078-5.png deleted file mode 100755 index 118aa7639..000000000 Binary files a/public/media-src/avatar/medium/078-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-6.png b/public/media-src/avatar/medium/078-6.png deleted file mode 100755 index a2084c42f..000000000 Binary files a/public/media-src/avatar/medium/078-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-7.png b/public/media-src/avatar/medium/078-7.png deleted file mode 100755 index 6ce53da8d..000000000 Binary files a/public/media-src/avatar/medium/078-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-8.png b/public/media-src/avatar/medium/078-8.png deleted file mode 100644 index 35368602c..000000000 Binary files a/public/media-src/avatar/medium/078-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/078-9.png b/public/media-src/avatar/medium/078-9.png deleted file mode 100644 index 55d1cb030..000000000 Binary files a/public/media-src/avatar/medium/078-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-1.png b/public/media-src/avatar/medium/079-1.png deleted file mode 100755 index 3f4d28c91..000000000 Binary files a/public/media-src/avatar/medium/079-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-10.png b/public/media-src/avatar/medium/079-10.png deleted file mode 100644 index 4dd8d5585..000000000 Binary files a/public/media-src/avatar/medium/079-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-11.png b/public/media-src/avatar/medium/079-11.png deleted file mode 100644 index 226dde82f..000000000 Binary files a/public/media-src/avatar/medium/079-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-12.png b/public/media-src/avatar/medium/079-12.png deleted file mode 100644 index 3cb3b037b..000000000 Binary files a/public/media-src/avatar/medium/079-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-2.png b/public/media-src/avatar/medium/079-2.png deleted file mode 100755 index f6e36645a..000000000 Binary files a/public/media-src/avatar/medium/079-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-3.png b/public/media-src/avatar/medium/079-3.png deleted file mode 100755 index 79400591c..000000000 Binary files a/public/media-src/avatar/medium/079-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-4.png b/public/media-src/avatar/medium/079-4.png deleted file mode 100755 index ba2b8f29c..000000000 Binary files a/public/media-src/avatar/medium/079-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-5.png b/public/media-src/avatar/medium/079-5.png deleted file mode 100755 index 667215ba8..000000000 Binary files a/public/media-src/avatar/medium/079-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-6.png b/public/media-src/avatar/medium/079-6.png deleted file mode 100755 index 3b415f186..000000000 Binary files a/public/media-src/avatar/medium/079-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-7.png b/public/media-src/avatar/medium/079-7.png deleted file mode 100755 index 010a39b0d..000000000 Binary files a/public/media-src/avatar/medium/079-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-8.png b/public/media-src/avatar/medium/079-8.png deleted file mode 100644 index 62a0ba79b..000000000 Binary files a/public/media-src/avatar/medium/079-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/079-9.png b/public/media-src/avatar/medium/079-9.png deleted file mode 100644 index eeb8f8cea..000000000 Binary files a/public/media-src/avatar/medium/079-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-1.png b/public/media-src/avatar/medium/080-1.png deleted file mode 100755 index e33575c34..000000000 Binary files a/public/media-src/avatar/medium/080-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-10.png b/public/media-src/avatar/medium/080-10.png deleted file mode 100644 index d02ede499..000000000 Binary files a/public/media-src/avatar/medium/080-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-11.png b/public/media-src/avatar/medium/080-11.png deleted file mode 100644 index 9827c2bce..000000000 Binary files a/public/media-src/avatar/medium/080-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-12.png b/public/media-src/avatar/medium/080-12.png deleted file mode 100644 index 768457b96..000000000 Binary files a/public/media-src/avatar/medium/080-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-2.png b/public/media-src/avatar/medium/080-2.png deleted file mode 100755 index 821dde46d..000000000 Binary files a/public/media-src/avatar/medium/080-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-3.png b/public/media-src/avatar/medium/080-3.png deleted file mode 100755 index de3b53c1d..000000000 Binary files a/public/media-src/avatar/medium/080-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-4.png b/public/media-src/avatar/medium/080-4.png deleted file mode 100755 index 298c8b68f..000000000 Binary files a/public/media-src/avatar/medium/080-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-5.png b/public/media-src/avatar/medium/080-5.png deleted file mode 100755 index 7d51c2f4f..000000000 Binary files a/public/media-src/avatar/medium/080-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-6.png b/public/media-src/avatar/medium/080-6.png deleted file mode 100755 index 8b21040c1..000000000 Binary files a/public/media-src/avatar/medium/080-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-7.png b/public/media-src/avatar/medium/080-7.png deleted file mode 100755 index 904eeefe2..000000000 Binary files a/public/media-src/avatar/medium/080-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-8.png b/public/media-src/avatar/medium/080-8.png deleted file mode 100644 index 1ef225912..000000000 Binary files a/public/media-src/avatar/medium/080-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/080-9.png b/public/media-src/avatar/medium/080-9.png deleted file mode 100644 index 89a9fa44e..000000000 Binary files a/public/media-src/avatar/medium/080-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-1.png b/public/media-src/avatar/medium/900-1.png deleted file mode 100644 index 85c74a335..000000000 Binary files a/public/media-src/avatar/medium/900-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-10.png b/public/media-src/avatar/medium/900-10.png deleted file mode 100644 index 45d152579..000000000 Binary files a/public/media-src/avatar/medium/900-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-11.png b/public/media-src/avatar/medium/900-11.png deleted file mode 100644 index 73ea02c0d..000000000 Binary files a/public/media-src/avatar/medium/900-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-12.png b/public/media-src/avatar/medium/900-12.png deleted file mode 100644 index 9e17f363f..000000000 Binary files a/public/media-src/avatar/medium/900-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-2.png b/public/media-src/avatar/medium/900-2.png deleted file mode 100644 index d3da53e3d..000000000 Binary files a/public/media-src/avatar/medium/900-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-3.png b/public/media-src/avatar/medium/900-3.png deleted file mode 100644 index ddb6f406b..000000000 Binary files a/public/media-src/avatar/medium/900-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-4.png b/public/media-src/avatar/medium/900-4.png deleted file mode 100644 index 746b268d5..000000000 Binary files a/public/media-src/avatar/medium/900-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-5.png b/public/media-src/avatar/medium/900-5.png deleted file mode 100644 index 96ec40b16..000000000 Binary files a/public/media-src/avatar/medium/900-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-6.png b/public/media-src/avatar/medium/900-6.png deleted file mode 100644 index 9dfd6d388..000000000 Binary files a/public/media-src/avatar/medium/900-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-7.png b/public/media-src/avatar/medium/900-7.png deleted file mode 100644 index e2cc369f5..000000000 Binary files a/public/media-src/avatar/medium/900-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-8.png b/public/media-src/avatar/medium/900-8.png deleted file mode 100644 index 7ab788aed..000000000 Binary files a/public/media-src/avatar/medium/900-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/900-9.png b/public/media-src/avatar/medium/900-9.png deleted file mode 100644 index 2c73e0513..000000000 Binary files a/public/media-src/avatar/medium/900-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-1.png b/public/media-src/avatar/medium/901-1.png deleted file mode 100644 index 55da08855..000000000 Binary files a/public/media-src/avatar/medium/901-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-10.png b/public/media-src/avatar/medium/901-10.png deleted file mode 100644 index 524dafa69..000000000 Binary files a/public/media-src/avatar/medium/901-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-11.png b/public/media-src/avatar/medium/901-11.png deleted file mode 100644 index f4960db6a..000000000 Binary files a/public/media-src/avatar/medium/901-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-12.png b/public/media-src/avatar/medium/901-12.png deleted file mode 100644 index 7ba7e9f30..000000000 Binary files a/public/media-src/avatar/medium/901-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-2.png b/public/media-src/avatar/medium/901-2.png deleted file mode 100644 index 8849549d5..000000000 Binary files a/public/media-src/avatar/medium/901-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-3.png b/public/media-src/avatar/medium/901-3.png deleted file mode 100644 index 58ab1d784..000000000 Binary files a/public/media-src/avatar/medium/901-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-4.png b/public/media-src/avatar/medium/901-4.png deleted file mode 100644 index 8c7b9dd29..000000000 Binary files a/public/media-src/avatar/medium/901-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-5.png b/public/media-src/avatar/medium/901-5.png deleted file mode 100644 index d1561d418..000000000 Binary files a/public/media-src/avatar/medium/901-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-6.png b/public/media-src/avatar/medium/901-6.png deleted file mode 100644 index 4de61cabb..000000000 Binary files a/public/media-src/avatar/medium/901-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-7.png b/public/media-src/avatar/medium/901-7.png deleted file mode 100644 index 80abf786e..000000000 Binary files a/public/media-src/avatar/medium/901-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-8.png b/public/media-src/avatar/medium/901-8.png deleted file mode 100644 index 66daf1038..000000000 Binary files a/public/media-src/avatar/medium/901-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/901-9.png b/public/media-src/avatar/medium/901-9.png deleted file mode 100644 index f2efa59ae..000000000 Binary files a/public/media-src/avatar/medium/901-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-1.png b/public/media-src/avatar/medium/902-1.png deleted file mode 100644 index f9ae07a84..000000000 Binary files a/public/media-src/avatar/medium/902-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-10.png b/public/media-src/avatar/medium/902-10.png deleted file mode 100644 index b0568fc73..000000000 Binary files a/public/media-src/avatar/medium/902-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-11.png b/public/media-src/avatar/medium/902-11.png deleted file mode 100644 index e1e10427f..000000000 Binary files a/public/media-src/avatar/medium/902-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-12.png b/public/media-src/avatar/medium/902-12.png deleted file mode 100644 index 2fae01122..000000000 Binary files a/public/media-src/avatar/medium/902-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-2.png b/public/media-src/avatar/medium/902-2.png deleted file mode 100644 index c39333609..000000000 Binary files a/public/media-src/avatar/medium/902-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-3.png b/public/media-src/avatar/medium/902-3.png deleted file mode 100644 index c55f1f4e7..000000000 Binary files a/public/media-src/avatar/medium/902-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-4.png b/public/media-src/avatar/medium/902-4.png deleted file mode 100644 index 90d7e6d48..000000000 Binary files a/public/media-src/avatar/medium/902-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-5.png b/public/media-src/avatar/medium/902-5.png deleted file mode 100644 index 63ea5f4b7..000000000 Binary files a/public/media-src/avatar/medium/902-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-6.png b/public/media-src/avatar/medium/902-6.png deleted file mode 100644 index f5f8b3270..000000000 Binary files a/public/media-src/avatar/medium/902-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-7.png b/public/media-src/avatar/medium/902-7.png deleted file mode 100644 index 465423ea5..000000000 Binary files a/public/media-src/avatar/medium/902-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-8.png b/public/media-src/avatar/medium/902-8.png deleted file mode 100644 index 8ae0465f2..000000000 Binary files a/public/media-src/avatar/medium/902-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/902-9.png b/public/media-src/avatar/medium/902-9.png deleted file mode 100644 index 90986e629..000000000 Binary files a/public/media-src/avatar/medium/902-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-1.png b/public/media-src/avatar/medium/903-1.png deleted file mode 100644 index 0d6ac81a7..000000000 Binary files a/public/media-src/avatar/medium/903-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-10.png b/public/media-src/avatar/medium/903-10.png deleted file mode 100644 index aee32dfff..000000000 Binary files a/public/media-src/avatar/medium/903-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-11.png b/public/media-src/avatar/medium/903-11.png deleted file mode 100644 index b64ac3216..000000000 Binary files a/public/media-src/avatar/medium/903-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-12.png b/public/media-src/avatar/medium/903-12.png deleted file mode 100644 index c4bcd3af4..000000000 Binary files a/public/media-src/avatar/medium/903-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-2.png b/public/media-src/avatar/medium/903-2.png deleted file mode 100644 index 980367a73..000000000 Binary files a/public/media-src/avatar/medium/903-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-3.png b/public/media-src/avatar/medium/903-3.png deleted file mode 100644 index b7b10634b..000000000 Binary files a/public/media-src/avatar/medium/903-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-4.png b/public/media-src/avatar/medium/903-4.png deleted file mode 100644 index 9a82f981c..000000000 Binary files a/public/media-src/avatar/medium/903-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-5.png b/public/media-src/avatar/medium/903-5.png deleted file mode 100644 index e786eea65..000000000 Binary files a/public/media-src/avatar/medium/903-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-6.png b/public/media-src/avatar/medium/903-6.png deleted file mode 100644 index 8c5919049..000000000 Binary files a/public/media-src/avatar/medium/903-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-7.png b/public/media-src/avatar/medium/903-7.png deleted file mode 100644 index 341e7cb19..000000000 Binary files a/public/media-src/avatar/medium/903-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-8.png b/public/media-src/avatar/medium/903-8.png deleted file mode 100644 index 73622886a..000000000 Binary files a/public/media-src/avatar/medium/903-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/903-9.png b/public/media-src/avatar/medium/903-9.png deleted file mode 100644 index ab4d29896..000000000 Binary files a/public/media-src/avatar/medium/903-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-1.png b/public/media-src/avatar/medium/904-1.png deleted file mode 100644 index 623905b71..000000000 Binary files a/public/media-src/avatar/medium/904-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-10.png b/public/media-src/avatar/medium/904-10.png deleted file mode 100644 index aa982f107..000000000 Binary files a/public/media-src/avatar/medium/904-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-11.png b/public/media-src/avatar/medium/904-11.png deleted file mode 100644 index a403111f1..000000000 Binary files a/public/media-src/avatar/medium/904-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-12.png b/public/media-src/avatar/medium/904-12.png deleted file mode 100644 index e0bc26ad0..000000000 Binary files a/public/media-src/avatar/medium/904-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-2.png b/public/media-src/avatar/medium/904-2.png deleted file mode 100644 index 9a7623024..000000000 Binary files a/public/media-src/avatar/medium/904-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-3.png b/public/media-src/avatar/medium/904-3.png deleted file mode 100644 index 8d9b2084d..000000000 Binary files a/public/media-src/avatar/medium/904-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-4.png b/public/media-src/avatar/medium/904-4.png deleted file mode 100644 index 6baf15d9b..000000000 Binary files a/public/media-src/avatar/medium/904-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-5.png b/public/media-src/avatar/medium/904-5.png deleted file mode 100644 index 8e075dcae..000000000 Binary files a/public/media-src/avatar/medium/904-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-6.png b/public/media-src/avatar/medium/904-6.png deleted file mode 100644 index f10ebb696..000000000 Binary files a/public/media-src/avatar/medium/904-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-7.png b/public/media-src/avatar/medium/904-7.png deleted file mode 100644 index f035de815..000000000 Binary files a/public/media-src/avatar/medium/904-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-8.png b/public/media-src/avatar/medium/904-8.png deleted file mode 100644 index 274ffb360..000000000 Binary files a/public/media-src/avatar/medium/904-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/904-9.png b/public/media-src/avatar/medium/904-9.png deleted file mode 100644 index af1c78b27..000000000 Binary files a/public/media-src/avatar/medium/904-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-1.png b/public/media-src/avatar/medium/905-1.png deleted file mode 100644 index cc7f3a500..000000000 Binary files a/public/media-src/avatar/medium/905-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-10.png b/public/media-src/avatar/medium/905-10.png deleted file mode 100644 index 54e85c333..000000000 Binary files a/public/media-src/avatar/medium/905-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-11.png b/public/media-src/avatar/medium/905-11.png deleted file mode 100644 index 7cbc55b61..000000000 Binary files a/public/media-src/avatar/medium/905-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-12.png b/public/media-src/avatar/medium/905-12.png deleted file mode 100644 index 6c99c0e9a..000000000 Binary files a/public/media-src/avatar/medium/905-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-2.png b/public/media-src/avatar/medium/905-2.png deleted file mode 100644 index 5dee17d24..000000000 Binary files a/public/media-src/avatar/medium/905-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-3.png b/public/media-src/avatar/medium/905-3.png deleted file mode 100644 index 84f6ac9a7..000000000 Binary files a/public/media-src/avatar/medium/905-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-4.png b/public/media-src/avatar/medium/905-4.png deleted file mode 100644 index 9f41ae567..000000000 Binary files a/public/media-src/avatar/medium/905-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-5.png b/public/media-src/avatar/medium/905-5.png deleted file mode 100644 index 305a078dd..000000000 Binary files a/public/media-src/avatar/medium/905-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-6.png b/public/media-src/avatar/medium/905-6.png deleted file mode 100644 index d8fc64db0..000000000 Binary files a/public/media-src/avatar/medium/905-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-7.png b/public/media-src/avatar/medium/905-7.png deleted file mode 100644 index 9947711ab..000000000 Binary files a/public/media-src/avatar/medium/905-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-8.png b/public/media-src/avatar/medium/905-8.png deleted file mode 100644 index 2dd578296..000000000 Binary files a/public/media-src/avatar/medium/905-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/905-9.png b/public/media-src/avatar/medium/905-9.png deleted file mode 100644 index ea2d6da98..000000000 Binary files a/public/media-src/avatar/medium/905-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-1.png b/public/media-src/avatar/medium/color-1.png deleted file mode 100755 index dfc65c80f..000000000 Binary files a/public/media-src/avatar/medium/color-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-10.png b/public/media-src/avatar/medium/color-10.png deleted file mode 100644 index ff5db32f4..000000000 Binary files a/public/media-src/avatar/medium/color-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-11.png b/public/media-src/avatar/medium/color-11.png deleted file mode 100644 index a3688883f..000000000 Binary files a/public/media-src/avatar/medium/color-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-12.png b/public/media-src/avatar/medium/color-12.png deleted file mode 100644 index 37b742be2..000000000 Binary files a/public/media-src/avatar/medium/color-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-2.png b/public/media-src/avatar/medium/color-2.png deleted file mode 100755 index b99666055..000000000 Binary files a/public/media-src/avatar/medium/color-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-3.png b/public/media-src/avatar/medium/color-3.png deleted file mode 100755 index 5f8d667bb..000000000 Binary files a/public/media-src/avatar/medium/color-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-4.png b/public/media-src/avatar/medium/color-4.png deleted file mode 100755 index 9e74d3f21..000000000 Binary files a/public/media-src/avatar/medium/color-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-5.png b/public/media-src/avatar/medium/color-5.png deleted file mode 100755 index 5eda99c72..000000000 Binary files a/public/media-src/avatar/medium/color-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-6.png b/public/media-src/avatar/medium/color-6.png deleted file mode 100755 index 69b8147c3..000000000 Binary files a/public/media-src/avatar/medium/color-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-7.png b/public/media-src/avatar/medium/color-7.png deleted file mode 100755 index 12a1b65ee..000000000 Binary files a/public/media-src/avatar/medium/color-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-8.png b/public/media-src/avatar/medium/color-8.png deleted file mode 100644 index e2b116b15..000000000 Binary files a/public/media-src/avatar/medium/color-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/color-9.png b/public/media-src/avatar/medium/color-9.png deleted file mode 100644 index f02b6e6fa..000000000 Binary files a/public/media-src/avatar/medium/color-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/empty.png b/public/media-src/avatar/medium/empty.png deleted file mode 100755 index c947681a1..000000000 Binary files a/public/media-src/avatar/medium/empty.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-1.png b/public/media-src/avatar/medium/jm-1.png deleted file mode 100755 index d076834ea..000000000 Binary files a/public/media-src/avatar/medium/jm-1.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-10.png b/public/media-src/avatar/medium/jm-10.png deleted file mode 100644 index 3eb7440cd..000000000 Binary files a/public/media-src/avatar/medium/jm-10.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-11.png b/public/media-src/avatar/medium/jm-11.png deleted file mode 100644 index fcfe6843a..000000000 Binary files a/public/media-src/avatar/medium/jm-11.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-12.png b/public/media-src/avatar/medium/jm-12.png deleted file mode 100644 index 2ae764663..000000000 Binary files a/public/media-src/avatar/medium/jm-12.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-2.png b/public/media-src/avatar/medium/jm-2.png deleted file mode 100755 index 9c2b5880a..000000000 Binary files a/public/media-src/avatar/medium/jm-2.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-3.png b/public/media-src/avatar/medium/jm-3.png deleted file mode 100755 index 1dfb24669..000000000 Binary files a/public/media-src/avatar/medium/jm-3.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-4.png b/public/media-src/avatar/medium/jm-4.png deleted file mode 100755 index 11f773c0f..000000000 Binary files a/public/media-src/avatar/medium/jm-4.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-5.png b/public/media-src/avatar/medium/jm-5.png deleted file mode 100755 index 841060f26..000000000 Binary files a/public/media-src/avatar/medium/jm-5.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-6.png b/public/media-src/avatar/medium/jm-6.png deleted file mode 100755 index fbad7b94d..000000000 Binary files a/public/media-src/avatar/medium/jm-6.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-7.png b/public/media-src/avatar/medium/jm-7.png deleted file mode 100755 index 34cca9a48..000000000 Binary files a/public/media-src/avatar/medium/jm-7.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-8.png b/public/media-src/avatar/medium/jm-8.png deleted file mode 100644 index 625f49170..000000000 Binary files a/public/media-src/avatar/medium/jm-8.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm-9.png b/public/media-src/avatar/medium/jm-9.png deleted file mode 100644 index a5509a89d..000000000 Binary files a/public/media-src/avatar/medium/jm-9.png and /dev/null differ diff --git a/public/media-src/avatar/medium/jm.png b/public/media-src/avatar/medium/jm.png deleted file mode 100755 index 19cd501c9..000000000 Binary files a/public/media-src/avatar/medium/jm.png and /dev/null differ diff --git a/public/media-src/avatar/medium/multi.png b/public/media-src/avatar/medium/multi.png deleted file mode 100644 index a69dc3904..000000000 Binary files a/public/media-src/avatar/medium/multi.png and /dev/null differ diff --git a/public/media-src/avatar/medium/rebel.png b/public/media-src/avatar/medium/rebel.png deleted file mode 100755 index f500575d0..000000000 Binary files a/public/media-src/avatar/medium/rebel.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-1.png b/public/media-src/avatar/small/001-1.png deleted file mode 100755 index c92ce0460..000000000 Binary files a/public/media-src/avatar/small/001-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-10.png b/public/media-src/avatar/small/001-10.png deleted file mode 100644 index ce494039d..000000000 Binary files a/public/media-src/avatar/small/001-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-11.png b/public/media-src/avatar/small/001-11.png deleted file mode 100644 index d8eca9925..000000000 Binary files a/public/media-src/avatar/small/001-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-12.png b/public/media-src/avatar/small/001-12.png deleted file mode 100644 index 528983f21..000000000 Binary files a/public/media-src/avatar/small/001-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-2.png b/public/media-src/avatar/small/001-2.png deleted file mode 100755 index b735a20bd..000000000 Binary files a/public/media-src/avatar/small/001-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-3.png b/public/media-src/avatar/small/001-3.png deleted file mode 100755 index a557d917a..000000000 Binary files a/public/media-src/avatar/small/001-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-4.png b/public/media-src/avatar/small/001-4.png deleted file mode 100755 index 2b6310632..000000000 Binary files a/public/media-src/avatar/small/001-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-5.png b/public/media-src/avatar/small/001-5.png deleted file mode 100755 index 2879578aa..000000000 Binary files a/public/media-src/avatar/small/001-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-6.png b/public/media-src/avatar/small/001-6.png deleted file mode 100755 index 010ef88a8..000000000 Binary files a/public/media-src/avatar/small/001-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-7.png b/public/media-src/avatar/small/001-7.png deleted file mode 100755 index 27e17cdfe..000000000 Binary files a/public/media-src/avatar/small/001-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-8.png b/public/media-src/avatar/small/001-8.png deleted file mode 100644 index 20e8da5c9..000000000 Binary files a/public/media-src/avatar/small/001-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/001-9.png b/public/media-src/avatar/small/001-9.png deleted file mode 100644 index 275c18630..000000000 Binary files a/public/media-src/avatar/small/001-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-1.png b/public/media-src/avatar/small/002-1.png deleted file mode 100755 index ebb1154d5..000000000 Binary files a/public/media-src/avatar/small/002-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-10.png b/public/media-src/avatar/small/002-10.png deleted file mode 100644 index 1124d386a..000000000 Binary files a/public/media-src/avatar/small/002-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-11.png b/public/media-src/avatar/small/002-11.png deleted file mode 100644 index 701be9d22..000000000 Binary files a/public/media-src/avatar/small/002-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-12.png b/public/media-src/avatar/small/002-12.png deleted file mode 100644 index 8dae5cd4d..000000000 Binary files a/public/media-src/avatar/small/002-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-2.png b/public/media-src/avatar/small/002-2.png deleted file mode 100755 index 807d9c730..000000000 Binary files a/public/media-src/avatar/small/002-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-3.png b/public/media-src/avatar/small/002-3.png deleted file mode 100755 index 6d2da6bbf..000000000 Binary files a/public/media-src/avatar/small/002-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-4.png b/public/media-src/avatar/small/002-4.png deleted file mode 100755 index c535651f5..000000000 Binary files a/public/media-src/avatar/small/002-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-5.png b/public/media-src/avatar/small/002-5.png deleted file mode 100755 index ff450a84b..000000000 Binary files a/public/media-src/avatar/small/002-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-6.png b/public/media-src/avatar/small/002-6.png deleted file mode 100755 index cbf079800..000000000 Binary files a/public/media-src/avatar/small/002-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-7.png b/public/media-src/avatar/small/002-7.png deleted file mode 100755 index a1c53d8f3..000000000 Binary files a/public/media-src/avatar/small/002-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-8.png b/public/media-src/avatar/small/002-8.png deleted file mode 100644 index 2573b0aeb..000000000 Binary files a/public/media-src/avatar/small/002-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/002-9.png b/public/media-src/avatar/small/002-9.png deleted file mode 100644 index f62176324..000000000 Binary files a/public/media-src/avatar/small/002-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-1.png b/public/media-src/avatar/small/003-1.png deleted file mode 100755 index b2d995593..000000000 Binary files a/public/media-src/avatar/small/003-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-10.png b/public/media-src/avatar/small/003-10.png deleted file mode 100644 index ca129a80b..000000000 Binary files a/public/media-src/avatar/small/003-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-11.png b/public/media-src/avatar/small/003-11.png deleted file mode 100644 index 48d97d139..000000000 Binary files a/public/media-src/avatar/small/003-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-12.png b/public/media-src/avatar/small/003-12.png deleted file mode 100644 index 89d8c557e..000000000 Binary files a/public/media-src/avatar/small/003-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-2.png b/public/media-src/avatar/small/003-2.png deleted file mode 100755 index ca8dfb625..000000000 Binary files a/public/media-src/avatar/small/003-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-3.png b/public/media-src/avatar/small/003-3.png deleted file mode 100755 index 32583d4f1..000000000 Binary files a/public/media-src/avatar/small/003-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-4.png b/public/media-src/avatar/small/003-4.png deleted file mode 100755 index 0296d71c6..000000000 Binary files a/public/media-src/avatar/small/003-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-5.png b/public/media-src/avatar/small/003-5.png deleted file mode 100755 index 452c511b3..000000000 Binary files a/public/media-src/avatar/small/003-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-6.png b/public/media-src/avatar/small/003-6.png deleted file mode 100755 index e43090ba6..000000000 Binary files a/public/media-src/avatar/small/003-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-7.png b/public/media-src/avatar/small/003-7.png deleted file mode 100755 index 3bedb54ec..000000000 Binary files a/public/media-src/avatar/small/003-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-8.png b/public/media-src/avatar/small/003-8.png deleted file mode 100644 index ca0bef391..000000000 Binary files a/public/media-src/avatar/small/003-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/003-9.png b/public/media-src/avatar/small/003-9.png deleted file mode 100644 index 155d735fc..000000000 Binary files a/public/media-src/avatar/small/003-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-1.png b/public/media-src/avatar/small/004-1.png deleted file mode 100755 index ef22c7460..000000000 Binary files a/public/media-src/avatar/small/004-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-10.png b/public/media-src/avatar/small/004-10.png deleted file mode 100644 index 97c00b0c4..000000000 Binary files a/public/media-src/avatar/small/004-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-11.png b/public/media-src/avatar/small/004-11.png deleted file mode 100644 index 29d711142..000000000 Binary files a/public/media-src/avatar/small/004-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-12.png b/public/media-src/avatar/small/004-12.png deleted file mode 100644 index da2ae858d..000000000 Binary files a/public/media-src/avatar/small/004-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-2.png b/public/media-src/avatar/small/004-2.png deleted file mode 100755 index 9997e2ed3..000000000 Binary files a/public/media-src/avatar/small/004-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-3.png b/public/media-src/avatar/small/004-3.png deleted file mode 100755 index 239406896..000000000 Binary files a/public/media-src/avatar/small/004-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-4.png b/public/media-src/avatar/small/004-4.png deleted file mode 100755 index ba09a9602..000000000 Binary files a/public/media-src/avatar/small/004-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-5.png b/public/media-src/avatar/small/004-5.png deleted file mode 100755 index 3920aa174..000000000 Binary files a/public/media-src/avatar/small/004-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-6.png b/public/media-src/avatar/small/004-6.png deleted file mode 100755 index 283d2a2a3..000000000 Binary files a/public/media-src/avatar/small/004-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-7.png b/public/media-src/avatar/small/004-7.png deleted file mode 100755 index b8ef64bac..000000000 Binary files a/public/media-src/avatar/small/004-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-8.png b/public/media-src/avatar/small/004-8.png deleted file mode 100644 index dd36e6e7c..000000000 Binary files a/public/media-src/avatar/small/004-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/004-9.png b/public/media-src/avatar/small/004-9.png deleted file mode 100644 index 6d83ccd14..000000000 Binary files a/public/media-src/avatar/small/004-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-1.png b/public/media-src/avatar/small/005-1.png deleted file mode 100755 index d092478c3..000000000 Binary files a/public/media-src/avatar/small/005-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-10.png b/public/media-src/avatar/small/005-10.png deleted file mode 100644 index 0945c47bb..000000000 Binary files a/public/media-src/avatar/small/005-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-11.png b/public/media-src/avatar/small/005-11.png deleted file mode 100644 index 577a15d94..000000000 Binary files a/public/media-src/avatar/small/005-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-12.png b/public/media-src/avatar/small/005-12.png deleted file mode 100644 index d1df2a366..000000000 Binary files a/public/media-src/avatar/small/005-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-2.png b/public/media-src/avatar/small/005-2.png deleted file mode 100755 index 64c609ab8..000000000 Binary files a/public/media-src/avatar/small/005-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-3.png b/public/media-src/avatar/small/005-3.png deleted file mode 100755 index 9cf9ff392..000000000 Binary files a/public/media-src/avatar/small/005-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-4.png b/public/media-src/avatar/small/005-4.png deleted file mode 100755 index cac4f3956..000000000 Binary files a/public/media-src/avatar/small/005-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-5.png b/public/media-src/avatar/small/005-5.png deleted file mode 100755 index 87b0b571c..000000000 Binary files a/public/media-src/avatar/small/005-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-6.png b/public/media-src/avatar/small/005-6.png deleted file mode 100755 index 4bcc31b39..000000000 Binary files a/public/media-src/avatar/small/005-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-7.png b/public/media-src/avatar/small/005-7.png deleted file mode 100755 index a0c5c20c6..000000000 Binary files a/public/media-src/avatar/small/005-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-8.png b/public/media-src/avatar/small/005-8.png deleted file mode 100644 index dbe346efe..000000000 Binary files a/public/media-src/avatar/small/005-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/005-9.png b/public/media-src/avatar/small/005-9.png deleted file mode 100644 index 7b292e8fb..000000000 Binary files a/public/media-src/avatar/small/005-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-1.png b/public/media-src/avatar/small/006-1.png deleted file mode 100755 index a3228746e..000000000 Binary files a/public/media-src/avatar/small/006-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-10.png b/public/media-src/avatar/small/006-10.png deleted file mode 100644 index 08e171220..000000000 Binary files a/public/media-src/avatar/small/006-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-11.png b/public/media-src/avatar/small/006-11.png deleted file mode 100644 index 8e8d7071f..000000000 Binary files a/public/media-src/avatar/small/006-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-12.png b/public/media-src/avatar/small/006-12.png deleted file mode 100644 index 0bea318b4..000000000 Binary files a/public/media-src/avatar/small/006-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-2.png b/public/media-src/avatar/small/006-2.png deleted file mode 100755 index 52194ae92..000000000 Binary files a/public/media-src/avatar/small/006-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-3.png b/public/media-src/avatar/small/006-3.png deleted file mode 100755 index dfb24d180..000000000 Binary files a/public/media-src/avatar/small/006-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-4.png b/public/media-src/avatar/small/006-4.png deleted file mode 100755 index 6d0afa352..000000000 Binary files a/public/media-src/avatar/small/006-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-5.png b/public/media-src/avatar/small/006-5.png deleted file mode 100755 index 107fa5aeb..000000000 Binary files a/public/media-src/avatar/small/006-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-6.png b/public/media-src/avatar/small/006-6.png deleted file mode 100755 index 93c41aefa..000000000 Binary files a/public/media-src/avatar/small/006-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-7.png b/public/media-src/avatar/small/006-7.png deleted file mode 100755 index 9da88933e..000000000 Binary files a/public/media-src/avatar/small/006-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-8.png b/public/media-src/avatar/small/006-8.png deleted file mode 100644 index 2eb1a20b2..000000000 Binary files a/public/media-src/avatar/small/006-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/006-9.png b/public/media-src/avatar/small/006-9.png deleted file mode 100644 index 0c5ada62a..000000000 Binary files a/public/media-src/avatar/small/006-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-1.png b/public/media-src/avatar/small/007-1.png deleted file mode 100755 index 241ecde56..000000000 Binary files a/public/media-src/avatar/small/007-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-10.png b/public/media-src/avatar/small/007-10.png deleted file mode 100644 index aee532780..000000000 Binary files a/public/media-src/avatar/small/007-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-11.png b/public/media-src/avatar/small/007-11.png deleted file mode 100644 index 94d161933..000000000 Binary files a/public/media-src/avatar/small/007-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-12.png b/public/media-src/avatar/small/007-12.png deleted file mode 100644 index 667651f4f..000000000 Binary files a/public/media-src/avatar/small/007-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-2.png b/public/media-src/avatar/small/007-2.png deleted file mode 100755 index 0b826f9f6..000000000 Binary files a/public/media-src/avatar/small/007-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-3.png b/public/media-src/avatar/small/007-3.png deleted file mode 100755 index 021dac0fc..000000000 Binary files a/public/media-src/avatar/small/007-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-4.png b/public/media-src/avatar/small/007-4.png deleted file mode 100755 index 48923634f..000000000 Binary files a/public/media-src/avatar/small/007-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-5.png b/public/media-src/avatar/small/007-5.png deleted file mode 100755 index 7c28d7484..000000000 Binary files a/public/media-src/avatar/small/007-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-6.png b/public/media-src/avatar/small/007-6.png deleted file mode 100755 index b07032ddc..000000000 Binary files a/public/media-src/avatar/small/007-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-7.png b/public/media-src/avatar/small/007-7.png deleted file mode 100755 index 575e744a7..000000000 Binary files a/public/media-src/avatar/small/007-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-8.png b/public/media-src/avatar/small/007-8.png deleted file mode 100644 index ff2638a11..000000000 Binary files a/public/media-src/avatar/small/007-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/007-9.png b/public/media-src/avatar/small/007-9.png deleted file mode 100644 index a98e57a27..000000000 Binary files a/public/media-src/avatar/small/007-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-1.png b/public/media-src/avatar/small/008-1.png deleted file mode 100755 index b211e8379..000000000 Binary files a/public/media-src/avatar/small/008-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-10.png b/public/media-src/avatar/small/008-10.png deleted file mode 100644 index 173baba22..000000000 Binary files a/public/media-src/avatar/small/008-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-11.png b/public/media-src/avatar/small/008-11.png deleted file mode 100644 index 09a3f3e86..000000000 Binary files a/public/media-src/avatar/small/008-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-12.png b/public/media-src/avatar/small/008-12.png deleted file mode 100644 index 112b2e63d..000000000 Binary files a/public/media-src/avatar/small/008-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-2.png b/public/media-src/avatar/small/008-2.png deleted file mode 100755 index 312a4d087..000000000 Binary files a/public/media-src/avatar/small/008-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-3.png b/public/media-src/avatar/small/008-3.png deleted file mode 100755 index aec42fbb9..000000000 Binary files a/public/media-src/avatar/small/008-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-4.png b/public/media-src/avatar/small/008-4.png deleted file mode 100755 index 28ace9b23..000000000 Binary files a/public/media-src/avatar/small/008-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-5.png b/public/media-src/avatar/small/008-5.png deleted file mode 100755 index 037d401cb..000000000 Binary files a/public/media-src/avatar/small/008-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-6.png b/public/media-src/avatar/small/008-6.png deleted file mode 100755 index 7962e8328..000000000 Binary files a/public/media-src/avatar/small/008-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-7.png b/public/media-src/avatar/small/008-7.png deleted file mode 100755 index 3a9d9287b..000000000 Binary files a/public/media-src/avatar/small/008-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-8.png b/public/media-src/avatar/small/008-8.png deleted file mode 100644 index 972404c76..000000000 Binary files a/public/media-src/avatar/small/008-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/008-9.png b/public/media-src/avatar/small/008-9.png deleted file mode 100644 index 472cdfb14..000000000 Binary files a/public/media-src/avatar/small/008-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-1.png b/public/media-src/avatar/small/009-1.png deleted file mode 100755 index 6fa406c6f..000000000 Binary files a/public/media-src/avatar/small/009-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-10.png b/public/media-src/avatar/small/009-10.png deleted file mode 100644 index cb793f1b4..000000000 Binary files a/public/media-src/avatar/small/009-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-11.png b/public/media-src/avatar/small/009-11.png deleted file mode 100644 index eca354d77..000000000 Binary files a/public/media-src/avatar/small/009-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-12.png b/public/media-src/avatar/small/009-12.png deleted file mode 100644 index f72340cf9..000000000 Binary files a/public/media-src/avatar/small/009-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-2.png b/public/media-src/avatar/small/009-2.png deleted file mode 100755 index fa22b173b..000000000 Binary files a/public/media-src/avatar/small/009-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-3.png b/public/media-src/avatar/small/009-3.png deleted file mode 100755 index ec746f91f..000000000 Binary files a/public/media-src/avatar/small/009-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-4.png b/public/media-src/avatar/small/009-4.png deleted file mode 100755 index 9414a0b4e..000000000 Binary files a/public/media-src/avatar/small/009-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-5.png b/public/media-src/avatar/small/009-5.png deleted file mode 100755 index 2d2d50616..000000000 Binary files a/public/media-src/avatar/small/009-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-6.png b/public/media-src/avatar/small/009-6.png deleted file mode 100755 index 933831c82..000000000 Binary files a/public/media-src/avatar/small/009-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-7.png b/public/media-src/avatar/small/009-7.png deleted file mode 100755 index b64cfa9be..000000000 Binary files a/public/media-src/avatar/small/009-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-8.png b/public/media-src/avatar/small/009-8.png deleted file mode 100644 index 054bd87e8..000000000 Binary files a/public/media-src/avatar/small/009-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/009-9.png b/public/media-src/avatar/small/009-9.png deleted file mode 100644 index 171422fae..000000000 Binary files a/public/media-src/avatar/small/009-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-1.png b/public/media-src/avatar/small/010-1.png deleted file mode 100755 index a43546b42..000000000 Binary files a/public/media-src/avatar/small/010-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-10.png b/public/media-src/avatar/small/010-10.png deleted file mode 100644 index 9d6b922ff..000000000 Binary files a/public/media-src/avatar/small/010-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-11.png b/public/media-src/avatar/small/010-11.png deleted file mode 100644 index bd8bb21c3..000000000 Binary files a/public/media-src/avatar/small/010-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-12.png b/public/media-src/avatar/small/010-12.png deleted file mode 100644 index ceb898e2c..000000000 Binary files a/public/media-src/avatar/small/010-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-2.png b/public/media-src/avatar/small/010-2.png deleted file mode 100755 index 89c54516e..000000000 Binary files a/public/media-src/avatar/small/010-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-3.png b/public/media-src/avatar/small/010-3.png deleted file mode 100755 index cfc3d79c2..000000000 Binary files a/public/media-src/avatar/small/010-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-4.png b/public/media-src/avatar/small/010-4.png deleted file mode 100755 index f1a230960..000000000 Binary files a/public/media-src/avatar/small/010-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-5.png b/public/media-src/avatar/small/010-5.png deleted file mode 100755 index 02641fd27..000000000 Binary files a/public/media-src/avatar/small/010-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-6.png b/public/media-src/avatar/small/010-6.png deleted file mode 100755 index 115e18c21..000000000 Binary files a/public/media-src/avatar/small/010-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-7.png b/public/media-src/avatar/small/010-7.png deleted file mode 100755 index e6a247fc4..000000000 Binary files a/public/media-src/avatar/small/010-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-8.png b/public/media-src/avatar/small/010-8.png deleted file mode 100644 index 33b35977e..000000000 Binary files a/public/media-src/avatar/small/010-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/010-9.png b/public/media-src/avatar/small/010-9.png deleted file mode 100644 index a73000a03..000000000 Binary files a/public/media-src/avatar/small/010-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-1.png b/public/media-src/avatar/small/011-1.png deleted file mode 100755 index 3271c35af..000000000 Binary files a/public/media-src/avatar/small/011-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-10.png b/public/media-src/avatar/small/011-10.png deleted file mode 100644 index 98a3b0c17..000000000 Binary files a/public/media-src/avatar/small/011-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-11.png b/public/media-src/avatar/small/011-11.png deleted file mode 100644 index 56b2e63fc..000000000 Binary files a/public/media-src/avatar/small/011-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-12.png b/public/media-src/avatar/small/011-12.png deleted file mode 100644 index 1a6857e29..000000000 Binary files a/public/media-src/avatar/small/011-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-2.png b/public/media-src/avatar/small/011-2.png deleted file mode 100755 index 4a88b9393..000000000 Binary files a/public/media-src/avatar/small/011-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-3.png b/public/media-src/avatar/small/011-3.png deleted file mode 100755 index 29874a797..000000000 Binary files a/public/media-src/avatar/small/011-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-4.png b/public/media-src/avatar/small/011-4.png deleted file mode 100755 index 5cc750422..000000000 Binary files a/public/media-src/avatar/small/011-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-5.png b/public/media-src/avatar/small/011-5.png deleted file mode 100755 index 8fdd01b85..000000000 Binary files a/public/media-src/avatar/small/011-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-6.png b/public/media-src/avatar/small/011-6.png deleted file mode 100755 index 8e1a1ebe9..000000000 Binary files a/public/media-src/avatar/small/011-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-7.png b/public/media-src/avatar/small/011-7.png deleted file mode 100755 index aeabfe97b..000000000 Binary files a/public/media-src/avatar/small/011-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-8.png b/public/media-src/avatar/small/011-8.png deleted file mode 100644 index 573213efa..000000000 Binary files a/public/media-src/avatar/small/011-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/011-9.png b/public/media-src/avatar/small/011-9.png deleted file mode 100644 index 6476c6d26..000000000 Binary files a/public/media-src/avatar/small/011-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-1.png b/public/media-src/avatar/small/012-1.png deleted file mode 100755 index b3c814b63..000000000 Binary files a/public/media-src/avatar/small/012-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-10.png b/public/media-src/avatar/small/012-10.png deleted file mode 100644 index d938655f1..000000000 Binary files a/public/media-src/avatar/small/012-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-11.png b/public/media-src/avatar/small/012-11.png deleted file mode 100644 index 670f83ca1..000000000 Binary files a/public/media-src/avatar/small/012-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-12.png b/public/media-src/avatar/small/012-12.png deleted file mode 100644 index e7287327a..000000000 Binary files a/public/media-src/avatar/small/012-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-2.png b/public/media-src/avatar/small/012-2.png deleted file mode 100755 index 6f5c99fa9..000000000 Binary files a/public/media-src/avatar/small/012-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-3.png b/public/media-src/avatar/small/012-3.png deleted file mode 100755 index d95c0517a..000000000 Binary files a/public/media-src/avatar/small/012-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-4.png b/public/media-src/avatar/small/012-4.png deleted file mode 100755 index b807caedf..000000000 Binary files a/public/media-src/avatar/small/012-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-5.png b/public/media-src/avatar/small/012-5.png deleted file mode 100755 index c15a18a4f..000000000 Binary files a/public/media-src/avatar/small/012-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-6.png b/public/media-src/avatar/small/012-6.png deleted file mode 100755 index aafe7ae88..000000000 Binary files a/public/media-src/avatar/small/012-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-7.png b/public/media-src/avatar/small/012-7.png deleted file mode 100755 index 371764fc5..000000000 Binary files a/public/media-src/avatar/small/012-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-8.png b/public/media-src/avatar/small/012-8.png deleted file mode 100644 index ca0059283..000000000 Binary files a/public/media-src/avatar/small/012-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/012-9.png b/public/media-src/avatar/small/012-9.png deleted file mode 100644 index 622a7ba13..000000000 Binary files a/public/media-src/avatar/small/012-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-1.png b/public/media-src/avatar/small/013-1.png deleted file mode 100755 index 3e2ea1d9c..000000000 Binary files a/public/media-src/avatar/small/013-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-10.png b/public/media-src/avatar/small/013-10.png deleted file mode 100644 index ed5bed541..000000000 Binary files a/public/media-src/avatar/small/013-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-11.png b/public/media-src/avatar/small/013-11.png deleted file mode 100644 index 0e28d50d7..000000000 Binary files a/public/media-src/avatar/small/013-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-12.png b/public/media-src/avatar/small/013-12.png deleted file mode 100644 index 562c8e788..000000000 Binary files a/public/media-src/avatar/small/013-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-2.png b/public/media-src/avatar/small/013-2.png deleted file mode 100755 index 9f50f5b22..000000000 Binary files a/public/media-src/avatar/small/013-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-3.png b/public/media-src/avatar/small/013-3.png deleted file mode 100755 index 52e0df08e..000000000 Binary files a/public/media-src/avatar/small/013-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-4.png b/public/media-src/avatar/small/013-4.png deleted file mode 100755 index d6980c9ab..000000000 Binary files a/public/media-src/avatar/small/013-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-5.png b/public/media-src/avatar/small/013-5.png deleted file mode 100755 index e972006d2..000000000 Binary files a/public/media-src/avatar/small/013-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-6.png b/public/media-src/avatar/small/013-6.png deleted file mode 100755 index 2d50181c5..000000000 Binary files a/public/media-src/avatar/small/013-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-7.png b/public/media-src/avatar/small/013-7.png deleted file mode 100755 index 01fe65e97..000000000 Binary files a/public/media-src/avatar/small/013-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-8.png b/public/media-src/avatar/small/013-8.png deleted file mode 100644 index 65ad925c9..000000000 Binary files a/public/media-src/avatar/small/013-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/013-9.png b/public/media-src/avatar/small/013-9.png deleted file mode 100644 index 38d3cb788..000000000 Binary files a/public/media-src/avatar/small/013-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-1.png b/public/media-src/avatar/small/014-1.png deleted file mode 100755 index 73153051d..000000000 Binary files a/public/media-src/avatar/small/014-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-10.png b/public/media-src/avatar/small/014-10.png deleted file mode 100644 index b057f6e0e..000000000 Binary files a/public/media-src/avatar/small/014-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-11.png b/public/media-src/avatar/small/014-11.png deleted file mode 100644 index cdc66ad39..000000000 Binary files a/public/media-src/avatar/small/014-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-12.png b/public/media-src/avatar/small/014-12.png deleted file mode 100644 index a5fcac95f..000000000 Binary files a/public/media-src/avatar/small/014-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-2.png b/public/media-src/avatar/small/014-2.png deleted file mode 100755 index 63813e0cf..000000000 Binary files a/public/media-src/avatar/small/014-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-3.png b/public/media-src/avatar/small/014-3.png deleted file mode 100755 index 589c35116..000000000 Binary files a/public/media-src/avatar/small/014-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-4.png b/public/media-src/avatar/small/014-4.png deleted file mode 100755 index e0c3f70a0..000000000 Binary files a/public/media-src/avatar/small/014-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-5.png b/public/media-src/avatar/small/014-5.png deleted file mode 100755 index 3fb9e8d32..000000000 Binary files a/public/media-src/avatar/small/014-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-6.png b/public/media-src/avatar/small/014-6.png deleted file mode 100755 index 4722096e8..000000000 Binary files a/public/media-src/avatar/small/014-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-7.png b/public/media-src/avatar/small/014-7.png deleted file mode 100755 index 05bc1ea78..000000000 Binary files a/public/media-src/avatar/small/014-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-8.png b/public/media-src/avatar/small/014-8.png deleted file mode 100644 index 6b3a9ea37..000000000 Binary files a/public/media-src/avatar/small/014-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/014-9.png b/public/media-src/avatar/small/014-9.png deleted file mode 100644 index 896c1510a..000000000 Binary files a/public/media-src/avatar/small/014-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-1.png b/public/media-src/avatar/small/015-1.png deleted file mode 100755 index dccd95b35..000000000 Binary files a/public/media-src/avatar/small/015-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-10.png b/public/media-src/avatar/small/015-10.png deleted file mode 100644 index 7163e099d..000000000 Binary files a/public/media-src/avatar/small/015-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-11.png b/public/media-src/avatar/small/015-11.png deleted file mode 100644 index b82a9465d..000000000 Binary files a/public/media-src/avatar/small/015-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-12.png b/public/media-src/avatar/small/015-12.png deleted file mode 100644 index bbd0b1fd0..000000000 Binary files a/public/media-src/avatar/small/015-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-2.png b/public/media-src/avatar/small/015-2.png deleted file mode 100755 index a7c16d7a4..000000000 Binary files a/public/media-src/avatar/small/015-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-3.png b/public/media-src/avatar/small/015-3.png deleted file mode 100755 index 4fb1c15f7..000000000 Binary files a/public/media-src/avatar/small/015-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-4.png b/public/media-src/avatar/small/015-4.png deleted file mode 100755 index b5e4db398..000000000 Binary files a/public/media-src/avatar/small/015-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-5.png b/public/media-src/avatar/small/015-5.png deleted file mode 100755 index 6e8a9dc6c..000000000 Binary files a/public/media-src/avatar/small/015-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-6.png b/public/media-src/avatar/small/015-6.png deleted file mode 100755 index 4afbdecfa..000000000 Binary files a/public/media-src/avatar/small/015-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-7.png b/public/media-src/avatar/small/015-7.png deleted file mode 100755 index e20ae550f..000000000 Binary files a/public/media-src/avatar/small/015-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-8.png b/public/media-src/avatar/small/015-8.png deleted file mode 100644 index 80803bb16..000000000 Binary files a/public/media-src/avatar/small/015-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/015-9.png b/public/media-src/avatar/small/015-9.png deleted file mode 100644 index 0d2491181..000000000 Binary files a/public/media-src/avatar/small/015-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-1.png b/public/media-src/avatar/small/016-1.png deleted file mode 100755 index e1a8ce9cc..000000000 Binary files a/public/media-src/avatar/small/016-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-10.png b/public/media-src/avatar/small/016-10.png deleted file mode 100644 index 98988b4da..000000000 Binary files a/public/media-src/avatar/small/016-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-11.png b/public/media-src/avatar/small/016-11.png deleted file mode 100644 index ad771ea8a..000000000 Binary files a/public/media-src/avatar/small/016-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-12.png b/public/media-src/avatar/small/016-12.png deleted file mode 100644 index e20455273..000000000 Binary files a/public/media-src/avatar/small/016-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-2.png b/public/media-src/avatar/small/016-2.png deleted file mode 100755 index a77c5bb6b..000000000 Binary files a/public/media-src/avatar/small/016-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-3.png b/public/media-src/avatar/small/016-3.png deleted file mode 100755 index 202d20d37..000000000 Binary files a/public/media-src/avatar/small/016-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-4.png b/public/media-src/avatar/small/016-4.png deleted file mode 100755 index b922fb0bb..000000000 Binary files a/public/media-src/avatar/small/016-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-5.png b/public/media-src/avatar/small/016-5.png deleted file mode 100755 index c79346112..000000000 Binary files a/public/media-src/avatar/small/016-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-6.png b/public/media-src/avatar/small/016-6.png deleted file mode 100755 index d498197a3..000000000 Binary files a/public/media-src/avatar/small/016-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-7.png b/public/media-src/avatar/small/016-7.png deleted file mode 100755 index f71d61f25..000000000 Binary files a/public/media-src/avatar/small/016-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-8.png b/public/media-src/avatar/small/016-8.png deleted file mode 100644 index ca414753d..000000000 Binary files a/public/media-src/avatar/small/016-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/016-9.png b/public/media-src/avatar/small/016-9.png deleted file mode 100644 index 6e074d639..000000000 Binary files a/public/media-src/avatar/small/016-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-1.png b/public/media-src/avatar/small/017-1.png deleted file mode 100755 index 7e704de70..000000000 Binary files a/public/media-src/avatar/small/017-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-10.png b/public/media-src/avatar/small/017-10.png deleted file mode 100644 index bae6fa90c..000000000 Binary files a/public/media-src/avatar/small/017-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-11.png b/public/media-src/avatar/small/017-11.png deleted file mode 100644 index 11ce8bf22..000000000 Binary files a/public/media-src/avatar/small/017-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-12.png b/public/media-src/avatar/small/017-12.png deleted file mode 100644 index bcbf0c51a..000000000 Binary files a/public/media-src/avatar/small/017-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-2.png b/public/media-src/avatar/small/017-2.png deleted file mode 100755 index f093bcaa3..000000000 Binary files a/public/media-src/avatar/small/017-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-3.png b/public/media-src/avatar/small/017-3.png deleted file mode 100755 index 998db3a22..000000000 Binary files a/public/media-src/avatar/small/017-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-4.png b/public/media-src/avatar/small/017-4.png deleted file mode 100755 index 4a98b0e7a..000000000 Binary files a/public/media-src/avatar/small/017-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-5.png b/public/media-src/avatar/small/017-5.png deleted file mode 100755 index 40c6840ae..000000000 Binary files a/public/media-src/avatar/small/017-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-6.png b/public/media-src/avatar/small/017-6.png deleted file mode 100755 index 8cf033d07..000000000 Binary files a/public/media-src/avatar/small/017-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-7.png b/public/media-src/avatar/small/017-7.png deleted file mode 100755 index eb11d9bdf..000000000 Binary files a/public/media-src/avatar/small/017-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-8.png b/public/media-src/avatar/small/017-8.png deleted file mode 100644 index f2a6e936b..000000000 Binary files a/public/media-src/avatar/small/017-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/017-9.png b/public/media-src/avatar/small/017-9.png deleted file mode 100644 index 1bebbacba..000000000 Binary files a/public/media-src/avatar/small/017-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-1.png b/public/media-src/avatar/small/018-1.png deleted file mode 100755 index e99a54b80..000000000 Binary files a/public/media-src/avatar/small/018-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-10.png b/public/media-src/avatar/small/018-10.png deleted file mode 100644 index bc34794ed..000000000 Binary files a/public/media-src/avatar/small/018-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-11.png b/public/media-src/avatar/small/018-11.png deleted file mode 100644 index f90dbea96..000000000 Binary files a/public/media-src/avatar/small/018-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-12.png b/public/media-src/avatar/small/018-12.png deleted file mode 100644 index 0b8edab16..000000000 Binary files a/public/media-src/avatar/small/018-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-2.png b/public/media-src/avatar/small/018-2.png deleted file mode 100755 index 6b1213f6e..000000000 Binary files a/public/media-src/avatar/small/018-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-3.png b/public/media-src/avatar/small/018-3.png deleted file mode 100755 index 653305756..000000000 Binary files a/public/media-src/avatar/small/018-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-4.png b/public/media-src/avatar/small/018-4.png deleted file mode 100755 index 540c8d21e..000000000 Binary files a/public/media-src/avatar/small/018-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-5.png b/public/media-src/avatar/small/018-5.png deleted file mode 100755 index 180d80135..000000000 Binary files a/public/media-src/avatar/small/018-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-6.png b/public/media-src/avatar/small/018-6.png deleted file mode 100755 index 09117a390..000000000 Binary files a/public/media-src/avatar/small/018-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-7.png b/public/media-src/avatar/small/018-7.png deleted file mode 100755 index 35410b81b..000000000 Binary files a/public/media-src/avatar/small/018-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-8.png b/public/media-src/avatar/small/018-8.png deleted file mode 100644 index 3b2698ce6..000000000 Binary files a/public/media-src/avatar/small/018-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/018-9.png b/public/media-src/avatar/small/018-9.png deleted file mode 100644 index 3939b0b55..000000000 Binary files a/public/media-src/avatar/small/018-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-1.png b/public/media-src/avatar/small/019-1.png deleted file mode 100755 index 41e4eb302..000000000 Binary files a/public/media-src/avatar/small/019-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-10.png b/public/media-src/avatar/small/019-10.png deleted file mode 100644 index 34ee4c08c..000000000 Binary files a/public/media-src/avatar/small/019-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-11.png b/public/media-src/avatar/small/019-11.png deleted file mode 100644 index d8ea19790..000000000 Binary files a/public/media-src/avatar/small/019-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-12.png b/public/media-src/avatar/small/019-12.png deleted file mode 100644 index 2c97c2176..000000000 Binary files a/public/media-src/avatar/small/019-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-2.png b/public/media-src/avatar/small/019-2.png deleted file mode 100755 index aee0124c0..000000000 Binary files a/public/media-src/avatar/small/019-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-3.png b/public/media-src/avatar/small/019-3.png deleted file mode 100755 index 45f97dba9..000000000 Binary files a/public/media-src/avatar/small/019-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-4.png b/public/media-src/avatar/small/019-4.png deleted file mode 100755 index 4dfce29eb..000000000 Binary files a/public/media-src/avatar/small/019-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-5.png b/public/media-src/avatar/small/019-5.png deleted file mode 100755 index e781cd425..000000000 Binary files a/public/media-src/avatar/small/019-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-6.png b/public/media-src/avatar/small/019-6.png deleted file mode 100755 index f51a78d21..000000000 Binary files a/public/media-src/avatar/small/019-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-7.png b/public/media-src/avatar/small/019-7.png deleted file mode 100755 index a64f40840..000000000 Binary files a/public/media-src/avatar/small/019-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-8.png b/public/media-src/avatar/small/019-8.png deleted file mode 100644 index cfb8a70ae..000000000 Binary files a/public/media-src/avatar/small/019-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/019-9.png b/public/media-src/avatar/small/019-9.png deleted file mode 100644 index cf8e36e9e..000000000 Binary files a/public/media-src/avatar/small/019-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-1.png b/public/media-src/avatar/small/020-1.png deleted file mode 100755 index f94e5e038..000000000 Binary files a/public/media-src/avatar/small/020-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-10.png b/public/media-src/avatar/small/020-10.png deleted file mode 100644 index 20e4c2941..000000000 Binary files a/public/media-src/avatar/small/020-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-11.png b/public/media-src/avatar/small/020-11.png deleted file mode 100644 index 3f19ada0d..000000000 Binary files a/public/media-src/avatar/small/020-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-12.png b/public/media-src/avatar/small/020-12.png deleted file mode 100644 index ef2e70d4e..000000000 Binary files a/public/media-src/avatar/small/020-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-2.png b/public/media-src/avatar/small/020-2.png deleted file mode 100755 index 2553cfb9c..000000000 Binary files a/public/media-src/avatar/small/020-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-3.png b/public/media-src/avatar/small/020-3.png deleted file mode 100755 index 0d61419a4..000000000 Binary files a/public/media-src/avatar/small/020-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-4.png b/public/media-src/avatar/small/020-4.png deleted file mode 100755 index 67448bc5e..000000000 Binary files a/public/media-src/avatar/small/020-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-5.png b/public/media-src/avatar/small/020-5.png deleted file mode 100755 index 5ab92d9c5..000000000 Binary files a/public/media-src/avatar/small/020-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-6.png b/public/media-src/avatar/small/020-6.png deleted file mode 100755 index 16dc4676f..000000000 Binary files a/public/media-src/avatar/small/020-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-7.png b/public/media-src/avatar/small/020-7.png deleted file mode 100755 index ee5a7ec79..000000000 Binary files a/public/media-src/avatar/small/020-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-8.png b/public/media-src/avatar/small/020-8.png deleted file mode 100644 index 60315817f..000000000 Binary files a/public/media-src/avatar/small/020-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/020-9.png b/public/media-src/avatar/small/020-9.png deleted file mode 100644 index 1a20a7cfb..000000000 Binary files a/public/media-src/avatar/small/020-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-1.png b/public/media-src/avatar/small/021-1.png deleted file mode 100755 index 7aa033748..000000000 Binary files a/public/media-src/avatar/small/021-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-10.png b/public/media-src/avatar/small/021-10.png deleted file mode 100644 index a4e9c58b8..000000000 Binary files a/public/media-src/avatar/small/021-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-11.png b/public/media-src/avatar/small/021-11.png deleted file mode 100644 index 5bab9e1d3..000000000 Binary files a/public/media-src/avatar/small/021-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-12.png b/public/media-src/avatar/small/021-12.png deleted file mode 100644 index 107687617..000000000 Binary files a/public/media-src/avatar/small/021-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-2.png b/public/media-src/avatar/small/021-2.png deleted file mode 100755 index 476116eb1..000000000 Binary files a/public/media-src/avatar/small/021-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-3.png b/public/media-src/avatar/small/021-3.png deleted file mode 100755 index ad9cea2a3..000000000 Binary files a/public/media-src/avatar/small/021-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-4.png b/public/media-src/avatar/small/021-4.png deleted file mode 100755 index 87b4a5a14..000000000 Binary files a/public/media-src/avatar/small/021-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-5.png b/public/media-src/avatar/small/021-5.png deleted file mode 100755 index 960607fb0..000000000 Binary files a/public/media-src/avatar/small/021-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-6.png b/public/media-src/avatar/small/021-6.png deleted file mode 100755 index bf35c33a7..000000000 Binary files a/public/media-src/avatar/small/021-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-7.png b/public/media-src/avatar/small/021-7.png deleted file mode 100755 index 8eace84bb..000000000 Binary files a/public/media-src/avatar/small/021-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-8.png b/public/media-src/avatar/small/021-8.png deleted file mode 100644 index 4e03fdfc8..000000000 Binary files a/public/media-src/avatar/small/021-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/021-9.png b/public/media-src/avatar/small/021-9.png deleted file mode 100644 index 720b27a4d..000000000 Binary files a/public/media-src/avatar/small/021-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-1.png b/public/media-src/avatar/small/022-1.png deleted file mode 100755 index dcb9be0bb..000000000 Binary files a/public/media-src/avatar/small/022-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-10.png b/public/media-src/avatar/small/022-10.png deleted file mode 100644 index e8e1efb28..000000000 Binary files a/public/media-src/avatar/small/022-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-11.png b/public/media-src/avatar/small/022-11.png deleted file mode 100644 index 22c5dd465..000000000 Binary files a/public/media-src/avatar/small/022-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-12.png b/public/media-src/avatar/small/022-12.png deleted file mode 100644 index 8119d2b88..000000000 Binary files a/public/media-src/avatar/small/022-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-2.png b/public/media-src/avatar/small/022-2.png deleted file mode 100755 index 6af38550d..000000000 Binary files a/public/media-src/avatar/small/022-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-3.png b/public/media-src/avatar/small/022-3.png deleted file mode 100755 index 30f148c3c..000000000 Binary files a/public/media-src/avatar/small/022-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-4.png b/public/media-src/avatar/small/022-4.png deleted file mode 100755 index f8d3f1111..000000000 Binary files a/public/media-src/avatar/small/022-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-5.png b/public/media-src/avatar/small/022-5.png deleted file mode 100755 index b74763b75..000000000 Binary files a/public/media-src/avatar/small/022-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-6.png b/public/media-src/avatar/small/022-6.png deleted file mode 100755 index d90d764ae..000000000 Binary files a/public/media-src/avatar/small/022-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-7.png b/public/media-src/avatar/small/022-7.png deleted file mode 100755 index 2b290cc61..000000000 Binary files a/public/media-src/avatar/small/022-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-8.png b/public/media-src/avatar/small/022-8.png deleted file mode 100644 index e981a2dc1..000000000 Binary files a/public/media-src/avatar/small/022-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/022-9.png b/public/media-src/avatar/small/022-9.png deleted file mode 100644 index ecc9d57d7..000000000 Binary files a/public/media-src/avatar/small/022-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-1.png b/public/media-src/avatar/small/023-1.png deleted file mode 100755 index d4ab02d47..000000000 Binary files a/public/media-src/avatar/small/023-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-10.png b/public/media-src/avatar/small/023-10.png deleted file mode 100644 index 8ced0b20d..000000000 Binary files a/public/media-src/avatar/small/023-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-11.png b/public/media-src/avatar/small/023-11.png deleted file mode 100644 index 2475bb469..000000000 Binary files a/public/media-src/avatar/small/023-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-12.png b/public/media-src/avatar/small/023-12.png deleted file mode 100644 index ec9c9fce2..000000000 Binary files a/public/media-src/avatar/small/023-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-2.png b/public/media-src/avatar/small/023-2.png deleted file mode 100755 index 929a7c03a..000000000 Binary files a/public/media-src/avatar/small/023-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-3.png b/public/media-src/avatar/small/023-3.png deleted file mode 100755 index e6d00518a..000000000 Binary files a/public/media-src/avatar/small/023-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-4.png b/public/media-src/avatar/small/023-4.png deleted file mode 100755 index c2ee986da..000000000 Binary files a/public/media-src/avatar/small/023-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-5.png b/public/media-src/avatar/small/023-5.png deleted file mode 100755 index 041d937ec..000000000 Binary files a/public/media-src/avatar/small/023-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-6.png b/public/media-src/avatar/small/023-6.png deleted file mode 100755 index e8058db5f..000000000 Binary files a/public/media-src/avatar/small/023-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-7.png b/public/media-src/avatar/small/023-7.png deleted file mode 100755 index 6fa7aa57d..000000000 Binary files a/public/media-src/avatar/small/023-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-8.png b/public/media-src/avatar/small/023-8.png deleted file mode 100644 index f4a54a665..000000000 Binary files a/public/media-src/avatar/small/023-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/023-9.png b/public/media-src/avatar/small/023-9.png deleted file mode 100644 index 3eeaa72ea..000000000 Binary files a/public/media-src/avatar/small/023-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-1.png b/public/media-src/avatar/small/024-1.png deleted file mode 100755 index fca49aac1..000000000 Binary files a/public/media-src/avatar/small/024-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-10.png b/public/media-src/avatar/small/024-10.png deleted file mode 100644 index db18e95cb..000000000 Binary files a/public/media-src/avatar/small/024-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-11.png b/public/media-src/avatar/small/024-11.png deleted file mode 100644 index 4760637d5..000000000 Binary files a/public/media-src/avatar/small/024-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-12.png b/public/media-src/avatar/small/024-12.png deleted file mode 100644 index 15baf767e..000000000 Binary files a/public/media-src/avatar/small/024-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-2.png b/public/media-src/avatar/small/024-2.png deleted file mode 100755 index 03d2849c8..000000000 Binary files a/public/media-src/avatar/small/024-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-3.png b/public/media-src/avatar/small/024-3.png deleted file mode 100755 index 3477d6f81..000000000 Binary files a/public/media-src/avatar/small/024-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-4.png b/public/media-src/avatar/small/024-4.png deleted file mode 100755 index e55845574..000000000 Binary files a/public/media-src/avatar/small/024-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-5.png b/public/media-src/avatar/small/024-5.png deleted file mode 100755 index bf66c1455..000000000 Binary files a/public/media-src/avatar/small/024-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-6.png b/public/media-src/avatar/small/024-6.png deleted file mode 100755 index dc3e37937..000000000 Binary files a/public/media-src/avatar/small/024-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-7.png b/public/media-src/avatar/small/024-7.png deleted file mode 100755 index fa1620198..000000000 Binary files a/public/media-src/avatar/small/024-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-8.png b/public/media-src/avatar/small/024-8.png deleted file mode 100644 index c4689a263..000000000 Binary files a/public/media-src/avatar/small/024-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/024-9.png b/public/media-src/avatar/small/024-9.png deleted file mode 100644 index f9945c8ca..000000000 Binary files a/public/media-src/avatar/small/024-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-1.png b/public/media-src/avatar/small/025-1.png deleted file mode 100755 index caf42862d..000000000 Binary files a/public/media-src/avatar/small/025-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-10.png b/public/media-src/avatar/small/025-10.png deleted file mode 100644 index 5617ad523..000000000 Binary files a/public/media-src/avatar/small/025-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-11.png b/public/media-src/avatar/small/025-11.png deleted file mode 100644 index 6f23bfbc9..000000000 Binary files a/public/media-src/avatar/small/025-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-12.png b/public/media-src/avatar/small/025-12.png deleted file mode 100644 index c4b293345..000000000 Binary files a/public/media-src/avatar/small/025-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-2.png b/public/media-src/avatar/small/025-2.png deleted file mode 100755 index 2256f19df..000000000 Binary files a/public/media-src/avatar/small/025-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-3.png b/public/media-src/avatar/small/025-3.png deleted file mode 100755 index f411cb8b9..000000000 Binary files a/public/media-src/avatar/small/025-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-4.png b/public/media-src/avatar/small/025-4.png deleted file mode 100755 index e16da821c..000000000 Binary files a/public/media-src/avatar/small/025-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-5.png b/public/media-src/avatar/small/025-5.png deleted file mode 100755 index 409654eae..000000000 Binary files a/public/media-src/avatar/small/025-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-6.png b/public/media-src/avatar/small/025-6.png deleted file mode 100755 index 8aae14705..000000000 Binary files a/public/media-src/avatar/small/025-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-7.png b/public/media-src/avatar/small/025-7.png deleted file mode 100755 index 94156f7f3..000000000 Binary files a/public/media-src/avatar/small/025-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-8.png b/public/media-src/avatar/small/025-8.png deleted file mode 100644 index b017a8a63..000000000 Binary files a/public/media-src/avatar/small/025-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/025-9.png b/public/media-src/avatar/small/025-9.png deleted file mode 100644 index ebdf05068..000000000 Binary files a/public/media-src/avatar/small/025-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-1.png b/public/media-src/avatar/small/026-1.png deleted file mode 100755 index 4f8b2bdfb..000000000 Binary files a/public/media-src/avatar/small/026-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-10.png b/public/media-src/avatar/small/026-10.png deleted file mode 100644 index fab00e0b8..000000000 Binary files a/public/media-src/avatar/small/026-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-11.png b/public/media-src/avatar/small/026-11.png deleted file mode 100644 index bfb7af932..000000000 Binary files a/public/media-src/avatar/small/026-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-12.png b/public/media-src/avatar/small/026-12.png deleted file mode 100644 index a8c08cf0c..000000000 Binary files a/public/media-src/avatar/small/026-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-2.png b/public/media-src/avatar/small/026-2.png deleted file mode 100755 index c4ef049d1..000000000 Binary files a/public/media-src/avatar/small/026-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-3.png b/public/media-src/avatar/small/026-3.png deleted file mode 100755 index aa96b5836..000000000 Binary files a/public/media-src/avatar/small/026-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-4.png b/public/media-src/avatar/small/026-4.png deleted file mode 100755 index 22d542bc5..000000000 Binary files a/public/media-src/avatar/small/026-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-5.png b/public/media-src/avatar/small/026-5.png deleted file mode 100755 index 76d04fd8f..000000000 Binary files a/public/media-src/avatar/small/026-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-6.png b/public/media-src/avatar/small/026-6.png deleted file mode 100755 index 1c21af3b2..000000000 Binary files a/public/media-src/avatar/small/026-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-7.png b/public/media-src/avatar/small/026-7.png deleted file mode 100755 index 9e683a330..000000000 Binary files a/public/media-src/avatar/small/026-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-8.png b/public/media-src/avatar/small/026-8.png deleted file mode 100644 index c07066ada..000000000 Binary files a/public/media-src/avatar/small/026-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/026-9.png b/public/media-src/avatar/small/026-9.png deleted file mode 100644 index 86e3e478b..000000000 Binary files a/public/media-src/avatar/small/026-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-1.png b/public/media-src/avatar/small/027-1.png deleted file mode 100755 index 0e564f4d2..000000000 Binary files a/public/media-src/avatar/small/027-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-10.png b/public/media-src/avatar/small/027-10.png deleted file mode 100644 index e6fe2203a..000000000 Binary files a/public/media-src/avatar/small/027-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-11.png b/public/media-src/avatar/small/027-11.png deleted file mode 100644 index 16abd2be8..000000000 Binary files a/public/media-src/avatar/small/027-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-12.png b/public/media-src/avatar/small/027-12.png deleted file mode 100644 index a28b5033c..000000000 Binary files a/public/media-src/avatar/small/027-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-2.png b/public/media-src/avatar/small/027-2.png deleted file mode 100755 index f8139072a..000000000 Binary files a/public/media-src/avatar/small/027-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-3.png b/public/media-src/avatar/small/027-3.png deleted file mode 100755 index 4f71f49f2..000000000 Binary files a/public/media-src/avatar/small/027-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-4.png b/public/media-src/avatar/small/027-4.png deleted file mode 100755 index 7026dbe8c..000000000 Binary files a/public/media-src/avatar/small/027-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-5.png b/public/media-src/avatar/small/027-5.png deleted file mode 100755 index 0423e1174..000000000 Binary files a/public/media-src/avatar/small/027-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-6.png b/public/media-src/avatar/small/027-6.png deleted file mode 100755 index 62769355a..000000000 Binary files a/public/media-src/avatar/small/027-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-7.png b/public/media-src/avatar/small/027-7.png deleted file mode 100755 index 2641dca80..000000000 Binary files a/public/media-src/avatar/small/027-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-8.png b/public/media-src/avatar/small/027-8.png deleted file mode 100644 index 66dc2bb79..000000000 Binary files a/public/media-src/avatar/small/027-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/027-9.png b/public/media-src/avatar/small/027-9.png deleted file mode 100644 index 24e1f0c17..000000000 Binary files a/public/media-src/avatar/small/027-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-1.png b/public/media-src/avatar/small/028-1.png deleted file mode 100755 index 97e9151cc..000000000 Binary files a/public/media-src/avatar/small/028-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-10.png b/public/media-src/avatar/small/028-10.png deleted file mode 100644 index 60bddc76d..000000000 Binary files a/public/media-src/avatar/small/028-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-11.png b/public/media-src/avatar/small/028-11.png deleted file mode 100644 index b6f105649..000000000 Binary files a/public/media-src/avatar/small/028-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-12.png b/public/media-src/avatar/small/028-12.png deleted file mode 100644 index 6148d098b..000000000 Binary files a/public/media-src/avatar/small/028-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-2.png b/public/media-src/avatar/small/028-2.png deleted file mode 100755 index 62d75e822..000000000 Binary files a/public/media-src/avatar/small/028-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-3.png b/public/media-src/avatar/small/028-3.png deleted file mode 100755 index bc65d3c86..000000000 Binary files a/public/media-src/avatar/small/028-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-4.png b/public/media-src/avatar/small/028-4.png deleted file mode 100755 index 873fda9e7..000000000 Binary files a/public/media-src/avatar/small/028-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-5.png b/public/media-src/avatar/small/028-5.png deleted file mode 100755 index 5abc3590d..000000000 Binary files a/public/media-src/avatar/small/028-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-6.png b/public/media-src/avatar/small/028-6.png deleted file mode 100755 index 78923cc3d..000000000 Binary files a/public/media-src/avatar/small/028-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-7.png b/public/media-src/avatar/small/028-7.png deleted file mode 100755 index 36e0a6a5c..000000000 Binary files a/public/media-src/avatar/small/028-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-8.png b/public/media-src/avatar/small/028-8.png deleted file mode 100644 index d4a1000e9..000000000 Binary files a/public/media-src/avatar/small/028-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/028-9.png b/public/media-src/avatar/small/028-9.png deleted file mode 100644 index 600f6b836..000000000 Binary files a/public/media-src/avatar/small/028-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-1.png b/public/media-src/avatar/small/029-1.png deleted file mode 100755 index 6f6a7c328..000000000 Binary files a/public/media-src/avatar/small/029-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-10.png b/public/media-src/avatar/small/029-10.png deleted file mode 100644 index b057c78df..000000000 Binary files a/public/media-src/avatar/small/029-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-11.png b/public/media-src/avatar/small/029-11.png deleted file mode 100644 index b8fb7f2dd..000000000 Binary files a/public/media-src/avatar/small/029-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-12.png b/public/media-src/avatar/small/029-12.png deleted file mode 100644 index 252629f31..000000000 Binary files a/public/media-src/avatar/small/029-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-2.png b/public/media-src/avatar/small/029-2.png deleted file mode 100755 index e0014b8aa..000000000 Binary files a/public/media-src/avatar/small/029-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-3.png b/public/media-src/avatar/small/029-3.png deleted file mode 100755 index a98d9b87b..000000000 Binary files a/public/media-src/avatar/small/029-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-4.png b/public/media-src/avatar/small/029-4.png deleted file mode 100755 index b50154a6a..000000000 Binary files a/public/media-src/avatar/small/029-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-5.png b/public/media-src/avatar/small/029-5.png deleted file mode 100755 index 31dd3996b..000000000 Binary files a/public/media-src/avatar/small/029-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-6.png b/public/media-src/avatar/small/029-6.png deleted file mode 100755 index b0aa7a861..000000000 Binary files a/public/media-src/avatar/small/029-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-7.png b/public/media-src/avatar/small/029-7.png deleted file mode 100755 index f0fbd26ca..000000000 Binary files a/public/media-src/avatar/small/029-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-8.png b/public/media-src/avatar/small/029-8.png deleted file mode 100644 index f42a67f39..000000000 Binary files a/public/media-src/avatar/small/029-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/029-9.png b/public/media-src/avatar/small/029-9.png deleted file mode 100644 index 21d37a55e..000000000 Binary files a/public/media-src/avatar/small/029-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-1.png b/public/media-src/avatar/small/030-1.png deleted file mode 100755 index 3f34191b0..000000000 Binary files a/public/media-src/avatar/small/030-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-10.png b/public/media-src/avatar/small/030-10.png deleted file mode 100644 index 3adfacf25..000000000 Binary files a/public/media-src/avatar/small/030-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-11.png b/public/media-src/avatar/small/030-11.png deleted file mode 100644 index 20f3a6682..000000000 Binary files a/public/media-src/avatar/small/030-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-12.png b/public/media-src/avatar/small/030-12.png deleted file mode 100644 index 45b41487a..000000000 Binary files a/public/media-src/avatar/small/030-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-2.png b/public/media-src/avatar/small/030-2.png deleted file mode 100755 index cb6c48127..000000000 Binary files a/public/media-src/avatar/small/030-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-3.png b/public/media-src/avatar/small/030-3.png deleted file mode 100755 index e9c9fa056..000000000 Binary files a/public/media-src/avatar/small/030-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-4.png b/public/media-src/avatar/small/030-4.png deleted file mode 100755 index 241421e06..000000000 Binary files a/public/media-src/avatar/small/030-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-5.png b/public/media-src/avatar/small/030-5.png deleted file mode 100755 index bafd7d8ef..000000000 Binary files a/public/media-src/avatar/small/030-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-6.png b/public/media-src/avatar/small/030-6.png deleted file mode 100755 index 892b45f53..000000000 Binary files a/public/media-src/avatar/small/030-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-7.png b/public/media-src/avatar/small/030-7.png deleted file mode 100755 index ac57ed162..000000000 Binary files a/public/media-src/avatar/small/030-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-8.png b/public/media-src/avatar/small/030-8.png deleted file mode 100644 index d3953028e..000000000 Binary files a/public/media-src/avatar/small/030-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/030-9.png b/public/media-src/avatar/small/030-9.png deleted file mode 100644 index f97b80fd1..000000000 Binary files a/public/media-src/avatar/small/030-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-1.png b/public/media-src/avatar/small/031-1.png deleted file mode 100755 index e20b7af0d..000000000 Binary files a/public/media-src/avatar/small/031-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-10.png b/public/media-src/avatar/small/031-10.png deleted file mode 100644 index 73fadef09..000000000 Binary files a/public/media-src/avatar/small/031-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-11.png b/public/media-src/avatar/small/031-11.png deleted file mode 100644 index f392d39e4..000000000 Binary files a/public/media-src/avatar/small/031-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-12.png b/public/media-src/avatar/small/031-12.png deleted file mode 100644 index f5b72c470..000000000 Binary files a/public/media-src/avatar/small/031-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-2.png b/public/media-src/avatar/small/031-2.png deleted file mode 100755 index f092e6134..000000000 Binary files a/public/media-src/avatar/small/031-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-3.png b/public/media-src/avatar/small/031-3.png deleted file mode 100755 index 18edf8892..000000000 Binary files a/public/media-src/avatar/small/031-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-4.png b/public/media-src/avatar/small/031-4.png deleted file mode 100755 index 35c7d2dae..000000000 Binary files a/public/media-src/avatar/small/031-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-5.png b/public/media-src/avatar/small/031-5.png deleted file mode 100755 index 5e8fda106..000000000 Binary files a/public/media-src/avatar/small/031-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-6.png b/public/media-src/avatar/small/031-6.png deleted file mode 100755 index 3aab9997a..000000000 Binary files a/public/media-src/avatar/small/031-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-7.png b/public/media-src/avatar/small/031-7.png deleted file mode 100755 index 18156131e..000000000 Binary files a/public/media-src/avatar/small/031-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-8.png b/public/media-src/avatar/small/031-8.png deleted file mode 100644 index dbe4a1938..000000000 Binary files a/public/media-src/avatar/small/031-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/031-9.png b/public/media-src/avatar/small/031-9.png deleted file mode 100644 index 99539dc28..000000000 Binary files a/public/media-src/avatar/small/031-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-1.png b/public/media-src/avatar/small/032-1.png deleted file mode 100755 index cbd46e056..000000000 Binary files a/public/media-src/avatar/small/032-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-10.png b/public/media-src/avatar/small/032-10.png deleted file mode 100644 index 4800bca0f..000000000 Binary files a/public/media-src/avatar/small/032-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-11.png b/public/media-src/avatar/small/032-11.png deleted file mode 100644 index afb727633..000000000 Binary files a/public/media-src/avatar/small/032-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-12.png b/public/media-src/avatar/small/032-12.png deleted file mode 100644 index bf4b0514d..000000000 Binary files a/public/media-src/avatar/small/032-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-2.png b/public/media-src/avatar/small/032-2.png deleted file mode 100755 index 9836d0e19..000000000 Binary files a/public/media-src/avatar/small/032-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-3.png b/public/media-src/avatar/small/032-3.png deleted file mode 100755 index fdffdb680..000000000 Binary files a/public/media-src/avatar/small/032-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-4.png b/public/media-src/avatar/small/032-4.png deleted file mode 100755 index fe84fbce8..000000000 Binary files a/public/media-src/avatar/small/032-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-5.png b/public/media-src/avatar/small/032-5.png deleted file mode 100755 index 01f425155..000000000 Binary files a/public/media-src/avatar/small/032-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-6.png b/public/media-src/avatar/small/032-6.png deleted file mode 100755 index df2223b74..000000000 Binary files a/public/media-src/avatar/small/032-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-7.png b/public/media-src/avatar/small/032-7.png deleted file mode 100755 index e96e319e2..000000000 Binary files a/public/media-src/avatar/small/032-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-8.png b/public/media-src/avatar/small/032-8.png deleted file mode 100644 index 6aca3040e..000000000 Binary files a/public/media-src/avatar/small/032-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/032-9.png b/public/media-src/avatar/small/032-9.png deleted file mode 100644 index 3064a740f..000000000 Binary files a/public/media-src/avatar/small/032-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-1.png b/public/media-src/avatar/small/033-1.png deleted file mode 100755 index 08c13ebfd..000000000 Binary files a/public/media-src/avatar/small/033-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-10.png b/public/media-src/avatar/small/033-10.png deleted file mode 100644 index 05b69a44c..000000000 Binary files a/public/media-src/avatar/small/033-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-11.png b/public/media-src/avatar/small/033-11.png deleted file mode 100644 index 8d29896c0..000000000 Binary files a/public/media-src/avatar/small/033-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-12.png b/public/media-src/avatar/small/033-12.png deleted file mode 100644 index e4ba93368..000000000 Binary files a/public/media-src/avatar/small/033-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-2.png b/public/media-src/avatar/small/033-2.png deleted file mode 100755 index 29edddbdb..000000000 Binary files a/public/media-src/avatar/small/033-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-3.png b/public/media-src/avatar/small/033-3.png deleted file mode 100755 index 244c234b3..000000000 Binary files a/public/media-src/avatar/small/033-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-4.png b/public/media-src/avatar/small/033-4.png deleted file mode 100755 index 671dd8784..000000000 Binary files a/public/media-src/avatar/small/033-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-5.png b/public/media-src/avatar/small/033-5.png deleted file mode 100755 index f55b42cf5..000000000 Binary files a/public/media-src/avatar/small/033-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-6.png b/public/media-src/avatar/small/033-6.png deleted file mode 100755 index 249dfa4ff..000000000 Binary files a/public/media-src/avatar/small/033-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-7.png b/public/media-src/avatar/small/033-7.png deleted file mode 100755 index f4448f10d..000000000 Binary files a/public/media-src/avatar/small/033-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-8.png b/public/media-src/avatar/small/033-8.png deleted file mode 100644 index ffe421915..000000000 Binary files a/public/media-src/avatar/small/033-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/033-9.png b/public/media-src/avatar/small/033-9.png deleted file mode 100644 index cbc599b8d..000000000 Binary files a/public/media-src/avatar/small/033-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-1.png b/public/media-src/avatar/small/034-1.png deleted file mode 100755 index 7a5fc225e..000000000 Binary files a/public/media-src/avatar/small/034-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-10.png b/public/media-src/avatar/small/034-10.png deleted file mode 100644 index c1113a94d..000000000 Binary files a/public/media-src/avatar/small/034-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-11.png b/public/media-src/avatar/small/034-11.png deleted file mode 100644 index 655e6547a..000000000 Binary files a/public/media-src/avatar/small/034-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-12.png b/public/media-src/avatar/small/034-12.png deleted file mode 100644 index 1c907c6e8..000000000 Binary files a/public/media-src/avatar/small/034-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-2.png b/public/media-src/avatar/small/034-2.png deleted file mode 100755 index 66ba71259..000000000 Binary files a/public/media-src/avatar/small/034-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-3.png b/public/media-src/avatar/small/034-3.png deleted file mode 100755 index f489ef6f3..000000000 Binary files a/public/media-src/avatar/small/034-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-4.png b/public/media-src/avatar/small/034-4.png deleted file mode 100755 index 274a32145..000000000 Binary files a/public/media-src/avatar/small/034-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-5.png b/public/media-src/avatar/small/034-5.png deleted file mode 100755 index 475d3ff4b..000000000 Binary files a/public/media-src/avatar/small/034-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-6.png b/public/media-src/avatar/small/034-6.png deleted file mode 100755 index 23534206f..000000000 Binary files a/public/media-src/avatar/small/034-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-7.png b/public/media-src/avatar/small/034-7.png deleted file mode 100755 index c43f24898..000000000 Binary files a/public/media-src/avatar/small/034-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-8.png b/public/media-src/avatar/small/034-8.png deleted file mode 100644 index 66d253ff9..000000000 Binary files a/public/media-src/avatar/small/034-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/034-9.png b/public/media-src/avatar/small/034-9.png deleted file mode 100644 index ffb55c82b..000000000 Binary files a/public/media-src/avatar/small/034-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-1.png b/public/media-src/avatar/small/035-1.png deleted file mode 100755 index b789817f6..000000000 Binary files a/public/media-src/avatar/small/035-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-10.png b/public/media-src/avatar/small/035-10.png deleted file mode 100644 index d7fd177fa..000000000 Binary files a/public/media-src/avatar/small/035-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-11.png b/public/media-src/avatar/small/035-11.png deleted file mode 100644 index 331e8a0cc..000000000 Binary files a/public/media-src/avatar/small/035-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-12.png b/public/media-src/avatar/small/035-12.png deleted file mode 100644 index 049f3d2e8..000000000 Binary files a/public/media-src/avatar/small/035-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-2.png b/public/media-src/avatar/small/035-2.png deleted file mode 100755 index ee556934e..000000000 Binary files a/public/media-src/avatar/small/035-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-3.png b/public/media-src/avatar/small/035-3.png deleted file mode 100755 index 9b93c94d4..000000000 Binary files a/public/media-src/avatar/small/035-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-4.png b/public/media-src/avatar/small/035-4.png deleted file mode 100755 index 382eb4b90..000000000 Binary files a/public/media-src/avatar/small/035-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-5.png b/public/media-src/avatar/small/035-5.png deleted file mode 100755 index 7eed7c1a8..000000000 Binary files a/public/media-src/avatar/small/035-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-6.png b/public/media-src/avatar/small/035-6.png deleted file mode 100755 index 13b0cf479..000000000 Binary files a/public/media-src/avatar/small/035-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-7.png b/public/media-src/avatar/small/035-7.png deleted file mode 100755 index 6d1aa440c..000000000 Binary files a/public/media-src/avatar/small/035-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-8.png b/public/media-src/avatar/small/035-8.png deleted file mode 100644 index 11b77bac7..000000000 Binary files a/public/media-src/avatar/small/035-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/035-9.png b/public/media-src/avatar/small/035-9.png deleted file mode 100644 index 57326f15e..000000000 Binary files a/public/media-src/avatar/small/035-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-1.png b/public/media-src/avatar/small/036-1.png deleted file mode 100755 index cd0f713c7..000000000 Binary files a/public/media-src/avatar/small/036-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-10.png b/public/media-src/avatar/small/036-10.png deleted file mode 100644 index 0d211c7fb..000000000 Binary files a/public/media-src/avatar/small/036-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-11.png b/public/media-src/avatar/small/036-11.png deleted file mode 100644 index 747a3f303..000000000 Binary files a/public/media-src/avatar/small/036-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-12.png b/public/media-src/avatar/small/036-12.png deleted file mode 100644 index a78caf1d5..000000000 Binary files a/public/media-src/avatar/small/036-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-2.png b/public/media-src/avatar/small/036-2.png deleted file mode 100755 index b1be78571..000000000 Binary files a/public/media-src/avatar/small/036-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-3.png b/public/media-src/avatar/small/036-3.png deleted file mode 100755 index 2c003f1b0..000000000 Binary files a/public/media-src/avatar/small/036-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-4.png b/public/media-src/avatar/small/036-4.png deleted file mode 100755 index 18eeea2ec..000000000 Binary files a/public/media-src/avatar/small/036-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-5.png b/public/media-src/avatar/small/036-5.png deleted file mode 100755 index 6140615fa..000000000 Binary files a/public/media-src/avatar/small/036-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-6.png b/public/media-src/avatar/small/036-6.png deleted file mode 100755 index fcf992282..000000000 Binary files a/public/media-src/avatar/small/036-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-7.png b/public/media-src/avatar/small/036-7.png deleted file mode 100755 index 5927e4b84..000000000 Binary files a/public/media-src/avatar/small/036-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-8.png b/public/media-src/avatar/small/036-8.png deleted file mode 100644 index dbd5a39e9..000000000 Binary files a/public/media-src/avatar/small/036-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/036-9.png b/public/media-src/avatar/small/036-9.png deleted file mode 100644 index 18c8e8101..000000000 Binary files a/public/media-src/avatar/small/036-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-1.png b/public/media-src/avatar/small/037-1.png deleted file mode 100755 index 9ff20d957..000000000 Binary files a/public/media-src/avatar/small/037-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-10.png b/public/media-src/avatar/small/037-10.png deleted file mode 100644 index 9c56e6949..000000000 Binary files a/public/media-src/avatar/small/037-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-11.png b/public/media-src/avatar/small/037-11.png deleted file mode 100644 index acaac40af..000000000 Binary files a/public/media-src/avatar/small/037-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-12.png b/public/media-src/avatar/small/037-12.png deleted file mode 100644 index 21d8452ef..000000000 Binary files a/public/media-src/avatar/small/037-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-2.png b/public/media-src/avatar/small/037-2.png deleted file mode 100755 index b19388387..000000000 Binary files a/public/media-src/avatar/small/037-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-3.png b/public/media-src/avatar/small/037-3.png deleted file mode 100755 index 469915cf8..000000000 Binary files a/public/media-src/avatar/small/037-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-4.png b/public/media-src/avatar/small/037-4.png deleted file mode 100755 index b624b4577..000000000 Binary files a/public/media-src/avatar/small/037-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-5.png b/public/media-src/avatar/small/037-5.png deleted file mode 100755 index cfb9df7d9..000000000 Binary files a/public/media-src/avatar/small/037-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-6.png b/public/media-src/avatar/small/037-6.png deleted file mode 100755 index 1de33d31a..000000000 Binary files a/public/media-src/avatar/small/037-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-7.png b/public/media-src/avatar/small/037-7.png deleted file mode 100755 index 6781eb2e6..000000000 Binary files a/public/media-src/avatar/small/037-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-8.png b/public/media-src/avatar/small/037-8.png deleted file mode 100644 index f63cf20f1..000000000 Binary files a/public/media-src/avatar/small/037-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/037-9.png b/public/media-src/avatar/small/037-9.png deleted file mode 100644 index 1ee3b8abb..000000000 Binary files a/public/media-src/avatar/small/037-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-1.png b/public/media-src/avatar/small/038-1.png deleted file mode 100755 index 577aa6573..000000000 Binary files a/public/media-src/avatar/small/038-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-10.png b/public/media-src/avatar/small/038-10.png deleted file mode 100644 index a672866da..000000000 Binary files a/public/media-src/avatar/small/038-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-11.png b/public/media-src/avatar/small/038-11.png deleted file mode 100644 index 87e91edf7..000000000 Binary files a/public/media-src/avatar/small/038-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-12.png b/public/media-src/avatar/small/038-12.png deleted file mode 100644 index ddb744db8..000000000 Binary files a/public/media-src/avatar/small/038-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-2.png b/public/media-src/avatar/small/038-2.png deleted file mode 100755 index a4aff5990..000000000 Binary files a/public/media-src/avatar/small/038-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-3.png b/public/media-src/avatar/small/038-3.png deleted file mode 100755 index c4a360c85..000000000 Binary files a/public/media-src/avatar/small/038-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-4.png b/public/media-src/avatar/small/038-4.png deleted file mode 100755 index 38945a87f..000000000 Binary files a/public/media-src/avatar/small/038-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-5.png b/public/media-src/avatar/small/038-5.png deleted file mode 100755 index f4d844e9b..000000000 Binary files a/public/media-src/avatar/small/038-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-6.png b/public/media-src/avatar/small/038-6.png deleted file mode 100755 index aaa00a69c..000000000 Binary files a/public/media-src/avatar/small/038-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-7.png b/public/media-src/avatar/small/038-7.png deleted file mode 100755 index 242a7de09..000000000 Binary files a/public/media-src/avatar/small/038-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-8.png b/public/media-src/avatar/small/038-8.png deleted file mode 100644 index 703ddde73..000000000 Binary files a/public/media-src/avatar/small/038-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/038-9.png b/public/media-src/avatar/small/038-9.png deleted file mode 100644 index 5deb9ef10..000000000 Binary files a/public/media-src/avatar/small/038-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-1.png b/public/media-src/avatar/small/039-1.png deleted file mode 100755 index 4c8bc3e50..000000000 Binary files a/public/media-src/avatar/small/039-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-10.png b/public/media-src/avatar/small/039-10.png deleted file mode 100644 index 66b0dfaab..000000000 Binary files a/public/media-src/avatar/small/039-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-11.png b/public/media-src/avatar/small/039-11.png deleted file mode 100644 index 4d1005dd2..000000000 Binary files a/public/media-src/avatar/small/039-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-12.png b/public/media-src/avatar/small/039-12.png deleted file mode 100644 index 41a55b5a6..000000000 Binary files a/public/media-src/avatar/small/039-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-2.png b/public/media-src/avatar/small/039-2.png deleted file mode 100755 index 636dda647..000000000 Binary files a/public/media-src/avatar/small/039-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-3.png b/public/media-src/avatar/small/039-3.png deleted file mode 100755 index cafec8af2..000000000 Binary files a/public/media-src/avatar/small/039-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-4.png b/public/media-src/avatar/small/039-4.png deleted file mode 100755 index da5658db7..000000000 Binary files a/public/media-src/avatar/small/039-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-5.png b/public/media-src/avatar/small/039-5.png deleted file mode 100755 index 59e8131f8..000000000 Binary files a/public/media-src/avatar/small/039-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-6.png b/public/media-src/avatar/small/039-6.png deleted file mode 100755 index 89b316ced..000000000 Binary files a/public/media-src/avatar/small/039-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-7.png b/public/media-src/avatar/small/039-7.png deleted file mode 100755 index 0d003984b..000000000 Binary files a/public/media-src/avatar/small/039-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-8.png b/public/media-src/avatar/small/039-8.png deleted file mode 100644 index 5f1340eac..000000000 Binary files a/public/media-src/avatar/small/039-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/039-9.png b/public/media-src/avatar/small/039-9.png deleted file mode 100644 index dc84c4b4f..000000000 Binary files a/public/media-src/avatar/small/039-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-1.png b/public/media-src/avatar/small/040-1.png deleted file mode 100755 index b955942e4..000000000 Binary files a/public/media-src/avatar/small/040-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-10.png b/public/media-src/avatar/small/040-10.png deleted file mode 100644 index 9778ef433..000000000 Binary files a/public/media-src/avatar/small/040-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-11.png b/public/media-src/avatar/small/040-11.png deleted file mode 100644 index 3c90e9507..000000000 Binary files a/public/media-src/avatar/small/040-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-12.png b/public/media-src/avatar/small/040-12.png deleted file mode 100644 index fa37bfb99..000000000 Binary files a/public/media-src/avatar/small/040-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-2.png b/public/media-src/avatar/small/040-2.png deleted file mode 100755 index f56e61028..000000000 Binary files a/public/media-src/avatar/small/040-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-3.png b/public/media-src/avatar/small/040-3.png deleted file mode 100755 index f93cbd443..000000000 Binary files a/public/media-src/avatar/small/040-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-4.png b/public/media-src/avatar/small/040-4.png deleted file mode 100755 index bb50d53b1..000000000 Binary files a/public/media-src/avatar/small/040-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-5.png b/public/media-src/avatar/small/040-5.png deleted file mode 100755 index c8387822d..000000000 Binary files a/public/media-src/avatar/small/040-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-6.png b/public/media-src/avatar/small/040-6.png deleted file mode 100755 index 9950abd6f..000000000 Binary files a/public/media-src/avatar/small/040-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-7.png b/public/media-src/avatar/small/040-7.png deleted file mode 100755 index dc6721a20..000000000 Binary files a/public/media-src/avatar/small/040-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-8.png b/public/media-src/avatar/small/040-8.png deleted file mode 100644 index a9f3a8f97..000000000 Binary files a/public/media-src/avatar/small/040-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/040-9.png b/public/media-src/avatar/small/040-9.png deleted file mode 100644 index a0a31e0ac..000000000 Binary files a/public/media-src/avatar/small/040-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-1.png b/public/media-src/avatar/small/041-1.png deleted file mode 100755 index 27ffefb30..000000000 Binary files a/public/media-src/avatar/small/041-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-10.png b/public/media-src/avatar/small/041-10.png deleted file mode 100644 index e637cbe06..000000000 Binary files a/public/media-src/avatar/small/041-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-11.png b/public/media-src/avatar/small/041-11.png deleted file mode 100644 index aafa69031..000000000 Binary files a/public/media-src/avatar/small/041-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-12.png b/public/media-src/avatar/small/041-12.png deleted file mode 100644 index dea4566ac..000000000 Binary files a/public/media-src/avatar/small/041-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-2.png b/public/media-src/avatar/small/041-2.png deleted file mode 100755 index 6c3e630c1..000000000 Binary files a/public/media-src/avatar/small/041-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-3.png b/public/media-src/avatar/small/041-3.png deleted file mode 100755 index 507a6f90f..000000000 Binary files a/public/media-src/avatar/small/041-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-4.png b/public/media-src/avatar/small/041-4.png deleted file mode 100755 index 0188a8f4d..000000000 Binary files a/public/media-src/avatar/small/041-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-5.png b/public/media-src/avatar/small/041-5.png deleted file mode 100755 index 86067d852..000000000 Binary files a/public/media-src/avatar/small/041-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-6.png b/public/media-src/avatar/small/041-6.png deleted file mode 100755 index 774fecd5b..000000000 Binary files a/public/media-src/avatar/small/041-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-7.png b/public/media-src/avatar/small/041-7.png deleted file mode 100755 index 54a86cc76..000000000 Binary files a/public/media-src/avatar/small/041-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-8.png b/public/media-src/avatar/small/041-8.png deleted file mode 100644 index 97ecde330..000000000 Binary files a/public/media-src/avatar/small/041-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/041-9.png b/public/media-src/avatar/small/041-9.png deleted file mode 100644 index e6608b018..000000000 Binary files a/public/media-src/avatar/small/041-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-1.png b/public/media-src/avatar/small/042-1.png deleted file mode 100755 index 200b69ea2..000000000 Binary files a/public/media-src/avatar/small/042-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-10.png b/public/media-src/avatar/small/042-10.png deleted file mode 100644 index 7d90fba00..000000000 Binary files a/public/media-src/avatar/small/042-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-11.png b/public/media-src/avatar/small/042-11.png deleted file mode 100644 index 3fffa47be..000000000 Binary files a/public/media-src/avatar/small/042-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-12.png b/public/media-src/avatar/small/042-12.png deleted file mode 100644 index 676b215d1..000000000 Binary files a/public/media-src/avatar/small/042-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-2.png b/public/media-src/avatar/small/042-2.png deleted file mode 100755 index 6e80c4bce..000000000 Binary files a/public/media-src/avatar/small/042-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-3.png b/public/media-src/avatar/small/042-3.png deleted file mode 100755 index c2a17b05c..000000000 Binary files a/public/media-src/avatar/small/042-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-4.png b/public/media-src/avatar/small/042-4.png deleted file mode 100755 index 7a5a2ecae..000000000 Binary files a/public/media-src/avatar/small/042-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-5.png b/public/media-src/avatar/small/042-5.png deleted file mode 100755 index ea87b691f..000000000 Binary files a/public/media-src/avatar/small/042-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-6.png b/public/media-src/avatar/small/042-6.png deleted file mode 100755 index 23b19fffd..000000000 Binary files a/public/media-src/avatar/small/042-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-7.png b/public/media-src/avatar/small/042-7.png deleted file mode 100755 index f1ec48786..000000000 Binary files a/public/media-src/avatar/small/042-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-8.png b/public/media-src/avatar/small/042-8.png deleted file mode 100644 index b33ab81ff..000000000 Binary files a/public/media-src/avatar/small/042-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/042-9.png b/public/media-src/avatar/small/042-9.png deleted file mode 100644 index 72a79a94f..000000000 Binary files a/public/media-src/avatar/small/042-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-1.png b/public/media-src/avatar/small/043-1.png deleted file mode 100755 index dfa5534ff..000000000 Binary files a/public/media-src/avatar/small/043-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-10.png b/public/media-src/avatar/small/043-10.png deleted file mode 100644 index 0893cebf0..000000000 Binary files a/public/media-src/avatar/small/043-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-11.png b/public/media-src/avatar/small/043-11.png deleted file mode 100644 index 8c6cafb4f..000000000 Binary files a/public/media-src/avatar/small/043-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-12.png b/public/media-src/avatar/small/043-12.png deleted file mode 100644 index 4313b805a..000000000 Binary files a/public/media-src/avatar/small/043-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-2.png b/public/media-src/avatar/small/043-2.png deleted file mode 100755 index 375e4c2aa..000000000 Binary files a/public/media-src/avatar/small/043-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-3.png b/public/media-src/avatar/small/043-3.png deleted file mode 100755 index 7ba2074ac..000000000 Binary files a/public/media-src/avatar/small/043-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-4.png b/public/media-src/avatar/small/043-4.png deleted file mode 100755 index d87eaa305..000000000 Binary files a/public/media-src/avatar/small/043-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-5.png b/public/media-src/avatar/small/043-5.png deleted file mode 100755 index 8e080437c..000000000 Binary files a/public/media-src/avatar/small/043-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-6.png b/public/media-src/avatar/small/043-6.png deleted file mode 100755 index f51b349e0..000000000 Binary files a/public/media-src/avatar/small/043-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-7.png b/public/media-src/avatar/small/043-7.png deleted file mode 100755 index 014a9b2f2..000000000 Binary files a/public/media-src/avatar/small/043-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-8.png b/public/media-src/avatar/small/043-8.png deleted file mode 100644 index 7f3818d38..000000000 Binary files a/public/media-src/avatar/small/043-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/043-9.png b/public/media-src/avatar/small/043-9.png deleted file mode 100644 index 85c87657e..000000000 Binary files a/public/media-src/avatar/small/043-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-1.png b/public/media-src/avatar/small/044-1.png deleted file mode 100755 index 67710214f..000000000 Binary files a/public/media-src/avatar/small/044-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-10.png b/public/media-src/avatar/small/044-10.png deleted file mode 100644 index 726f852cb..000000000 Binary files a/public/media-src/avatar/small/044-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-11.png b/public/media-src/avatar/small/044-11.png deleted file mode 100644 index c4cba049c..000000000 Binary files a/public/media-src/avatar/small/044-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-12.png b/public/media-src/avatar/small/044-12.png deleted file mode 100644 index bfb1b6e38..000000000 Binary files a/public/media-src/avatar/small/044-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-2.png b/public/media-src/avatar/small/044-2.png deleted file mode 100755 index 5b668c976..000000000 Binary files a/public/media-src/avatar/small/044-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-3.png b/public/media-src/avatar/small/044-3.png deleted file mode 100755 index 3be22c62b..000000000 Binary files a/public/media-src/avatar/small/044-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-4.png b/public/media-src/avatar/small/044-4.png deleted file mode 100755 index 962818be0..000000000 Binary files a/public/media-src/avatar/small/044-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-5.png b/public/media-src/avatar/small/044-5.png deleted file mode 100755 index 46d29d6eb..000000000 Binary files a/public/media-src/avatar/small/044-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-6.png b/public/media-src/avatar/small/044-6.png deleted file mode 100755 index 8443eef38..000000000 Binary files a/public/media-src/avatar/small/044-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-7.png b/public/media-src/avatar/small/044-7.png deleted file mode 100755 index 603553a10..000000000 Binary files a/public/media-src/avatar/small/044-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-8.png b/public/media-src/avatar/small/044-8.png deleted file mode 100644 index 6aa55ae16..000000000 Binary files a/public/media-src/avatar/small/044-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/044-9.png b/public/media-src/avatar/small/044-9.png deleted file mode 100644 index f71f2bf5c..000000000 Binary files a/public/media-src/avatar/small/044-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-1.png b/public/media-src/avatar/small/045-1.png deleted file mode 100755 index 606c75c52..000000000 Binary files a/public/media-src/avatar/small/045-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-10.png b/public/media-src/avatar/small/045-10.png deleted file mode 100644 index e4387c0f3..000000000 Binary files a/public/media-src/avatar/small/045-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-11.png b/public/media-src/avatar/small/045-11.png deleted file mode 100644 index a7d0ce136..000000000 Binary files a/public/media-src/avatar/small/045-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-12.png b/public/media-src/avatar/small/045-12.png deleted file mode 100644 index ff4fa5239..000000000 Binary files a/public/media-src/avatar/small/045-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-2.png b/public/media-src/avatar/small/045-2.png deleted file mode 100755 index a88fae4c8..000000000 Binary files a/public/media-src/avatar/small/045-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-3.png b/public/media-src/avatar/small/045-3.png deleted file mode 100755 index 1c06285d6..000000000 Binary files a/public/media-src/avatar/small/045-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-4.png b/public/media-src/avatar/small/045-4.png deleted file mode 100755 index cb4d41a11..000000000 Binary files a/public/media-src/avatar/small/045-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-5.png b/public/media-src/avatar/small/045-5.png deleted file mode 100755 index beb70a080..000000000 Binary files a/public/media-src/avatar/small/045-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-6.png b/public/media-src/avatar/small/045-6.png deleted file mode 100755 index 70b075676..000000000 Binary files a/public/media-src/avatar/small/045-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-7.png b/public/media-src/avatar/small/045-7.png deleted file mode 100755 index 4d17bc0bb..000000000 Binary files a/public/media-src/avatar/small/045-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-8.png b/public/media-src/avatar/small/045-8.png deleted file mode 100644 index 04a9ea95f..000000000 Binary files a/public/media-src/avatar/small/045-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/045-9.png b/public/media-src/avatar/small/045-9.png deleted file mode 100644 index 7aeab6d01..000000000 Binary files a/public/media-src/avatar/small/045-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-1.png b/public/media-src/avatar/small/046-1.png deleted file mode 100755 index df3e55378..000000000 Binary files a/public/media-src/avatar/small/046-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-10.png b/public/media-src/avatar/small/046-10.png deleted file mode 100644 index 006f61560..000000000 Binary files a/public/media-src/avatar/small/046-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-11.png b/public/media-src/avatar/small/046-11.png deleted file mode 100644 index 3e0fba724..000000000 Binary files a/public/media-src/avatar/small/046-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-12.png b/public/media-src/avatar/small/046-12.png deleted file mode 100644 index 864438474..000000000 Binary files a/public/media-src/avatar/small/046-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-2.png b/public/media-src/avatar/small/046-2.png deleted file mode 100755 index 5921ebaad..000000000 Binary files a/public/media-src/avatar/small/046-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-3.png b/public/media-src/avatar/small/046-3.png deleted file mode 100755 index fccc53b38..000000000 Binary files a/public/media-src/avatar/small/046-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-4.png b/public/media-src/avatar/small/046-4.png deleted file mode 100755 index 86bef0be6..000000000 Binary files a/public/media-src/avatar/small/046-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-5.png b/public/media-src/avatar/small/046-5.png deleted file mode 100755 index b09c39ed3..000000000 Binary files a/public/media-src/avatar/small/046-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-6.png b/public/media-src/avatar/small/046-6.png deleted file mode 100755 index 1aefe9916..000000000 Binary files a/public/media-src/avatar/small/046-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-7.png b/public/media-src/avatar/small/046-7.png deleted file mode 100755 index 763882677..000000000 Binary files a/public/media-src/avatar/small/046-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-8.png b/public/media-src/avatar/small/046-8.png deleted file mode 100644 index 6379bed2f..000000000 Binary files a/public/media-src/avatar/small/046-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/046-9.png b/public/media-src/avatar/small/046-9.png deleted file mode 100644 index 9e35eda5f..000000000 Binary files a/public/media-src/avatar/small/046-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-1.png b/public/media-src/avatar/small/047-1.png deleted file mode 100755 index 2e3336a68..000000000 Binary files a/public/media-src/avatar/small/047-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-10.png b/public/media-src/avatar/small/047-10.png deleted file mode 100644 index b71a09bf6..000000000 Binary files a/public/media-src/avatar/small/047-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-11.png b/public/media-src/avatar/small/047-11.png deleted file mode 100644 index 552890c39..000000000 Binary files a/public/media-src/avatar/small/047-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-12.png b/public/media-src/avatar/small/047-12.png deleted file mode 100644 index dc1239c5f..000000000 Binary files a/public/media-src/avatar/small/047-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-2.png b/public/media-src/avatar/small/047-2.png deleted file mode 100755 index 535515a36..000000000 Binary files a/public/media-src/avatar/small/047-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-3.png b/public/media-src/avatar/small/047-3.png deleted file mode 100755 index 3bbb55988..000000000 Binary files a/public/media-src/avatar/small/047-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-4.png b/public/media-src/avatar/small/047-4.png deleted file mode 100755 index 3b1df995a..000000000 Binary files a/public/media-src/avatar/small/047-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-5.png b/public/media-src/avatar/small/047-5.png deleted file mode 100755 index 1167f0174..000000000 Binary files a/public/media-src/avatar/small/047-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-6.png b/public/media-src/avatar/small/047-6.png deleted file mode 100755 index a80069b81..000000000 Binary files a/public/media-src/avatar/small/047-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-7.png b/public/media-src/avatar/small/047-7.png deleted file mode 100755 index decb0b39f..000000000 Binary files a/public/media-src/avatar/small/047-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-8.png b/public/media-src/avatar/small/047-8.png deleted file mode 100644 index b20c8be67..000000000 Binary files a/public/media-src/avatar/small/047-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/047-9.png b/public/media-src/avatar/small/047-9.png deleted file mode 100644 index 0f3b41ca6..000000000 Binary files a/public/media-src/avatar/small/047-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-1.png b/public/media-src/avatar/small/048-1.png deleted file mode 100755 index aeeb95250..000000000 Binary files a/public/media-src/avatar/small/048-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-10.png b/public/media-src/avatar/small/048-10.png deleted file mode 100644 index 7fbb5d736..000000000 Binary files a/public/media-src/avatar/small/048-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-11.png b/public/media-src/avatar/small/048-11.png deleted file mode 100644 index 5ec7ee9f6..000000000 Binary files a/public/media-src/avatar/small/048-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-12.png b/public/media-src/avatar/small/048-12.png deleted file mode 100644 index f62d87af8..000000000 Binary files a/public/media-src/avatar/small/048-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-2.png b/public/media-src/avatar/small/048-2.png deleted file mode 100755 index cfc4bf394..000000000 Binary files a/public/media-src/avatar/small/048-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-3.png b/public/media-src/avatar/small/048-3.png deleted file mode 100755 index c69023eac..000000000 Binary files a/public/media-src/avatar/small/048-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-4.png b/public/media-src/avatar/small/048-4.png deleted file mode 100755 index e4c7d0fdd..000000000 Binary files a/public/media-src/avatar/small/048-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-5.png b/public/media-src/avatar/small/048-5.png deleted file mode 100755 index 502d4ab21..000000000 Binary files a/public/media-src/avatar/small/048-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-6.png b/public/media-src/avatar/small/048-6.png deleted file mode 100755 index 752fa7ac6..000000000 Binary files a/public/media-src/avatar/small/048-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-7.png b/public/media-src/avatar/small/048-7.png deleted file mode 100755 index 9aa1d7206..000000000 Binary files a/public/media-src/avatar/small/048-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-8.png b/public/media-src/avatar/small/048-8.png deleted file mode 100644 index cef4595e2..000000000 Binary files a/public/media-src/avatar/small/048-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/048-9.png b/public/media-src/avatar/small/048-9.png deleted file mode 100644 index 48a8b5405..000000000 Binary files a/public/media-src/avatar/small/048-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-1.png b/public/media-src/avatar/small/049-1.png deleted file mode 100755 index ff5c7c48f..000000000 Binary files a/public/media-src/avatar/small/049-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-10.png b/public/media-src/avatar/small/049-10.png deleted file mode 100644 index 2edb9d194..000000000 Binary files a/public/media-src/avatar/small/049-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-11.png b/public/media-src/avatar/small/049-11.png deleted file mode 100644 index 48f92bd5f..000000000 Binary files a/public/media-src/avatar/small/049-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-12.png b/public/media-src/avatar/small/049-12.png deleted file mode 100644 index f1b57b150..000000000 Binary files a/public/media-src/avatar/small/049-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-2.png b/public/media-src/avatar/small/049-2.png deleted file mode 100755 index b83b59158..000000000 Binary files a/public/media-src/avatar/small/049-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-3.png b/public/media-src/avatar/small/049-3.png deleted file mode 100755 index fb4c6f5b9..000000000 Binary files a/public/media-src/avatar/small/049-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-4.png b/public/media-src/avatar/small/049-4.png deleted file mode 100755 index e87ea679a..000000000 Binary files a/public/media-src/avatar/small/049-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-5.png b/public/media-src/avatar/small/049-5.png deleted file mode 100755 index d124e5a1a..000000000 Binary files a/public/media-src/avatar/small/049-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-6.png b/public/media-src/avatar/small/049-6.png deleted file mode 100755 index 0e11d4968..000000000 Binary files a/public/media-src/avatar/small/049-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-7.png b/public/media-src/avatar/small/049-7.png deleted file mode 100755 index cd8498e84..000000000 Binary files a/public/media-src/avatar/small/049-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-8.png b/public/media-src/avatar/small/049-8.png deleted file mode 100644 index 4474dd043..000000000 Binary files a/public/media-src/avatar/small/049-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/049-9.png b/public/media-src/avatar/small/049-9.png deleted file mode 100644 index 060867827..000000000 Binary files a/public/media-src/avatar/small/049-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-1.png b/public/media-src/avatar/small/050-1.png deleted file mode 100755 index 3095bcbc5..000000000 Binary files a/public/media-src/avatar/small/050-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-10.png b/public/media-src/avatar/small/050-10.png deleted file mode 100644 index 75ed78038..000000000 Binary files a/public/media-src/avatar/small/050-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-11.png b/public/media-src/avatar/small/050-11.png deleted file mode 100644 index 6d2a6bf1c..000000000 Binary files a/public/media-src/avatar/small/050-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-12.png b/public/media-src/avatar/small/050-12.png deleted file mode 100644 index a462c1b6b..000000000 Binary files a/public/media-src/avatar/small/050-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-2.png b/public/media-src/avatar/small/050-2.png deleted file mode 100755 index 1acf0582b..000000000 Binary files a/public/media-src/avatar/small/050-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-3.png b/public/media-src/avatar/small/050-3.png deleted file mode 100755 index f0d69c6ae..000000000 Binary files a/public/media-src/avatar/small/050-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-4.png b/public/media-src/avatar/small/050-4.png deleted file mode 100755 index 13fa0d58a..000000000 Binary files a/public/media-src/avatar/small/050-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-5.png b/public/media-src/avatar/small/050-5.png deleted file mode 100755 index 6429fba2a..000000000 Binary files a/public/media-src/avatar/small/050-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-6.png b/public/media-src/avatar/small/050-6.png deleted file mode 100755 index 4b91eb11f..000000000 Binary files a/public/media-src/avatar/small/050-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-7.png b/public/media-src/avatar/small/050-7.png deleted file mode 100755 index b78b2474e..000000000 Binary files a/public/media-src/avatar/small/050-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-8.png b/public/media-src/avatar/small/050-8.png deleted file mode 100644 index 34e727822..000000000 Binary files a/public/media-src/avatar/small/050-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/050-9.png b/public/media-src/avatar/small/050-9.png deleted file mode 100644 index 07c89412e..000000000 Binary files a/public/media-src/avatar/small/050-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-1.png b/public/media-src/avatar/small/051-1.png deleted file mode 100755 index 8ea29f0ed..000000000 Binary files a/public/media-src/avatar/small/051-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-10.png b/public/media-src/avatar/small/051-10.png deleted file mode 100644 index 7ec88e577..000000000 Binary files a/public/media-src/avatar/small/051-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-11.png b/public/media-src/avatar/small/051-11.png deleted file mode 100644 index 1edd4f966..000000000 Binary files a/public/media-src/avatar/small/051-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-12.png b/public/media-src/avatar/small/051-12.png deleted file mode 100644 index 86104e7b8..000000000 Binary files a/public/media-src/avatar/small/051-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-2.png b/public/media-src/avatar/small/051-2.png deleted file mode 100755 index 7b13a720c..000000000 Binary files a/public/media-src/avatar/small/051-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-3.png b/public/media-src/avatar/small/051-3.png deleted file mode 100755 index a66cdff11..000000000 Binary files a/public/media-src/avatar/small/051-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-4.png b/public/media-src/avatar/small/051-4.png deleted file mode 100755 index f37066efc..000000000 Binary files a/public/media-src/avatar/small/051-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-5.png b/public/media-src/avatar/small/051-5.png deleted file mode 100755 index 131c01aac..000000000 Binary files a/public/media-src/avatar/small/051-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-6.png b/public/media-src/avatar/small/051-6.png deleted file mode 100755 index c91ae0aeb..000000000 Binary files a/public/media-src/avatar/small/051-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-7.png b/public/media-src/avatar/small/051-7.png deleted file mode 100755 index f7c67bfa2..000000000 Binary files a/public/media-src/avatar/small/051-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-8.png b/public/media-src/avatar/small/051-8.png deleted file mode 100644 index 2d0fbae93..000000000 Binary files a/public/media-src/avatar/small/051-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/051-9.png b/public/media-src/avatar/small/051-9.png deleted file mode 100644 index 3ee94579d..000000000 Binary files a/public/media-src/avatar/small/051-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-1.png b/public/media-src/avatar/small/052-1.png deleted file mode 100755 index 3a0dcde60..000000000 Binary files a/public/media-src/avatar/small/052-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-10.png b/public/media-src/avatar/small/052-10.png deleted file mode 100644 index bfd25fa01..000000000 Binary files a/public/media-src/avatar/small/052-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-11.png b/public/media-src/avatar/small/052-11.png deleted file mode 100644 index 8dd337ac6..000000000 Binary files a/public/media-src/avatar/small/052-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-12.png b/public/media-src/avatar/small/052-12.png deleted file mode 100644 index 2b4ad2b79..000000000 Binary files a/public/media-src/avatar/small/052-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-2.png b/public/media-src/avatar/small/052-2.png deleted file mode 100755 index c40c53d57..000000000 Binary files a/public/media-src/avatar/small/052-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-3.png b/public/media-src/avatar/small/052-3.png deleted file mode 100755 index 011b82ade..000000000 Binary files a/public/media-src/avatar/small/052-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-4.png b/public/media-src/avatar/small/052-4.png deleted file mode 100755 index db1f5182e..000000000 Binary files a/public/media-src/avatar/small/052-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-5.png b/public/media-src/avatar/small/052-5.png deleted file mode 100755 index e85874807..000000000 Binary files a/public/media-src/avatar/small/052-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-6.png b/public/media-src/avatar/small/052-6.png deleted file mode 100755 index 27f664d6a..000000000 Binary files a/public/media-src/avatar/small/052-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-7.png b/public/media-src/avatar/small/052-7.png deleted file mode 100755 index ddd997ebc..000000000 Binary files a/public/media-src/avatar/small/052-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-8.png b/public/media-src/avatar/small/052-8.png deleted file mode 100644 index 017f457c5..000000000 Binary files a/public/media-src/avatar/small/052-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/052-9.png b/public/media-src/avatar/small/052-9.png deleted file mode 100644 index 691cb7a38..000000000 Binary files a/public/media-src/avatar/small/052-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-1.png b/public/media-src/avatar/small/053-1.png deleted file mode 100755 index db4774e3f..000000000 Binary files a/public/media-src/avatar/small/053-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-10.png b/public/media-src/avatar/small/053-10.png deleted file mode 100644 index 543a0c8aa..000000000 Binary files a/public/media-src/avatar/small/053-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-11.png b/public/media-src/avatar/small/053-11.png deleted file mode 100644 index a758e1073..000000000 Binary files a/public/media-src/avatar/small/053-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-12.png b/public/media-src/avatar/small/053-12.png deleted file mode 100644 index ecddaeaca..000000000 Binary files a/public/media-src/avatar/small/053-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-2.png b/public/media-src/avatar/small/053-2.png deleted file mode 100755 index ace386d75..000000000 Binary files a/public/media-src/avatar/small/053-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-3.png b/public/media-src/avatar/small/053-3.png deleted file mode 100755 index c4719854b..000000000 Binary files a/public/media-src/avatar/small/053-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-4.png b/public/media-src/avatar/small/053-4.png deleted file mode 100755 index 99f28b2c2..000000000 Binary files a/public/media-src/avatar/small/053-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-5.png b/public/media-src/avatar/small/053-5.png deleted file mode 100755 index 185f0c427..000000000 Binary files a/public/media-src/avatar/small/053-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-6.png b/public/media-src/avatar/small/053-6.png deleted file mode 100755 index 6be339f15..000000000 Binary files a/public/media-src/avatar/small/053-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-7.png b/public/media-src/avatar/small/053-7.png deleted file mode 100755 index 46dd973f2..000000000 Binary files a/public/media-src/avatar/small/053-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-8.png b/public/media-src/avatar/small/053-8.png deleted file mode 100644 index f49210093..000000000 Binary files a/public/media-src/avatar/small/053-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/053-9.png b/public/media-src/avatar/small/053-9.png deleted file mode 100644 index ae87097d7..000000000 Binary files a/public/media-src/avatar/small/053-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-1.png b/public/media-src/avatar/small/054-1.png deleted file mode 100755 index 2487f0b35..000000000 Binary files a/public/media-src/avatar/small/054-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-10.png b/public/media-src/avatar/small/054-10.png deleted file mode 100644 index 24df0fcba..000000000 Binary files a/public/media-src/avatar/small/054-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-11.png b/public/media-src/avatar/small/054-11.png deleted file mode 100644 index 0c20f786f..000000000 Binary files a/public/media-src/avatar/small/054-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-12.png b/public/media-src/avatar/small/054-12.png deleted file mode 100644 index 74d82b34d..000000000 Binary files a/public/media-src/avatar/small/054-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-2.png b/public/media-src/avatar/small/054-2.png deleted file mode 100755 index 6c568b4cf..000000000 Binary files a/public/media-src/avatar/small/054-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-3.png b/public/media-src/avatar/small/054-3.png deleted file mode 100755 index 539f73750..000000000 Binary files a/public/media-src/avatar/small/054-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-4.png b/public/media-src/avatar/small/054-4.png deleted file mode 100755 index db8e7d336..000000000 Binary files a/public/media-src/avatar/small/054-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-5.png b/public/media-src/avatar/small/054-5.png deleted file mode 100755 index 8207e3444..000000000 Binary files a/public/media-src/avatar/small/054-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-6.png b/public/media-src/avatar/small/054-6.png deleted file mode 100755 index 8f19476d5..000000000 Binary files a/public/media-src/avatar/small/054-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-7.png b/public/media-src/avatar/small/054-7.png deleted file mode 100755 index 4621dc541..000000000 Binary files a/public/media-src/avatar/small/054-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-8.png b/public/media-src/avatar/small/054-8.png deleted file mode 100644 index 7b9858dbd..000000000 Binary files a/public/media-src/avatar/small/054-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/054-9.png b/public/media-src/avatar/small/054-9.png deleted file mode 100644 index f2c9e6fcc..000000000 Binary files a/public/media-src/avatar/small/054-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-1.png b/public/media-src/avatar/small/055-1.png deleted file mode 100755 index 82c6e9404..000000000 Binary files a/public/media-src/avatar/small/055-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-10.png b/public/media-src/avatar/small/055-10.png deleted file mode 100644 index b5f3d5bd3..000000000 Binary files a/public/media-src/avatar/small/055-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-11.png b/public/media-src/avatar/small/055-11.png deleted file mode 100644 index 63f6acdd7..000000000 Binary files a/public/media-src/avatar/small/055-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-12.png b/public/media-src/avatar/small/055-12.png deleted file mode 100644 index e955b468d..000000000 Binary files a/public/media-src/avatar/small/055-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-2.png b/public/media-src/avatar/small/055-2.png deleted file mode 100755 index f5cb1c1f0..000000000 Binary files a/public/media-src/avatar/small/055-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-3.png b/public/media-src/avatar/small/055-3.png deleted file mode 100755 index d8ad1cb57..000000000 Binary files a/public/media-src/avatar/small/055-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-4.png b/public/media-src/avatar/small/055-4.png deleted file mode 100755 index 77dfaf1fc..000000000 Binary files a/public/media-src/avatar/small/055-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-5.png b/public/media-src/avatar/small/055-5.png deleted file mode 100755 index 3cecfaa25..000000000 Binary files a/public/media-src/avatar/small/055-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-6.png b/public/media-src/avatar/small/055-6.png deleted file mode 100755 index dff1ff9f9..000000000 Binary files a/public/media-src/avatar/small/055-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-7.png b/public/media-src/avatar/small/055-7.png deleted file mode 100755 index e3650f4df..000000000 Binary files a/public/media-src/avatar/small/055-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-8.png b/public/media-src/avatar/small/055-8.png deleted file mode 100644 index 64e510224..000000000 Binary files a/public/media-src/avatar/small/055-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/055-9.png b/public/media-src/avatar/small/055-9.png deleted file mode 100644 index 734bc9252..000000000 Binary files a/public/media-src/avatar/small/055-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-1.png b/public/media-src/avatar/small/056-1.png deleted file mode 100755 index 843e9a295..000000000 Binary files a/public/media-src/avatar/small/056-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-10.png b/public/media-src/avatar/small/056-10.png deleted file mode 100644 index 2dbbf5839..000000000 Binary files a/public/media-src/avatar/small/056-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-11.png b/public/media-src/avatar/small/056-11.png deleted file mode 100644 index 22fbf924a..000000000 Binary files a/public/media-src/avatar/small/056-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-12.png b/public/media-src/avatar/small/056-12.png deleted file mode 100644 index c30de1406..000000000 Binary files a/public/media-src/avatar/small/056-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-2.png b/public/media-src/avatar/small/056-2.png deleted file mode 100755 index 3e0f55524..000000000 Binary files a/public/media-src/avatar/small/056-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-3.png b/public/media-src/avatar/small/056-3.png deleted file mode 100755 index 2afdb11c4..000000000 Binary files a/public/media-src/avatar/small/056-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-4.png b/public/media-src/avatar/small/056-4.png deleted file mode 100755 index 3c308e046..000000000 Binary files a/public/media-src/avatar/small/056-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-5.png b/public/media-src/avatar/small/056-5.png deleted file mode 100755 index 0042f4b68..000000000 Binary files a/public/media-src/avatar/small/056-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-6.png b/public/media-src/avatar/small/056-6.png deleted file mode 100755 index 52cb8a980..000000000 Binary files a/public/media-src/avatar/small/056-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-7.png b/public/media-src/avatar/small/056-7.png deleted file mode 100755 index f8a997fe4..000000000 Binary files a/public/media-src/avatar/small/056-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-8.png b/public/media-src/avatar/small/056-8.png deleted file mode 100644 index 26c2b8b76..000000000 Binary files a/public/media-src/avatar/small/056-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/056-9.png b/public/media-src/avatar/small/056-9.png deleted file mode 100644 index b1ece650b..000000000 Binary files a/public/media-src/avatar/small/056-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-1.png b/public/media-src/avatar/small/057-1.png deleted file mode 100755 index 9a016f3b0..000000000 Binary files a/public/media-src/avatar/small/057-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-10.png b/public/media-src/avatar/small/057-10.png deleted file mode 100644 index 4bfb6ebd7..000000000 Binary files a/public/media-src/avatar/small/057-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-11.png b/public/media-src/avatar/small/057-11.png deleted file mode 100644 index 3e70f1a98..000000000 Binary files a/public/media-src/avatar/small/057-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-12.png b/public/media-src/avatar/small/057-12.png deleted file mode 100644 index 845e7bd9b..000000000 Binary files a/public/media-src/avatar/small/057-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-2.png b/public/media-src/avatar/small/057-2.png deleted file mode 100755 index 9b2bc7ac6..000000000 Binary files a/public/media-src/avatar/small/057-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-3.png b/public/media-src/avatar/small/057-3.png deleted file mode 100755 index f8b86723c..000000000 Binary files a/public/media-src/avatar/small/057-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-4.png b/public/media-src/avatar/small/057-4.png deleted file mode 100755 index d459f85a7..000000000 Binary files a/public/media-src/avatar/small/057-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-5.png b/public/media-src/avatar/small/057-5.png deleted file mode 100755 index f3b3d6fe4..000000000 Binary files a/public/media-src/avatar/small/057-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-6.png b/public/media-src/avatar/small/057-6.png deleted file mode 100755 index d52bf827d..000000000 Binary files a/public/media-src/avatar/small/057-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-7.png b/public/media-src/avatar/small/057-7.png deleted file mode 100755 index a6a03088d..000000000 Binary files a/public/media-src/avatar/small/057-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-8.png b/public/media-src/avatar/small/057-8.png deleted file mode 100644 index 5581839f1..000000000 Binary files a/public/media-src/avatar/small/057-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/057-9.png b/public/media-src/avatar/small/057-9.png deleted file mode 100644 index 44f440e30..000000000 Binary files a/public/media-src/avatar/small/057-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-1.png b/public/media-src/avatar/small/058-1.png deleted file mode 100755 index 6508dfacf..000000000 Binary files a/public/media-src/avatar/small/058-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-10.png b/public/media-src/avatar/small/058-10.png deleted file mode 100644 index 1ee1132e2..000000000 Binary files a/public/media-src/avatar/small/058-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-11.png b/public/media-src/avatar/small/058-11.png deleted file mode 100644 index 40de481e4..000000000 Binary files a/public/media-src/avatar/small/058-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-12.png b/public/media-src/avatar/small/058-12.png deleted file mode 100644 index 1441d5469..000000000 Binary files a/public/media-src/avatar/small/058-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-2.png b/public/media-src/avatar/small/058-2.png deleted file mode 100755 index 5bae2a905..000000000 Binary files a/public/media-src/avatar/small/058-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-3.png b/public/media-src/avatar/small/058-3.png deleted file mode 100755 index 22d9dab58..000000000 Binary files a/public/media-src/avatar/small/058-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-4.png b/public/media-src/avatar/small/058-4.png deleted file mode 100755 index 9e6b92176..000000000 Binary files a/public/media-src/avatar/small/058-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-5.png b/public/media-src/avatar/small/058-5.png deleted file mode 100755 index 07a4e0f35..000000000 Binary files a/public/media-src/avatar/small/058-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-6.png b/public/media-src/avatar/small/058-6.png deleted file mode 100755 index 44e06eb92..000000000 Binary files a/public/media-src/avatar/small/058-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-7.png b/public/media-src/avatar/small/058-7.png deleted file mode 100755 index eae707eb3..000000000 Binary files a/public/media-src/avatar/small/058-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-8.png b/public/media-src/avatar/small/058-8.png deleted file mode 100644 index ace76e72f..000000000 Binary files a/public/media-src/avatar/small/058-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/058-9.png b/public/media-src/avatar/small/058-9.png deleted file mode 100644 index f9d2a57f3..000000000 Binary files a/public/media-src/avatar/small/058-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-1.png b/public/media-src/avatar/small/059-1.png deleted file mode 100755 index bb85bdfb4..000000000 Binary files a/public/media-src/avatar/small/059-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-10.png b/public/media-src/avatar/small/059-10.png deleted file mode 100644 index 04263b84d..000000000 Binary files a/public/media-src/avatar/small/059-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-11.png b/public/media-src/avatar/small/059-11.png deleted file mode 100644 index e01d9a5cb..000000000 Binary files a/public/media-src/avatar/small/059-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-12.png b/public/media-src/avatar/small/059-12.png deleted file mode 100644 index 8778e9423..000000000 Binary files a/public/media-src/avatar/small/059-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-2.png b/public/media-src/avatar/small/059-2.png deleted file mode 100755 index 2bc3180ee..000000000 Binary files a/public/media-src/avatar/small/059-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-3.png b/public/media-src/avatar/small/059-3.png deleted file mode 100755 index d620b0810..000000000 Binary files a/public/media-src/avatar/small/059-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-4.png b/public/media-src/avatar/small/059-4.png deleted file mode 100755 index ba38b595e..000000000 Binary files a/public/media-src/avatar/small/059-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-5.png b/public/media-src/avatar/small/059-5.png deleted file mode 100755 index 930aab2c9..000000000 Binary files a/public/media-src/avatar/small/059-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-6.png b/public/media-src/avatar/small/059-6.png deleted file mode 100755 index 847ead6c1..000000000 Binary files a/public/media-src/avatar/small/059-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-7.png b/public/media-src/avatar/small/059-7.png deleted file mode 100755 index 47551b0cb..000000000 Binary files a/public/media-src/avatar/small/059-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-8.png b/public/media-src/avatar/small/059-8.png deleted file mode 100644 index 76d30aac9..000000000 Binary files a/public/media-src/avatar/small/059-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/059-9.png b/public/media-src/avatar/small/059-9.png deleted file mode 100644 index 0bb446ce1..000000000 Binary files a/public/media-src/avatar/small/059-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-1.png b/public/media-src/avatar/small/060-1.png deleted file mode 100755 index 3c5172abe..000000000 Binary files a/public/media-src/avatar/small/060-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-10.png b/public/media-src/avatar/small/060-10.png deleted file mode 100644 index 221c1f55d..000000000 Binary files a/public/media-src/avatar/small/060-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-11.png b/public/media-src/avatar/small/060-11.png deleted file mode 100644 index 6c27d0ed7..000000000 Binary files a/public/media-src/avatar/small/060-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-12.png b/public/media-src/avatar/small/060-12.png deleted file mode 100644 index 3bf6a034b..000000000 Binary files a/public/media-src/avatar/small/060-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-2.png b/public/media-src/avatar/small/060-2.png deleted file mode 100755 index 7d438e560..000000000 Binary files a/public/media-src/avatar/small/060-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-3.png b/public/media-src/avatar/small/060-3.png deleted file mode 100755 index b5786ed03..000000000 Binary files a/public/media-src/avatar/small/060-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-4.png b/public/media-src/avatar/small/060-4.png deleted file mode 100755 index 988c8fc91..000000000 Binary files a/public/media-src/avatar/small/060-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-5.png b/public/media-src/avatar/small/060-5.png deleted file mode 100755 index cff9a12ba..000000000 Binary files a/public/media-src/avatar/small/060-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-6.png b/public/media-src/avatar/small/060-6.png deleted file mode 100755 index 2023e4a04..000000000 Binary files a/public/media-src/avatar/small/060-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-7.png b/public/media-src/avatar/small/060-7.png deleted file mode 100755 index da49f149f..000000000 Binary files a/public/media-src/avatar/small/060-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-8.png b/public/media-src/avatar/small/060-8.png deleted file mode 100644 index 428f78705..000000000 Binary files a/public/media-src/avatar/small/060-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/060-9.png b/public/media-src/avatar/small/060-9.png deleted file mode 100644 index 60eedb71f..000000000 Binary files a/public/media-src/avatar/small/060-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-1.png b/public/media-src/avatar/small/061-1.png deleted file mode 100755 index 009f99622..000000000 Binary files a/public/media-src/avatar/small/061-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-10.png b/public/media-src/avatar/small/061-10.png deleted file mode 100644 index c6f701ba1..000000000 Binary files a/public/media-src/avatar/small/061-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-11.png b/public/media-src/avatar/small/061-11.png deleted file mode 100644 index d7e329524..000000000 Binary files a/public/media-src/avatar/small/061-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-12.png b/public/media-src/avatar/small/061-12.png deleted file mode 100644 index 5fcacbc40..000000000 Binary files a/public/media-src/avatar/small/061-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-2.png b/public/media-src/avatar/small/061-2.png deleted file mode 100755 index 7dfa5407e..000000000 Binary files a/public/media-src/avatar/small/061-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-3.png b/public/media-src/avatar/small/061-3.png deleted file mode 100755 index d8ff16e45..000000000 Binary files a/public/media-src/avatar/small/061-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-4.png b/public/media-src/avatar/small/061-4.png deleted file mode 100755 index 698fd8c41..000000000 Binary files a/public/media-src/avatar/small/061-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-5.png b/public/media-src/avatar/small/061-5.png deleted file mode 100755 index 76901406d..000000000 Binary files a/public/media-src/avatar/small/061-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-6.png b/public/media-src/avatar/small/061-6.png deleted file mode 100755 index 508bb3197..000000000 Binary files a/public/media-src/avatar/small/061-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-7.png b/public/media-src/avatar/small/061-7.png deleted file mode 100755 index 2a27e33cd..000000000 Binary files a/public/media-src/avatar/small/061-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-8.png b/public/media-src/avatar/small/061-8.png deleted file mode 100644 index b13d000e7..000000000 Binary files a/public/media-src/avatar/small/061-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/061-9.png b/public/media-src/avatar/small/061-9.png deleted file mode 100644 index 43ae3756a..000000000 Binary files a/public/media-src/avatar/small/061-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-1.png b/public/media-src/avatar/small/062-1.png deleted file mode 100755 index ef31b30a1..000000000 Binary files a/public/media-src/avatar/small/062-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-10.png b/public/media-src/avatar/small/062-10.png deleted file mode 100644 index 3e668f22d..000000000 Binary files a/public/media-src/avatar/small/062-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-11.png b/public/media-src/avatar/small/062-11.png deleted file mode 100644 index ff4fd7956..000000000 Binary files a/public/media-src/avatar/small/062-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-12.png b/public/media-src/avatar/small/062-12.png deleted file mode 100644 index 163b89ea6..000000000 Binary files a/public/media-src/avatar/small/062-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-2.png b/public/media-src/avatar/small/062-2.png deleted file mode 100755 index 9bdb94967..000000000 Binary files a/public/media-src/avatar/small/062-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-3.png b/public/media-src/avatar/small/062-3.png deleted file mode 100755 index e3c06e2ee..000000000 Binary files a/public/media-src/avatar/small/062-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-4.png b/public/media-src/avatar/small/062-4.png deleted file mode 100755 index 3b5a04316..000000000 Binary files a/public/media-src/avatar/small/062-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-5.png b/public/media-src/avatar/small/062-5.png deleted file mode 100755 index 7667f4613..000000000 Binary files a/public/media-src/avatar/small/062-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-6.png b/public/media-src/avatar/small/062-6.png deleted file mode 100755 index 53b94fe6c..000000000 Binary files a/public/media-src/avatar/small/062-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-7.png b/public/media-src/avatar/small/062-7.png deleted file mode 100755 index 16726d0e9..000000000 Binary files a/public/media-src/avatar/small/062-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-8.png b/public/media-src/avatar/small/062-8.png deleted file mode 100644 index 160281019..000000000 Binary files a/public/media-src/avatar/small/062-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/062-9.png b/public/media-src/avatar/small/062-9.png deleted file mode 100644 index 0767e7f77..000000000 Binary files a/public/media-src/avatar/small/062-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-1.png b/public/media-src/avatar/small/063-1.png deleted file mode 100755 index 2b7ecc27f..000000000 Binary files a/public/media-src/avatar/small/063-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-10.png b/public/media-src/avatar/small/063-10.png deleted file mode 100644 index 1e425444e..000000000 Binary files a/public/media-src/avatar/small/063-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-11.png b/public/media-src/avatar/small/063-11.png deleted file mode 100644 index 6baeaea9b..000000000 Binary files a/public/media-src/avatar/small/063-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-12.png b/public/media-src/avatar/small/063-12.png deleted file mode 100644 index e3e1199ac..000000000 Binary files a/public/media-src/avatar/small/063-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-2.png b/public/media-src/avatar/small/063-2.png deleted file mode 100755 index cb62efc9f..000000000 Binary files a/public/media-src/avatar/small/063-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-3.png b/public/media-src/avatar/small/063-3.png deleted file mode 100755 index 0f2fbd216..000000000 Binary files a/public/media-src/avatar/small/063-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-4.png b/public/media-src/avatar/small/063-4.png deleted file mode 100755 index d4822f287..000000000 Binary files a/public/media-src/avatar/small/063-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-5.png b/public/media-src/avatar/small/063-5.png deleted file mode 100755 index 9c1379c98..000000000 Binary files a/public/media-src/avatar/small/063-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-6.png b/public/media-src/avatar/small/063-6.png deleted file mode 100755 index 871e90cc4..000000000 Binary files a/public/media-src/avatar/small/063-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-7.png b/public/media-src/avatar/small/063-7.png deleted file mode 100755 index bc900bc28..000000000 Binary files a/public/media-src/avatar/small/063-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-8.png b/public/media-src/avatar/small/063-8.png deleted file mode 100644 index d0c58a3bf..000000000 Binary files a/public/media-src/avatar/small/063-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/063-9.png b/public/media-src/avatar/small/063-9.png deleted file mode 100644 index f0dad829e..000000000 Binary files a/public/media-src/avatar/small/063-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-1.png b/public/media-src/avatar/small/064-1.png deleted file mode 100755 index 35a24bd53..000000000 Binary files a/public/media-src/avatar/small/064-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-10.png b/public/media-src/avatar/small/064-10.png deleted file mode 100644 index 3f9cd09b5..000000000 Binary files a/public/media-src/avatar/small/064-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-11.png b/public/media-src/avatar/small/064-11.png deleted file mode 100644 index 2bfcf7240..000000000 Binary files a/public/media-src/avatar/small/064-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-12.png b/public/media-src/avatar/small/064-12.png deleted file mode 100644 index a67b8f68d..000000000 Binary files a/public/media-src/avatar/small/064-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-2.png b/public/media-src/avatar/small/064-2.png deleted file mode 100755 index b7df2eead..000000000 Binary files a/public/media-src/avatar/small/064-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-3.png b/public/media-src/avatar/small/064-3.png deleted file mode 100755 index 72bde6deb..000000000 Binary files a/public/media-src/avatar/small/064-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-4.png b/public/media-src/avatar/small/064-4.png deleted file mode 100755 index db6135a29..000000000 Binary files a/public/media-src/avatar/small/064-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-5.png b/public/media-src/avatar/small/064-5.png deleted file mode 100755 index 5e1f8217c..000000000 Binary files a/public/media-src/avatar/small/064-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-6.png b/public/media-src/avatar/small/064-6.png deleted file mode 100755 index 2ac5458c5..000000000 Binary files a/public/media-src/avatar/small/064-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-7.png b/public/media-src/avatar/small/064-7.png deleted file mode 100755 index 51de74cf1..000000000 Binary files a/public/media-src/avatar/small/064-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-8.png b/public/media-src/avatar/small/064-8.png deleted file mode 100644 index 23212ab03..000000000 Binary files a/public/media-src/avatar/small/064-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/064-9.png b/public/media-src/avatar/small/064-9.png deleted file mode 100644 index 37471d244..000000000 Binary files a/public/media-src/avatar/small/064-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-1.png b/public/media-src/avatar/small/065-1.png deleted file mode 100755 index 71b7021d2..000000000 Binary files a/public/media-src/avatar/small/065-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-10.png b/public/media-src/avatar/small/065-10.png deleted file mode 100644 index 62c3bc596..000000000 Binary files a/public/media-src/avatar/small/065-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-11.png b/public/media-src/avatar/small/065-11.png deleted file mode 100644 index 5830f328a..000000000 Binary files a/public/media-src/avatar/small/065-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-12.png b/public/media-src/avatar/small/065-12.png deleted file mode 100644 index 49d6afea2..000000000 Binary files a/public/media-src/avatar/small/065-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-2.png b/public/media-src/avatar/small/065-2.png deleted file mode 100755 index 6f949dea5..000000000 Binary files a/public/media-src/avatar/small/065-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-3.png b/public/media-src/avatar/small/065-3.png deleted file mode 100755 index ae5574ec8..000000000 Binary files a/public/media-src/avatar/small/065-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-4.png b/public/media-src/avatar/small/065-4.png deleted file mode 100755 index a9bb4fe46..000000000 Binary files a/public/media-src/avatar/small/065-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-5.png b/public/media-src/avatar/small/065-5.png deleted file mode 100755 index 00676bf96..000000000 Binary files a/public/media-src/avatar/small/065-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-6.png b/public/media-src/avatar/small/065-6.png deleted file mode 100755 index 7c01b6799..000000000 Binary files a/public/media-src/avatar/small/065-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-7.png b/public/media-src/avatar/small/065-7.png deleted file mode 100755 index 9605523c6..000000000 Binary files a/public/media-src/avatar/small/065-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-8.png b/public/media-src/avatar/small/065-8.png deleted file mode 100644 index a71a111f3..000000000 Binary files a/public/media-src/avatar/small/065-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/065-9.png b/public/media-src/avatar/small/065-9.png deleted file mode 100644 index 11ccb371a..000000000 Binary files a/public/media-src/avatar/small/065-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-1.png b/public/media-src/avatar/small/066-1.png deleted file mode 100755 index c979f66ac..000000000 Binary files a/public/media-src/avatar/small/066-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-10.png b/public/media-src/avatar/small/066-10.png deleted file mode 100644 index 418b973b3..000000000 Binary files a/public/media-src/avatar/small/066-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-11.png b/public/media-src/avatar/small/066-11.png deleted file mode 100644 index c653912d3..000000000 Binary files a/public/media-src/avatar/small/066-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-12.png b/public/media-src/avatar/small/066-12.png deleted file mode 100644 index cd5f33416..000000000 Binary files a/public/media-src/avatar/small/066-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-2.png b/public/media-src/avatar/small/066-2.png deleted file mode 100755 index ef9335fd7..000000000 Binary files a/public/media-src/avatar/small/066-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-3.png b/public/media-src/avatar/small/066-3.png deleted file mode 100755 index c6e69bc48..000000000 Binary files a/public/media-src/avatar/small/066-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-4.png b/public/media-src/avatar/small/066-4.png deleted file mode 100755 index 8501a2cf5..000000000 Binary files a/public/media-src/avatar/small/066-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-5.png b/public/media-src/avatar/small/066-5.png deleted file mode 100755 index c44a8491d..000000000 Binary files a/public/media-src/avatar/small/066-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-6.png b/public/media-src/avatar/small/066-6.png deleted file mode 100755 index 0d6f8709a..000000000 Binary files a/public/media-src/avatar/small/066-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-7.png b/public/media-src/avatar/small/066-7.png deleted file mode 100755 index 4ed6bb606..000000000 Binary files a/public/media-src/avatar/small/066-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-8.png b/public/media-src/avatar/small/066-8.png deleted file mode 100644 index 645dacad5..000000000 Binary files a/public/media-src/avatar/small/066-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/066-9.png b/public/media-src/avatar/small/066-9.png deleted file mode 100644 index 6f35992e6..000000000 Binary files a/public/media-src/avatar/small/066-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-1.png b/public/media-src/avatar/small/067-1.png deleted file mode 100755 index f41ec2bb0..000000000 Binary files a/public/media-src/avatar/small/067-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-10.png b/public/media-src/avatar/small/067-10.png deleted file mode 100644 index fe1aab527..000000000 Binary files a/public/media-src/avatar/small/067-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-11.png b/public/media-src/avatar/small/067-11.png deleted file mode 100644 index eff4ff7fb..000000000 Binary files a/public/media-src/avatar/small/067-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-12.png b/public/media-src/avatar/small/067-12.png deleted file mode 100644 index 33a998f41..000000000 Binary files a/public/media-src/avatar/small/067-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-2.png b/public/media-src/avatar/small/067-2.png deleted file mode 100755 index b59cbd00c..000000000 Binary files a/public/media-src/avatar/small/067-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-3.png b/public/media-src/avatar/small/067-3.png deleted file mode 100755 index 1e031e9b6..000000000 Binary files a/public/media-src/avatar/small/067-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-4.png b/public/media-src/avatar/small/067-4.png deleted file mode 100755 index 043b4dd0d..000000000 Binary files a/public/media-src/avatar/small/067-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-5.png b/public/media-src/avatar/small/067-5.png deleted file mode 100755 index 36fe181c5..000000000 Binary files a/public/media-src/avatar/small/067-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-6.png b/public/media-src/avatar/small/067-6.png deleted file mode 100755 index a73a6db24..000000000 Binary files a/public/media-src/avatar/small/067-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-7.png b/public/media-src/avatar/small/067-7.png deleted file mode 100755 index 33b726aaf..000000000 Binary files a/public/media-src/avatar/small/067-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-8.png b/public/media-src/avatar/small/067-8.png deleted file mode 100644 index 2498ae4da..000000000 Binary files a/public/media-src/avatar/small/067-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/067-9.png b/public/media-src/avatar/small/067-9.png deleted file mode 100644 index 129a2ae6a..000000000 Binary files a/public/media-src/avatar/small/067-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-1.png b/public/media-src/avatar/small/068-1.png deleted file mode 100755 index d65785b78..000000000 Binary files a/public/media-src/avatar/small/068-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-10.png b/public/media-src/avatar/small/068-10.png deleted file mode 100644 index 1fb9542f0..000000000 Binary files a/public/media-src/avatar/small/068-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-11.png b/public/media-src/avatar/small/068-11.png deleted file mode 100644 index f28d225e5..000000000 Binary files a/public/media-src/avatar/small/068-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-12.png b/public/media-src/avatar/small/068-12.png deleted file mode 100644 index 53e2b2b12..000000000 Binary files a/public/media-src/avatar/small/068-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-2.png b/public/media-src/avatar/small/068-2.png deleted file mode 100755 index 05eb5edd4..000000000 Binary files a/public/media-src/avatar/small/068-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-3.png b/public/media-src/avatar/small/068-3.png deleted file mode 100755 index 007d35731..000000000 Binary files a/public/media-src/avatar/small/068-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-4.png b/public/media-src/avatar/small/068-4.png deleted file mode 100755 index ecbbd5860..000000000 Binary files a/public/media-src/avatar/small/068-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-5.png b/public/media-src/avatar/small/068-5.png deleted file mode 100755 index 7ab8936ee..000000000 Binary files a/public/media-src/avatar/small/068-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-6.png b/public/media-src/avatar/small/068-6.png deleted file mode 100755 index 80d937858..000000000 Binary files a/public/media-src/avatar/small/068-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-7.png b/public/media-src/avatar/small/068-7.png deleted file mode 100755 index 6274c78f0..000000000 Binary files a/public/media-src/avatar/small/068-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-8.png b/public/media-src/avatar/small/068-8.png deleted file mode 100644 index 2eae86fab..000000000 Binary files a/public/media-src/avatar/small/068-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/068-9.png b/public/media-src/avatar/small/068-9.png deleted file mode 100644 index b3ac24089..000000000 Binary files a/public/media-src/avatar/small/068-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-1.png b/public/media-src/avatar/small/069-1.png deleted file mode 100755 index e16192a8a..000000000 Binary files a/public/media-src/avatar/small/069-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-10.png b/public/media-src/avatar/small/069-10.png deleted file mode 100644 index 32c694cf7..000000000 Binary files a/public/media-src/avatar/small/069-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-11.png b/public/media-src/avatar/small/069-11.png deleted file mode 100644 index 0b063a55e..000000000 Binary files a/public/media-src/avatar/small/069-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-12.png b/public/media-src/avatar/small/069-12.png deleted file mode 100644 index 029df17d9..000000000 Binary files a/public/media-src/avatar/small/069-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-2.png b/public/media-src/avatar/small/069-2.png deleted file mode 100755 index bc52533e7..000000000 Binary files a/public/media-src/avatar/small/069-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-3.png b/public/media-src/avatar/small/069-3.png deleted file mode 100755 index 75a4f7143..000000000 Binary files a/public/media-src/avatar/small/069-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-4.png b/public/media-src/avatar/small/069-4.png deleted file mode 100755 index 60f4bb789..000000000 Binary files a/public/media-src/avatar/small/069-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-5.png b/public/media-src/avatar/small/069-5.png deleted file mode 100755 index dabc9765a..000000000 Binary files a/public/media-src/avatar/small/069-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-6.png b/public/media-src/avatar/small/069-6.png deleted file mode 100755 index e80434389..000000000 Binary files a/public/media-src/avatar/small/069-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-7.png b/public/media-src/avatar/small/069-7.png deleted file mode 100755 index 49af10724..000000000 Binary files a/public/media-src/avatar/small/069-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-8.png b/public/media-src/avatar/small/069-8.png deleted file mode 100644 index 9bfe1f4a8..000000000 Binary files a/public/media-src/avatar/small/069-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/069-9.png b/public/media-src/avatar/small/069-9.png deleted file mode 100644 index f4155b188..000000000 Binary files a/public/media-src/avatar/small/069-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-1.png b/public/media-src/avatar/small/070-1.png deleted file mode 100755 index 3f076d700..000000000 Binary files a/public/media-src/avatar/small/070-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-10.png b/public/media-src/avatar/small/070-10.png deleted file mode 100644 index 572af3999..000000000 Binary files a/public/media-src/avatar/small/070-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-11.png b/public/media-src/avatar/small/070-11.png deleted file mode 100644 index 1a2022939..000000000 Binary files a/public/media-src/avatar/small/070-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-12.png b/public/media-src/avatar/small/070-12.png deleted file mode 100644 index 1eb05a86a..000000000 Binary files a/public/media-src/avatar/small/070-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-2.png b/public/media-src/avatar/small/070-2.png deleted file mode 100755 index e299a4224..000000000 Binary files a/public/media-src/avatar/small/070-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-3.png b/public/media-src/avatar/small/070-3.png deleted file mode 100755 index 42e900062..000000000 Binary files a/public/media-src/avatar/small/070-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-4.png b/public/media-src/avatar/small/070-4.png deleted file mode 100755 index 12c71d9b3..000000000 Binary files a/public/media-src/avatar/small/070-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-5.png b/public/media-src/avatar/small/070-5.png deleted file mode 100755 index c68fde236..000000000 Binary files a/public/media-src/avatar/small/070-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-6.png b/public/media-src/avatar/small/070-6.png deleted file mode 100755 index c1dc92213..000000000 Binary files a/public/media-src/avatar/small/070-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-7.png b/public/media-src/avatar/small/070-7.png deleted file mode 100755 index 969de4f2c..000000000 Binary files a/public/media-src/avatar/small/070-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-8.png b/public/media-src/avatar/small/070-8.png deleted file mode 100644 index dd617e082..000000000 Binary files a/public/media-src/avatar/small/070-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/070-9.png b/public/media-src/avatar/small/070-9.png deleted file mode 100644 index 4734b682b..000000000 Binary files a/public/media-src/avatar/small/070-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-1.png b/public/media-src/avatar/small/071-1.png deleted file mode 100755 index 31c8cc22b..000000000 Binary files a/public/media-src/avatar/small/071-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-10.png b/public/media-src/avatar/small/071-10.png deleted file mode 100644 index 5a8d70493..000000000 Binary files a/public/media-src/avatar/small/071-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-11.png b/public/media-src/avatar/small/071-11.png deleted file mode 100644 index c9970df4e..000000000 Binary files a/public/media-src/avatar/small/071-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-12.png b/public/media-src/avatar/small/071-12.png deleted file mode 100644 index c6d56ad0a..000000000 Binary files a/public/media-src/avatar/small/071-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-2.png b/public/media-src/avatar/small/071-2.png deleted file mode 100755 index db581ada7..000000000 Binary files a/public/media-src/avatar/small/071-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-3.png b/public/media-src/avatar/small/071-3.png deleted file mode 100755 index 208e43094..000000000 Binary files a/public/media-src/avatar/small/071-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-4.png b/public/media-src/avatar/small/071-4.png deleted file mode 100755 index ef7d42afe..000000000 Binary files a/public/media-src/avatar/small/071-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-5.png b/public/media-src/avatar/small/071-5.png deleted file mode 100755 index f3dbe3dda..000000000 Binary files a/public/media-src/avatar/small/071-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-6.png b/public/media-src/avatar/small/071-6.png deleted file mode 100755 index 70f4712b5..000000000 Binary files a/public/media-src/avatar/small/071-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-7.png b/public/media-src/avatar/small/071-7.png deleted file mode 100755 index 96daef2cd..000000000 Binary files a/public/media-src/avatar/small/071-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-8.png b/public/media-src/avatar/small/071-8.png deleted file mode 100644 index 2bb29eb07..000000000 Binary files a/public/media-src/avatar/small/071-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/071-9.png b/public/media-src/avatar/small/071-9.png deleted file mode 100644 index a03039851..000000000 Binary files a/public/media-src/avatar/small/071-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-1.png b/public/media-src/avatar/small/072-1.png deleted file mode 100755 index d41126fef..000000000 Binary files a/public/media-src/avatar/small/072-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-10.png b/public/media-src/avatar/small/072-10.png deleted file mode 100644 index 7ce0ba9cd..000000000 Binary files a/public/media-src/avatar/small/072-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-11.png b/public/media-src/avatar/small/072-11.png deleted file mode 100644 index 88c14bf08..000000000 Binary files a/public/media-src/avatar/small/072-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-12.png b/public/media-src/avatar/small/072-12.png deleted file mode 100644 index c576d1f94..000000000 Binary files a/public/media-src/avatar/small/072-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-2.png b/public/media-src/avatar/small/072-2.png deleted file mode 100755 index 087c82e15..000000000 Binary files a/public/media-src/avatar/small/072-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-3.png b/public/media-src/avatar/small/072-3.png deleted file mode 100755 index edf0b3249..000000000 Binary files a/public/media-src/avatar/small/072-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-4.png b/public/media-src/avatar/small/072-4.png deleted file mode 100755 index 0190d8009..000000000 Binary files a/public/media-src/avatar/small/072-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-5.png b/public/media-src/avatar/small/072-5.png deleted file mode 100755 index 0629a6b20..000000000 Binary files a/public/media-src/avatar/small/072-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-6.png b/public/media-src/avatar/small/072-6.png deleted file mode 100755 index d55610028..000000000 Binary files a/public/media-src/avatar/small/072-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-7.png b/public/media-src/avatar/small/072-7.png deleted file mode 100755 index 36466b658..000000000 Binary files a/public/media-src/avatar/small/072-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-8.png b/public/media-src/avatar/small/072-8.png deleted file mode 100644 index d70601d82..000000000 Binary files a/public/media-src/avatar/small/072-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/072-9.png b/public/media-src/avatar/small/072-9.png deleted file mode 100644 index 51106dc96..000000000 Binary files a/public/media-src/avatar/small/072-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-1.png b/public/media-src/avatar/small/073-1.png deleted file mode 100755 index 939a18d2a..000000000 Binary files a/public/media-src/avatar/small/073-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-10.png b/public/media-src/avatar/small/073-10.png deleted file mode 100644 index a85d8eaae..000000000 Binary files a/public/media-src/avatar/small/073-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-11.png b/public/media-src/avatar/small/073-11.png deleted file mode 100644 index da6fe5293..000000000 Binary files a/public/media-src/avatar/small/073-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-12.png b/public/media-src/avatar/small/073-12.png deleted file mode 100644 index 2186a0ce5..000000000 Binary files a/public/media-src/avatar/small/073-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-2.png b/public/media-src/avatar/small/073-2.png deleted file mode 100755 index c1e13a8a1..000000000 Binary files a/public/media-src/avatar/small/073-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-3.png b/public/media-src/avatar/small/073-3.png deleted file mode 100755 index 8b9f68281..000000000 Binary files a/public/media-src/avatar/small/073-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-4.png b/public/media-src/avatar/small/073-4.png deleted file mode 100755 index 56de19ecc..000000000 Binary files a/public/media-src/avatar/small/073-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-5.png b/public/media-src/avatar/small/073-5.png deleted file mode 100755 index d4bd62e88..000000000 Binary files a/public/media-src/avatar/small/073-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-6.png b/public/media-src/avatar/small/073-6.png deleted file mode 100755 index abe1fb853..000000000 Binary files a/public/media-src/avatar/small/073-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-7.png b/public/media-src/avatar/small/073-7.png deleted file mode 100755 index bf9ae8c8e..000000000 Binary files a/public/media-src/avatar/small/073-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-8.png b/public/media-src/avatar/small/073-8.png deleted file mode 100644 index bc716fb63..000000000 Binary files a/public/media-src/avatar/small/073-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/073-9.png b/public/media-src/avatar/small/073-9.png deleted file mode 100644 index b952518bd..000000000 Binary files a/public/media-src/avatar/small/073-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-1.png b/public/media-src/avatar/small/074-1.png deleted file mode 100755 index 04c519785..000000000 Binary files a/public/media-src/avatar/small/074-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-10.png b/public/media-src/avatar/small/074-10.png deleted file mode 100644 index ab23f4c1c..000000000 Binary files a/public/media-src/avatar/small/074-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-11.png b/public/media-src/avatar/small/074-11.png deleted file mode 100644 index 63835fa11..000000000 Binary files a/public/media-src/avatar/small/074-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-12.png b/public/media-src/avatar/small/074-12.png deleted file mode 100644 index e6cffbe44..000000000 Binary files a/public/media-src/avatar/small/074-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-2.png b/public/media-src/avatar/small/074-2.png deleted file mode 100755 index 917dce570..000000000 Binary files a/public/media-src/avatar/small/074-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-3.png b/public/media-src/avatar/small/074-3.png deleted file mode 100755 index 337c8e0db..000000000 Binary files a/public/media-src/avatar/small/074-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-4.png b/public/media-src/avatar/small/074-4.png deleted file mode 100755 index d1c871521..000000000 Binary files a/public/media-src/avatar/small/074-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-5.png b/public/media-src/avatar/small/074-5.png deleted file mode 100755 index dafd6b248..000000000 Binary files a/public/media-src/avatar/small/074-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-6.png b/public/media-src/avatar/small/074-6.png deleted file mode 100755 index 8475ca12e..000000000 Binary files a/public/media-src/avatar/small/074-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-7.png b/public/media-src/avatar/small/074-7.png deleted file mode 100755 index 7192da674..000000000 Binary files a/public/media-src/avatar/small/074-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-8.png b/public/media-src/avatar/small/074-8.png deleted file mode 100644 index 387e568f3..000000000 Binary files a/public/media-src/avatar/small/074-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/074-9.png b/public/media-src/avatar/small/074-9.png deleted file mode 100644 index 6e0116bf4..000000000 Binary files a/public/media-src/avatar/small/074-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-1.png b/public/media-src/avatar/small/075-1.png deleted file mode 100755 index d847bb80c..000000000 Binary files a/public/media-src/avatar/small/075-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-10.png b/public/media-src/avatar/small/075-10.png deleted file mode 100644 index 957262827..000000000 Binary files a/public/media-src/avatar/small/075-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-11.png b/public/media-src/avatar/small/075-11.png deleted file mode 100644 index 40fc24e02..000000000 Binary files a/public/media-src/avatar/small/075-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-12.png b/public/media-src/avatar/small/075-12.png deleted file mode 100644 index 0dfde062f..000000000 Binary files a/public/media-src/avatar/small/075-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-2.png b/public/media-src/avatar/small/075-2.png deleted file mode 100755 index adbaa4f4b..000000000 Binary files a/public/media-src/avatar/small/075-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-3.png b/public/media-src/avatar/small/075-3.png deleted file mode 100755 index 7aa608ee5..000000000 Binary files a/public/media-src/avatar/small/075-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-4.png b/public/media-src/avatar/small/075-4.png deleted file mode 100755 index e8ad58e97..000000000 Binary files a/public/media-src/avatar/small/075-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-5.png b/public/media-src/avatar/small/075-5.png deleted file mode 100755 index 16ef083dd..000000000 Binary files a/public/media-src/avatar/small/075-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-6.png b/public/media-src/avatar/small/075-6.png deleted file mode 100755 index a439d18f7..000000000 Binary files a/public/media-src/avatar/small/075-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-7.png b/public/media-src/avatar/small/075-7.png deleted file mode 100755 index 50156375c..000000000 Binary files a/public/media-src/avatar/small/075-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-8.png b/public/media-src/avatar/small/075-8.png deleted file mode 100644 index 0aac4713a..000000000 Binary files a/public/media-src/avatar/small/075-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/075-9.png b/public/media-src/avatar/small/075-9.png deleted file mode 100644 index 0aba16ef3..000000000 Binary files a/public/media-src/avatar/small/075-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-1.png b/public/media-src/avatar/small/076-1.png deleted file mode 100755 index a6c3c5acd..000000000 Binary files a/public/media-src/avatar/small/076-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-10.png b/public/media-src/avatar/small/076-10.png deleted file mode 100644 index 40f13c355..000000000 Binary files a/public/media-src/avatar/small/076-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-11.png b/public/media-src/avatar/small/076-11.png deleted file mode 100644 index b7604201e..000000000 Binary files a/public/media-src/avatar/small/076-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-12.png b/public/media-src/avatar/small/076-12.png deleted file mode 100644 index 2e0e276f2..000000000 Binary files a/public/media-src/avatar/small/076-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-2.png b/public/media-src/avatar/small/076-2.png deleted file mode 100755 index 79822fab4..000000000 Binary files a/public/media-src/avatar/small/076-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-3.png b/public/media-src/avatar/small/076-3.png deleted file mode 100755 index e2ed60fa2..000000000 Binary files a/public/media-src/avatar/small/076-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-4.png b/public/media-src/avatar/small/076-4.png deleted file mode 100755 index 2ea768369..000000000 Binary files a/public/media-src/avatar/small/076-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-5.png b/public/media-src/avatar/small/076-5.png deleted file mode 100755 index a1ddc21b5..000000000 Binary files a/public/media-src/avatar/small/076-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-6.png b/public/media-src/avatar/small/076-6.png deleted file mode 100755 index a964193c3..000000000 Binary files a/public/media-src/avatar/small/076-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-7.png b/public/media-src/avatar/small/076-7.png deleted file mode 100755 index 09917a792..000000000 Binary files a/public/media-src/avatar/small/076-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-8.png b/public/media-src/avatar/small/076-8.png deleted file mode 100644 index 3c984c0bc..000000000 Binary files a/public/media-src/avatar/small/076-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/076-9.png b/public/media-src/avatar/small/076-9.png deleted file mode 100644 index 9cbc26df0..000000000 Binary files a/public/media-src/avatar/small/076-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-1.png b/public/media-src/avatar/small/077-1.png deleted file mode 100755 index 6ca19df43..000000000 Binary files a/public/media-src/avatar/small/077-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-10.png b/public/media-src/avatar/small/077-10.png deleted file mode 100644 index ca805cc01..000000000 Binary files a/public/media-src/avatar/small/077-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-11.png b/public/media-src/avatar/small/077-11.png deleted file mode 100644 index 943747415..000000000 Binary files a/public/media-src/avatar/small/077-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-12.png b/public/media-src/avatar/small/077-12.png deleted file mode 100644 index f7b13c6de..000000000 Binary files a/public/media-src/avatar/small/077-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-2.png b/public/media-src/avatar/small/077-2.png deleted file mode 100755 index b0b2c2783..000000000 Binary files a/public/media-src/avatar/small/077-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-3.png b/public/media-src/avatar/small/077-3.png deleted file mode 100755 index bc2c577d7..000000000 Binary files a/public/media-src/avatar/small/077-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-4.png b/public/media-src/avatar/small/077-4.png deleted file mode 100755 index cd02a0443..000000000 Binary files a/public/media-src/avatar/small/077-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-5.png b/public/media-src/avatar/small/077-5.png deleted file mode 100755 index 6dee4a69c..000000000 Binary files a/public/media-src/avatar/small/077-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-6.png b/public/media-src/avatar/small/077-6.png deleted file mode 100755 index 5e884c962..000000000 Binary files a/public/media-src/avatar/small/077-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-7.png b/public/media-src/avatar/small/077-7.png deleted file mode 100755 index 04da26933..000000000 Binary files a/public/media-src/avatar/small/077-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-8.png b/public/media-src/avatar/small/077-8.png deleted file mode 100644 index ddf61360e..000000000 Binary files a/public/media-src/avatar/small/077-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/077-9.png b/public/media-src/avatar/small/077-9.png deleted file mode 100644 index 62d7c8300..000000000 Binary files a/public/media-src/avatar/small/077-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-1.png b/public/media-src/avatar/small/078-1.png deleted file mode 100755 index 600885aed..000000000 Binary files a/public/media-src/avatar/small/078-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-10.png b/public/media-src/avatar/small/078-10.png deleted file mode 100644 index b3df8e06e..000000000 Binary files a/public/media-src/avatar/small/078-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-11.png b/public/media-src/avatar/small/078-11.png deleted file mode 100644 index d02561246..000000000 Binary files a/public/media-src/avatar/small/078-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-12.png b/public/media-src/avatar/small/078-12.png deleted file mode 100644 index 5fe397372..000000000 Binary files a/public/media-src/avatar/small/078-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-2.png b/public/media-src/avatar/small/078-2.png deleted file mode 100755 index fa42e6346..000000000 Binary files a/public/media-src/avatar/small/078-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-3.png b/public/media-src/avatar/small/078-3.png deleted file mode 100755 index b50bdf586..000000000 Binary files a/public/media-src/avatar/small/078-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-4.png b/public/media-src/avatar/small/078-4.png deleted file mode 100755 index 10ab455eb..000000000 Binary files a/public/media-src/avatar/small/078-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-5.png b/public/media-src/avatar/small/078-5.png deleted file mode 100755 index 7ba161bba..000000000 Binary files a/public/media-src/avatar/small/078-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-6.png b/public/media-src/avatar/small/078-6.png deleted file mode 100755 index be4892f66..000000000 Binary files a/public/media-src/avatar/small/078-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-7.png b/public/media-src/avatar/small/078-7.png deleted file mode 100755 index 9ead7b41c..000000000 Binary files a/public/media-src/avatar/small/078-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-8.png b/public/media-src/avatar/small/078-8.png deleted file mode 100644 index edb2b4e0b..000000000 Binary files a/public/media-src/avatar/small/078-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/078-9.png b/public/media-src/avatar/small/078-9.png deleted file mode 100644 index c785e37e2..000000000 Binary files a/public/media-src/avatar/small/078-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-1.png b/public/media-src/avatar/small/079-1.png deleted file mode 100755 index 1cf15c905..000000000 Binary files a/public/media-src/avatar/small/079-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-10.png b/public/media-src/avatar/small/079-10.png deleted file mode 100644 index dd87c86d5..000000000 Binary files a/public/media-src/avatar/small/079-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-11.png b/public/media-src/avatar/small/079-11.png deleted file mode 100644 index 21abb2493..000000000 Binary files a/public/media-src/avatar/small/079-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-12.png b/public/media-src/avatar/small/079-12.png deleted file mode 100644 index 90d1a82d5..000000000 Binary files a/public/media-src/avatar/small/079-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-2.png b/public/media-src/avatar/small/079-2.png deleted file mode 100755 index 486abc2de..000000000 Binary files a/public/media-src/avatar/small/079-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-3.png b/public/media-src/avatar/small/079-3.png deleted file mode 100755 index b0d593b4d..000000000 Binary files a/public/media-src/avatar/small/079-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-4.png b/public/media-src/avatar/small/079-4.png deleted file mode 100755 index 14ae1b25b..000000000 Binary files a/public/media-src/avatar/small/079-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-5.png b/public/media-src/avatar/small/079-5.png deleted file mode 100755 index a5326f24e..000000000 Binary files a/public/media-src/avatar/small/079-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-6.png b/public/media-src/avatar/small/079-6.png deleted file mode 100755 index 020a966b4..000000000 Binary files a/public/media-src/avatar/small/079-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-7.png b/public/media-src/avatar/small/079-7.png deleted file mode 100755 index daa2a4d48..000000000 Binary files a/public/media-src/avatar/small/079-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-8.png b/public/media-src/avatar/small/079-8.png deleted file mode 100644 index 592e48a7d..000000000 Binary files a/public/media-src/avatar/small/079-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/079-9.png b/public/media-src/avatar/small/079-9.png deleted file mode 100644 index d831b1b13..000000000 Binary files a/public/media-src/avatar/small/079-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-1.png b/public/media-src/avatar/small/080-1.png deleted file mode 100755 index 76575ad33..000000000 Binary files a/public/media-src/avatar/small/080-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-10.png b/public/media-src/avatar/small/080-10.png deleted file mode 100644 index be98404ff..000000000 Binary files a/public/media-src/avatar/small/080-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-11.png b/public/media-src/avatar/small/080-11.png deleted file mode 100644 index 7168f3725..000000000 Binary files a/public/media-src/avatar/small/080-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-12.png b/public/media-src/avatar/small/080-12.png deleted file mode 100644 index 184c58011..000000000 Binary files a/public/media-src/avatar/small/080-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-2.png b/public/media-src/avatar/small/080-2.png deleted file mode 100755 index 0312765e1..000000000 Binary files a/public/media-src/avatar/small/080-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-3.png b/public/media-src/avatar/small/080-3.png deleted file mode 100755 index 1082361f6..000000000 Binary files a/public/media-src/avatar/small/080-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-4.png b/public/media-src/avatar/small/080-4.png deleted file mode 100755 index 02a1e13ca..000000000 Binary files a/public/media-src/avatar/small/080-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-5.png b/public/media-src/avatar/small/080-5.png deleted file mode 100755 index b1c9654c4..000000000 Binary files a/public/media-src/avatar/small/080-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-6.png b/public/media-src/avatar/small/080-6.png deleted file mode 100755 index b2c1a9ad8..000000000 Binary files a/public/media-src/avatar/small/080-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-7.png b/public/media-src/avatar/small/080-7.png deleted file mode 100755 index 50958ad94..000000000 Binary files a/public/media-src/avatar/small/080-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-8.png b/public/media-src/avatar/small/080-8.png deleted file mode 100644 index cccff07ad..000000000 Binary files a/public/media-src/avatar/small/080-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/080-9.png b/public/media-src/avatar/small/080-9.png deleted file mode 100644 index 9a0465982..000000000 Binary files a/public/media-src/avatar/small/080-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-1.png b/public/media-src/avatar/small/900-1.png deleted file mode 100644 index 773fb18ad..000000000 Binary files a/public/media-src/avatar/small/900-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-10.png b/public/media-src/avatar/small/900-10.png deleted file mode 100644 index 75e81fffe..000000000 Binary files a/public/media-src/avatar/small/900-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-11.png b/public/media-src/avatar/small/900-11.png deleted file mode 100644 index 16722920e..000000000 Binary files a/public/media-src/avatar/small/900-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-12.png b/public/media-src/avatar/small/900-12.png deleted file mode 100644 index 86b506126..000000000 Binary files a/public/media-src/avatar/small/900-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-2.png b/public/media-src/avatar/small/900-2.png deleted file mode 100644 index 8f5175025..000000000 Binary files a/public/media-src/avatar/small/900-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-3.png b/public/media-src/avatar/small/900-3.png deleted file mode 100644 index 416e042cf..000000000 Binary files a/public/media-src/avatar/small/900-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-4.png b/public/media-src/avatar/small/900-4.png deleted file mode 100644 index 414428dc0..000000000 Binary files a/public/media-src/avatar/small/900-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-5.png b/public/media-src/avatar/small/900-5.png deleted file mode 100644 index cd806308b..000000000 Binary files a/public/media-src/avatar/small/900-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-6.png b/public/media-src/avatar/small/900-6.png deleted file mode 100644 index 719263f81..000000000 Binary files a/public/media-src/avatar/small/900-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-7.png b/public/media-src/avatar/small/900-7.png deleted file mode 100644 index a32b4587c..000000000 Binary files a/public/media-src/avatar/small/900-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-8.png b/public/media-src/avatar/small/900-8.png deleted file mode 100644 index 805670d02..000000000 Binary files a/public/media-src/avatar/small/900-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/900-9.png b/public/media-src/avatar/small/900-9.png deleted file mode 100644 index db735a834..000000000 Binary files a/public/media-src/avatar/small/900-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-1.png b/public/media-src/avatar/small/901-1.png deleted file mode 100644 index 3a5bd092f..000000000 Binary files a/public/media-src/avatar/small/901-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-10.png b/public/media-src/avatar/small/901-10.png deleted file mode 100644 index b06b47358..000000000 Binary files a/public/media-src/avatar/small/901-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-11.png b/public/media-src/avatar/small/901-11.png deleted file mode 100644 index d3042a343..000000000 Binary files a/public/media-src/avatar/small/901-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-12.png b/public/media-src/avatar/small/901-12.png deleted file mode 100644 index 66a0645a0..000000000 Binary files a/public/media-src/avatar/small/901-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-2.png b/public/media-src/avatar/small/901-2.png deleted file mode 100644 index 77e8ebe0f..000000000 Binary files a/public/media-src/avatar/small/901-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-3.png b/public/media-src/avatar/small/901-3.png deleted file mode 100644 index 4a9a06eb7..000000000 Binary files a/public/media-src/avatar/small/901-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-4.png b/public/media-src/avatar/small/901-4.png deleted file mode 100644 index 2b3936e7e..000000000 Binary files a/public/media-src/avatar/small/901-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-5.png b/public/media-src/avatar/small/901-5.png deleted file mode 100644 index 50bacf7d4..000000000 Binary files a/public/media-src/avatar/small/901-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-6.png b/public/media-src/avatar/small/901-6.png deleted file mode 100644 index 227475cd0..000000000 Binary files a/public/media-src/avatar/small/901-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-7.png b/public/media-src/avatar/small/901-7.png deleted file mode 100644 index 555cc1d25..000000000 Binary files a/public/media-src/avatar/small/901-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-8.png b/public/media-src/avatar/small/901-8.png deleted file mode 100644 index 176b52147..000000000 Binary files a/public/media-src/avatar/small/901-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/901-9.png b/public/media-src/avatar/small/901-9.png deleted file mode 100644 index 8e386f9e6..000000000 Binary files a/public/media-src/avatar/small/901-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-1.png b/public/media-src/avatar/small/902-1.png deleted file mode 100644 index efbb8023b..000000000 Binary files a/public/media-src/avatar/small/902-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-10.png b/public/media-src/avatar/small/902-10.png deleted file mode 100644 index bda5fc508..000000000 Binary files a/public/media-src/avatar/small/902-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-11.png b/public/media-src/avatar/small/902-11.png deleted file mode 100644 index 6631265ec..000000000 Binary files a/public/media-src/avatar/small/902-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-12.png b/public/media-src/avatar/small/902-12.png deleted file mode 100644 index 62289e1a4..000000000 Binary files a/public/media-src/avatar/small/902-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-2.png b/public/media-src/avatar/small/902-2.png deleted file mode 100644 index 5640bb840..000000000 Binary files a/public/media-src/avatar/small/902-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-3.png b/public/media-src/avatar/small/902-3.png deleted file mode 100644 index 6c53ab971..000000000 Binary files a/public/media-src/avatar/small/902-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-4.png b/public/media-src/avatar/small/902-4.png deleted file mode 100644 index 7b48e2f2e..000000000 Binary files a/public/media-src/avatar/small/902-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-5.png b/public/media-src/avatar/small/902-5.png deleted file mode 100644 index 8f5316f82..000000000 Binary files a/public/media-src/avatar/small/902-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-6.png b/public/media-src/avatar/small/902-6.png deleted file mode 100644 index c83d21dfe..000000000 Binary files a/public/media-src/avatar/small/902-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-7.png b/public/media-src/avatar/small/902-7.png deleted file mode 100644 index 77503f8de..000000000 Binary files a/public/media-src/avatar/small/902-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-8.png b/public/media-src/avatar/small/902-8.png deleted file mode 100644 index c62a9ab3a..000000000 Binary files a/public/media-src/avatar/small/902-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/902-9.png b/public/media-src/avatar/small/902-9.png deleted file mode 100644 index abc61f643..000000000 Binary files a/public/media-src/avatar/small/902-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-1.png b/public/media-src/avatar/small/903-1.png deleted file mode 100644 index 2161d5a0c..000000000 Binary files a/public/media-src/avatar/small/903-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-10.png b/public/media-src/avatar/small/903-10.png deleted file mode 100644 index 3117c768e..000000000 Binary files a/public/media-src/avatar/small/903-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-11.png b/public/media-src/avatar/small/903-11.png deleted file mode 100644 index 1e9061b27..000000000 Binary files a/public/media-src/avatar/small/903-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-12.png b/public/media-src/avatar/small/903-12.png deleted file mode 100644 index a9a19e57d..000000000 Binary files a/public/media-src/avatar/small/903-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-2.png b/public/media-src/avatar/small/903-2.png deleted file mode 100644 index 0a0f9f8c3..000000000 Binary files a/public/media-src/avatar/small/903-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-3.png b/public/media-src/avatar/small/903-3.png deleted file mode 100644 index f067cb2d2..000000000 Binary files a/public/media-src/avatar/small/903-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-4.png b/public/media-src/avatar/small/903-4.png deleted file mode 100644 index 27753ae53..000000000 Binary files a/public/media-src/avatar/small/903-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-5.png b/public/media-src/avatar/small/903-5.png deleted file mode 100644 index 75b86ea6c..000000000 Binary files a/public/media-src/avatar/small/903-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-6.png b/public/media-src/avatar/small/903-6.png deleted file mode 100644 index 64b15c0b5..000000000 Binary files a/public/media-src/avatar/small/903-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-7.png b/public/media-src/avatar/small/903-7.png deleted file mode 100644 index c12fddb00..000000000 Binary files a/public/media-src/avatar/small/903-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-8.png b/public/media-src/avatar/small/903-8.png deleted file mode 100644 index 3f2f2a882..000000000 Binary files a/public/media-src/avatar/small/903-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/903-9.png b/public/media-src/avatar/small/903-9.png deleted file mode 100644 index 038a096db..000000000 Binary files a/public/media-src/avatar/small/903-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-1.png b/public/media-src/avatar/small/904-1.png deleted file mode 100644 index 86a3bf9b2..000000000 Binary files a/public/media-src/avatar/small/904-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-10.png b/public/media-src/avatar/small/904-10.png deleted file mode 100644 index f901ef240..000000000 Binary files a/public/media-src/avatar/small/904-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-11.png b/public/media-src/avatar/small/904-11.png deleted file mode 100644 index 3c2925092..000000000 Binary files a/public/media-src/avatar/small/904-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-12.png b/public/media-src/avatar/small/904-12.png deleted file mode 100644 index 2a9268433..000000000 Binary files a/public/media-src/avatar/small/904-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-2.png b/public/media-src/avatar/small/904-2.png deleted file mode 100644 index 6d89deebb..000000000 Binary files a/public/media-src/avatar/small/904-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-3.png b/public/media-src/avatar/small/904-3.png deleted file mode 100644 index 0000bd856..000000000 Binary files a/public/media-src/avatar/small/904-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-4.png b/public/media-src/avatar/small/904-4.png deleted file mode 100644 index 177a10fb2..000000000 Binary files a/public/media-src/avatar/small/904-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-5.png b/public/media-src/avatar/small/904-5.png deleted file mode 100644 index 7550f4320..000000000 Binary files a/public/media-src/avatar/small/904-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-6.png b/public/media-src/avatar/small/904-6.png deleted file mode 100644 index d85188791..000000000 Binary files a/public/media-src/avatar/small/904-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-7.png b/public/media-src/avatar/small/904-7.png deleted file mode 100644 index 3330f4339..000000000 Binary files a/public/media-src/avatar/small/904-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-8.png b/public/media-src/avatar/small/904-8.png deleted file mode 100644 index c82f05886..000000000 Binary files a/public/media-src/avatar/small/904-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/904-9.png b/public/media-src/avatar/small/904-9.png deleted file mode 100644 index 61a9be875..000000000 Binary files a/public/media-src/avatar/small/904-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-1.png b/public/media-src/avatar/small/905-1.png deleted file mode 100644 index 2a202fbcd..000000000 Binary files a/public/media-src/avatar/small/905-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-10.png b/public/media-src/avatar/small/905-10.png deleted file mode 100644 index 17dfe9827..000000000 Binary files a/public/media-src/avatar/small/905-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-11.png b/public/media-src/avatar/small/905-11.png deleted file mode 100644 index 0aa8eac66..000000000 Binary files a/public/media-src/avatar/small/905-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-12.png b/public/media-src/avatar/small/905-12.png deleted file mode 100644 index 77ca8fcb6..000000000 Binary files a/public/media-src/avatar/small/905-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-2.png b/public/media-src/avatar/small/905-2.png deleted file mode 100644 index 14e32c280..000000000 Binary files a/public/media-src/avatar/small/905-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-3.png b/public/media-src/avatar/small/905-3.png deleted file mode 100644 index 30e291df3..000000000 Binary files a/public/media-src/avatar/small/905-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-4.png b/public/media-src/avatar/small/905-4.png deleted file mode 100644 index 6f0fcce2d..000000000 Binary files a/public/media-src/avatar/small/905-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-5.png b/public/media-src/avatar/small/905-5.png deleted file mode 100644 index 00fb3ec06..000000000 Binary files a/public/media-src/avatar/small/905-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-6.png b/public/media-src/avatar/small/905-6.png deleted file mode 100644 index e58739d83..000000000 Binary files a/public/media-src/avatar/small/905-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-7.png b/public/media-src/avatar/small/905-7.png deleted file mode 100644 index dd7c76f66..000000000 Binary files a/public/media-src/avatar/small/905-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-8.png b/public/media-src/avatar/small/905-8.png deleted file mode 100644 index 431f800dd..000000000 Binary files a/public/media-src/avatar/small/905-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/905-9.png b/public/media-src/avatar/small/905-9.png deleted file mode 100644 index b46215d64..000000000 Binary files a/public/media-src/avatar/small/905-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-1.png b/public/media-src/avatar/small/color-1.png deleted file mode 100755 index 513ff2410..000000000 Binary files a/public/media-src/avatar/small/color-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-10.png b/public/media-src/avatar/small/color-10.png deleted file mode 100644 index cb46b9f92..000000000 Binary files a/public/media-src/avatar/small/color-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-11.png b/public/media-src/avatar/small/color-11.png deleted file mode 100644 index 77fb02ca5..000000000 Binary files a/public/media-src/avatar/small/color-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-12.png b/public/media-src/avatar/small/color-12.png deleted file mode 100644 index aa15ede64..000000000 Binary files a/public/media-src/avatar/small/color-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-2.png b/public/media-src/avatar/small/color-2.png deleted file mode 100755 index 2314f7c78..000000000 Binary files a/public/media-src/avatar/small/color-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-3.png b/public/media-src/avatar/small/color-3.png deleted file mode 100755 index 2139e2695..000000000 Binary files a/public/media-src/avatar/small/color-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-4.png b/public/media-src/avatar/small/color-4.png deleted file mode 100755 index 583c139c6..000000000 Binary files a/public/media-src/avatar/small/color-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-5.png b/public/media-src/avatar/small/color-5.png deleted file mode 100755 index 204bf041a..000000000 Binary files a/public/media-src/avatar/small/color-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-6.png b/public/media-src/avatar/small/color-6.png deleted file mode 100755 index 015b32188..000000000 Binary files a/public/media-src/avatar/small/color-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-7.png b/public/media-src/avatar/small/color-7.png deleted file mode 100755 index 01fedeca6..000000000 Binary files a/public/media-src/avatar/small/color-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-8.png b/public/media-src/avatar/small/color-8.png deleted file mode 100644 index a7be5f800..000000000 Binary files a/public/media-src/avatar/small/color-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/color-9.png b/public/media-src/avatar/small/color-9.png deleted file mode 100644 index 89c57b036..000000000 Binary files a/public/media-src/avatar/small/color-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/empty.png b/public/media-src/avatar/small/empty.png deleted file mode 100755 index 712f032c9..000000000 Binary files a/public/media-src/avatar/small/empty.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-1.png b/public/media-src/avatar/small/jm-1.png deleted file mode 100755 index 42a595224..000000000 Binary files a/public/media-src/avatar/small/jm-1.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-10.png b/public/media-src/avatar/small/jm-10.png deleted file mode 100644 index 7efab4a23..000000000 Binary files a/public/media-src/avatar/small/jm-10.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-11.png b/public/media-src/avatar/small/jm-11.png deleted file mode 100644 index f416cba32..000000000 Binary files a/public/media-src/avatar/small/jm-11.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-12.png b/public/media-src/avatar/small/jm-12.png deleted file mode 100644 index c370e48ab..000000000 Binary files a/public/media-src/avatar/small/jm-12.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-2.png b/public/media-src/avatar/small/jm-2.png deleted file mode 100755 index dc84a2168..000000000 Binary files a/public/media-src/avatar/small/jm-2.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-3.png b/public/media-src/avatar/small/jm-3.png deleted file mode 100755 index 7c9d8a8a8..000000000 Binary files a/public/media-src/avatar/small/jm-3.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-4.png b/public/media-src/avatar/small/jm-4.png deleted file mode 100755 index f8074dd01..000000000 Binary files a/public/media-src/avatar/small/jm-4.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-5.png b/public/media-src/avatar/small/jm-5.png deleted file mode 100755 index dcd352844..000000000 Binary files a/public/media-src/avatar/small/jm-5.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-6.png b/public/media-src/avatar/small/jm-6.png deleted file mode 100755 index 24380eb95..000000000 Binary files a/public/media-src/avatar/small/jm-6.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-7.png b/public/media-src/avatar/small/jm-7.png deleted file mode 100755 index b9ae70c36..000000000 Binary files a/public/media-src/avatar/small/jm-7.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-8.png b/public/media-src/avatar/small/jm-8.png deleted file mode 100644 index 978a4c64f..000000000 Binary files a/public/media-src/avatar/small/jm-8.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm-9.png b/public/media-src/avatar/small/jm-9.png deleted file mode 100644 index aa5521910..000000000 Binary files a/public/media-src/avatar/small/jm-9.png and /dev/null differ diff --git a/public/media-src/avatar/small/jm.png b/public/media-src/avatar/small/jm.png deleted file mode 100755 index 0626c4ff2..000000000 Binary files a/public/media-src/avatar/small/jm.png and /dev/null differ diff --git a/public/media-src/avatar/small/multi.png b/public/media-src/avatar/small/multi.png deleted file mode 100644 index aa01e87d6..000000000 Binary files a/public/media-src/avatar/small/multi.png and /dev/null differ diff --git a/public/media-src/avatar/small/rebel.png b/public/media-src/avatar/small/rebel.png deleted file mode 100755 index e04a89c66..000000000 Binary files a/public/media-src/avatar/small/rebel.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c0.png b/public/media-src/commander/big/t1-c0.png deleted file mode 100755 index e9ce93638..000000000 Binary files a/public/media-src/commander/big/t1-c0.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c1.png b/public/media-src/commander/big/t1-c1.png deleted file mode 100755 index ae2e0c1b6..000000000 Binary files a/public/media-src/commander/big/t1-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c10.png b/public/media-src/commander/big/t1-c10.png deleted file mode 100644 index e921d4bda..000000000 Binary files a/public/media-src/commander/big/t1-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c11.png b/public/media-src/commander/big/t1-c11.png deleted file mode 100644 index d4f7066e1..000000000 Binary files a/public/media-src/commander/big/t1-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c12.png b/public/media-src/commander/big/t1-c12.png deleted file mode 100644 index b5a76f082..000000000 Binary files a/public/media-src/commander/big/t1-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c2.png b/public/media-src/commander/big/t1-c2.png deleted file mode 100755 index 36b413b75..000000000 Binary files a/public/media-src/commander/big/t1-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c3.png b/public/media-src/commander/big/t1-c3.png deleted file mode 100755 index e4bfdfd41..000000000 Binary files a/public/media-src/commander/big/t1-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c4.png b/public/media-src/commander/big/t1-c4.png deleted file mode 100755 index 405d62db7..000000000 Binary files a/public/media-src/commander/big/t1-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c5.png b/public/media-src/commander/big/t1-c5.png deleted file mode 100755 index b2bc98bd5..000000000 Binary files a/public/media-src/commander/big/t1-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c6.png b/public/media-src/commander/big/t1-c6.png deleted file mode 100755 index 360cb1cc7..000000000 Binary files a/public/media-src/commander/big/t1-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c7.png b/public/media-src/commander/big/t1-c7.png deleted file mode 100755 index 8db8d7374..000000000 Binary files a/public/media-src/commander/big/t1-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c8.png b/public/media-src/commander/big/t1-c8.png deleted file mode 100644 index b9868e1c3..000000000 Binary files a/public/media-src/commander/big/t1-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t1-c9.png b/public/media-src/commander/big/t1-c9.png deleted file mode 100644 index 640714a76..000000000 Binary files a/public/media-src/commander/big/t1-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c1.png b/public/media-src/commander/big/t10-c1.png deleted file mode 100755 index 1f9eeac37..000000000 Binary files a/public/media-src/commander/big/t10-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c10.png b/public/media-src/commander/big/t10-c10.png deleted file mode 100644 index 32b47ddbb..000000000 Binary files a/public/media-src/commander/big/t10-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c11.png b/public/media-src/commander/big/t10-c11.png deleted file mode 100644 index 725b0a4cc..000000000 Binary files a/public/media-src/commander/big/t10-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c12.png b/public/media-src/commander/big/t10-c12.png deleted file mode 100644 index 932f13a18..000000000 Binary files a/public/media-src/commander/big/t10-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c2.png b/public/media-src/commander/big/t10-c2.png deleted file mode 100755 index 7e048ff18..000000000 Binary files a/public/media-src/commander/big/t10-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c3.png b/public/media-src/commander/big/t10-c3.png deleted file mode 100755 index b0046a778..000000000 Binary files a/public/media-src/commander/big/t10-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c4.png b/public/media-src/commander/big/t10-c4.png deleted file mode 100755 index d45a03504..000000000 Binary files a/public/media-src/commander/big/t10-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c5.png b/public/media-src/commander/big/t10-c5.png deleted file mode 100755 index e0cc83951..000000000 Binary files a/public/media-src/commander/big/t10-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c6.png b/public/media-src/commander/big/t10-c6.png deleted file mode 100755 index 33927be9b..000000000 Binary files a/public/media-src/commander/big/t10-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c7.png b/public/media-src/commander/big/t10-c7.png deleted file mode 100755 index e631da646..000000000 Binary files a/public/media-src/commander/big/t10-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c8.png b/public/media-src/commander/big/t10-c8.png deleted file mode 100644 index b83c65254..000000000 Binary files a/public/media-src/commander/big/t10-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t10-c9.png b/public/media-src/commander/big/t10-c9.png deleted file mode 100644 index a602607d0..000000000 Binary files a/public/media-src/commander/big/t10-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c1.png b/public/media-src/commander/big/t11-c1.png deleted file mode 100755 index 5a63cf80d..000000000 Binary files a/public/media-src/commander/big/t11-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c10.png b/public/media-src/commander/big/t11-c10.png deleted file mode 100644 index fd466ab59..000000000 Binary files a/public/media-src/commander/big/t11-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c11.png b/public/media-src/commander/big/t11-c11.png deleted file mode 100644 index fa7d0515d..000000000 Binary files a/public/media-src/commander/big/t11-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c12.png b/public/media-src/commander/big/t11-c12.png deleted file mode 100644 index e6463f73f..000000000 Binary files a/public/media-src/commander/big/t11-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c2.png b/public/media-src/commander/big/t11-c2.png deleted file mode 100755 index f9dd7f649..000000000 Binary files a/public/media-src/commander/big/t11-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c3.png b/public/media-src/commander/big/t11-c3.png deleted file mode 100755 index 8be4f25bc..000000000 Binary files a/public/media-src/commander/big/t11-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c4.png b/public/media-src/commander/big/t11-c4.png deleted file mode 100755 index fe77e9985..000000000 Binary files a/public/media-src/commander/big/t11-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c5.png b/public/media-src/commander/big/t11-c5.png deleted file mode 100755 index 1e5d4bd50..000000000 Binary files a/public/media-src/commander/big/t11-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c6.png b/public/media-src/commander/big/t11-c6.png deleted file mode 100755 index 9ecad4066..000000000 Binary files a/public/media-src/commander/big/t11-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c7.png b/public/media-src/commander/big/t11-c7.png deleted file mode 100755 index b46389e71..000000000 Binary files a/public/media-src/commander/big/t11-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c8.png b/public/media-src/commander/big/t11-c8.png deleted file mode 100644 index ac59edbd9..000000000 Binary files a/public/media-src/commander/big/t11-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t11-c9.png b/public/media-src/commander/big/t11-c9.png deleted file mode 100644 index 0f50d3994..000000000 Binary files a/public/media-src/commander/big/t11-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c1.png b/public/media-src/commander/big/t12-c1.png deleted file mode 100755 index c72adf1d6..000000000 Binary files a/public/media-src/commander/big/t12-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c10.png b/public/media-src/commander/big/t12-c10.png deleted file mode 100644 index f594feb91..000000000 Binary files a/public/media-src/commander/big/t12-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c11.png b/public/media-src/commander/big/t12-c11.png deleted file mode 100644 index 5567cbd27..000000000 Binary files a/public/media-src/commander/big/t12-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c12.png b/public/media-src/commander/big/t12-c12.png deleted file mode 100644 index 87a435015..000000000 Binary files a/public/media-src/commander/big/t12-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c2.png b/public/media-src/commander/big/t12-c2.png deleted file mode 100755 index c497d4b09..000000000 Binary files a/public/media-src/commander/big/t12-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c3.png b/public/media-src/commander/big/t12-c3.png deleted file mode 100755 index 0d7d12704..000000000 Binary files a/public/media-src/commander/big/t12-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c4.png b/public/media-src/commander/big/t12-c4.png deleted file mode 100755 index 3c2a39004..000000000 Binary files a/public/media-src/commander/big/t12-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c5.png b/public/media-src/commander/big/t12-c5.png deleted file mode 100755 index ae7f6b57f..000000000 Binary files a/public/media-src/commander/big/t12-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c6.png b/public/media-src/commander/big/t12-c6.png deleted file mode 100755 index 63a6d9a21..000000000 Binary files a/public/media-src/commander/big/t12-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c7.png b/public/media-src/commander/big/t12-c7.png deleted file mode 100755 index 3425db83c..000000000 Binary files a/public/media-src/commander/big/t12-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c8.png b/public/media-src/commander/big/t12-c8.png deleted file mode 100644 index b25b85076..000000000 Binary files a/public/media-src/commander/big/t12-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t12-c9.png b/public/media-src/commander/big/t12-c9.png deleted file mode 100644 index 42d104ce0..000000000 Binary files a/public/media-src/commander/big/t12-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c1.png b/public/media-src/commander/big/t13-c1.png deleted file mode 100755 index c33c529ec..000000000 Binary files a/public/media-src/commander/big/t13-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c10.png b/public/media-src/commander/big/t13-c10.png deleted file mode 100644 index e2331ba14..000000000 Binary files a/public/media-src/commander/big/t13-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c11.png b/public/media-src/commander/big/t13-c11.png deleted file mode 100644 index b93e0ca13..000000000 Binary files a/public/media-src/commander/big/t13-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c12.png b/public/media-src/commander/big/t13-c12.png deleted file mode 100644 index 67a31dbf5..000000000 Binary files a/public/media-src/commander/big/t13-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c2.png b/public/media-src/commander/big/t13-c2.png deleted file mode 100755 index d6e9d153b..000000000 Binary files a/public/media-src/commander/big/t13-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c3.png b/public/media-src/commander/big/t13-c3.png deleted file mode 100755 index a2141144b..000000000 Binary files a/public/media-src/commander/big/t13-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c4.png b/public/media-src/commander/big/t13-c4.png deleted file mode 100755 index f50020f64..000000000 Binary files a/public/media-src/commander/big/t13-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c5.png b/public/media-src/commander/big/t13-c5.png deleted file mode 100755 index a92e78222..000000000 Binary files a/public/media-src/commander/big/t13-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c6.png b/public/media-src/commander/big/t13-c6.png deleted file mode 100755 index f3b7068c8..000000000 Binary files a/public/media-src/commander/big/t13-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c7.png b/public/media-src/commander/big/t13-c7.png deleted file mode 100755 index 5b862206f..000000000 Binary files a/public/media-src/commander/big/t13-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c8.png b/public/media-src/commander/big/t13-c8.png deleted file mode 100644 index cda58a7f8..000000000 Binary files a/public/media-src/commander/big/t13-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t13-c9.png b/public/media-src/commander/big/t13-c9.png deleted file mode 100644 index fb1d7016a..000000000 Binary files a/public/media-src/commander/big/t13-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c1.png b/public/media-src/commander/big/t14-c1.png deleted file mode 100755 index 2d8759868..000000000 Binary files a/public/media-src/commander/big/t14-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c10.png b/public/media-src/commander/big/t14-c10.png deleted file mode 100644 index 3c7d9b0a0..000000000 Binary files a/public/media-src/commander/big/t14-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c11.png b/public/media-src/commander/big/t14-c11.png deleted file mode 100644 index 1bb1d4f2d..000000000 Binary files a/public/media-src/commander/big/t14-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c12.png b/public/media-src/commander/big/t14-c12.png deleted file mode 100644 index 03f336d5c..000000000 Binary files a/public/media-src/commander/big/t14-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c2.png b/public/media-src/commander/big/t14-c2.png deleted file mode 100755 index 9f98a4048..000000000 Binary files a/public/media-src/commander/big/t14-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c3.png b/public/media-src/commander/big/t14-c3.png deleted file mode 100755 index ad2d58fe5..000000000 Binary files a/public/media-src/commander/big/t14-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c4.png b/public/media-src/commander/big/t14-c4.png deleted file mode 100755 index 55870ab1f..000000000 Binary files a/public/media-src/commander/big/t14-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c5.png b/public/media-src/commander/big/t14-c5.png deleted file mode 100755 index 6dadb88ee..000000000 Binary files a/public/media-src/commander/big/t14-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c6.png b/public/media-src/commander/big/t14-c6.png deleted file mode 100755 index eb836f330..000000000 Binary files a/public/media-src/commander/big/t14-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c7.png b/public/media-src/commander/big/t14-c7.png deleted file mode 100755 index 6ffb470f2..000000000 Binary files a/public/media-src/commander/big/t14-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c8.png b/public/media-src/commander/big/t14-c8.png deleted file mode 100644 index 912e02bda..000000000 Binary files a/public/media-src/commander/big/t14-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t14-c9.png b/public/media-src/commander/big/t14-c9.png deleted file mode 100644 index 9f8294706..000000000 Binary files a/public/media-src/commander/big/t14-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c1.png b/public/media-src/commander/big/t15-c1.png deleted file mode 100755 index 2707f3ca6..000000000 Binary files a/public/media-src/commander/big/t15-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c10.png b/public/media-src/commander/big/t15-c10.png deleted file mode 100644 index 3c1ac6fba..000000000 Binary files a/public/media-src/commander/big/t15-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c11.png b/public/media-src/commander/big/t15-c11.png deleted file mode 100644 index 7f2b2cb5a..000000000 Binary files a/public/media-src/commander/big/t15-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c12.png b/public/media-src/commander/big/t15-c12.png deleted file mode 100644 index f8923c804..000000000 Binary files a/public/media-src/commander/big/t15-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c2.png b/public/media-src/commander/big/t15-c2.png deleted file mode 100755 index 6cb60598f..000000000 Binary files a/public/media-src/commander/big/t15-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c3.png b/public/media-src/commander/big/t15-c3.png deleted file mode 100755 index eea3bf80d..000000000 Binary files a/public/media-src/commander/big/t15-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c4.png b/public/media-src/commander/big/t15-c4.png deleted file mode 100755 index 1ca5d344e..000000000 Binary files a/public/media-src/commander/big/t15-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c5.png b/public/media-src/commander/big/t15-c5.png deleted file mode 100755 index 21cbcea57..000000000 Binary files a/public/media-src/commander/big/t15-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c6.png b/public/media-src/commander/big/t15-c6.png deleted file mode 100755 index f6628fa17..000000000 Binary files a/public/media-src/commander/big/t15-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c7.png b/public/media-src/commander/big/t15-c7.png deleted file mode 100755 index ffb5a0ac3..000000000 Binary files a/public/media-src/commander/big/t15-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c8.png b/public/media-src/commander/big/t15-c8.png deleted file mode 100644 index 0beca165a..000000000 Binary files a/public/media-src/commander/big/t15-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t15-c9.png b/public/media-src/commander/big/t15-c9.png deleted file mode 100644 index e1ffdf5ea..000000000 Binary files a/public/media-src/commander/big/t15-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c1.png b/public/media-src/commander/big/t16-c1.png deleted file mode 100755 index 9b73cc041..000000000 Binary files a/public/media-src/commander/big/t16-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c10.png b/public/media-src/commander/big/t16-c10.png deleted file mode 100644 index 66ca409e4..000000000 Binary files a/public/media-src/commander/big/t16-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c11.png b/public/media-src/commander/big/t16-c11.png deleted file mode 100644 index ad90061f9..000000000 Binary files a/public/media-src/commander/big/t16-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c12.png b/public/media-src/commander/big/t16-c12.png deleted file mode 100644 index 1fcf6de3d..000000000 Binary files a/public/media-src/commander/big/t16-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c2.png b/public/media-src/commander/big/t16-c2.png deleted file mode 100755 index 0bf95f704..000000000 Binary files a/public/media-src/commander/big/t16-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c3.png b/public/media-src/commander/big/t16-c3.png deleted file mode 100755 index 58402ffbb..000000000 Binary files a/public/media-src/commander/big/t16-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c4.png b/public/media-src/commander/big/t16-c4.png deleted file mode 100755 index 898015800..000000000 Binary files a/public/media-src/commander/big/t16-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c5.png b/public/media-src/commander/big/t16-c5.png deleted file mode 100755 index 4af57a906..000000000 Binary files a/public/media-src/commander/big/t16-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c6.png b/public/media-src/commander/big/t16-c6.png deleted file mode 100755 index a31a832c0..000000000 Binary files a/public/media-src/commander/big/t16-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c7.png b/public/media-src/commander/big/t16-c7.png deleted file mode 100755 index c789d633e..000000000 Binary files a/public/media-src/commander/big/t16-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c8.png b/public/media-src/commander/big/t16-c8.png deleted file mode 100644 index 648cedcc7..000000000 Binary files a/public/media-src/commander/big/t16-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t16-c9.png b/public/media-src/commander/big/t16-c9.png deleted file mode 100644 index aaae99826..000000000 Binary files a/public/media-src/commander/big/t16-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c1.png b/public/media-src/commander/big/t17-c1.png deleted file mode 100755 index cbd66b695..000000000 Binary files a/public/media-src/commander/big/t17-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c10.png b/public/media-src/commander/big/t17-c10.png deleted file mode 100644 index 322df2188..000000000 Binary files a/public/media-src/commander/big/t17-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c11.png b/public/media-src/commander/big/t17-c11.png deleted file mode 100644 index 2847671a1..000000000 Binary files a/public/media-src/commander/big/t17-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c12.png b/public/media-src/commander/big/t17-c12.png deleted file mode 100644 index e5e490467..000000000 Binary files a/public/media-src/commander/big/t17-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c2.png b/public/media-src/commander/big/t17-c2.png deleted file mode 100755 index 51cdf4d25..000000000 Binary files a/public/media-src/commander/big/t17-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c3.png b/public/media-src/commander/big/t17-c3.png deleted file mode 100755 index a82fa49d5..000000000 Binary files a/public/media-src/commander/big/t17-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c4.png b/public/media-src/commander/big/t17-c4.png deleted file mode 100755 index 41167c2ff..000000000 Binary files a/public/media-src/commander/big/t17-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c5.png b/public/media-src/commander/big/t17-c5.png deleted file mode 100755 index ead02cebc..000000000 Binary files a/public/media-src/commander/big/t17-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c6.png b/public/media-src/commander/big/t17-c6.png deleted file mode 100755 index d2f0b9f93..000000000 Binary files a/public/media-src/commander/big/t17-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c7.png b/public/media-src/commander/big/t17-c7.png deleted file mode 100755 index dd819b71b..000000000 Binary files a/public/media-src/commander/big/t17-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c8.png b/public/media-src/commander/big/t17-c8.png deleted file mode 100644 index beb8bc061..000000000 Binary files a/public/media-src/commander/big/t17-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t17-c9.png b/public/media-src/commander/big/t17-c9.png deleted file mode 100644 index abf0839df..000000000 Binary files a/public/media-src/commander/big/t17-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c1.png b/public/media-src/commander/big/t18-c1.png deleted file mode 100755 index ea440693e..000000000 Binary files a/public/media-src/commander/big/t18-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c10.png b/public/media-src/commander/big/t18-c10.png deleted file mode 100644 index acd1e5dee..000000000 Binary files a/public/media-src/commander/big/t18-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c11.png b/public/media-src/commander/big/t18-c11.png deleted file mode 100644 index 159661e82..000000000 Binary files a/public/media-src/commander/big/t18-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c12.png b/public/media-src/commander/big/t18-c12.png deleted file mode 100644 index d9bb67414..000000000 Binary files a/public/media-src/commander/big/t18-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c2.png b/public/media-src/commander/big/t18-c2.png deleted file mode 100755 index 325574878..000000000 Binary files a/public/media-src/commander/big/t18-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c3.png b/public/media-src/commander/big/t18-c3.png deleted file mode 100755 index c02fc3418..000000000 Binary files a/public/media-src/commander/big/t18-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c4.png b/public/media-src/commander/big/t18-c4.png deleted file mode 100755 index 7215efa27..000000000 Binary files a/public/media-src/commander/big/t18-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c5.png b/public/media-src/commander/big/t18-c5.png deleted file mode 100755 index 62ba50d0f..000000000 Binary files a/public/media-src/commander/big/t18-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c6.png b/public/media-src/commander/big/t18-c6.png deleted file mode 100755 index cf51c5746..000000000 Binary files a/public/media-src/commander/big/t18-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c7.png b/public/media-src/commander/big/t18-c7.png deleted file mode 100755 index ba7c2e2ae..000000000 Binary files a/public/media-src/commander/big/t18-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c8.png b/public/media-src/commander/big/t18-c8.png deleted file mode 100644 index 10c0d38b9..000000000 Binary files a/public/media-src/commander/big/t18-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t18-c9.png b/public/media-src/commander/big/t18-c9.png deleted file mode 100644 index 28d7c8097..000000000 Binary files a/public/media-src/commander/big/t18-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c1.png b/public/media-src/commander/big/t19-c1.png deleted file mode 100755 index cae5c8c94..000000000 Binary files a/public/media-src/commander/big/t19-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c10.png b/public/media-src/commander/big/t19-c10.png deleted file mode 100644 index 1ee44d7a4..000000000 Binary files a/public/media-src/commander/big/t19-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c11.png b/public/media-src/commander/big/t19-c11.png deleted file mode 100644 index 3005d872a..000000000 Binary files a/public/media-src/commander/big/t19-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c12.png b/public/media-src/commander/big/t19-c12.png deleted file mode 100644 index 1857fd0bb..000000000 Binary files a/public/media-src/commander/big/t19-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c2.png b/public/media-src/commander/big/t19-c2.png deleted file mode 100755 index 872505122..000000000 Binary files a/public/media-src/commander/big/t19-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c3.png b/public/media-src/commander/big/t19-c3.png deleted file mode 100755 index 45c52a0aa..000000000 Binary files a/public/media-src/commander/big/t19-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c4.png b/public/media-src/commander/big/t19-c4.png deleted file mode 100755 index 0c0fac72e..000000000 Binary files a/public/media-src/commander/big/t19-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c5.png b/public/media-src/commander/big/t19-c5.png deleted file mode 100755 index b35409aa6..000000000 Binary files a/public/media-src/commander/big/t19-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c6.png b/public/media-src/commander/big/t19-c6.png deleted file mode 100755 index f05eb3926..000000000 Binary files a/public/media-src/commander/big/t19-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c7.png b/public/media-src/commander/big/t19-c7.png deleted file mode 100755 index 39e2abb3b..000000000 Binary files a/public/media-src/commander/big/t19-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c8.png b/public/media-src/commander/big/t19-c8.png deleted file mode 100644 index ee6c25d9f..000000000 Binary files a/public/media-src/commander/big/t19-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t19-c9.png b/public/media-src/commander/big/t19-c9.png deleted file mode 100644 index fe7c912f9..000000000 Binary files a/public/media-src/commander/big/t19-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c1.png b/public/media-src/commander/big/t2-c1.png deleted file mode 100755 index 983490828..000000000 Binary files a/public/media-src/commander/big/t2-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c10.png b/public/media-src/commander/big/t2-c10.png deleted file mode 100644 index b898b29f8..000000000 Binary files a/public/media-src/commander/big/t2-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c11.png b/public/media-src/commander/big/t2-c11.png deleted file mode 100644 index b56890eef..000000000 Binary files a/public/media-src/commander/big/t2-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c12.png b/public/media-src/commander/big/t2-c12.png deleted file mode 100644 index 9406339a4..000000000 Binary files a/public/media-src/commander/big/t2-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c2.png b/public/media-src/commander/big/t2-c2.png deleted file mode 100755 index e8f59dfa0..000000000 Binary files a/public/media-src/commander/big/t2-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c3.png b/public/media-src/commander/big/t2-c3.png deleted file mode 100755 index 514a5cc2a..000000000 Binary files a/public/media-src/commander/big/t2-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c4.png b/public/media-src/commander/big/t2-c4.png deleted file mode 100755 index 383203bb6..000000000 Binary files a/public/media-src/commander/big/t2-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c5.png b/public/media-src/commander/big/t2-c5.png deleted file mode 100755 index 33a2f38da..000000000 Binary files a/public/media-src/commander/big/t2-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c6.png b/public/media-src/commander/big/t2-c6.png deleted file mode 100755 index fc9a42599..000000000 Binary files a/public/media-src/commander/big/t2-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c7.png b/public/media-src/commander/big/t2-c7.png deleted file mode 100755 index 21ac58d0c..000000000 Binary files a/public/media-src/commander/big/t2-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c8.png b/public/media-src/commander/big/t2-c8.png deleted file mode 100644 index f5c8237d8..000000000 Binary files a/public/media-src/commander/big/t2-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t2-c9.png b/public/media-src/commander/big/t2-c9.png deleted file mode 100644 index 3a59889d0..000000000 Binary files a/public/media-src/commander/big/t2-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c1.png b/public/media-src/commander/big/t20-c1.png deleted file mode 100755 index 0785bb51f..000000000 Binary files a/public/media-src/commander/big/t20-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c10.png b/public/media-src/commander/big/t20-c10.png deleted file mode 100644 index aa9b549c3..000000000 Binary files a/public/media-src/commander/big/t20-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c11.png b/public/media-src/commander/big/t20-c11.png deleted file mode 100644 index d6bc3048c..000000000 Binary files a/public/media-src/commander/big/t20-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c12.png b/public/media-src/commander/big/t20-c12.png deleted file mode 100644 index 8945f6e55..000000000 Binary files a/public/media-src/commander/big/t20-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c2.png b/public/media-src/commander/big/t20-c2.png deleted file mode 100755 index 095c4bf65..000000000 Binary files a/public/media-src/commander/big/t20-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c3.png b/public/media-src/commander/big/t20-c3.png deleted file mode 100755 index 509401487..000000000 Binary files a/public/media-src/commander/big/t20-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c4.png b/public/media-src/commander/big/t20-c4.png deleted file mode 100755 index d9d0ce3cf..000000000 Binary files a/public/media-src/commander/big/t20-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c5.png b/public/media-src/commander/big/t20-c5.png deleted file mode 100755 index 716d56b4e..000000000 Binary files a/public/media-src/commander/big/t20-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c6.png b/public/media-src/commander/big/t20-c6.png deleted file mode 100755 index 91d89a69d..000000000 Binary files a/public/media-src/commander/big/t20-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c7.png b/public/media-src/commander/big/t20-c7.png deleted file mode 100755 index 204cb909d..000000000 Binary files a/public/media-src/commander/big/t20-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c8.png b/public/media-src/commander/big/t20-c8.png deleted file mode 100644 index 383bc6d6a..000000000 Binary files a/public/media-src/commander/big/t20-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t20-c9.png b/public/media-src/commander/big/t20-c9.png deleted file mode 100644 index ceb706fe2..000000000 Binary files a/public/media-src/commander/big/t20-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c1.png b/public/media-src/commander/big/t21-c1.png deleted file mode 100755 index 84eabf422..000000000 Binary files a/public/media-src/commander/big/t21-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c10.png b/public/media-src/commander/big/t21-c10.png deleted file mode 100644 index 5315cee82..000000000 Binary files a/public/media-src/commander/big/t21-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c11.png b/public/media-src/commander/big/t21-c11.png deleted file mode 100644 index ed244e414..000000000 Binary files a/public/media-src/commander/big/t21-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c12.png b/public/media-src/commander/big/t21-c12.png deleted file mode 100644 index 839e075b0..000000000 Binary files a/public/media-src/commander/big/t21-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c2.png b/public/media-src/commander/big/t21-c2.png deleted file mode 100755 index 65b3eebb0..000000000 Binary files a/public/media-src/commander/big/t21-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c3.png b/public/media-src/commander/big/t21-c3.png deleted file mode 100755 index ecc29a3c9..000000000 Binary files a/public/media-src/commander/big/t21-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c4.png b/public/media-src/commander/big/t21-c4.png deleted file mode 100755 index f9c36bdcb..000000000 Binary files a/public/media-src/commander/big/t21-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c5.png b/public/media-src/commander/big/t21-c5.png deleted file mode 100755 index 2a2e2772c..000000000 Binary files a/public/media-src/commander/big/t21-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c6.png b/public/media-src/commander/big/t21-c6.png deleted file mode 100755 index 2c62367b8..000000000 Binary files a/public/media-src/commander/big/t21-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c7.png b/public/media-src/commander/big/t21-c7.png deleted file mode 100755 index bf6fcc951..000000000 Binary files a/public/media-src/commander/big/t21-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c8.png b/public/media-src/commander/big/t21-c8.png deleted file mode 100644 index 8ae215d90..000000000 Binary files a/public/media-src/commander/big/t21-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t21-c9.png b/public/media-src/commander/big/t21-c9.png deleted file mode 100644 index 2021789c5..000000000 Binary files a/public/media-src/commander/big/t21-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c1.png b/public/media-src/commander/big/t3-c1.png deleted file mode 100755 index d1979375c..000000000 Binary files a/public/media-src/commander/big/t3-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c10.png b/public/media-src/commander/big/t3-c10.png deleted file mode 100644 index 8696d806e..000000000 Binary files a/public/media-src/commander/big/t3-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c11.png b/public/media-src/commander/big/t3-c11.png deleted file mode 100644 index ffbd980ae..000000000 Binary files a/public/media-src/commander/big/t3-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c12.png b/public/media-src/commander/big/t3-c12.png deleted file mode 100644 index 1fa67d30d..000000000 Binary files a/public/media-src/commander/big/t3-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c2.png b/public/media-src/commander/big/t3-c2.png deleted file mode 100755 index 66a7b5aff..000000000 Binary files a/public/media-src/commander/big/t3-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c3.png b/public/media-src/commander/big/t3-c3.png deleted file mode 100755 index 480543a4c..000000000 Binary files a/public/media-src/commander/big/t3-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c4.png b/public/media-src/commander/big/t3-c4.png deleted file mode 100755 index 25cccb8ea..000000000 Binary files a/public/media-src/commander/big/t3-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c5.png b/public/media-src/commander/big/t3-c5.png deleted file mode 100755 index 740ec7fdc..000000000 Binary files a/public/media-src/commander/big/t3-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c6.png b/public/media-src/commander/big/t3-c6.png deleted file mode 100755 index 21de7e8bb..000000000 Binary files a/public/media-src/commander/big/t3-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c7.png b/public/media-src/commander/big/t3-c7.png deleted file mode 100755 index 8cfc1eb6d..000000000 Binary files a/public/media-src/commander/big/t3-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c8.png b/public/media-src/commander/big/t3-c8.png deleted file mode 100644 index ed3f4c9c2..000000000 Binary files a/public/media-src/commander/big/t3-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t3-c9.png b/public/media-src/commander/big/t3-c9.png deleted file mode 100644 index b391966ce..000000000 Binary files a/public/media-src/commander/big/t3-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c1.png b/public/media-src/commander/big/t4-c1.png deleted file mode 100755 index 5e768933d..000000000 Binary files a/public/media-src/commander/big/t4-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c10.png b/public/media-src/commander/big/t4-c10.png deleted file mode 100644 index 375743dca..000000000 Binary files a/public/media-src/commander/big/t4-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c11.png b/public/media-src/commander/big/t4-c11.png deleted file mode 100644 index e97c03b92..000000000 Binary files a/public/media-src/commander/big/t4-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c12.png b/public/media-src/commander/big/t4-c12.png deleted file mode 100644 index 6ea7aab87..000000000 Binary files a/public/media-src/commander/big/t4-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c2.png b/public/media-src/commander/big/t4-c2.png deleted file mode 100755 index 62bf23b39..000000000 Binary files a/public/media-src/commander/big/t4-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c3.png b/public/media-src/commander/big/t4-c3.png deleted file mode 100755 index 11105b146..000000000 Binary files a/public/media-src/commander/big/t4-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c4.png b/public/media-src/commander/big/t4-c4.png deleted file mode 100755 index d29440829..000000000 Binary files a/public/media-src/commander/big/t4-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c5.png b/public/media-src/commander/big/t4-c5.png deleted file mode 100755 index a2cb7dd31..000000000 Binary files a/public/media-src/commander/big/t4-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c6.png b/public/media-src/commander/big/t4-c6.png deleted file mode 100755 index e24f978ea..000000000 Binary files a/public/media-src/commander/big/t4-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c7.png b/public/media-src/commander/big/t4-c7.png deleted file mode 100755 index db72d53c6..000000000 Binary files a/public/media-src/commander/big/t4-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c8.png b/public/media-src/commander/big/t4-c8.png deleted file mode 100644 index 0d8800a76..000000000 Binary files a/public/media-src/commander/big/t4-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t4-c9.png b/public/media-src/commander/big/t4-c9.png deleted file mode 100644 index 3290dc3d2..000000000 Binary files a/public/media-src/commander/big/t4-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c1.png b/public/media-src/commander/big/t5-c1.png deleted file mode 100755 index 349c35860..000000000 Binary files a/public/media-src/commander/big/t5-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c10.png b/public/media-src/commander/big/t5-c10.png deleted file mode 100644 index 1703e1f44..000000000 Binary files a/public/media-src/commander/big/t5-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c11.png b/public/media-src/commander/big/t5-c11.png deleted file mode 100644 index eaa731991..000000000 Binary files a/public/media-src/commander/big/t5-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c12.png b/public/media-src/commander/big/t5-c12.png deleted file mode 100644 index f9f626c0f..000000000 Binary files a/public/media-src/commander/big/t5-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c2.png b/public/media-src/commander/big/t5-c2.png deleted file mode 100755 index 6a591e8f6..000000000 Binary files a/public/media-src/commander/big/t5-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c3.png b/public/media-src/commander/big/t5-c3.png deleted file mode 100755 index 0eaa527b6..000000000 Binary files a/public/media-src/commander/big/t5-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c4.png b/public/media-src/commander/big/t5-c4.png deleted file mode 100755 index d52b0e273..000000000 Binary files a/public/media-src/commander/big/t5-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c5.png b/public/media-src/commander/big/t5-c5.png deleted file mode 100755 index 9f79f1375..000000000 Binary files a/public/media-src/commander/big/t5-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c6.png b/public/media-src/commander/big/t5-c6.png deleted file mode 100755 index 5ee17738a..000000000 Binary files a/public/media-src/commander/big/t5-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c7.png b/public/media-src/commander/big/t5-c7.png deleted file mode 100755 index 1610ffa40..000000000 Binary files a/public/media-src/commander/big/t5-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c8.png b/public/media-src/commander/big/t5-c8.png deleted file mode 100644 index 574a80070..000000000 Binary files a/public/media-src/commander/big/t5-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t5-c9.png b/public/media-src/commander/big/t5-c9.png deleted file mode 100644 index 4fc7d3a53..000000000 Binary files a/public/media-src/commander/big/t5-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c1.png b/public/media-src/commander/big/t6-c1.png deleted file mode 100755 index f92d845ce..000000000 Binary files a/public/media-src/commander/big/t6-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c10.png b/public/media-src/commander/big/t6-c10.png deleted file mode 100644 index fa5f8b382..000000000 Binary files a/public/media-src/commander/big/t6-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c11.png b/public/media-src/commander/big/t6-c11.png deleted file mode 100644 index 0303573f0..000000000 Binary files a/public/media-src/commander/big/t6-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c12.png b/public/media-src/commander/big/t6-c12.png deleted file mode 100644 index 85d9da112..000000000 Binary files a/public/media-src/commander/big/t6-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c2.png b/public/media-src/commander/big/t6-c2.png deleted file mode 100755 index b51740ef3..000000000 Binary files a/public/media-src/commander/big/t6-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c3.png b/public/media-src/commander/big/t6-c3.png deleted file mode 100755 index 488b1cb96..000000000 Binary files a/public/media-src/commander/big/t6-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c4.png b/public/media-src/commander/big/t6-c4.png deleted file mode 100755 index a5d70a53b..000000000 Binary files a/public/media-src/commander/big/t6-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c5.png b/public/media-src/commander/big/t6-c5.png deleted file mode 100755 index c6c52fd33..000000000 Binary files a/public/media-src/commander/big/t6-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c6.png b/public/media-src/commander/big/t6-c6.png deleted file mode 100755 index 373653589..000000000 Binary files a/public/media-src/commander/big/t6-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c7.png b/public/media-src/commander/big/t6-c7.png deleted file mode 100755 index f420c2f1e..000000000 Binary files a/public/media-src/commander/big/t6-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c8.png b/public/media-src/commander/big/t6-c8.png deleted file mode 100644 index fa087ca90..000000000 Binary files a/public/media-src/commander/big/t6-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t6-c9.png b/public/media-src/commander/big/t6-c9.png deleted file mode 100644 index 224057f8a..000000000 Binary files a/public/media-src/commander/big/t6-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c1.png b/public/media-src/commander/big/t7-c1.png deleted file mode 100755 index 91d06e024..000000000 Binary files a/public/media-src/commander/big/t7-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c10.png b/public/media-src/commander/big/t7-c10.png deleted file mode 100644 index 5d9f7dd9a..000000000 Binary files a/public/media-src/commander/big/t7-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c11.png b/public/media-src/commander/big/t7-c11.png deleted file mode 100644 index 781fd47a6..000000000 Binary files a/public/media-src/commander/big/t7-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c12.png b/public/media-src/commander/big/t7-c12.png deleted file mode 100644 index bc53857db..000000000 Binary files a/public/media-src/commander/big/t7-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c2.png b/public/media-src/commander/big/t7-c2.png deleted file mode 100755 index b8f7f079c..000000000 Binary files a/public/media-src/commander/big/t7-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c3.png b/public/media-src/commander/big/t7-c3.png deleted file mode 100755 index 0f3f0d3ea..000000000 Binary files a/public/media-src/commander/big/t7-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c4.png b/public/media-src/commander/big/t7-c4.png deleted file mode 100755 index f09a80219..000000000 Binary files a/public/media-src/commander/big/t7-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c5.png b/public/media-src/commander/big/t7-c5.png deleted file mode 100755 index 0b6217075..000000000 Binary files a/public/media-src/commander/big/t7-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c6.png b/public/media-src/commander/big/t7-c6.png deleted file mode 100755 index ea9cd4130..000000000 Binary files a/public/media-src/commander/big/t7-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c7.png b/public/media-src/commander/big/t7-c7.png deleted file mode 100755 index cc2eb7623..000000000 Binary files a/public/media-src/commander/big/t7-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c8.png b/public/media-src/commander/big/t7-c8.png deleted file mode 100644 index 7e0a4d8bf..000000000 Binary files a/public/media-src/commander/big/t7-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t7-c9.png b/public/media-src/commander/big/t7-c9.png deleted file mode 100644 index 5cb3c3c67..000000000 Binary files a/public/media-src/commander/big/t7-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c1.png b/public/media-src/commander/big/t8-c1.png deleted file mode 100755 index 71b13879f..000000000 Binary files a/public/media-src/commander/big/t8-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c10.png b/public/media-src/commander/big/t8-c10.png deleted file mode 100644 index bac36630d..000000000 Binary files a/public/media-src/commander/big/t8-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c11.png b/public/media-src/commander/big/t8-c11.png deleted file mode 100644 index 2260dbdff..000000000 Binary files a/public/media-src/commander/big/t8-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c12.png b/public/media-src/commander/big/t8-c12.png deleted file mode 100644 index dce7020f5..000000000 Binary files a/public/media-src/commander/big/t8-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c2.png b/public/media-src/commander/big/t8-c2.png deleted file mode 100755 index da20ffca0..000000000 Binary files a/public/media-src/commander/big/t8-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c3.png b/public/media-src/commander/big/t8-c3.png deleted file mode 100755 index a99c27331..000000000 Binary files a/public/media-src/commander/big/t8-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c4.png b/public/media-src/commander/big/t8-c4.png deleted file mode 100755 index 391adab03..000000000 Binary files a/public/media-src/commander/big/t8-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c5.png b/public/media-src/commander/big/t8-c5.png deleted file mode 100755 index 848f5c5e8..000000000 Binary files a/public/media-src/commander/big/t8-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c6.png b/public/media-src/commander/big/t8-c6.png deleted file mode 100755 index 80677c246..000000000 Binary files a/public/media-src/commander/big/t8-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c7.png b/public/media-src/commander/big/t8-c7.png deleted file mode 100755 index fe53dfb5c..000000000 Binary files a/public/media-src/commander/big/t8-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c8.png b/public/media-src/commander/big/t8-c8.png deleted file mode 100644 index fb091faba..000000000 Binary files a/public/media-src/commander/big/t8-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t8-c9.png b/public/media-src/commander/big/t8-c9.png deleted file mode 100644 index cb2ba3f9c..000000000 Binary files a/public/media-src/commander/big/t8-c9.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c1.png b/public/media-src/commander/big/t9-c1.png deleted file mode 100755 index 0d74aefce..000000000 Binary files a/public/media-src/commander/big/t9-c1.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c10.png b/public/media-src/commander/big/t9-c10.png deleted file mode 100644 index b296fe018..000000000 Binary files a/public/media-src/commander/big/t9-c10.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c11.png b/public/media-src/commander/big/t9-c11.png deleted file mode 100644 index ae61b5eb3..000000000 Binary files a/public/media-src/commander/big/t9-c11.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c12.png b/public/media-src/commander/big/t9-c12.png deleted file mode 100644 index 251f20884..000000000 Binary files a/public/media-src/commander/big/t9-c12.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c2.png b/public/media-src/commander/big/t9-c2.png deleted file mode 100755 index 855c54f64..000000000 Binary files a/public/media-src/commander/big/t9-c2.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c3.png b/public/media-src/commander/big/t9-c3.png deleted file mode 100755 index 94a5ac62e..000000000 Binary files a/public/media-src/commander/big/t9-c3.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c4.png b/public/media-src/commander/big/t9-c4.png deleted file mode 100755 index ca4d10ac7..000000000 Binary files a/public/media-src/commander/big/t9-c4.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c5.png b/public/media-src/commander/big/t9-c5.png deleted file mode 100755 index 617fafcdd..000000000 Binary files a/public/media-src/commander/big/t9-c5.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c6.png b/public/media-src/commander/big/t9-c6.png deleted file mode 100755 index 4794212e1..000000000 Binary files a/public/media-src/commander/big/t9-c6.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c7.png b/public/media-src/commander/big/t9-c7.png deleted file mode 100755 index 74d0c64c9..000000000 Binary files a/public/media-src/commander/big/t9-c7.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c8.png b/public/media-src/commander/big/t9-c8.png deleted file mode 100644 index 2928ee150..000000000 Binary files a/public/media-src/commander/big/t9-c8.png and /dev/null differ diff --git a/public/media-src/commander/big/t9-c9.png b/public/media-src/commander/big/t9-c9.png deleted file mode 100644 index cf0444366..000000000 Binary files a/public/media-src/commander/big/t9-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c0.png b/public/media-src/commander/medium/t1-c0.png deleted file mode 100755 index 11e9a3a50..000000000 Binary files a/public/media-src/commander/medium/t1-c0.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c1.png b/public/media-src/commander/medium/t1-c1.png deleted file mode 100755 index 00c51dcc7..000000000 Binary files a/public/media-src/commander/medium/t1-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c10.png b/public/media-src/commander/medium/t1-c10.png deleted file mode 100644 index 59a729c8f..000000000 Binary files a/public/media-src/commander/medium/t1-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c11.png b/public/media-src/commander/medium/t1-c11.png deleted file mode 100644 index 26454fdbd..000000000 Binary files a/public/media-src/commander/medium/t1-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c12.png b/public/media-src/commander/medium/t1-c12.png deleted file mode 100644 index 703bd47cd..000000000 Binary files a/public/media-src/commander/medium/t1-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c2.png b/public/media-src/commander/medium/t1-c2.png deleted file mode 100755 index fff2f6559..000000000 Binary files a/public/media-src/commander/medium/t1-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c3.png b/public/media-src/commander/medium/t1-c3.png deleted file mode 100755 index 34ff214fb..000000000 Binary files a/public/media-src/commander/medium/t1-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c4.png b/public/media-src/commander/medium/t1-c4.png deleted file mode 100755 index ee3ebf18c..000000000 Binary files a/public/media-src/commander/medium/t1-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c5.png b/public/media-src/commander/medium/t1-c5.png deleted file mode 100755 index f2b9a36a8..000000000 Binary files a/public/media-src/commander/medium/t1-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c6.png b/public/media-src/commander/medium/t1-c6.png deleted file mode 100755 index e158ca05a..000000000 Binary files a/public/media-src/commander/medium/t1-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c7.png b/public/media-src/commander/medium/t1-c7.png deleted file mode 100755 index b0a9810c4..000000000 Binary files a/public/media-src/commander/medium/t1-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c8.png b/public/media-src/commander/medium/t1-c8.png deleted file mode 100644 index 7b9fa4e07..000000000 Binary files a/public/media-src/commander/medium/t1-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t1-c9.png b/public/media-src/commander/medium/t1-c9.png deleted file mode 100644 index 0e6ccf9e4..000000000 Binary files a/public/media-src/commander/medium/t1-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c1.png b/public/media-src/commander/medium/t10-c1.png deleted file mode 100755 index ce74657df..000000000 Binary files a/public/media-src/commander/medium/t10-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c10.png b/public/media-src/commander/medium/t10-c10.png deleted file mode 100644 index fc9b1fa98..000000000 Binary files a/public/media-src/commander/medium/t10-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c11.png b/public/media-src/commander/medium/t10-c11.png deleted file mode 100644 index 27836aa69..000000000 Binary files a/public/media-src/commander/medium/t10-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c12.png b/public/media-src/commander/medium/t10-c12.png deleted file mode 100644 index 42822aeaf..000000000 Binary files a/public/media-src/commander/medium/t10-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c2.png b/public/media-src/commander/medium/t10-c2.png deleted file mode 100755 index 296186a67..000000000 Binary files a/public/media-src/commander/medium/t10-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c3.png b/public/media-src/commander/medium/t10-c3.png deleted file mode 100755 index 666ec69f2..000000000 Binary files a/public/media-src/commander/medium/t10-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c4.png b/public/media-src/commander/medium/t10-c4.png deleted file mode 100755 index d4a3f101c..000000000 Binary files a/public/media-src/commander/medium/t10-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c5.png b/public/media-src/commander/medium/t10-c5.png deleted file mode 100755 index e3898c0fe..000000000 Binary files a/public/media-src/commander/medium/t10-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c6.png b/public/media-src/commander/medium/t10-c6.png deleted file mode 100755 index 94ac3fe86..000000000 Binary files a/public/media-src/commander/medium/t10-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c7.png b/public/media-src/commander/medium/t10-c7.png deleted file mode 100755 index e6deb7c1f..000000000 Binary files a/public/media-src/commander/medium/t10-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c8.png b/public/media-src/commander/medium/t10-c8.png deleted file mode 100644 index 008209afd..000000000 Binary files a/public/media-src/commander/medium/t10-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t10-c9.png b/public/media-src/commander/medium/t10-c9.png deleted file mode 100644 index 9ad7959c9..000000000 Binary files a/public/media-src/commander/medium/t10-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c1.png b/public/media-src/commander/medium/t11-c1.png deleted file mode 100755 index eb988ebba..000000000 Binary files a/public/media-src/commander/medium/t11-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c10.png b/public/media-src/commander/medium/t11-c10.png deleted file mode 100644 index 0701b364e..000000000 Binary files a/public/media-src/commander/medium/t11-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c11.png b/public/media-src/commander/medium/t11-c11.png deleted file mode 100644 index fbdc4c790..000000000 Binary files a/public/media-src/commander/medium/t11-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c12.png b/public/media-src/commander/medium/t11-c12.png deleted file mode 100644 index e7dcc9537..000000000 Binary files a/public/media-src/commander/medium/t11-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c2.png b/public/media-src/commander/medium/t11-c2.png deleted file mode 100755 index d7f10b639..000000000 Binary files a/public/media-src/commander/medium/t11-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c3.png b/public/media-src/commander/medium/t11-c3.png deleted file mode 100755 index e8e00ff18..000000000 Binary files a/public/media-src/commander/medium/t11-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c4.png b/public/media-src/commander/medium/t11-c4.png deleted file mode 100755 index 77bc8b23e..000000000 Binary files a/public/media-src/commander/medium/t11-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c5.png b/public/media-src/commander/medium/t11-c5.png deleted file mode 100755 index ff795151b..000000000 Binary files a/public/media-src/commander/medium/t11-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c6.png b/public/media-src/commander/medium/t11-c6.png deleted file mode 100755 index a9120faa0..000000000 Binary files a/public/media-src/commander/medium/t11-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c7.png b/public/media-src/commander/medium/t11-c7.png deleted file mode 100755 index fc74dc639..000000000 Binary files a/public/media-src/commander/medium/t11-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c8.png b/public/media-src/commander/medium/t11-c8.png deleted file mode 100644 index 9d55442fd..000000000 Binary files a/public/media-src/commander/medium/t11-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t11-c9.png b/public/media-src/commander/medium/t11-c9.png deleted file mode 100644 index 8fb57f63d..000000000 Binary files a/public/media-src/commander/medium/t11-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c1.png b/public/media-src/commander/medium/t12-c1.png deleted file mode 100755 index 672179118..000000000 Binary files a/public/media-src/commander/medium/t12-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c10.png b/public/media-src/commander/medium/t12-c10.png deleted file mode 100644 index 44c2febce..000000000 Binary files a/public/media-src/commander/medium/t12-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c11.png b/public/media-src/commander/medium/t12-c11.png deleted file mode 100644 index 31e1fecca..000000000 Binary files a/public/media-src/commander/medium/t12-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c12.png b/public/media-src/commander/medium/t12-c12.png deleted file mode 100644 index 4ef6ffd8f..000000000 Binary files a/public/media-src/commander/medium/t12-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c2.png b/public/media-src/commander/medium/t12-c2.png deleted file mode 100755 index 61b844075..000000000 Binary files a/public/media-src/commander/medium/t12-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c3.png b/public/media-src/commander/medium/t12-c3.png deleted file mode 100755 index 461279f3b..000000000 Binary files a/public/media-src/commander/medium/t12-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c4.png b/public/media-src/commander/medium/t12-c4.png deleted file mode 100755 index 841c48743..000000000 Binary files a/public/media-src/commander/medium/t12-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c5.png b/public/media-src/commander/medium/t12-c5.png deleted file mode 100755 index 473fc9a0b..000000000 Binary files a/public/media-src/commander/medium/t12-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c6.png b/public/media-src/commander/medium/t12-c6.png deleted file mode 100755 index 5e96933f4..000000000 Binary files a/public/media-src/commander/medium/t12-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c7.png b/public/media-src/commander/medium/t12-c7.png deleted file mode 100755 index 945cdf436..000000000 Binary files a/public/media-src/commander/medium/t12-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c8.png b/public/media-src/commander/medium/t12-c8.png deleted file mode 100644 index 9bff0017c..000000000 Binary files a/public/media-src/commander/medium/t12-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t12-c9.png b/public/media-src/commander/medium/t12-c9.png deleted file mode 100644 index 405410429..000000000 Binary files a/public/media-src/commander/medium/t12-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c1.png b/public/media-src/commander/medium/t13-c1.png deleted file mode 100755 index d1a6e5807..000000000 Binary files a/public/media-src/commander/medium/t13-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c10.png b/public/media-src/commander/medium/t13-c10.png deleted file mode 100644 index a89d1e0c3..000000000 Binary files a/public/media-src/commander/medium/t13-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c11.png b/public/media-src/commander/medium/t13-c11.png deleted file mode 100644 index 45465ad7d..000000000 Binary files a/public/media-src/commander/medium/t13-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c12.png b/public/media-src/commander/medium/t13-c12.png deleted file mode 100644 index 24d27b7e6..000000000 Binary files a/public/media-src/commander/medium/t13-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c2.png b/public/media-src/commander/medium/t13-c2.png deleted file mode 100755 index e13aa48f9..000000000 Binary files a/public/media-src/commander/medium/t13-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c3.png b/public/media-src/commander/medium/t13-c3.png deleted file mode 100755 index c8ebb2f22..000000000 Binary files a/public/media-src/commander/medium/t13-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c4.png b/public/media-src/commander/medium/t13-c4.png deleted file mode 100755 index d13c88f0a..000000000 Binary files a/public/media-src/commander/medium/t13-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c5.png b/public/media-src/commander/medium/t13-c5.png deleted file mode 100755 index 50bc8420e..000000000 Binary files a/public/media-src/commander/medium/t13-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c6.png b/public/media-src/commander/medium/t13-c6.png deleted file mode 100755 index 81518526b..000000000 Binary files a/public/media-src/commander/medium/t13-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c7.png b/public/media-src/commander/medium/t13-c7.png deleted file mode 100755 index 209985bdf..000000000 Binary files a/public/media-src/commander/medium/t13-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c8.png b/public/media-src/commander/medium/t13-c8.png deleted file mode 100644 index 9e740ddc2..000000000 Binary files a/public/media-src/commander/medium/t13-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t13-c9.png b/public/media-src/commander/medium/t13-c9.png deleted file mode 100644 index ea46834b3..000000000 Binary files a/public/media-src/commander/medium/t13-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c1.png b/public/media-src/commander/medium/t14-c1.png deleted file mode 100755 index 6d3cd5f90..000000000 Binary files a/public/media-src/commander/medium/t14-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c10.png b/public/media-src/commander/medium/t14-c10.png deleted file mode 100644 index 0d458a387..000000000 Binary files a/public/media-src/commander/medium/t14-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c11.png b/public/media-src/commander/medium/t14-c11.png deleted file mode 100644 index 6e86a2235..000000000 Binary files a/public/media-src/commander/medium/t14-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c12.png b/public/media-src/commander/medium/t14-c12.png deleted file mode 100644 index 584386065..000000000 Binary files a/public/media-src/commander/medium/t14-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c2.png b/public/media-src/commander/medium/t14-c2.png deleted file mode 100755 index 7a4e5f340..000000000 Binary files a/public/media-src/commander/medium/t14-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c3.png b/public/media-src/commander/medium/t14-c3.png deleted file mode 100755 index baf612cd5..000000000 Binary files a/public/media-src/commander/medium/t14-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c4.png b/public/media-src/commander/medium/t14-c4.png deleted file mode 100755 index 4ed82e03c..000000000 Binary files a/public/media-src/commander/medium/t14-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c5.png b/public/media-src/commander/medium/t14-c5.png deleted file mode 100755 index c30e48bf0..000000000 Binary files a/public/media-src/commander/medium/t14-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c6.png b/public/media-src/commander/medium/t14-c6.png deleted file mode 100755 index 3a7bcc6ec..000000000 Binary files a/public/media-src/commander/medium/t14-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c7.png b/public/media-src/commander/medium/t14-c7.png deleted file mode 100755 index fe26dd0ce..000000000 Binary files a/public/media-src/commander/medium/t14-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c8.png b/public/media-src/commander/medium/t14-c8.png deleted file mode 100644 index 38d8111e7..000000000 Binary files a/public/media-src/commander/medium/t14-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t14-c9.png b/public/media-src/commander/medium/t14-c9.png deleted file mode 100644 index 30305fa97..000000000 Binary files a/public/media-src/commander/medium/t14-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c1.png b/public/media-src/commander/medium/t15-c1.png deleted file mode 100755 index 00bb1d6a0..000000000 Binary files a/public/media-src/commander/medium/t15-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c10.png b/public/media-src/commander/medium/t15-c10.png deleted file mode 100644 index 9a71d036a..000000000 Binary files a/public/media-src/commander/medium/t15-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c11.png b/public/media-src/commander/medium/t15-c11.png deleted file mode 100644 index 844579f2c..000000000 Binary files a/public/media-src/commander/medium/t15-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c12.png b/public/media-src/commander/medium/t15-c12.png deleted file mode 100644 index 55c697d3c..000000000 Binary files a/public/media-src/commander/medium/t15-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c2.png b/public/media-src/commander/medium/t15-c2.png deleted file mode 100755 index 3b290ccb8..000000000 Binary files a/public/media-src/commander/medium/t15-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c3.png b/public/media-src/commander/medium/t15-c3.png deleted file mode 100755 index 2f86e41d3..000000000 Binary files a/public/media-src/commander/medium/t15-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c4.png b/public/media-src/commander/medium/t15-c4.png deleted file mode 100755 index 8fcfe1341..000000000 Binary files a/public/media-src/commander/medium/t15-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c5.png b/public/media-src/commander/medium/t15-c5.png deleted file mode 100755 index 2dd843e9a..000000000 Binary files a/public/media-src/commander/medium/t15-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c6.png b/public/media-src/commander/medium/t15-c6.png deleted file mode 100755 index 290c57481..000000000 Binary files a/public/media-src/commander/medium/t15-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c7.png b/public/media-src/commander/medium/t15-c7.png deleted file mode 100755 index 5301e05af..000000000 Binary files a/public/media-src/commander/medium/t15-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c8.png b/public/media-src/commander/medium/t15-c8.png deleted file mode 100644 index 9996a362a..000000000 Binary files a/public/media-src/commander/medium/t15-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t15-c9.png b/public/media-src/commander/medium/t15-c9.png deleted file mode 100644 index 9134145bc..000000000 Binary files a/public/media-src/commander/medium/t15-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c1.png b/public/media-src/commander/medium/t16-c1.png deleted file mode 100755 index 990c830ec..000000000 Binary files a/public/media-src/commander/medium/t16-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c10.png b/public/media-src/commander/medium/t16-c10.png deleted file mode 100644 index 743310f66..000000000 Binary files a/public/media-src/commander/medium/t16-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c11.png b/public/media-src/commander/medium/t16-c11.png deleted file mode 100644 index 8cb4b18ae..000000000 Binary files a/public/media-src/commander/medium/t16-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c12.png b/public/media-src/commander/medium/t16-c12.png deleted file mode 100644 index a382e7bf5..000000000 Binary files a/public/media-src/commander/medium/t16-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c2.png b/public/media-src/commander/medium/t16-c2.png deleted file mode 100755 index afb48803b..000000000 Binary files a/public/media-src/commander/medium/t16-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c3.png b/public/media-src/commander/medium/t16-c3.png deleted file mode 100755 index 18c47ec81..000000000 Binary files a/public/media-src/commander/medium/t16-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c4.png b/public/media-src/commander/medium/t16-c4.png deleted file mode 100755 index 3c6bdb79b..000000000 Binary files a/public/media-src/commander/medium/t16-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c5.png b/public/media-src/commander/medium/t16-c5.png deleted file mode 100755 index 69edd8f5c..000000000 Binary files a/public/media-src/commander/medium/t16-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c6.png b/public/media-src/commander/medium/t16-c6.png deleted file mode 100755 index 997e7716f..000000000 Binary files a/public/media-src/commander/medium/t16-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c7.png b/public/media-src/commander/medium/t16-c7.png deleted file mode 100755 index 3c1a2446c..000000000 Binary files a/public/media-src/commander/medium/t16-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c8.png b/public/media-src/commander/medium/t16-c8.png deleted file mode 100644 index e248b8f0a..000000000 Binary files a/public/media-src/commander/medium/t16-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t16-c9.png b/public/media-src/commander/medium/t16-c9.png deleted file mode 100644 index a43b4b7d2..000000000 Binary files a/public/media-src/commander/medium/t16-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c1.png b/public/media-src/commander/medium/t17-c1.png deleted file mode 100755 index a08f86889..000000000 Binary files a/public/media-src/commander/medium/t17-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c10.png b/public/media-src/commander/medium/t17-c10.png deleted file mode 100644 index ce2c3e720..000000000 Binary files a/public/media-src/commander/medium/t17-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c11.png b/public/media-src/commander/medium/t17-c11.png deleted file mode 100644 index 393017038..000000000 Binary files a/public/media-src/commander/medium/t17-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c12.png b/public/media-src/commander/medium/t17-c12.png deleted file mode 100644 index 7aba12009..000000000 Binary files a/public/media-src/commander/medium/t17-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c2.png b/public/media-src/commander/medium/t17-c2.png deleted file mode 100755 index dcf6be229..000000000 Binary files a/public/media-src/commander/medium/t17-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c3.png b/public/media-src/commander/medium/t17-c3.png deleted file mode 100755 index 29e2ab068..000000000 Binary files a/public/media-src/commander/medium/t17-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c4.png b/public/media-src/commander/medium/t17-c4.png deleted file mode 100755 index f3c7880e8..000000000 Binary files a/public/media-src/commander/medium/t17-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c5.png b/public/media-src/commander/medium/t17-c5.png deleted file mode 100755 index f3a8a4c2f..000000000 Binary files a/public/media-src/commander/medium/t17-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c6.png b/public/media-src/commander/medium/t17-c6.png deleted file mode 100755 index 7fa76c170..000000000 Binary files a/public/media-src/commander/medium/t17-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c7.png b/public/media-src/commander/medium/t17-c7.png deleted file mode 100755 index 20a8f5499..000000000 Binary files a/public/media-src/commander/medium/t17-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c8.png b/public/media-src/commander/medium/t17-c8.png deleted file mode 100644 index 833d12336..000000000 Binary files a/public/media-src/commander/medium/t17-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t17-c9.png b/public/media-src/commander/medium/t17-c9.png deleted file mode 100644 index 01e4fa234..000000000 Binary files a/public/media-src/commander/medium/t17-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c1.png b/public/media-src/commander/medium/t18-c1.png deleted file mode 100755 index 76f8a2890..000000000 Binary files a/public/media-src/commander/medium/t18-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c10.png b/public/media-src/commander/medium/t18-c10.png deleted file mode 100644 index 9f846a712..000000000 Binary files a/public/media-src/commander/medium/t18-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c11.png b/public/media-src/commander/medium/t18-c11.png deleted file mode 100644 index 5aa9064fc..000000000 Binary files a/public/media-src/commander/medium/t18-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c12.png b/public/media-src/commander/medium/t18-c12.png deleted file mode 100644 index 656b8e434..000000000 Binary files a/public/media-src/commander/medium/t18-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c2.png b/public/media-src/commander/medium/t18-c2.png deleted file mode 100755 index f29e32c0f..000000000 Binary files a/public/media-src/commander/medium/t18-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c3.png b/public/media-src/commander/medium/t18-c3.png deleted file mode 100755 index f10e9bc9f..000000000 Binary files a/public/media-src/commander/medium/t18-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c4.png b/public/media-src/commander/medium/t18-c4.png deleted file mode 100755 index 1c69fee11..000000000 Binary files a/public/media-src/commander/medium/t18-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c5.png b/public/media-src/commander/medium/t18-c5.png deleted file mode 100755 index add0d6449..000000000 Binary files a/public/media-src/commander/medium/t18-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c6.png b/public/media-src/commander/medium/t18-c6.png deleted file mode 100755 index 944e5dd1d..000000000 Binary files a/public/media-src/commander/medium/t18-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c7.png b/public/media-src/commander/medium/t18-c7.png deleted file mode 100755 index f448c9558..000000000 Binary files a/public/media-src/commander/medium/t18-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c8.png b/public/media-src/commander/medium/t18-c8.png deleted file mode 100644 index 6a8792885..000000000 Binary files a/public/media-src/commander/medium/t18-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t18-c9.png b/public/media-src/commander/medium/t18-c9.png deleted file mode 100644 index 8671111a2..000000000 Binary files a/public/media-src/commander/medium/t18-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c1.png b/public/media-src/commander/medium/t19-c1.png deleted file mode 100755 index 8cace9fc7..000000000 Binary files a/public/media-src/commander/medium/t19-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c10.png b/public/media-src/commander/medium/t19-c10.png deleted file mode 100644 index bc3160cf4..000000000 Binary files a/public/media-src/commander/medium/t19-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c11.png b/public/media-src/commander/medium/t19-c11.png deleted file mode 100644 index ec221c4a8..000000000 Binary files a/public/media-src/commander/medium/t19-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c12.png b/public/media-src/commander/medium/t19-c12.png deleted file mode 100644 index 05c4b6b56..000000000 Binary files a/public/media-src/commander/medium/t19-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c2.png b/public/media-src/commander/medium/t19-c2.png deleted file mode 100755 index 14fc8dd99..000000000 Binary files a/public/media-src/commander/medium/t19-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c3.png b/public/media-src/commander/medium/t19-c3.png deleted file mode 100755 index 693916e03..000000000 Binary files a/public/media-src/commander/medium/t19-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c4.png b/public/media-src/commander/medium/t19-c4.png deleted file mode 100755 index f0819576f..000000000 Binary files a/public/media-src/commander/medium/t19-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c5.png b/public/media-src/commander/medium/t19-c5.png deleted file mode 100755 index 96de49f3d..000000000 Binary files a/public/media-src/commander/medium/t19-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c6.png b/public/media-src/commander/medium/t19-c6.png deleted file mode 100755 index abdba6282..000000000 Binary files a/public/media-src/commander/medium/t19-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c7.png b/public/media-src/commander/medium/t19-c7.png deleted file mode 100755 index 35df6547b..000000000 Binary files a/public/media-src/commander/medium/t19-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c8.png b/public/media-src/commander/medium/t19-c8.png deleted file mode 100644 index c6e0c50f8..000000000 Binary files a/public/media-src/commander/medium/t19-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t19-c9.png b/public/media-src/commander/medium/t19-c9.png deleted file mode 100644 index f02f918ae..000000000 Binary files a/public/media-src/commander/medium/t19-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c1.png b/public/media-src/commander/medium/t2-c1.png deleted file mode 100755 index 73102aa05..000000000 Binary files a/public/media-src/commander/medium/t2-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c10.png b/public/media-src/commander/medium/t2-c10.png deleted file mode 100644 index 745610460..000000000 Binary files a/public/media-src/commander/medium/t2-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c11.png b/public/media-src/commander/medium/t2-c11.png deleted file mode 100644 index ed41f2dfb..000000000 Binary files a/public/media-src/commander/medium/t2-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c12.png b/public/media-src/commander/medium/t2-c12.png deleted file mode 100644 index f3e7064cb..000000000 Binary files a/public/media-src/commander/medium/t2-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c2.png b/public/media-src/commander/medium/t2-c2.png deleted file mode 100755 index 02211ede3..000000000 Binary files a/public/media-src/commander/medium/t2-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c3.png b/public/media-src/commander/medium/t2-c3.png deleted file mode 100755 index 399130b54..000000000 Binary files a/public/media-src/commander/medium/t2-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c4.png b/public/media-src/commander/medium/t2-c4.png deleted file mode 100755 index 3ea03b7d5..000000000 Binary files a/public/media-src/commander/medium/t2-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c5.png b/public/media-src/commander/medium/t2-c5.png deleted file mode 100755 index b509bdc18..000000000 Binary files a/public/media-src/commander/medium/t2-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c6.png b/public/media-src/commander/medium/t2-c6.png deleted file mode 100755 index 1d4daed84..000000000 Binary files a/public/media-src/commander/medium/t2-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c7.png b/public/media-src/commander/medium/t2-c7.png deleted file mode 100755 index f4db766c5..000000000 Binary files a/public/media-src/commander/medium/t2-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c8.png b/public/media-src/commander/medium/t2-c8.png deleted file mode 100644 index 613b28384..000000000 Binary files a/public/media-src/commander/medium/t2-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t2-c9.png b/public/media-src/commander/medium/t2-c9.png deleted file mode 100644 index a05190be9..000000000 Binary files a/public/media-src/commander/medium/t2-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c1.png b/public/media-src/commander/medium/t20-c1.png deleted file mode 100755 index 488ee08f7..000000000 Binary files a/public/media-src/commander/medium/t20-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c10.png b/public/media-src/commander/medium/t20-c10.png deleted file mode 100644 index 9ac77fb8f..000000000 Binary files a/public/media-src/commander/medium/t20-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c11.png b/public/media-src/commander/medium/t20-c11.png deleted file mode 100644 index 7ccd54548..000000000 Binary files a/public/media-src/commander/medium/t20-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c12.png b/public/media-src/commander/medium/t20-c12.png deleted file mode 100644 index 560061c53..000000000 Binary files a/public/media-src/commander/medium/t20-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c2.png b/public/media-src/commander/medium/t20-c2.png deleted file mode 100755 index d74af6979..000000000 Binary files a/public/media-src/commander/medium/t20-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c3.png b/public/media-src/commander/medium/t20-c3.png deleted file mode 100755 index b5343604b..000000000 Binary files a/public/media-src/commander/medium/t20-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c4.png b/public/media-src/commander/medium/t20-c4.png deleted file mode 100755 index ff07c265b..000000000 Binary files a/public/media-src/commander/medium/t20-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c5.png b/public/media-src/commander/medium/t20-c5.png deleted file mode 100755 index f7b2be2bb..000000000 Binary files a/public/media-src/commander/medium/t20-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c6.png b/public/media-src/commander/medium/t20-c6.png deleted file mode 100755 index 7ad0a9f52..000000000 Binary files a/public/media-src/commander/medium/t20-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c7.png b/public/media-src/commander/medium/t20-c7.png deleted file mode 100755 index 694056411..000000000 Binary files a/public/media-src/commander/medium/t20-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c8.png b/public/media-src/commander/medium/t20-c8.png deleted file mode 100644 index db0dd9965..000000000 Binary files a/public/media-src/commander/medium/t20-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t20-c9.png b/public/media-src/commander/medium/t20-c9.png deleted file mode 100644 index bd81522ae..000000000 Binary files a/public/media-src/commander/medium/t20-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c1.png b/public/media-src/commander/medium/t21-c1.png deleted file mode 100755 index 81b5384e3..000000000 Binary files a/public/media-src/commander/medium/t21-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c10.png b/public/media-src/commander/medium/t21-c10.png deleted file mode 100644 index 471019b0f..000000000 Binary files a/public/media-src/commander/medium/t21-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c11.png b/public/media-src/commander/medium/t21-c11.png deleted file mode 100644 index 30801e3ad..000000000 Binary files a/public/media-src/commander/medium/t21-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c12.png b/public/media-src/commander/medium/t21-c12.png deleted file mode 100644 index c7f1f8c7b..000000000 Binary files a/public/media-src/commander/medium/t21-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c2.png b/public/media-src/commander/medium/t21-c2.png deleted file mode 100755 index 2c34116fe..000000000 Binary files a/public/media-src/commander/medium/t21-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c3.png b/public/media-src/commander/medium/t21-c3.png deleted file mode 100755 index fe1794a94..000000000 Binary files a/public/media-src/commander/medium/t21-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c4.png b/public/media-src/commander/medium/t21-c4.png deleted file mode 100755 index c38624918..000000000 Binary files a/public/media-src/commander/medium/t21-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c5.png b/public/media-src/commander/medium/t21-c5.png deleted file mode 100755 index 40c0f4ce2..000000000 Binary files a/public/media-src/commander/medium/t21-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c6.png b/public/media-src/commander/medium/t21-c6.png deleted file mode 100755 index 09e208fb1..000000000 Binary files a/public/media-src/commander/medium/t21-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c7.png b/public/media-src/commander/medium/t21-c7.png deleted file mode 100755 index 88ced6d7a..000000000 Binary files a/public/media-src/commander/medium/t21-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c8.png b/public/media-src/commander/medium/t21-c8.png deleted file mode 100644 index f4c38f26c..000000000 Binary files a/public/media-src/commander/medium/t21-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t21-c9.png b/public/media-src/commander/medium/t21-c9.png deleted file mode 100644 index 05a3c5cc7..000000000 Binary files a/public/media-src/commander/medium/t21-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c1.png b/public/media-src/commander/medium/t3-c1.png deleted file mode 100755 index fa23d8c38..000000000 Binary files a/public/media-src/commander/medium/t3-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c10.png b/public/media-src/commander/medium/t3-c10.png deleted file mode 100644 index 74ef8c318..000000000 Binary files a/public/media-src/commander/medium/t3-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c11.png b/public/media-src/commander/medium/t3-c11.png deleted file mode 100644 index d8d35ba4f..000000000 Binary files a/public/media-src/commander/medium/t3-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c12.png b/public/media-src/commander/medium/t3-c12.png deleted file mode 100644 index 5436ade13..000000000 Binary files a/public/media-src/commander/medium/t3-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c2.png b/public/media-src/commander/medium/t3-c2.png deleted file mode 100755 index d24f9315d..000000000 Binary files a/public/media-src/commander/medium/t3-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c3.png b/public/media-src/commander/medium/t3-c3.png deleted file mode 100755 index 6818f3622..000000000 Binary files a/public/media-src/commander/medium/t3-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c4.png b/public/media-src/commander/medium/t3-c4.png deleted file mode 100755 index 874af4ad8..000000000 Binary files a/public/media-src/commander/medium/t3-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c5.png b/public/media-src/commander/medium/t3-c5.png deleted file mode 100755 index fc08dfe25..000000000 Binary files a/public/media-src/commander/medium/t3-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c6.png b/public/media-src/commander/medium/t3-c6.png deleted file mode 100755 index 6b6951855..000000000 Binary files a/public/media-src/commander/medium/t3-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c7.png b/public/media-src/commander/medium/t3-c7.png deleted file mode 100755 index 510437fe9..000000000 Binary files a/public/media-src/commander/medium/t3-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c8.png b/public/media-src/commander/medium/t3-c8.png deleted file mode 100644 index fded0840e..000000000 Binary files a/public/media-src/commander/medium/t3-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t3-c9.png b/public/media-src/commander/medium/t3-c9.png deleted file mode 100644 index 7dc0ce6ab..000000000 Binary files a/public/media-src/commander/medium/t3-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c1.png b/public/media-src/commander/medium/t4-c1.png deleted file mode 100755 index f137f63c7..000000000 Binary files a/public/media-src/commander/medium/t4-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c10.png b/public/media-src/commander/medium/t4-c10.png deleted file mode 100644 index 195e15439..000000000 Binary files a/public/media-src/commander/medium/t4-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c11.png b/public/media-src/commander/medium/t4-c11.png deleted file mode 100644 index 3005099e2..000000000 Binary files a/public/media-src/commander/medium/t4-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c12.png b/public/media-src/commander/medium/t4-c12.png deleted file mode 100644 index cb80b256e..000000000 Binary files a/public/media-src/commander/medium/t4-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c2.png b/public/media-src/commander/medium/t4-c2.png deleted file mode 100755 index 6086dcbae..000000000 Binary files a/public/media-src/commander/medium/t4-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c3.png b/public/media-src/commander/medium/t4-c3.png deleted file mode 100755 index 6527a329a..000000000 Binary files a/public/media-src/commander/medium/t4-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c4.png b/public/media-src/commander/medium/t4-c4.png deleted file mode 100755 index b599a0e95..000000000 Binary files a/public/media-src/commander/medium/t4-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c5.png b/public/media-src/commander/medium/t4-c5.png deleted file mode 100755 index bb37aac9c..000000000 Binary files a/public/media-src/commander/medium/t4-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c6.png b/public/media-src/commander/medium/t4-c6.png deleted file mode 100755 index e519f6ede..000000000 Binary files a/public/media-src/commander/medium/t4-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c7.png b/public/media-src/commander/medium/t4-c7.png deleted file mode 100755 index e4a9efd44..000000000 Binary files a/public/media-src/commander/medium/t4-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c8.png b/public/media-src/commander/medium/t4-c8.png deleted file mode 100644 index 5a051bb98..000000000 Binary files a/public/media-src/commander/medium/t4-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t4-c9.png b/public/media-src/commander/medium/t4-c9.png deleted file mode 100644 index 25a84e41e..000000000 Binary files a/public/media-src/commander/medium/t4-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c1.png b/public/media-src/commander/medium/t5-c1.png deleted file mode 100755 index ffb8c2db8..000000000 Binary files a/public/media-src/commander/medium/t5-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c10.png b/public/media-src/commander/medium/t5-c10.png deleted file mode 100644 index f76dbbb88..000000000 Binary files a/public/media-src/commander/medium/t5-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c11.png b/public/media-src/commander/medium/t5-c11.png deleted file mode 100644 index 03c0949a6..000000000 Binary files a/public/media-src/commander/medium/t5-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c12.png b/public/media-src/commander/medium/t5-c12.png deleted file mode 100644 index 5bddb516b..000000000 Binary files a/public/media-src/commander/medium/t5-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c2.png b/public/media-src/commander/medium/t5-c2.png deleted file mode 100755 index e85165658..000000000 Binary files a/public/media-src/commander/medium/t5-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c3.png b/public/media-src/commander/medium/t5-c3.png deleted file mode 100755 index c4a3ec0f7..000000000 Binary files a/public/media-src/commander/medium/t5-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c4.png b/public/media-src/commander/medium/t5-c4.png deleted file mode 100755 index 1b08ed3b2..000000000 Binary files a/public/media-src/commander/medium/t5-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c5.png b/public/media-src/commander/medium/t5-c5.png deleted file mode 100755 index 99ceeaeae..000000000 Binary files a/public/media-src/commander/medium/t5-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c6.png b/public/media-src/commander/medium/t5-c6.png deleted file mode 100755 index 2f72a1ca4..000000000 Binary files a/public/media-src/commander/medium/t5-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c7.png b/public/media-src/commander/medium/t5-c7.png deleted file mode 100755 index f2954f9e4..000000000 Binary files a/public/media-src/commander/medium/t5-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c8.png b/public/media-src/commander/medium/t5-c8.png deleted file mode 100644 index 6c981fc6a..000000000 Binary files a/public/media-src/commander/medium/t5-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t5-c9.png b/public/media-src/commander/medium/t5-c9.png deleted file mode 100644 index e3243d57c..000000000 Binary files a/public/media-src/commander/medium/t5-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c1.png b/public/media-src/commander/medium/t6-c1.png deleted file mode 100755 index c26495d7a..000000000 Binary files a/public/media-src/commander/medium/t6-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c10.png b/public/media-src/commander/medium/t6-c10.png deleted file mode 100644 index 0910433cd..000000000 Binary files a/public/media-src/commander/medium/t6-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c11.png b/public/media-src/commander/medium/t6-c11.png deleted file mode 100644 index 3cf149ec4..000000000 Binary files a/public/media-src/commander/medium/t6-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c12.png b/public/media-src/commander/medium/t6-c12.png deleted file mode 100644 index e028cfc77..000000000 Binary files a/public/media-src/commander/medium/t6-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c2.png b/public/media-src/commander/medium/t6-c2.png deleted file mode 100755 index 9f0f90f96..000000000 Binary files a/public/media-src/commander/medium/t6-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c3.png b/public/media-src/commander/medium/t6-c3.png deleted file mode 100755 index 776a22362..000000000 Binary files a/public/media-src/commander/medium/t6-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c4.png b/public/media-src/commander/medium/t6-c4.png deleted file mode 100755 index 62f2b3db0..000000000 Binary files a/public/media-src/commander/medium/t6-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c5.png b/public/media-src/commander/medium/t6-c5.png deleted file mode 100755 index 92ec413b8..000000000 Binary files a/public/media-src/commander/medium/t6-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c6.png b/public/media-src/commander/medium/t6-c6.png deleted file mode 100755 index 2d703fc2d..000000000 Binary files a/public/media-src/commander/medium/t6-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c7.png b/public/media-src/commander/medium/t6-c7.png deleted file mode 100755 index 606e0ec7d..000000000 Binary files a/public/media-src/commander/medium/t6-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c8.png b/public/media-src/commander/medium/t6-c8.png deleted file mode 100644 index 652fdc0bc..000000000 Binary files a/public/media-src/commander/medium/t6-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t6-c9.png b/public/media-src/commander/medium/t6-c9.png deleted file mode 100644 index 1072822f5..000000000 Binary files a/public/media-src/commander/medium/t6-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c1.png b/public/media-src/commander/medium/t7-c1.png deleted file mode 100755 index 3a95598dd..000000000 Binary files a/public/media-src/commander/medium/t7-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c10.png b/public/media-src/commander/medium/t7-c10.png deleted file mode 100644 index 9ec850e9f..000000000 Binary files a/public/media-src/commander/medium/t7-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c11.png b/public/media-src/commander/medium/t7-c11.png deleted file mode 100644 index 60c10b41a..000000000 Binary files a/public/media-src/commander/medium/t7-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c12.png b/public/media-src/commander/medium/t7-c12.png deleted file mode 100644 index 7fcb6738a..000000000 Binary files a/public/media-src/commander/medium/t7-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c2.png b/public/media-src/commander/medium/t7-c2.png deleted file mode 100755 index ff0610c5a..000000000 Binary files a/public/media-src/commander/medium/t7-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c3.png b/public/media-src/commander/medium/t7-c3.png deleted file mode 100755 index ce28f538e..000000000 Binary files a/public/media-src/commander/medium/t7-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c4.png b/public/media-src/commander/medium/t7-c4.png deleted file mode 100755 index bdc02a85f..000000000 Binary files a/public/media-src/commander/medium/t7-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c5.png b/public/media-src/commander/medium/t7-c5.png deleted file mode 100755 index a3cc7be74..000000000 Binary files a/public/media-src/commander/medium/t7-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c6.png b/public/media-src/commander/medium/t7-c6.png deleted file mode 100755 index f32eaae44..000000000 Binary files a/public/media-src/commander/medium/t7-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c7.png b/public/media-src/commander/medium/t7-c7.png deleted file mode 100755 index 8bbe70add..000000000 Binary files a/public/media-src/commander/medium/t7-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c8.png b/public/media-src/commander/medium/t7-c8.png deleted file mode 100644 index a042754b4..000000000 Binary files a/public/media-src/commander/medium/t7-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t7-c9.png b/public/media-src/commander/medium/t7-c9.png deleted file mode 100644 index 9f27d937b..000000000 Binary files a/public/media-src/commander/medium/t7-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c1.png b/public/media-src/commander/medium/t8-c1.png deleted file mode 100755 index 1ce769d07..000000000 Binary files a/public/media-src/commander/medium/t8-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c10.png b/public/media-src/commander/medium/t8-c10.png deleted file mode 100644 index 8aed5a74c..000000000 Binary files a/public/media-src/commander/medium/t8-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c11.png b/public/media-src/commander/medium/t8-c11.png deleted file mode 100644 index d894a1682..000000000 Binary files a/public/media-src/commander/medium/t8-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c12.png b/public/media-src/commander/medium/t8-c12.png deleted file mode 100644 index 2560eb3b4..000000000 Binary files a/public/media-src/commander/medium/t8-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c2.png b/public/media-src/commander/medium/t8-c2.png deleted file mode 100755 index de34f613e..000000000 Binary files a/public/media-src/commander/medium/t8-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c3.png b/public/media-src/commander/medium/t8-c3.png deleted file mode 100755 index a91254f29..000000000 Binary files a/public/media-src/commander/medium/t8-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c4.png b/public/media-src/commander/medium/t8-c4.png deleted file mode 100755 index c9af63f57..000000000 Binary files a/public/media-src/commander/medium/t8-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c5.png b/public/media-src/commander/medium/t8-c5.png deleted file mode 100755 index 17c019a06..000000000 Binary files a/public/media-src/commander/medium/t8-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c6.png b/public/media-src/commander/medium/t8-c6.png deleted file mode 100755 index ef6aabcca..000000000 Binary files a/public/media-src/commander/medium/t8-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c7.png b/public/media-src/commander/medium/t8-c7.png deleted file mode 100755 index a8dbf079f..000000000 Binary files a/public/media-src/commander/medium/t8-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c8.png b/public/media-src/commander/medium/t8-c8.png deleted file mode 100644 index 4dfa10ea9..000000000 Binary files a/public/media-src/commander/medium/t8-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t8-c9.png b/public/media-src/commander/medium/t8-c9.png deleted file mode 100644 index f0e348795..000000000 Binary files a/public/media-src/commander/medium/t8-c9.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c1.png b/public/media-src/commander/medium/t9-c1.png deleted file mode 100755 index 7e4270ead..000000000 Binary files a/public/media-src/commander/medium/t9-c1.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c10.png b/public/media-src/commander/medium/t9-c10.png deleted file mode 100644 index 490c86328..000000000 Binary files a/public/media-src/commander/medium/t9-c10.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c11.png b/public/media-src/commander/medium/t9-c11.png deleted file mode 100644 index 90fba2ef7..000000000 Binary files a/public/media-src/commander/medium/t9-c11.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c12.png b/public/media-src/commander/medium/t9-c12.png deleted file mode 100644 index 027e12ba2..000000000 Binary files a/public/media-src/commander/medium/t9-c12.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c2.png b/public/media-src/commander/medium/t9-c2.png deleted file mode 100755 index 7cf86f623..000000000 Binary files a/public/media-src/commander/medium/t9-c2.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c3.png b/public/media-src/commander/medium/t9-c3.png deleted file mode 100755 index 7b8eceb50..000000000 Binary files a/public/media-src/commander/medium/t9-c3.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c4.png b/public/media-src/commander/medium/t9-c4.png deleted file mode 100755 index 3c153d4a0..000000000 Binary files a/public/media-src/commander/medium/t9-c4.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c5.png b/public/media-src/commander/medium/t9-c5.png deleted file mode 100755 index 3ee86ceed..000000000 Binary files a/public/media-src/commander/medium/t9-c5.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c6.png b/public/media-src/commander/medium/t9-c6.png deleted file mode 100755 index ee9448c17..000000000 Binary files a/public/media-src/commander/medium/t9-c6.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c7.png b/public/media-src/commander/medium/t9-c7.png deleted file mode 100755 index 7d004c1cd..000000000 Binary files a/public/media-src/commander/medium/t9-c7.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c8.png b/public/media-src/commander/medium/t9-c8.png deleted file mode 100644 index 6d183423c..000000000 Binary files a/public/media-src/commander/medium/t9-c8.png and /dev/null differ diff --git a/public/media-src/commander/medium/t9-c9.png b/public/media-src/commander/medium/t9-c9.png deleted file mode 100644 index 551a70346..000000000 Binary files a/public/media-src/commander/medium/t9-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c0.png b/public/media-src/commander/small/t1-c0.png deleted file mode 100755 index 9e71e4f30..000000000 Binary files a/public/media-src/commander/small/t1-c0.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c1.png b/public/media-src/commander/small/t1-c1.png deleted file mode 100755 index 14fee59a8..000000000 Binary files a/public/media-src/commander/small/t1-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c10.png b/public/media-src/commander/small/t1-c10.png deleted file mode 100644 index b16665bbe..000000000 Binary files a/public/media-src/commander/small/t1-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c11.png b/public/media-src/commander/small/t1-c11.png deleted file mode 100644 index 840470fca..000000000 Binary files a/public/media-src/commander/small/t1-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c12.png b/public/media-src/commander/small/t1-c12.png deleted file mode 100644 index dc0eea22e..000000000 Binary files a/public/media-src/commander/small/t1-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c2.png b/public/media-src/commander/small/t1-c2.png deleted file mode 100755 index 80c65a3c4..000000000 Binary files a/public/media-src/commander/small/t1-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c3.png b/public/media-src/commander/small/t1-c3.png deleted file mode 100755 index 7ba6242ef..000000000 Binary files a/public/media-src/commander/small/t1-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c4.png b/public/media-src/commander/small/t1-c4.png deleted file mode 100755 index d23787858..000000000 Binary files a/public/media-src/commander/small/t1-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c5.png b/public/media-src/commander/small/t1-c5.png deleted file mode 100755 index 33366a0fb..000000000 Binary files a/public/media-src/commander/small/t1-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c6.png b/public/media-src/commander/small/t1-c6.png deleted file mode 100755 index 496285fd2..000000000 Binary files a/public/media-src/commander/small/t1-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c7.png b/public/media-src/commander/small/t1-c7.png deleted file mode 100755 index 0f653914a..000000000 Binary files a/public/media-src/commander/small/t1-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c8.png b/public/media-src/commander/small/t1-c8.png deleted file mode 100644 index d2dd12f3d..000000000 Binary files a/public/media-src/commander/small/t1-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t1-c9.png b/public/media-src/commander/small/t1-c9.png deleted file mode 100644 index 7e40aa6ad..000000000 Binary files a/public/media-src/commander/small/t1-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c1.png b/public/media-src/commander/small/t10-c1.png deleted file mode 100755 index 72e354000..000000000 Binary files a/public/media-src/commander/small/t10-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c10.png b/public/media-src/commander/small/t10-c10.png deleted file mode 100644 index 071660265..000000000 Binary files a/public/media-src/commander/small/t10-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c11.png b/public/media-src/commander/small/t10-c11.png deleted file mode 100644 index 49bcc3a3f..000000000 Binary files a/public/media-src/commander/small/t10-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c12.png b/public/media-src/commander/small/t10-c12.png deleted file mode 100644 index 375a8ca26..000000000 Binary files a/public/media-src/commander/small/t10-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c2.png b/public/media-src/commander/small/t10-c2.png deleted file mode 100755 index 7f15768c3..000000000 Binary files a/public/media-src/commander/small/t10-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c3.png b/public/media-src/commander/small/t10-c3.png deleted file mode 100755 index 0a1bce683..000000000 Binary files a/public/media-src/commander/small/t10-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c4.png b/public/media-src/commander/small/t10-c4.png deleted file mode 100755 index 6357ac6ec..000000000 Binary files a/public/media-src/commander/small/t10-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c5.png b/public/media-src/commander/small/t10-c5.png deleted file mode 100755 index 6a55067de..000000000 Binary files a/public/media-src/commander/small/t10-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c6.png b/public/media-src/commander/small/t10-c6.png deleted file mode 100755 index d883193b4..000000000 Binary files a/public/media-src/commander/small/t10-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c7.png b/public/media-src/commander/small/t10-c7.png deleted file mode 100755 index 2ec40db97..000000000 Binary files a/public/media-src/commander/small/t10-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c8.png b/public/media-src/commander/small/t10-c8.png deleted file mode 100644 index 42389c556..000000000 Binary files a/public/media-src/commander/small/t10-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t10-c9.png b/public/media-src/commander/small/t10-c9.png deleted file mode 100644 index 01ec2363b..000000000 Binary files a/public/media-src/commander/small/t10-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c1.png b/public/media-src/commander/small/t11-c1.png deleted file mode 100755 index b0247a843..000000000 Binary files a/public/media-src/commander/small/t11-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c10.png b/public/media-src/commander/small/t11-c10.png deleted file mode 100644 index 717803930..000000000 Binary files a/public/media-src/commander/small/t11-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c11.png b/public/media-src/commander/small/t11-c11.png deleted file mode 100644 index 6942d7716..000000000 Binary files a/public/media-src/commander/small/t11-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c12.png b/public/media-src/commander/small/t11-c12.png deleted file mode 100644 index 1af009b88..000000000 Binary files a/public/media-src/commander/small/t11-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c2.png b/public/media-src/commander/small/t11-c2.png deleted file mode 100755 index 29cbe0cf2..000000000 Binary files a/public/media-src/commander/small/t11-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c3.png b/public/media-src/commander/small/t11-c3.png deleted file mode 100755 index 88bca0815..000000000 Binary files a/public/media-src/commander/small/t11-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c4.png b/public/media-src/commander/small/t11-c4.png deleted file mode 100755 index 82ca8c782..000000000 Binary files a/public/media-src/commander/small/t11-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c5.png b/public/media-src/commander/small/t11-c5.png deleted file mode 100755 index d7110cbfc..000000000 Binary files a/public/media-src/commander/small/t11-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c6.png b/public/media-src/commander/small/t11-c6.png deleted file mode 100755 index d330d6e24..000000000 Binary files a/public/media-src/commander/small/t11-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c7.png b/public/media-src/commander/small/t11-c7.png deleted file mode 100755 index 2b51b8437..000000000 Binary files a/public/media-src/commander/small/t11-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c8.png b/public/media-src/commander/small/t11-c8.png deleted file mode 100644 index 976a2eb84..000000000 Binary files a/public/media-src/commander/small/t11-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t11-c9.png b/public/media-src/commander/small/t11-c9.png deleted file mode 100644 index 6bd2714c8..000000000 Binary files a/public/media-src/commander/small/t11-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c1.png b/public/media-src/commander/small/t12-c1.png deleted file mode 100755 index 03299209e..000000000 Binary files a/public/media-src/commander/small/t12-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c10.png b/public/media-src/commander/small/t12-c10.png deleted file mode 100644 index a9b8637d8..000000000 Binary files a/public/media-src/commander/small/t12-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c11.png b/public/media-src/commander/small/t12-c11.png deleted file mode 100644 index a0fdfc853..000000000 Binary files a/public/media-src/commander/small/t12-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c12.png b/public/media-src/commander/small/t12-c12.png deleted file mode 100644 index 5d803fcfe..000000000 Binary files a/public/media-src/commander/small/t12-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c2.png b/public/media-src/commander/small/t12-c2.png deleted file mode 100755 index 5675857e0..000000000 Binary files a/public/media-src/commander/small/t12-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c3.png b/public/media-src/commander/small/t12-c3.png deleted file mode 100755 index 3ae74d8e8..000000000 Binary files a/public/media-src/commander/small/t12-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c4.png b/public/media-src/commander/small/t12-c4.png deleted file mode 100755 index a7acfab82..000000000 Binary files a/public/media-src/commander/small/t12-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c5.png b/public/media-src/commander/small/t12-c5.png deleted file mode 100755 index 7424b0dfd..000000000 Binary files a/public/media-src/commander/small/t12-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c6.png b/public/media-src/commander/small/t12-c6.png deleted file mode 100755 index 080b6b6ac..000000000 Binary files a/public/media-src/commander/small/t12-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c7.png b/public/media-src/commander/small/t12-c7.png deleted file mode 100755 index 7a8886dfc..000000000 Binary files a/public/media-src/commander/small/t12-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c8.png b/public/media-src/commander/small/t12-c8.png deleted file mode 100644 index 1d48236dc..000000000 Binary files a/public/media-src/commander/small/t12-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t12-c9.png b/public/media-src/commander/small/t12-c9.png deleted file mode 100644 index 01eed1ccc..000000000 Binary files a/public/media-src/commander/small/t12-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c1.png b/public/media-src/commander/small/t13-c1.png deleted file mode 100755 index f6cd6c640..000000000 Binary files a/public/media-src/commander/small/t13-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c10.png b/public/media-src/commander/small/t13-c10.png deleted file mode 100644 index 202df9f7f..000000000 Binary files a/public/media-src/commander/small/t13-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c11.png b/public/media-src/commander/small/t13-c11.png deleted file mode 100644 index 31116bff8..000000000 Binary files a/public/media-src/commander/small/t13-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c12.png b/public/media-src/commander/small/t13-c12.png deleted file mode 100644 index 913a4e230..000000000 Binary files a/public/media-src/commander/small/t13-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c2.png b/public/media-src/commander/small/t13-c2.png deleted file mode 100755 index a9a95004f..000000000 Binary files a/public/media-src/commander/small/t13-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c3.png b/public/media-src/commander/small/t13-c3.png deleted file mode 100755 index d76b4d9d3..000000000 Binary files a/public/media-src/commander/small/t13-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c4.png b/public/media-src/commander/small/t13-c4.png deleted file mode 100755 index 642a8ef58..000000000 Binary files a/public/media-src/commander/small/t13-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c5.png b/public/media-src/commander/small/t13-c5.png deleted file mode 100755 index 6704b1133..000000000 Binary files a/public/media-src/commander/small/t13-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c6.png b/public/media-src/commander/small/t13-c6.png deleted file mode 100755 index 73712ed93..000000000 Binary files a/public/media-src/commander/small/t13-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c7.png b/public/media-src/commander/small/t13-c7.png deleted file mode 100755 index 4904ab0c1..000000000 Binary files a/public/media-src/commander/small/t13-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c8.png b/public/media-src/commander/small/t13-c8.png deleted file mode 100644 index 26bc41606..000000000 Binary files a/public/media-src/commander/small/t13-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t13-c9.png b/public/media-src/commander/small/t13-c9.png deleted file mode 100644 index 92560c7f2..000000000 Binary files a/public/media-src/commander/small/t13-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c1.png b/public/media-src/commander/small/t14-c1.png deleted file mode 100755 index 5c9cb3736..000000000 Binary files a/public/media-src/commander/small/t14-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c10.png b/public/media-src/commander/small/t14-c10.png deleted file mode 100644 index 4887036f8..000000000 Binary files a/public/media-src/commander/small/t14-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c11.png b/public/media-src/commander/small/t14-c11.png deleted file mode 100644 index 202be26f6..000000000 Binary files a/public/media-src/commander/small/t14-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c12.png b/public/media-src/commander/small/t14-c12.png deleted file mode 100644 index 35053b257..000000000 Binary files a/public/media-src/commander/small/t14-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c2.png b/public/media-src/commander/small/t14-c2.png deleted file mode 100755 index af0ddc4cf..000000000 Binary files a/public/media-src/commander/small/t14-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c3.png b/public/media-src/commander/small/t14-c3.png deleted file mode 100755 index a55daecd3..000000000 Binary files a/public/media-src/commander/small/t14-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c4.png b/public/media-src/commander/small/t14-c4.png deleted file mode 100755 index c2c6e5595..000000000 Binary files a/public/media-src/commander/small/t14-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c5.png b/public/media-src/commander/small/t14-c5.png deleted file mode 100755 index e823b4fb8..000000000 Binary files a/public/media-src/commander/small/t14-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c6.png b/public/media-src/commander/small/t14-c6.png deleted file mode 100755 index 1c78c1fb5..000000000 Binary files a/public/media-src/commander/small/t14-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c7.png b/public/media-src/commander/small/t14-c7.png deleted file mode 100755 index 2a125123c..000000000 Binary files a/public/media-src/commander/small/t14-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c8.png b/public/media-src/commander/small/t14-c8.png deleted file mode 100644 index dae51d083..000000000 Binary files a/public/media-src/commander/small/t14-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t14-c9.png b/public/media-src/commander/small/t14-c9.png deleted file mode 100644 index a87bf39d0..000000000 Binary files a/public/media-src/commander/small/t14-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c1.png b/public/media-src/commander/small/t15-c1.png deleted file mode 100755 index 0d82dd5ea..000000000 Binary files a/public/media-src/commander/small/t15-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c10.png b/public/media-src/commander/small/t15-c10.png deleted file mode 100644 index dab70d5f1..000000000 Binary files a/public/media-src/commander/small/t15-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c11.png b/public/media-src/commander/small/t15-c11.png deleted file mode 100644 index 122b377e4..000000000 Binary files a/public/media-src/commander/small/t15-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c12.png b/public/media-src/commander/small/t15-c12.png deleted file mode 100644 index b36b817e3..000000000 Binary files a/public/media-src/commander/small/t15-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c2.png b/public/media-src/commander/small/t15-c2.png deleted file mode 100755 index f2facde98..000000000 Binary files a/public/media-src/commander/small/t15-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c3.png b/public/media-src/commander/small/t15-c3.png deleted file mode 100755 index 5f9875380..000000000 Binary files a/public/media-src/commander/small/t15-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c4.png b/public/media-src/commander/small/t15-c4.png deleted file mode 100755 index cb743797e..000000000 Binary files a/public/media-src/commander/small/t15-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c5.png b/public/media-src/commander/small/t15-c5.png deleted file mode 100755 index c17fb5f02..000000000 Binary files a/public/media-src/commander/small/t15-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c6.png b/public/media-src/commander/small/t15-c6.png deleted file mode 100755 index fd9b58bbb..000000000 Binary files a/public/media-src/commander/small/t15-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c7.png b/public/media-src/commander/small/t15-c7.png deleted file mode 100755 index e79dc05c0..000000000 Binary files a/public/media-src/commander/small/t15-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c8.png b/public/media-src/commander/small/t15-c8.png deleted file mode 100644 index e35b12943..000000000 Binary files a/public/media-src/commander/small/t15-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t15-c9.png b/public/media-src/commander/small/t15-c9.png deleted file mode 100644 index 9517d5117..000000000 Binary files a/public/media-src/commander/small/t15-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c1.png b/public/media-src/commander/small/t16-c1.png deleted file mode 100755 index 8525b3abb..000000000 Binary files a/public/media-src/commander/small/t16-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c10.png b/public/media-src/commander/small/t16-c10.png deleted file mode 100644 index e9f511fb4..000000000 Binary files a/public/media-src/commander/small/t16-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c11.png b/public/media-src/commander/small/t16-c11.png deleted file mode 100644 index c765a5474..000000000 Binary files a/public/media-src/commander/small/t16-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c12.png b/public/media-src/commander/small/t16-c12.png deleted file mode 100644 index 8ce7b6645..000000000 Binary files a/public/media-src/commander/small/t16-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c2.png b/public/media-src/commander/small/t16-c2.png deleted file mode 100755 index 49bfcc991..000000000 Binary files a/public/media-src/commander/small/t16-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c3.png b/public/media-src/commander/small/t16-c3.png deleted file mode 100755 index 1c581f7d0..000000000 Binary files a/public/media-src/commander/small/t16-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c4.png b/public/media-src/commander/small/t16-c4.png deleted file mode 100755 index ffe384fa3..000000000 Binary files a/public/media-src/commander/small/t16-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c5.png b/public/media-src/commander/small/t16-c5.png deleted file mode 100755 index 67a3ea22b..000000000 Binary files a/public/media-src/commander/small/t16-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c6.png b/public/media-src/commander/small/t16-c6.png deleted file mode 100755 index 5b65038df..000000000 Binary files a/public/media-src/commander/small/t16-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c7.png b/public/media-src/commander/small/t16-c7.png deleted file mode 100755 index 7b3433ec1..000000000 Binary files a/public/media-src/commander/small/t16-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c8.png b/public/media-src/commander/small/t16-c8.png deleted file mode 100644 index dc7d4dfeb..000000000 Binary files a/public/media-src/commander/small/t16-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t16-c9.png b/public/media-src/commander/small/t16-c9.png deleted file mode 100644 index 014d5d235..000000000 Binary files a/public/media-src/commander/small/t16-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c1.png b/public/media-src/commander/small/t17-c1.png deleted file mode 100755 index b917add23..000000000 Binary files a/public/media-src/commander/small/t17-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c10.png b/public/media-src/commander/small/t17-c10.png deleted file mode 100644 index 4f0a748c8..000000000 Binary files a/public/media-src/commander/small/t17-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c11.png b/public/media-src/commander/small/t17-c11.png deleted file mode 100644 index 62759e8d3..000000000 Binary files a/public/media-src/commander/small/t17-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c12.png b/public/media-src/commander/small/t17-c12.png deleted file mode 100644 index 6dc0e3329..000000000 Binary files a/public/media-src/commander/small/t17-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c2.png b/public/media-src/commander/small/t17-c2.png deleted file mode 100755 index a58cf16e9..000000000 Binary files a/public/media-src/commander/small/t17-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c3.png b/public/media-src/commander/small/t17-c3.png deleted file mode 100755 index 6c41914c6..000000000 Binary files a/public/media-src/commander/small/t17-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c4.png b/public/media-src/commander/small/t17-c4.png deleted file mode 100755 index 1942589f4..000000000 Binary files a/public/media-src/commander/small/t17-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c5.png b/public/media-src/commander/small/t17-c5.png deleted file mode 100755 index 4859b285f..000000000 Binary files a/public/media-src/commander/small/t17-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c6.png b/public/media-src/commander/small/t17-c6.png deleted file mode 100755 index 82b0c8d8d..000000000 Binary files a/public/media-src/commander/small/t17-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c7.png b/public/media-src/commander/small/t17-c7.png deleted file mode 100755 index 37c661651..000000000 Binary files a/public/media-src/commander/small/t17-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c8.png b/public/media-src/commander/small/t17-c8.png deleted file mode 100644 index 34eafff99..000000000 Binary files a/public/media-src/commander/small/t17-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t17-c9.png b/public/media-src/commander/small/t17-c9.png deleted file mode 100644 index 6d048455d..000000000 Binary files a/public/media-src/commander/small/t17-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c1.png b/public/media-src/commander/small/t18-c1.png deleted file mode 100755 index 0db6a37e7..000000000 Binary files a/public/media-src/commander/small/t18-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c10.png b/public/media-src/commander/small/t18-c10.png deleted file mode 100644 index af3924e50..000000000 Binary files a/public/media-src/commander/small/t18-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c11.png b/public/media-src/commander/small/t18-c11.png deleted file mode 100644 index 8acdd1f89..000000000 Binary files a/public/media-src/commander/small/t18-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c12.png b/public/media-src/commander/small/t18-c12.png deleted file mode 100644 index 12d042fc8..000000000 Binary files a/public/media-src/commander/small/t18-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c2.png b/public/media-src/commander/small/t18-c2.png deleted file mode 100755 index 96b49952a..000000000 Binary files a/public/media-src/commander/small/t18-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c3.png b/public/media-src/commander/small/t18-c3.png deleted file mode 100755 index 2096f42f2..000000000 Binary files a/public/media-src/commander/small/t18-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c4.png b/public/media-src/commander/small/t18-c4.png deleted file mode 100755 index e1af483bd..000000000 Binary files a/public/media-src/commander/small/t18-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c5.png b/public/media-src/commander/small/t18-c5.png deleted file mode 100755 index ac471725a..000000000 Binary files a/public/media-src/commander/small/t18-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c6.png b/public/media-src/commander/small/t18-c6.png deleted file mode 100755 index 18230ec57..000000000 Binary files a/public/media-src/commander/small/t18-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c7.png b/public/media-src/commander/small/t18-c7.png deleted file mode 100755 index d7037b212..000000000 Binary files a/public/media-src/commander/small/t18-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c8.png b/public/media-src/commander/small/t18-c8.png deleted file mode 100644 index c6d5e50ee..000000000 Binary files a/public/media-src/commander/small/t18-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t18-c9.png b/public/media-src/commander/small/t18-c9.png deleted file mode 100644 index 0b67070dc..000000000 Binary files a/public/media-src/commander/small/t18-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c1.png b/public/media-src/commander/small/t19-c1.png deleted file mode 100755 index ba69d86d6..000000000 Binary files a/public/media-src/commander/small/t19-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c10.png b/public/media-src/commander/small/t19-c10.png deleted file mode 100644 index d875d0d48..000000000 Binary files a/public/media-src/commander/small/t19-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c11.png b/public/media-src/commander/small/t19-c11.png deleted file mode 100644 index 28109e85d..000000000 Binary files a/public/media-src/commander/small/t19-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c12.png b/public/media-src/commander/small/t19-c12.png deleted file mode 100644 index b9b0afc72..000000000 Binary files a/public/media-src/commander/small/t19-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c2.png b/public/media-src/commander/small/t19-c2.png deleted file mode 100755 index de083bd68..000000000 Binary files a/public/media-src/commander/small/t19-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c3.png b/public/media-src/commander/small/t19-c3.png deleted file mode 100755 index 0206db719..000000000 Binary files a/public/media-src/commander/small/t19-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c4.png b/public/media-src/commander/small/t19-c4.png deleted file mode 100755 index 427fbac06..000000000 Binary files a/public/media-src/commander/small/t19-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c5.png b/public/media-src/commander/small/t19-c5.png deleted file mode 100755 index 9544980e5..000000000 Binary files a/public/media-src/commander/small/t19-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c6.png b/public/media-src/commander/small/t19-c6.png deleted file mode 100755 index a49b7146d..000000000 Binary files a/public/media-src/commander/small/t19-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c7.png b/public/media-src/commander/small/t19-c7.png deleted file mode 100755 index c33aaf011..000000000 Binary files a/public/media-src/commander/small/t19-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c8.png b/public/media-src/commander/small/t19-c8.png deleted file mode 100644 index 20a798695..000000000 Binary files a/public/media-src/commander/small/t19-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t19-c9.png b/public/media-src/commander/small/t19-c9.png deleted file mode 100644 index 4feaa33ef..000000000 Binary files a/public/media-src/commander/small/t19-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c1.png b/public/media-src/commander/small/t2-c1.png deleted file mode 100755 index b49a19cce..000000000 Binary files a/public/media-src/commander/small/t2-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c10.png b/public/media-src/commander/small/t2-c10.png deleted file mode 100644 index 000789ee7..000000000 Binary files a/public/media-src/commander/small/t2-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c11.png b/public/media-src/commander/small/t2-c11.png deleted file mode 100644 index c56107cd9..000000000 Binary files a/public/media-src/commander/small/t2-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c12.png b/public/media-src/commander/small/t2-c12.png deleted file mode 100644 index 258dfc80d..000000000 Binary files a/public/media-src/commander/small/t2-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c2.png b/public/media-src/commander/small/t2-c2.png deleted file mode 100755 index 7c256e54b..000000000 Binary files a/public/media-src/commander/small/t2-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c3.png b/public/media-src/commander/small/t2-c3.png deleted file mode 100755 index 6a6df2d18..000000000 Binary files a/public/media-src/commander/small/t2-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c4.png b/public/media-src/commander/small/t2-c4.png deleted file mode 100755 index 362d20c12..000000000 Binary files a/public/media-src/commander/small/t2-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c5.png b/public/media-src/commander/small/t2-c5.png deleted file mode 100755 index f0f850c30..000000000 Binary files a/public/media-src/commander/small/t2-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c6.png b/public/media-src/commander/small/t2-c6.png deleted file mode 100755 index ae2a80296..000000000 Binary files a/public/media-src/commander/small/t2-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c7.png b/public/media-src/commander/small/t2-c7.png deleted file mode 100755 index f31498e81..000000000 Binary files a/public/media-src/commander/small/t2-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c8.png b/public/media-src/commander/small/t2-c8.png deleted file mode 100644 index 6704a23b5..000000000 Binary files a/public/media-src/commander/small/t2-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t2-c9.png b/public/media-src/commander/small/t2-c9.png deleted file mode 100644 index 2cddd2aa3..000000000 Binary files a/public/media-src/commander/small/t2-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c1.png b/public/media-src/commander/small/t20-c1.png deleted file mode 100755 index db0bc014a..000000000 Binary files a/public/media-src/commander/small/t20-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c10.png b/public/media-src/commander/small/t20-c10.png deleted file mode 100644 index 8bc64827e..000000000 Binary files a/public/media-src/commander/small/t20-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c11.png b/public/media-src/commander/small/t20-c11.png deleted file mode 100644 index 4bc20df54..000000000 Binary files a/public/media-src/commander/small/t20-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c12.png b/public/media-src/commander/small/t20-c12.png deleted file mode 100644 index 3b4aba566..000000000 Binary files a/public/media-src/commander/small/t20-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c2.png b/public/media-src/commander/small/t20-c2.png deleted file mode 100755 index 843728f37..000000000 Binary files a/public/media-src/commander/small/t20-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c3.png b/public/media-src/commander/small/t20-c3.png deleted file mode 100755 index e3c4ab6f3..000000000 Binary files a/public/media-src/commander/small/t20-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c4.png b/public/media-src/commander/small/t20-c4.png deleted file mode 100755 index 63ea57685..000000000 Binary files a/public/media-src/commander/small/t20-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c5.png b/public/media-src/commander/small/t20-c5.png deleted file mode 100755 index abdb66b32..000000000 Binary files a/public/media-src/commander/small/t20-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c6.png b/public/media-src/commander/small/t20-c6.png deleted file mode 100755 index 4ae3ea7ed..000000000 Binary files a/public/media-src/commander/small/t20-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c7.png b/public/media-src/commander/small/t20-c7.png deleted file mode 100755 index 281a090f0..000000000 Binary files a/public/media-src/commander/small/t20-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c8.png b/public/media-src/commander/small/t20-c8.png deleted file mode 100644 index 316b329a8..000000000 Binary files a/public/media-src/commander/small/t20-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t20-c9.png b/public/media-src/commander/small/t20-c9.png deleted file mode 100644 index 05bead43f..000000000 Binary files a/public/media-src/commander/small/t20-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c1.png b/public/media-src/commander/small/t21-c1.png deleted file mode 100755 index 0b72a5505..000000000 Binary files a/public/media-src/commander/small/t21-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c10.png b/public/media-src/commander/small/t21-c10.png deleted file mode 100644 index 430be20c2..000000000 Binary files a/public/media-src/commander/small/t21-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c11.png b/public/media-src/commander/small/t21-c11.png deleted file mode 100644 index ee63dfdd0..000000000 Binary files a/public/media-src/commander/small/t21-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c12.png b/public/media-src/commander/small/t21-c12.png deleted file mode 100644 index 952aa1998..000000000 Binary files a/public/media-src/commander/small/t21-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c2.png b/public/media-src/commander/small/t21-c2.png deleted file mode 100755 index d91003c5e..000000000 Binary files a/public/media-src/commander/small/t21-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c3.png b/public/media-src/commander/small/t21-c3.png deleted file mode 100755 index cfb6e35d4..000000000 Binary files a/public/media-src/commander/small/t21-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c4.png b/public/media-src/commander/small/t21-c4.png deleted file mode 100755 index 669fdbc8c..000000000 Binary files a/public/media-src/commander/small/t21-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c5.png b/public/media-src/commander/small/t21-c5.png deleted file mode 100755 index 9adfcf350..000000000 Binary files a/public/media-src/commander/small/t21-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c6.png b/public/media-src/commander/small/t21-c6.png deleted file mode 100755 index 29522ebf2..000000000 Binary files a/public/media-src/commander/small/t21-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c7.png b/public/media-src/commander/small/t21-c7.png deleted file mode 100755 index ebd34aab8..000000000 Binary files a/public/media-src/commander/small/t21-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c8.png b/public/media-src/commander/small/t21-c8.png deleted file mode 100644 index 1714002c3..000000000 Binary files a/public/media-src/commander/small/t21-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t21-c9.png b/public/media-src/commander/small/t21-c9.png deleted file mode 100644 index 43226b79e..000000000 Binary files a/public/media-src/commander/small/t21-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c1.png b/public/media-src/commander/small/t3-c1.png deleted file mode 100755 index fa72750aa..000000000 Binary files a/public/media-src/commander/small/t3-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c10.png b/public/media-src/commander/small/t3-c10.png deleted file mode 100644 index 92bb27f74..000000000 Binary files a/public/media-src/commander/small/t3-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c11.png b/public/media-src/commander/small/t3-c11.png deleted file mode 100644 index 08817e4ab..000000000 Binary files a/public/media-src/commander/small/t3-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c12.png b/public/media-src/commander/small/t3-c12.png deleted file mode 100644 index 50fcaa8e9..000000000 Binary files a/public/media-src/commander/small/t3-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c2.png b/public/media-src/commander/small/t3-c2.png deleted file mode 100755 index f1dbe321d..000000000 Binary files a/public/media-src/commander/small/t3-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c3.png b/public/media-src/commander/small/t3-c3.png deleted file mode 100755 index f915f19e8..000000000 Binary files a/public/media-src/commander/small/t3-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c4.png b/public/media-src/commander/small/t3-c4.png deleted file mode 100755 index 27d8982d0..000000000 Binary files a/public/media-src/commander/small/t3-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c5.png b/public/media-src/commander/small/t3-c5.png deleted file mode 100755 index 9364c7d43..000000000 Binary files a/public/media-src/commander/small/t3-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c6.png b/public/media-src/commander/small/t3-c6.png deleted file mode 100755 index d9f05b97e..000000000 Binary files a/public/media-src/commander/small/t3-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c7.png b/public/media-src/commander/small/t3-c7.png deleted file mode 100755 index e7ec52666..000000000 Binary files a/public/media-src/commander/small/t3-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c8.png b/public/media-src/commander/small/t3-c8.png deleted file mode 100644 index 47f4f85d1..000000000 Binary files a/public/media-src/commander/small/t3-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t3-c9.png b/public/media-src/commander/small/t3-c9.png deleted file mode 100644 index 3d659415a..000000000 Binary files a/public/media-src/commander/small/t3-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c1.png b/public/media-src/commander/small/t4-c1.png deleted file mode 100755 index 4e292a211..000000000 Binary files a/public/media-src/commander/small/t4-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c10.png b/public/media-src/commander/small/t4-c10.png deleted file mode 100644 index 29a7daf72..000000000 Binary files a/public/media-src/commander/small/t4-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c11.png b/public/media-src/commander/small/t4-c11.png deleted file mode 100644 index b89c07a5c..000000000 Binary files a/public/media-src/commander/small/t4-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c12.png b/public/media-src/commander/small/t4-c12.png deleted file mode 100644 index 4fb99df0e..000000000 Binary files a/public/media-src/commander/small/t4-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c2.png b/public/media-src/commander/small/t4-c2.png deleted file mode 100755 index 14c3bfbaf..000000000 Binary files a/public/media-src/commander/small/t4-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c3.png b/public/media-src/commander/small/t4-c3.png deleted file mode 100755 index d7d0e7ef9..000000000 Binary files a/public/media-src/commander/small/t4-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c4.png b/public/media-src/commander/small/t4-c4.png deleted file mode 100755 index bc426643f..000000000 Binary files a/public/media-src/commander/small/t4-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c5.png b/public/media-src/commander/small/t4-c5.png deleted file mode 100755 index f1c9cdc42..000000000 Binary files a/public/media-src/commander/small/t4-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c6.png b/public/media-src/commander/small/t4-c6.png deleted file mode 100755 index 88bb08d34..000000000 Binary files a/public/media-src/commander/small/t4-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c7.png b/public/media-src/commander/small/t4-c7.png deleted file mode 100755 index 2038090e9..000000000 Binary files a/public/media-src/commander/small/t4-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c8.png b/public/media-src/commander/small/t4-c8.png deleted file mode 100644 index 8087e4792..000000000 Binary files a/public/media-src/commander/small/t4-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t4-c9.png b/public/media-src/commander/small/t4-c9.png deleted file mode 100644 index e67e7ff29..000000000 Binary files a/public/media-src/commander/small/t4-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c1.png b/public/media-src/commander/small/t5-c1.png deleted file mode 100755 index 9db142bf3..000000000 Binary files a/public/media-src/commander/small/t5-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c10.png b/public/media-src/commander/small/t5-c10.png deleted file mode 100644 index 2f2ec74a2..000000000 Binary files a/public/media-src/commander/small/t5-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c11.png b/public/media-src/commander/small/t5-c11.png deleted file mode 100644 index 19145b739..000000000 Binary files a/public/media-src/commander/small/t5-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c12.png b/public/media-src/commander/small/t5-c12.png deleted file mode 100644 index 62ef9ec2e..000000000 Binary files a/public/media-src/commander/small/t5-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c2.png b/public/media-src/commander/small/t5-c2.png deleted file mode 100755 index 8552417aa..000000000 Binary files a/public/media-src/commander/small/t5-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c3.png b/public/media-src/commander/small/t5-c3.png deleted file mode 100755 index f68c0d171..000000000 Binary files a/public/media-src/commander/small/t5-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c4.png b/public/media-src/commander/small/t5-c4.png deleted file mode 100755 index 5b09b1106..000000000 Binary files a/public/media-src/commander/small/t5-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c5.png b/public/media-src/commander/small/t5-c5.png deleted file mode 100755 index 174f9a45c..000000000 Binary files a/public/media-src/commander/small/t5-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c6.png b/public/media-src/commander/small/t5-c6.png deleted file mode 100755 index e7d589b59..000000000 Binary files a/public/media-src/commander/small/t5-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c7.png b/public/media-src/commander/small/t5-c7.png deleted file mode 100755 index db925c6d2..000000000 Binary files a/public/media-src/commander/small/t5-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c8.png b/public/media-src/commander/small/t5-c8.png deleted file mode 100644 index a39f41c4c..000000000 Binary files a/public/media-src/commander/small/t5-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t5-c9.png b/public/media-src/commander/small/t5-c9.png deleted file mode 100644 index 2d1ee0d2c..000000000 Binary files a/public/media-src/commander/small/t5-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c1.png b/public/media-src/commander/small/t6-c1.png deleted file mode 100755 index 4c79c9442..000000000 Binary files a/public/media-src/commander/small/t6-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c10.png b/public/media-src/commander/small/t6-c10.png deleted file mode 100644 index 699dfde7b..000000000 Binary files a/public/media-src/commander/small/t6-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c11.png b/public/media-src/commander/small/t6-c11.png deleted file mode 100644 index 86509261a..000000000 Binary files a/public/media-src/commander/small/t6-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c12.png b/public/media-src/commander/small/t6-c12.png deleted file mode 100644 index 01d69cc7a..000000000 Binary files a/public/media-src/commander/small/t6-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c2.png b/public/media-src/commander/small/t6-c2.png deleted file mode 100755 index e9162bd8f..000000000 Binary files a/public/media-src/commander/small/t6-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c3.png b/public/media-src/commander/small/t6-c3.png deleted file mode 100755 index 3605dfe1e..000000000 Binary files a/public/media-src/commander/small/t6-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c4.png b/public/media-src/commander/small/t6-c4.png deleted file mode 100755 index 28df24c5a..000000000 Binary files a/public/media-src/commander/small/t6-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c5.png b/public/media-src/commander/small/t6-c5.png deleted file mode 100755 index bf7021841..000000000 Binary files a/public/media-src/commander/small/t6-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c6.png b/public/media-src/commander/small/t6-c6.png deleted file mode 100755 index f0fec74b7..000000000 Binary files a/public/media-src/commander/small/t6-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c7.png b/public/media-src/commander/small/t6-c7.png deleted file mode 100755 index bcebf0c5d..000000000 Binary files a/public/media-src/commander/small/t6-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c8.png b/public/media-src/commander/small/t6-c8.png deleted file mode 100644 index 10e856e04..000000000 Binary files a/public/media-src/commander/small/t6-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t6-c9.png b/public/media-src/commander/small/t6-c9.png deleted file mode 100644 index 84939485a..000000000 Binary files a/public/media-src/commander/small/t6-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c1.png b/public/media-src/commander/small/t7-c1.png deleted file mode 100755 index db85b716f..000000000 Binary files a/public/media-src/commander/small/t7-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c10.png b/public/media-src/commander/small/t7-c10.png deleted file mode 100644 index 0f6178cc4..000000000 Binary files a/public/media-src/commander/small/t7-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c11.png b/public/media-src/commander/small/t7-c11.png deleted file mode 100644 index c54e3e0c8..000000000 Binary files a/public/media-src/commander/small/t7-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c12.png b/public/media-src/commander/small/t7-c12.png deleted file mode 100644 index 2b962357e..000000000 Binary files a/public/media-src/commander/small/t7-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c2.png b/public/media-src/commander/small/t7-c2.png deleted file mode 100755 index c46b3c52f..000000000 Binary files a/public/media-src/commander/small/t7-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c3.png b/public/media-src/commander/small/t7-c3.png deleted file mode 100755 index 28b3054c5..000000000 Binary files a/public/media-src/commander/small/t7-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c4.png b/public/media-src/commander/small/t7-c4.png deleted file mode 100755 index a6dabc0c6..000000000 Binary files a/public/media-src/commander/small/t7-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c5.png b/public/media-src/commander/small/t7-c5.png deleted file mode 100755 index c5f2fb8a5..000000000 Binary files a/public/media-src/commander/small/t7-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c6.png b/public/media-src/commander/small/t7-c6.png deleted file mode 100755 index b9fd51b04..000000000 Binary files a/public/media-src/commander/small/t7-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c7.png b/public/media-src/commander/small/t7-c7.png deleted file mode 100755 index ee15ccf00..000000000 Binary files a/public/media-src/commander/small/t7-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c8.png b/public/media-src/commander/small/t7-c8.png deleted file mode 100644 index 783df83c2..000000000 Binary files a/public/media-src/commander/small/t7-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t7-c9.png b/public/media-src/commander/small/t7-c9.png deleted file mode 100644 index 2e568befc..000000000 Binary files a/public/media-src/commander/small/t7-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c1.png b/public/media-src/commander/small/t8-c1.png deleted file mode 100755 index c1136ba0b..000000000 Binary files a/public/media-src/commander/small/t8-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c10.png b/public/media-src/commander/small/t8-c10.png deleted file mode 100644 index 6022ff79d..000000000 Binary files a/public/media-src/commander/small/t8-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c11.png b/public/media-src/commander/small/t8-c11.png deleted file mode 100644 index 2504f26a3..000000000 Binary files a/public/media-src/commander/small/t8-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c12.png b/public/media-src/commander/small/t8-c12.png deleted file mode 100644 index 7d94e3d8c..000000000 Binary files a/public/media-src/commander/small/t8-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c2.png b/public/media-src/commander/small/t8-c2.png deleted file mode 100755 index 998f490db..000000000 Binary files a/public/media-src/commander/small/t8-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c3.png b/public/media-src/commander/small/t8-c3.png deleted file mode 100755 index 89d8c149d..000000000 Binary files a/public/media-src/commander/small/t8-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c4.png b/public/media-src/commander/small/t8-c4.png deleted file mode 100755 index c35a87903..000000000 Binary files a/public/media-src/commander/small/t8-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c5.png b/public/media-src/commander/small/t8-c5.png deleted file mode 100755 index 94d92d7bd..000000000 Binary files a/public/media-src/commander/small/t8-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c6.png b/public/media-src/commander/small/t8-c6.png deleted file mode 100755 index 6f27d874f..000000000 Binary files a/public/media-src/commander/small/t8-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c7.png b/public/media-src/commander/small/t8-c7.png deleted file mode 100755 index 9be489dc3..000000000 Binary files a/public/media-src/commander/small/t8-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c8.png b/public/media-src/commander/small/t8-c8.png deleted file mode 100644 index f032d5de7..000000000 Binary files a/public/media-src/commander/small/t8-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t8-c9.png b/public/media-src/commander/small/t8-c9.png deleted file mode 100644 index 7063feb7c..000000000 Binary files a/public/media-src/commander/small/t8-c9.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c1.png b/public/media-src/commander/small/t9-c1.png deleted file mode 100755 index c456549ef..000000000 Binary files a/public/media-src/commander/small/t9-c1.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c10.png b/public/media-src/commander/small/t9-c10.png deleted file mode 100644 index 041199bce..000000000 Binary files a/public/media-src/commander/small/t9-c10.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c11.png b/public/media-src/commander/small/t9-c11.png deleted file mode 100644 index 7e7869335..000000000 Binary files a/public/media-src/commander/small/t9-c11.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c12.png b/public/media-src/commander/small/t9-c12.png deleted file mode 100644 index 6a26ff444..000000000 Binary files a/public/media-src/commander/small/t9-c12.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c2.png b/public/media-src/commander/small/t9-c2.png deleted file mode 100755 index 0cf467195..000000000 Binary files a/public/media-src/commander/small/t9-c2.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c3.png b/public/media-src/commander/small/t9-c3.png deleted file mode 100755 index 16414cd83..000000000 Binary files a/public/media-src/commander/small/t9-c3.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c4.png b/public/media-src/commander/small/t9-c4.png deleted file mode 100755 index 9f453f410..000000000 Binary files a/public/media-src/commander/small/t9-c4.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c5.png b/public/media-src/commander/small/t9-c5.png deleted file mode 100755 index 56f4a2a85..000000000 Binary files a/public/media-src/commander/small/t9-c5.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c6.png b/public/media-src/commander/small/t9-c6.png deleted file mode 100755 index f14003780..000000000 Binary files a/public/media-src/commander/small/t9-c6.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c7.png b/public/media-src/commander/small/t9-c7.png deleted file mode 100755 index ca76b78a7..000000000 Binary files a/public/media-src/commander/small/t9-c7.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c8.png b/public/media-src/commander/small/t9-c8.png deleted file mode 100644 index 55ac191fd..000000000 Binary files a/public/media-src/commander/small/t9-c8.png and /dev/null differ diff --git a/public/media-src/commander/small/t9-c9.png b/public/media-src/commander/small/t9-c9.png deleted file mode 100644 index 206d28085..000000000 Binary files a/public/media-src/commander/small/t9-c9.png and /dev/null differ diff --git a/public/media-src/common/nav-base.png b/public/media-src/common/nav-base.png deleted file mode 100755 index 2a1ee4a81..000000000 Binary files a/public/media-src/common/nav-base.png and /dev/null differ diff --git a/public/media-src/common/nav-chat.png b/public/media-src/common/nav-chat.png deleted file mode 100644 index 0f5a551c0..000000000 Binary files a/public/media-src/common/nav-chat.png and /dev/null differ diff --git a/public/media-src/common/nav-embassy.png b/public/media-src/common/nav-embassy.png deleted file mode 100644 index c5ad07364..000000000 Binary files a/public/media-src/common/nav-embassy.png and /dev/null differ diff --git a/public/media-src/common/nav-faction.png b/public/media-src/common/nav-faction.png deleted file mode 100755 index 20961a031..000000000 Binary files a/public/media-src/common/nav-faction.png and /dev/null differ diff --git a/public/media-src/common/nav-financial.png b/public/media-src/common/nav-financial.png deleted file mode 100755 index a1a13c0b3..000000000 Binary files a/public/media-src/common/nav-financial.png and /dev/null differ diff --git a/public/media-src/common/nav-fleet-attack.png b/public/media-src/common/nav-fleet-attack.png deleted file mode 100755 index a5c7c09a6..000000000 Binary files a/public/media-src/common/nav-fleet-attack.png and /dev/null differ diff --git a/public/media-src/common/nav-fleet-defense.png b/public/media-src/common/nav-fleet-defense.png deleted file mode 100755 index 3b149326c..000000000 Binary files a/public/media-src/common/nav-fleet-defense.png and /dev/null differ diff --git a/public/media-src/common/nav-fleet.png b/public/media-src/common/nav-fleet.png deleted file mode 100755 index 28c5b92c7..000000000 Binary files a/public/media-src/common/nav-fleet.png and /dev/null differ diff --git a/public/media-src/common/nav-map.png b/public/media-src/common/nav-map.png deleted file mode 100755 index 9db08b839..000000000 Binary files a/public/media-src/common/nav-map.png and /dev/null differ diff --git a/public/media-src/common/nav-message.png b/public/media-src/common/nav-message.png deleted file mode 100755 index 1dfb53341..000000000 Binary files a/public/media-src/common/nav-message.png and /dev/null differ diff --git a/public/media-src/common/nav-notif.png b/public/media-src/common/nav-notif.png deleted file mode 100755 index bf78b6994..000000000 Binary files a/public/media-src/common/nav-notif.png and /dev/null differ diff --git a/public/media-src/common/nav-profil.png b/public/media-src/common/nav-profil.png deleted file mode 100755 index 78538a589..000000000 Binary files a/public/media-src/common/nav-profil.png and /dev/null differ diff --git a/public/media-src/common/nav-rank.png b/public/media-src/common/nav-rank.png deleted file mode 100755 index 38420b0da..000000000 Binary files a/public/media-src/common/nav-rank.png and /dev/null differ diff --git a/public/media-src/common/nav-techno.png b/public/media-src/common/nav-techno.png deleted file mode 100755 index ee9db3911..000000000 Binary files a/public/media-src/common/nav-techno.png and /dev/null differ diff --git a/public/media-src/common/next-base.png b/public/media-src/common/next-base.png deleted file mode 100644 index 7eb9c10bc..000000000 Binary files a/public/media-src/common/next-base.png and /dev/null differ diff --git a/public/media-src/common/tool-admin.png b/public/media-src/common/tool-admin.png deleted file mode 100755 index 2f3b151c5..000000000 Binary files a/public/media-src/common/tool-admin.png and /dev/null differ diff --git a/public/media-src/common/tool-bugtracker.png b/public/media-src/common/tool-bugtracker.png deleted file mode 100755 index cb8481b32..000000000 Binary files a/public/media-src/common/tool-bugtracker.png and /dev/null differ diff --git a/public/media-src/common/tool-exit.png b/public/media-src/common/tool-exit.png deleted file mode 100755 index da6c603d3..000000000 Binary files a/public/media-src/common/tool-exit.png and /dev/null differ diff --git a/public/media-src/common/tool-param.png b/public/media-src/common/tool-param.png deleted file mode 100755 index 2c92bd6b7..000000000 Binary files a/public/media-src/common/tool-param.png and /dev/null differ diff --git a/public/media-src/common/tool-roadmap.png b/public/media-src/common/tool-roadmap.png deleted file mode 100755 index 267fb4cba..000000000 Binary files a/public/media-src/common/tool-roadmap.png and /dev/null differ diff --git a/public/media-src/common/tool-star.png b/public/media-src/common/tool-star.png deleted file mode 100755 index fabceae72..000000000 Binary files a/public/media-src/common/tool-star.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus1-1.png b/public/media-src/faction/bonus/bonus1-1.png deleted file mode 100755 index b4a9cd57c..000000000 Binary files a/public/media-src/faction/bonus/bonus1-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus1-2.png b/public/media-src/faction/bonus/bonus1-2.png deleted file mode 100755 index 1ff81d3b4..000000000 Binary files a/public/media-src/faction/bonus/bonus1-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus1-3.png b/public/media-src/faction/bonus/bonus1-3.png deleted file mode 100755 index 5f5e5f511..000000000 Binary files a/public/media-src/faction/bonus/bonus1-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus2-1.png b/public/media-src/faction/bonus/bonus2-1.png deleted file mode 100755 index b70b5cefb..000000000 Binary files a/public/media-src/faction/bonus/bonus2-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus2-2.png b/public/media-src/faction/bonus/bonus2-2.png deleted file mode 100755 index 1199ecd30..000000000 Binary files a/public/media-src/faction/bonus/bonus2-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus2-3.png b/public/media-src/faction/bonus/bonus2-3.png deleted file mode 100755 index b11238590..000000000 Binary files a/public/media-src/faction/bonus/bonus2-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus3-1.png b/public/media-src/faction/bonus/bonus3-1.png deleted file mode 100755 index d907efa8a..000000000 Binary files a/public/media-src/faction/bonus/bonus3-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus3-2.png b/public/media-src/faction/bonus/bonus3-2.png deleted file mode 100755 index 0077814cb..000000000 Binary files a/public/media-src/faction/bonus/bonus3-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus3-3.png b/public/media-src/faction/bonus/bonus3-3.png deleted file mode 100755 index 50484bf61..000000000 Binary files a/public/media-src/faction/bonus/bonus3-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus4-1.png b/public/media-src/faction/bonus/bonus4-1.png deleted file mode 100755 index 167172778..000000000 Binary files a/public/media-src/faction/bonus/bonus4-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus4-2.png b/public/media-src/faction/bonus/bonus4-2.png deleted file mode 100755 index 61c589443..000000000 Binary files a/public/media-src/faction/bonus/bonus4-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus4-3.png b/public/media-src/faction/bonus/bonus4-3.png deleted file mode 100755 index f26fce73c..000000000 Binary files a/public/media-src/faction/bonus/bonus4-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus4-4.png b/public/media-src/faction/bonus/bonus4-4.png deleted file mode 100755 index ec7dd993b..000000000 Binary files a/public/media-src/faction/bonus/bonus4-4.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus5-1.png b/public/media-src/faction/bonus/bonus5-1.png deleted file mode 100755 index a1e6e6f0b..000000000 Binary files a/public/media-src/faction/bonus/bonus5-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus5-2.png b/public/media-src/faction/bonus/bonus5-2.png deleted file mode 100755 index d8bc7ee91..000000000 Binary files a/public/media-src/faction/bonus/bonus5-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus5-3.png b/public/media-src/faction/bonus/bonus5-3.png deleted file mode 100755 index c5300c283..000000000 Binary files a/public/media-src/faction/bonus/bonus5-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus6-1.png b/public/media-src/faction/bonus/bonus6-1.png deleted file mode 100755 index 9d7492f7a..000000000 Binary files a/public/media-src/faction/bonus/bonus6-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus6-2.png b/public/media-src/faction/bonus/bonus6-2.png deleted file mode 100755 index 389e5c6fe..000000000 Binary files a/public/media-src/faction/bonus/bonus6-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus6-3.png b/public/media-src/faction/bonus/bonus6-3.png deleted file mode 100755 index 0adbb0a26..000000000 Binary files a/public/media-src/faction/bonus/bonus6-3.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus7-1.png b/public/media-src/faction/bonus/bonus7-1.png deleted file mode 100755 index 167172778..000000000 Binary files a/public/media-src/faction/bonus/bonus7-1.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus7-2.png b/public/media-src/faction/bonus/bonus7-2.png deleted file mode 100755 index f08e7c57e..000000000 Binary files a/public/media-src/faction/bonus/bonus7-2.png and /dev/null differ diff --git a/public/media-src/faction/bonus/bonus7-3.png b/public/media-src/faction/bonus/bonus7-3.png deleted file mode 100755 index fd59782b8..000000000 Binary files a/public/media-src/faction/bonus/bonus7-3.png and /dev/null differ diff --git a/public/media-src/faction/data/diplomacy.png b/public/media-src/faction/data/diplomacy.png deleted file mode 100644 index 19b64743d..000000000 Binary files a/public/media-src/faction/data/diplomacy.png and /dev/null differ diff --git a/public/media-src/faction/data/law.png b/public/media-src/faction/data/law.png deleted file mode 100644 index 8a9fce24c..000000000 Binary files a/public/media-src/faction/data/law.png and /dev/null differ diff --git a/public/media-src/faction/data/tactical.png b/public/media-src/faction/data/tactical.png deleted file mode 100644 index 50f884811..000000000 Binary files a/public/media-src/faction/data/tactical.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-1.png b/public/media-src/faction/flag/flag-1.png deleted file mode 100755 index 0974f282a..000000000 Binary files a/public/media-src/faction/flag/flag-1.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-10.png b/public/media-src/faction/flag/flag-10.png deleted file mode 100644 index 4a8290f86..000000000 Binary files a/public/media-src/faction/flag/flag-10.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-11.png b/public/media-src/faction/flag/flag-11.png deleted file mode 100644 index 9c8b930da..000000000 Binary files a/public/media-src/faction/flag/flag-11.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-12.png b/public/media-src/faction/flag/flag-12.png deleted file mode 100644 index c3ce3c6b1..000000000 Binary files a/public/media-src/faction/flag/flag-12.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-2.png b/public/media-src/faction/flag/flag-2.png deleted file mode 100755 index becbf8ce8..000000000 Binary files a/public/media-src/faction/flag/flag-2.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-3.png b/public/media-src/faction/flag/flag-3.png deleted file mode 100755 index 593b01f56..000000000 Binary files a/public/media-src/faction/flag/flag-3.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-4.png b/public/media-src/faction/flag/flag-4.png deleted file mode 100755 index 605b1d7af..000000000 Binary files a/public/media-src/faction/flag/flag-4.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-5.png b/public/media-src/faction/flag/flag-5.png deleted file mode 100755 index 3bdfe98cc..000000000 Binary files a/public/media-src/faction/flag/flag-5.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-6.png b/public/media-src/faction/flag/flag-6.png deleted file mode 100755 index 431bb29b9..000000000 Binary files a/public/media-src/faction/flag/flag-6.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-7.png b/public/media-src/faction/flag/flag-7.png deleted file mode 100755 index 57d043bf3..000000000 Binary files a/public/media-src/faction/flag/flag-7.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-8.png b/public/media-src/faction/flag/flag-8.png deleted file mode 100644 index 5dcd8346a..000000000 Binary files a/public/media-src/faction/flag/flag-8.png and /dev/null differ diff --git a/public/media-src/faction/flag/flag-9.png b/public/media-src/faction/flag/flag-9.png deleted file mode 100644 index 1fd1a7720..000000000 Binary files a/public/media-src/faction/flag/flag-9.png and /dev/null differ diff --git a/public/media-src/faction/law/common.png b/public/media-src/faction/law/common.png deleted file mode 100644 index f7bec5d48..000000000 Binary files a/public/media-src/faction/law/common.png and /dev/null differ diff --git a/public/media-src/faction/nav/data.png b/public/media-src/faction/nav/data.png deleted file mode 100644 index f8ef540fb..000000000 Binary files a/public/media-src/faction/nav/data.png and /dev/null differ diff --git a/public/media-src/faction/nav/election.png b/public/media-src/faction/nav/election.png deleted file mode 100755 index a9007191b..000000000 Binary files a/public/media-src/faction/nav/election.png and /dev/null differ diff --git a/public/media-src/faction/nav/forum.png b/public/media-src/faction/nav/forum.png deleted file mode 100755 index cb17b1213..000000000 Binary files a/public/media-src/faction/nav/forum.png and /dev/null differ diff --git a/public/media-src/faction/nav/government.png b/public/media-src/faction/nav/government.png deleted file mode 100755 index 94e60d9c6..000000000 Binary files a/public/media-src/faction/nav/government.png and /dev/null differ diff --git a/public/media-src/faction/nav/overview.png b/public/media-src/faction/nav/overview.png deleted file mode 100644 index 6a235bd0d..000000000 Binary files a/public/media-src/faction/nav/overview.png and /dev/null differ diff --git a/public/media-src/faction/nav/register.png b/public/media-src/faction/nav/register.png deleted file mode 100755 index 81a68950f..000000000 Binary files a/public/media-src/faction/nav/register.png and /dev/null differ diff --git a/public/media-src/favicon/color1.png b/public/media-src/favicon/color1.png deleted file mode 100755 index f188e1d16..000000000 Binary files a/public/media-src/favicon/color1.png and /dev/null differ diff --git a/public/media-src/favicon/color10.png b/public/media-src/favicon/color10.png deleted file mode 100644 index 4dd8cf45b..000000000 Binary files a/public/media-src/favicon/color10.png and /dev/null differ diff --git a/public/media-src/favicon/color11.png b/public/media-src/favicon/color11.png deleted file mode 100644 index f3105114a..000000000 Binary files a/public/media-src/favicon/color11.png and /dev/null differ diff --git a/public/media-src/favicon/color12.png b/public/media-src/favicon/color12.png deleted file mode 100644 index 31980478d..000000000 Binary files a/public/media-src/favicon/color12.png and /dev/null differ diff --git a/public/media-src/favicon/color2.png b/public/media-src/favicon/color2.png deleted file mode 100755 index 544c28811..000000000 Binary files a/public/media-src/favicon/color2.png and /dev/null differ diff --git a/public/media-src/favicon/color3.png b/public/media-src/favicon/color3.png deleted file mode 100755 index 31980478d..000000000 Binary files a/public/media-src/favicon/color3.png and /dev/null differ diff --git a/public/media-src/favicon/color4.png b/public/media-src/favicon/color4.png deleted file mode 100755 index 338edd97b..000000000 Binary files a/public/media-src/favicon/color4.png and /dev/null differ diff --git a/public/media-src/favicon/color5.png b/public/media-src/favicon/color5.png deleted file mode 100755 index dce3ca7d4..000000000 Binary files a/public/media-src/favicon/color5.png and /dev/null differ diff --git a/public/media-src/favicon/color6.png b/public/media-src/favicon/color6.png deleted file mode 100755 index f46a393b9..000000000 Binary files a/public/media-src/favicon/color6.png and /dev/null differ diff --git a/public/media-src/favicon/color7.png b/public/media-src/favicon/color7.png deleted file mode 100755 index 5441450e4..000000000 Binary files a/public/media-src/favicon/color7.png and /dev/null differ diff --git a/public/media-src/favicon/color8.png b/public/media-src/favicon/color8.png deleted file mode 100644 index 04b2eade0..000000000 Binary files a/public/media-src/favicon/color8.png and /dev/null differ diff --git a/public/media-src/favicon/color9.png b/public/media-src/favicon/color9.png deleted file mode 100644 index dce3ca7d4..000000000 Binary files a/public/media-src/favicon/color9.png and /dev/null differ diff --git a/public/media-src/financial/commander.png b/public/media-src/financial/commander.png deleted file mode 100755 index 83d19e072..000000000 Binary files a/public/media-src/financial/commander.png and /dev/null differ diff --git a/public/media-src/financial/commercial-route.png b/public/media-src/financial/commercial-route.png deleted file mode 100755 index 1c52a0895..000000000 Binary files a/public/media-src/financial/commercial-route.png and /dev/null differ diff --git a/public/media-src/financial/fleet.png b/public/media-src/financial/fleet.png deleted file mode 100644 index e203b6be4..000000000 Binary files a/public/media-src/financial/fleet.png and /dev/null differ diff --git a/public/media-src/financial/invest.png b/public/media-src/financial/invest.png deleted file mode 100755 index 04c454f08..000000000 Binary files a/public/media-src/financial/invest.png and /dev/null differ diff --git a/public/media-src/financial/send-credit.png b/public/media-src/financial/send-credit.png deleted file mode 100755 index b3167ed3d..000000000 Binary files a/public/media-src/financial/send-credit.png and /dev/null differ diff --git a/public/media-src/financial/taxin.png b/public/media-src/financial/taxin.png deleted file mode 100755 index acabbada8..000000000 Binary files a/public/media-src/financial/taxin.png and /dev/null differ diff --git a/public/media-src/financial/taxout.png b/public/media-src/financial/taxout.png deleted file mode 100755 index e3f5c4fe4..000000000 Binary files a/public/media-src/financial/taxout.png and /dev/null differ diff --git a/public/media-src/fleet/anchor.png b/public/media-src/fleet/anchor.png deleted file mode 100755 index 9b5fc5d21..000000000 Binary files a/public/media-src/fleet/anchor.png and /dev/null differ diff --git a/public/media-src/fleet/archive.png b/public/media-src/fleet/archive.png deleted file mode 100755 index 96080b45a..000000000 Binary files a/public/media-src/fleet/archive.png and /dev/null differ diff --git a/public/media-src/fleet/armies.png b/public/media-src/fleet/armies.png deleted file mode 100644 index b3ba2da41..000000000 Binary files a/public/media-src/fleet/armies.png and /dev/null differ diff --git a/public/media-src/fleet/back.png b/public/media-src/fleet/back.png deleted file mode 100755 index 129b52c0c..000000000 Binary files a/public/media-src/fleet/back.png and /dev/null differ diff --git a/public/media-src/fleet/commanders.png b/public/media-src/fleet/commanders.png deleted file mode 100755 index 83d19e072..000000000 Binary files a/public/media-src/fleet/commanders.png and /dev/null differ diff --git a/public/media-src/fleet/general-quarter.png b/public/media-src/fleet/general-quarter.png deleted file mode 100755 index 03e17868f..000000000 Binary files a/public/media-src/fleet/general-quarter.png and /dev/null differ diff --git a/public/media-src/fleet/loot.png b/public/media-src/fleet/loot.png deleted file mode 100755 index a8c53bdd5..000000000 Binary files a/public/media-src/fleet/loot.png and /dev/null differ diff --git a/public/media-src/fleet/memorial.png b/public/media-src/fleet/memorial.png deleted file mode 100755 index d84018a30..000000000 Binary files a/public/media-src/fleet/memorial.png and /dev/null differ diff --git a/public/media-src/fleet/movement.png b/public/media-src/fleet/movement.png deleted file mode 100755 index bac68d8b1..000000000 Binary files a/public/media-src/fleet/movement.png and /dev/null differ diff --git a/public/media-src/fleet/spy.png b/public/media-src/fleet/spy.png deleted file mode 100755 index 742e970bc..000000000 Binary files a/public/media-src/fleet/spy.png and /dev/null differ diff --git a/public/media-src/map/action/anchor.png b/public/media-src/map/action/anchor.png deleted file mode 100755 index ebf54125c..000000000 Binary files a/public/media-src/map/action/anchor.png and /dev/null differ diff --git a/public/media-src/map/action/back.png b/public/media-src/map/action/back.png deleted file mode 100755 index 8d0065d5a..000000000 Binary files a/public/media-src/map/action/back.png and /dev/null differ diff --git a/public/media-src/map/action/colo.png b/public/media-src/map/action/colo.png deleted file mode 100755 index fc7e3109f..000000000 Binary files a/public/media-src/map/action/colo.png and /dev/null differ diff --git a/public/media-src/map/action/loot.png b/public/media-src/map/action/loot.png deleted file mode 100755 index a01f6c2a7..000000000 Binary files a/public/media-src/map/action/loot.png and /dev/null differ diff --git a/public/media-src/map/action/move.png b/public/media-src/map/action/move.png deleted file mode 100755 index f36f7730c..000000000 Binary files a/public/media-src/map/action/move.png and /dev/null differ diff --git a/public/media-src/map/action/ms.png b/public/media-src/map/action/ms.png deleted file mode 100755 index 474145d2b..000000000 Binary files a/public/media-src/map/action/ms.png and /dev/null differ diff --git a/public/media-src/map/action/rc.png b/public/media-src/map/action/rc.png deleted file mode 100755 index 1094cd6ed..000000000 Binary files a/public/media-src/map/action/rc.png and /dev/null differ diff --git a/public/media-src/map/action/shield-colo.png b/public/media-src/map/action/shield-colo.png deleted file mode 100755 index 1770d2c0f..000000000 Binary files a/public/media-src/map/action/shield-colo.png and /dev/null differ diff --git a/public/media-src/map/action/shield.png b/public/media-src/map/action/shield.png deleted file mode 100755 index 6adc4982a..000000000 Binary files a/public/media-src/map/action/shield.png and /dev/null differ diff --git a/public/media-src/map/action/spy.png b/public/media-src/map/action/spy.png deleted file mode 100755 index 742e970bc..000000000 Binary files a/public/media-src/map/action/spy.png and /dev/null differ diff --git a/public/media-src/map/fleet/army-away.png b/public/media-src/map/fleet/army-away.png deleted file mode 100755 index 0454ee42e..000000000 Binary files a/public/media-src/map/fleet/army-away.png and /dev/null differ diff --git a/public/media-src/map/fleet/army-empty.png b/public/media-src/map/fleet/army-empty.png deleted file mode 100755 index 22bca1bb5..000000000 Binary files a/public/media-src/map/fleet/army-empty.png and /dev/null differ diff --git a/public/media-src/map/fleet/army-unknow.png b/public/media-src/map/fleet/army-unknow.png deleted file mode 100755 index 3eb104940..000000000 Binary files a/public/media-src/map/fleet/army-unknow.png and /dev/null differ diff --git a/public/media-src/map/fleet/army.png b/public/media-src/map/fleet/army.png deleted file mode 100755 index 5cb8b5787..000000000 Binary files a/public/media-src/map/fleet/army.png and /dev/null differ diff --git a/public/media-src/map/fleet/emtpy.png b/public/media-src/map/fleet/emtpy.png deleted file mode 100755 index dabce3da9..000000000 Binary files a/public/media-src/map/fleet/emtpy.png and /dev/null differ diff --git a/public/media-src/map/fleet/fleet1.png b/public/media-src/map/fleet/fleet1.png deleted file mode 100755 index 703d5a71c..000000000 Binary files a/public/media-src/map/fleet/fleet1.png and /dev/null differ diff --git a/public/media-src/map/fleet/fleet2.png b/public/media-src/map/fleet/fleet2.png deleted file mode 100755 index d62d7f4ca..000000000 Binary files a/public/media-src/map/fleet/fleet2.png and /dev/null differ diff --git a/public/media-src/map/fleet/fleet3.png b/public/media-src/map/fleet/fleet3.png deleted file mode 100755 index 4e168b1d7..000000000 Binary files a/public/media-src/map/fleet/fleet3.png and /dev/null differ diff --git a/public/media-src/map/fleet/full.png b/public/media-src/map/fleet/full.png deleted file mode 100755 index 4e168b1d7..000000000 Binary files a/public/media-src/map/fleet/full.png and /dev/null differ diff --git a/public/media-src/map/fleet/ship-reversed.png b/public/media-src/map/fleet/ship-reversed.png deleted file mode 100755 index a7dc3ebca..000000000 Binary files a/public/media-src/map/fleet/ship-reversed.png and /dev/null differ diff --git a/public/media-src/map/fleet/ship.png b/public/media-src/map/fleet/ship.png deleted file mode 100755 index a30f812d8..000000000 Binary files a/public/media-src/map/fleet/ship.png and /dev/null differ diff --git a/public/media-src/map/option/info.png b/public/media-src/map/option/info.png deleted file mode 100755 index a0521496a..000000000 Binary files a/public/media-src/map/option/info.png and /dev/null differ diff --git a/public/media-src/map/option/market.png b/public/media-src/map/option/market.png deleted file mode 100755 index f41048ba4..000000000 Binary files a/public/media-src/map/option/market.png and /dev/null differ diff --git a/public/media-src/map/option/minimap.png b/public/media-src/map/option/minimap.png deleted file mode 100755 index 3d9eaecc4..000000000 Binary files a/public/media-src/map/option/minimap.png and /dev/null differ diff --git a/public/media-src/map/option/radio.png b/public/media-src/map/option/radio.png deleted file mode 100755 index 2d044e9ff..000000000 Binary files a/public/media-src/map/option/radio.png and /dev/null differ diff --git a/public/media-src/map/option/rank.png b/public/media-src/map/option/rank.png deleted file mode 100755 index 7548a79fe..000000000 Binary files a/public/media-src/map/option/rank.png and /dev/null differ diff --git a/public/media-src/map/option/stats.png b/public/media-src/map/option/stats.png deleted file mode 100755 index 63fdea194..000000000 Binary files a/public/media-src/map/option/stats.png and /dev/null differ diff --git a/public/media-src/map/place/place1-1.png b/public/media-src/map/place/place1-1.png deleted file mode 100755 index 830da4330..000000000 Binary files a/public/media-src/map/place/place1-1.png and /dev/null differ diff --git a/public/media-src/map/place/place1-2.png b/public/media-src/map/place/place1-2.png deleted file mode 100755 index 000d8e26e..000000000 Binary files a/public/media-src/map/place/place1-2.png and /dev/null differ diff --git a/public/media-src/map/place/place1-3.png b/public/media-src/map/place/place1-3.png deleted file mode 100755 index ec5db39de..000000000 Binary files a/public/media-src/map/place/place1-3.png and /dev/null differ diff --git a/public/media-src/map/place/place2-1.png b/public/media-src/map/place/place2-1.png deleted file mode 100644 index 7dadea232..000000000 Binary files a/public/media-src/map/place/place2-1.png and /dev/null differ diff --git a/public/media-src/map/place/place2-2.png b/public/media-src/map/place/place2-2.png deleted file mode 100644 index 7dadea232..000000000 Binary files a/public/media-src/map/place/place2-2.png and /dev/null differ diff --git a/public/media-src/map/place/place2-3.png b/public/media-src/map/place/place2-3.png deleted file mode 100644 index 7dadea232..000000000 Binary files a/public/media-src/map/place/place2-3.png and /dev/null differ diff --git a/public/media-src/map/place/place3-1.png b/public/media-src/map/place/place3-1.png deleted file mode 100644 index e262e9df5..000000000 Binary files a/public/media-src/map/place/place3-1.png and /dev/null differ diff --git a/public/media-src/map/place/place3-2.png b/public/media-src/map/place/place3-2.png deleted file mode 100644 index 2ea93a787..000000000 Binary files a/public/media-src/map/place/place3-2.png and /dev/null differ diff --git a/public/media-src/map/place/place3-3.png b/public/media-src/map/place/place3-3.png deleted file mode 100644 index 291fde332..000000000 Binary files a/public/media-src/map/place/place3-3.png and /dev/null differ diff --git a/public/media-src/map/place/place4-1.png b/public/media-src/map/place/place4-1.png deleted file mode 100644 index cc821c852..000000000 Binary files a/public/media-src/map/place/place4-1.png and /dev/null differ diff --git a/public/media-src/map/place/place4-2.png b/public/media-src/map/place/place4-2.png deleted file mode 100644 index d20dc72c5..000000000 Binary files a/public/media-src/map/place/place4-2.png and /dev/null differ diff --git a/public/media-src/map/place/place4-3.png b/public/media-src/map/place/place4-3.png deleted file mode 100644 index ac4cab4a9..000000000 Binary files a/public/media-src/map/place/place4-3.png and /dev/null differ diff --git a/public/media-src/map/place/place5-1.png b/public/media-src/map/place/place5-1.png deleted file mode 100644 index b83ade153..000000000 Binary files a/public/media-src/map/place/place5-1.png and /dev/null differ diff --git a/public/media-src/map/place/place5-2.png b/public/media-src/map/place/place5-2.png deleted file mode 100644 index ab372b7c2..000000000 Binary files a/public/media-src/map/place/place5-2.png and /dev/null differ diff --git a/public/media-src/map/place/place5-3.png b/public/media-src/map/place/place5-3.png deleted file mode 100644 index 26bcd4af0..000000000 Binary files a/public/media-src/map/place/place5-3.png and /dev/null differ diff --git a/public/media-src/map/place/place6-1.png b/public/media-src/map/place/place6-1.png deleted file mode 100644 index 81140abb7..000000000 Binary files a/public/media-src/map/place/place6-1.png and /dev/null differ diff --git a/public/media-src/map/place/place6-2.png b/public/media-src/map/place/place6-2.png deleted file mode 100644 index 81140abb7..000000000 Binary files a/public/media-src/map/place/place6-2.png and /dev/null differ diff --git a/public/media-src/map/place/place6-3.png b/public/media-src/map/place/place6-3.png deleted file mode 100644 index 81140abb7..000000000 Binary files a/public/media-src/map/place/place6-3.png and /dev/null differ diff --git a/public/media-src/map/spy/last-spy.png b/public/media-src/map/spy/last-spy.png deleted file mode 100755 index 060e0670a..000000000 Binary files a/public/media-src/map/spy/last-spy.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c0.png b/public/media-src/map/systems/t1c0.png deleted file mode 100755 index e07f5e039..000000000 Binary files a/public/media-src/map/systems/t1c0.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c1.png b/public/media-src/map/systems/t1c1.png deleted file mode 100755 index ea0bd0669..000000000 Binary files a/public/media-src/map/systems/t1c1.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c10.png b/public/media-src/map/systems/t1c10.png deleted file mode 100644 index 839ddb9cb..000000000 Binary files a/public/media-src/map/systems/t1c10.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c11.png b/public/media-src/map/systems/t1c11.png deleted file mode 100644 index 0974f00f4..000000000 Binary files a/public/media-src/map/systems/t1c11.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c12.png b/public/media-src/map/systems/t1c12.png deleted file mode 100644 index 931b7c56a..000000000 Binary files a/public/media-src/map/systems/t1c12.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c2.png b/public/media-src/map/systems/t1c2.png deleted file mode 100755 index 448c81e87..000000000 Binary files a/public/media-src/map/systems/t1c2.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c3.png b/public/media-src/map/systems/t1c3.png deleted file mode 100755 index 931b7c56a..000000000 Binary files a/public/media-src/map/systems/t1c3.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c4.png b/public/media-src/map/systems/t1c4.png deleted file mode 100755 index d91198b81..000000000 Binary files a/public/media-src/map/systems/t1c4.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c5.png b/public/media-src/map/systems/t1c5.png deleted file mode 100755 index 80291c057..000000000 Binary files a/public/media-src/map/systems/t1c5.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c6.png b/public/media-src/map/systems/t1c6.png deleted file mode 100755 index cdc3626be..000000000 Binary files a/public/media-src/map/systems/t1c6.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c7.png b/public/media-src/map/systems/t1c7.png deleted file mode 100755 index 75ab4a1ed..000000000 Binary files a/public/media-src/map/systems/t1c7.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c8.png b/public/media-src/map/systems/t1c8.png deleted file mode 100644 index 5860123fc..000000000 Binary files a/public/media-src/map/systems/t1c8.png and /dev/null differ diff --git a/public/media-src/map/systems/t1c9.png b/public/media-src/map/systems/t1c9.png deleted file mode 100644 index 80291c057..000000000 Binary files a/public/media-src/map/systems/t1c9.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c0.png b/public/media-src/map/systems/t2c0.png deleted file mode 100755 index 55db6f6dc..000000000 Binary files a/public/media-src/map/systems/t2c0.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c1.png b/public/media-src/map/systems/t2c1.png deleted file mode 100755 index dfe06d2a9..000000000 Binary files a/public/media-src/map/systems/t2c1.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c10.png b/public/media-src/map/systems/t2c10.png deleted file mode 100644 index c1570e1d8..000000000 Binary files a/public/media-src/map/systems/t2c10.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c11.png b/public/media-src/map/systems/t2c11.png deleted file mode 100644 index cf93f855f..000000000 Binary files a/public/media-src/map/systems/t2c11.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c12.png b/public/media-src/map/systems/t2c12.png deleted file mode 100644 index 9abbc238e..000000000 Binary files a/public/media-src/map/systems/t2c12.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c2.png b/public/media-src/map/systems/t2c2.png deleted file mode 100755 index 985a01979..000000000 Binary files a/public/media-src/map/systems/t2c2.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c3.png b/public/media-src/map/systems/t2c3.png deleted file mode 100755 index 9abbc238e..000000000 Binary files a/public/media-src/map/systems/t2c3.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c4.png b/public/media-src/map/systems/t2c4.png deleted file mode 100755 index bf6cf07f1..000000000 Binary files a/public/media-src/map/systems/t2c4.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c5.png b/public/media-src/map/systems/t2c5.png deleted file mode 100755 index 3a55bd72f..000000000 Binary files a/public/media-src/map/systems/t2c5.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c6.png b/public/media-src/map/systems/t2c6.png deleted file mode 100755 index fcfbbcbc7..000000000 Binary files a/public/media-src/map/systems/t2c6.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c7.png b/public/media-src/map/systems/t2c7.png deleted file mode 100755 index 7303c0d08..000000000 Binary files a/public/media-src/map/systems/t2c7.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c8.png b/public/media-src/map/systems/t2c8.png deleted file mode 100644 index f1d64806e..000000000 Binary files a/public/media-src/map/systems/t2c8.png and /dev/null differ diff --git a/public/media-src/map/systems/t2c9.png b/public/media-src/map/systems/t2c9.png deleted file mode 100644 index 3a55bd72f..000000000 Binary files a/public/media-src/map/systems/t2c9.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c0.png b/public/media-src/map/systems/t3c0.png deleted file mode 100755 index a123ab26b..000000000 Binary files a/public/media-src/map/systems/t3c0.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c1.png b/public/media-src/map/systems/t3c1.png deleted file mode 100755 index 301527778..000000000 Binary files a/public/media-src/map/systems/t3c1.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c10.png b/public/media-src/map/systems/t3c10.png deleted file mode 100644 index 5c6d25e3e..000000000 Binary files a/public/media-src/map/systems/t3c10.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c11.png b/public/media-src/map/systems/t3c11.png deleted file mode 100644 index 63e1e2f18..000000000 Binary files a/public/media-src/map/systems/t3c11.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c12.png b/public/media-src/map/systems/t3c12.png deleted file mode 100644 index c925b2723..000000000 Binary files a/public/media-src/map/systems/t3c12.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c2.png b/public/media-src/map/systems/t3c2.png deleted file mode 100755 index c877cbd71..000000000 Binary files a/public/media-src/map/systems/t3c2.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c3.png b/public/media-src/map/systems/t3c3.png deleted file mode 100755 index c925b2723..000000000 Binary files a/public/media-src/map/systems/t3c3.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c4.png b/public/media-src/map/systems/t3c4.png deleted file mode 100755 index 90384b5a5..000000000 Binary files a/public/media-src/map/systems/t3c4.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c5.png b/public/media-src/map/systems/t3c5.png deleted file mode 100755 index fb9347eca..000000000 Binary files a/public/media-src/map/systems/t3c5.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c6.png b/public/media-src/map/systems/t3c6.png deleted file mode 100755 index 3931154aa..000000000 Binary files a/public/media-src/map/systems/t3c6.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c7.png b/public/media-src/map/systems/t3c7.png deleted file mode 100755 index 87a7fa69e..000000000 Binary files a/public/media-src/map/systems/t3c7.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c8.png b/public/media-src/map/systems/t3c8.png deleted file mode 100644 index 29beb3f62..000000000 Binary files a/public/media-src/map/systems/t3c8.png and /dev/null differ diff --git a/public/media-src/map/systems/t3c9.png b/public/media-src/map/systems/t3c9.png deleted file mode 100644 index fb9347eca..000000000 Binary files a/public/media-src/map/systems/t3c9.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c0.png b/public/media-src/map/systems/t4c0.png deleted file mode 100755 index 880ce9c8c..000000000 Binary files a/public/media-src/map/systems/t4c0.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c1.png b/public/media-src/map/systems/t4c1.png deleted file mode 100755 index 03f9c0ec8..000000000 Binary files a/public/media-src/map/systems/t4c1.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c10.png b/public/media-src/map/systems/t4c10.png deleted file mode 100644 index 68431cd27..000000000 Binary files a/public/media-src/map/systems/t4c10.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c11.png b/public/media-src/map/systems/t4c11.png deleted file mode 100644 index a9ce16f56..000000000 Binary files a/public/media-src/map/systems/t4c11.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c12.png b/public/media-src/map/systems/t4c12.png deleted file mode 100644 index 9e33b7359..000000000 Binary files a/public/media-src/map/systems/t4c12.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c2.png b/public/media-src/map/systems/t4c2.png deleted file mode 100755 index 1259b1078..000000000 Binary files a/public/media-src/map/systems/t4c2.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c3.png b/public/media-src/map/systems/t4c3.png deleted file mode 100755 index 9e33b7359..000000000 Binary files a/public/media-src/map/systems/t4c3.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c4.png b/public/media-src/map/systems/t4c4.png deleted file mode 100755 index ac9afd256..000000000 Binary files a/public/media-src/map/systems/t4c4.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c5.png b/public/media-src/map/systems/t4c5.png deleted file mode 100755 index 77830dd1b..000000000 Binary files a/public/media-src/map/systems/t4c5.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c6.png b/public/media-src/map/systems/t4c6.png deleted file mode 100755 index 959a75d47..000000000 Binary files a/public/media-src/map/systems/t4c6.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c7.png b/public/media-src/map/systems/t4c7.png deleted file mode 100755 index 4b5b1fc2f..000000000 Binary files a/public/media-src/map/systems/t4c7.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c8.png b/public/media-src/map/systems/t4c8.png deleted file mode 100644 index 6caa81af0..000000000 Binary files a/public/media-src/map/systems/t4c8.png and /dev/null differ diff --git a/public/media-src/map/systems/t4c9.png b/public/media-src/map/systems/t4c9.png deleted file mode 100644 index 77830dd1b..000000000 Binary files a/public/media-src/map/systems/t4c9.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c0.png b/public/media-src/map/systems/t5c0.png deleted file mode 100755 index 3a7f7934d..000000000 Binary files a/public/media-src/map/systems/t5c0.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c1.png b/public/media-src/map/systems/t5c1.png deleted file mode 100755 index 09215d585..000000000 Binary files a/public/media-src/map/systems/t5c1.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c10.png b/public/media-src/map/systems/t5c10.png deleted file mode 100644 index 61ea425e4..000000000 Binary files a/public/media-src/map/systems/t5c10.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c11.png b/public/media-src/map/systems/t5c11.png deleted file mode 100644 index c2bd19e48..000000000 Binary files a/public/media-src/map/systems/t5c11.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c12.png b/public/media-src/map/systems/t5c12.png deleted file mode 100644 index 4b5971011..000000000 Binary files a/public/media-src/map/systems/t5c12.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c2.png b/public/media-src/map/systems/t5c2.png deleted file mode 100755 index 0987815e9..000000000 Binary files a/public/media-src/map/systems/t5c2.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c3.png b/public/media-src/map/systems/t5c3.png deleted file mode 100755 index 4b5971011..000000000 Binary files a/public/media-src/map/systems/t5c3.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c4.png b/public/media-src/map/systems/t5c4.png deleted file mode 100755 index eeb825c86..000000000 Binary files a/public/media-src/map/systems/t5c4.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c5.png b/public/media-src/map/systems/t5c5.png deleted file mode 100755 index 5b86980a8..000000000 Binary files a/public/media-src/map/systems/t5c5.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c6.png b/public/media-src/map/systems/t5c6.png deleted file mode 100755 index f16cd4930..000000000 Binary files a/public/media-src/map/systems/t5c6.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c7.png b/public/media-src/map/systems/t5c7.png deleted file mode 100755 index cf369a97e..000000000 Binary files a/public/media-src/map/systems/t5c7.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c8.png b/public/media-src/map/systems/t5c8.png deleted file mode 100644 index a279a347b..000000000 Binary files a/public/media-src/map/systems/t5c8.png and /dev/null differ diff --git a/public/media-src/map/systems/t5c9.png b/public/media-src/map/systems/t5c9.png deleted file mode 100644 index 5b86980a8..000000000 Binary files a/public/media-src/map/systems/t5c9.png and /dev/null differ diff --git a/public/media-src/market/resources-pack-1.png b/public/media-src/market/resources-pack-1.png deleted file mode 100755 index 10c515055..000000000 Binary files a/public/media-src/market/resources-pack-1.png and /dev/null differ diff --git a/public/media-src/market/resources-pack-2.png b/public/media-src/market/resources-pack-2.png deleted file mode 100755 index 42a480c61..000000000 Binary files a/public/media-src/market/resources-pack-2.png and /dev/null differ diff --git a/public/media-src/market/resources-pack-3.png b/public/media-src/market/resources-pack-3.png deleted file mode 100755 index ed4ac54d7..000000000 Binary files a/public/media-src/market/resources-pack-3.png and /dev/null differ diff --git a/public/media-src/market/resources-pack-4.png b/public/media-src/market/resources-pack-4.png deleted file mode 100755 index 958744d3f..000000000 Binary files a/public/media-src/market/resources-pack-4.png and /dev/null differ diff --git a/public/media-src/market/resources-pack-5.png b/public/media-src/market/resources-pack-5.png deleted file mode 100755 index 4f3adaed2..000000000 Binary files a/public/media-src/market/resources-pack-5.png and /dev/null differ diff --git a/public/media-src/orbitalbase/antispy.png b/public/media-src/orbitalbase/antispy.png deleted file mode 100755 index b994e81e8..000000000 Binary files a/public/media-src/orbitalbase/antispy.png and /dev/null differ diff --git a/public/media-src/orbitalbase/base-type-0.jpg b/public/media-src/orbitalbase/base-type-0.jpg deleted file mode 100755 index f725b40f7..000000000 Binary files a/public/media-src/orbitalbase/base-type-0.jpg and /dev/null differ diff --git a/public/media-src/orbitalbase/base-type-1.jpg b/public/media-src/orbitalbase/base-type-1.jpg deleted file mode 100755 index 546545092..000000000 Binary files a/public/media-src/orbitalbase/base-type-1.jpg and /dev/null differ diff --git a/public/media-src/orbitalbase/base-type-2.jpg b/public/media-src/orbitalbase/base-type-2.jpg deleted file mode 100755 index 169e3e809..000000000 Binary files a/public/media-src/orbitalbase/base-type-2.jpg and /dev/null differ diff --git a/public/media-src/orbitalbase/base-type-3.jpg b/public/media-src/orbitalbase/base-type-3.jpg deleted file mode 100755 index fb4004778..000000000 Binary files a/public/media-src/orbitalbase/base-type-3.jpg and /dev/null differ diff --git a/public/media-src/orbitalbase/commercialplateforme.png b/public/media-src/orbitalbase/commercialplateforme.png deleted file mode 100644 index a4ce6349e..000000000 Binary files a/public/media-src/orbitalbase/commercialplateforme.png and /dev/null differ diff --git a/public/media-src/orbitalbase/dock1.png b/public/media-src/orbitalbase/dock1.png deleted file mode 100755 index decc64245..000000000 Binary files a/public/media-src/orbitalbase/dock1.png and /dev/null differ diff --git a/public/media-src/orbitalbase/dock2.png b/public/media-src/orbitalbase/dock2.png deleted file mode 100755 index a386bc35a..000000000 Binary files a/public/media-src/orbitalbase/dock2.png and /dev/null differ diff --git a/public/media-src/orbitalbase/generator.png b/public/media-src/orbitalbase/generator.png deleted file mode 100755 index 1277d489f..000000000 Binary files a/public/media-src/orbitalbase/generator.png and /dev/null differ diff --git a/public/media-src/orbitalbase/orbitalbase.png b/public/media-src/orbitalbase/orbitalbase.png deleted file mode 100755 index 7dff4c504..000000000 Binary files a/public/media-src/orbitalbase/orbitalbase.png and /dev/null differ diff --git a/public/media-src/orbitalbase/place1-1.png b/public/media-src/orbitalbase/place1-1.png deleted file mode 100755 index 63bdfbfbd..000000000 Binary files a/public/media-src/orbitalbase/place1-1.png and /dev/null differ diff --git a/public/media-src/orbitalbase/place1-2.png b/public/media-src/orbitalbase/place1-2.png deleted file mode 100755 index 7e098d10a..000000000 Binary files a/public/media-src/orbitalbase/place1-2.png and /dev/null differ diff --git a/public/media-src/orbitalbase/place1-3.png b/public/media-src/orbitalbase/place1-3.png deleted file mode 100755 index 1e5370153..000000000 Binary files a/public/media-src/orbitalbase/place1-3.png and /dev/null differ diff --git a/public/media-src/orbitalbase/planet.png b/public/media-src/orbitalbase/planet.png deleted file mode 100755 index 1b1f6de46..000000000 Binary files a/public/media-src/orbitalbase/planet.png and /dev/null differ diff --git a/public/media-src/orbitalbase/recycler.png b/public/media-src/orbitalbase/recycler.png deleted file mode 100644 index 39fd518d2..000000000 Binary files a/public/media-src/orbitalbase/recycler.png and /dev/null differ diff --git a/public/media-src/orbitalbase/recycling.png b/public/media-src/orbitalbase/recycling.png deleted file mode 100644 index 26f09e012..000000000 Binary files a/public/media-src/orbitalbase/recycling.png and /dev/null differ diff --git a/public/media-src/orbitalbase/refinery.png b/public/media-src/orbitalbase/refinery.png deleted file mode 100755 index 426ff0766..000000000 Binary files a/public/media-src/orbitalbase/refinery.png and /dev/null differ diff --git a/public/media-src/orbitalbase/school.png b/public/media-src/orbitalbase/school.png deleted file mode 100755 index 820651c97..000000000 Binary files a/public/media-src/orbitalbase/school.png and /dev/null differ diff --git a/public/media-src/orbitalbase/situation.png b/public/media-src/orbitalbase/situation.png deleted file mode 100755 index b350f6ea5..000000000 Binary files a/public/media-src/orbitalbase/situation.png and /dev/null differ diff --git a/public/media-src/orbitalbase/spatioport.png b/public/media-src/orbitalbase/spatioport.png deleted file mode 100755 index 1c52a0895..000000000 Binary files a/public/media-src/orbitalbase/spatioport.png and /dev/null differ diff --git a/public/media-src/orbitalbase/storage.png b/public/media-src/orbitalbase/storage.png deleted file mode 100644 index 6442e718a..000000000 Binary files a/public/media-src/orbitalbase/storage.png and /dev/null differ diff --git a/public/media-src/orbitalbase/technosphere.png b/public/media-src/orbitalbase/technosphere.png deleted file mode 100755 index c56609d86..000000000 Binary files a/public/media-src/orbitalbase/technosphere.png and /dev/null differ diff --git a/public/media-src/orbitalbase/university.png b/public/media-src/orbitalbase/university.png deleted file mode 100755 index 58f7d3d42..000000000 Binary files a/public/media-src/orbitalbase/university.png and /dev/null differ diff --git a/public/media-src/profil/diary.png b/public/media-src/profil/diary.png deleted file mode 100755 index f6a785e2c..000000000 Binary files a/public/media-src/profil/diary.png and /dev/null differ diff --git a/public/media-src/profil/profil.png b/public/media-src/profil/profil.png deleted file mode 100755 index 54d8fa0bf..000000000 Binary files a/public/media-src/profil/profil.png and /dev/null differ diff --git a/public/media-src/rank/cup.png b/public/media-src/rank/cup.png deleted file mode 100755 index 5ef8f0d1f..000000000 Binary files a/public/media-src/rank/cup.png and /dev/null differ diff --git a/public/media-src/rank/faction.png b/public/media-src/rank/faction.png deleted file mode 100755 index 1336f3f73..000000000 Binary files a/public/media-src/rank/faction.png and /dev/null differ diff --git a/public/media-src/rank/player.png b/public/media-src/rank/player.png deleted file mode 100755 index fa6c2c494..000000000 Binary files a/public/media-src/rank/player.png and /dev/null differ diff --git a/public/media-src/resources/attack.png b/public/media-src/resources/attack.png deleted file mode 100755 index a5e735f5d..000000000 Binary files a/public/media-src/resources/attack.png and /dev/null differ diff --git a/public/media-src/resources/check.png b/public/media-src/resources/check.png deleted file mode 100755 index fbb10d518..000000000 Binary files a/public/media-src/resources/check.png and /dev/null differ diff --git a/public/media-src/resources/credit.png b/public/media-src/resources/credit.png deleted file mode 100755 index 76df18293..000000000 Binary files a/public/media-src/resources/credit.png and /dev/null differ diff --git a/public/media-src/resources/defense.png b/public/media-src/resources/defense.png deleted file mode 100755 index efa8d50b7..000000000 Binary files a/public/media-src/resources/defense.png and /dev/null differ diff --git a/public/media-src/resources/life.png b/public/media-src/resources/life.png deleted file mode 100755 index cbd9059f8..000000000 Binary files a/public/media-src/resources/life.png and /dev/null differ diff --git a/public/media-src/resources/pa.png b/public/media-src/resources/pa.png deleted file mode 100755 index e36c0faac..000000000 Binary files a/public/media-src/resources/pa.png and /dev/null differ diff --git a/public/media-src/resources/pev.png b/public/media-src/resources/pev.png deleted file mode 100755 index ce41d887b..000000000 Binary files a/public/media-src/resources/pev.png and /dev/null differ diff --git a/public/media-src/resources/population.png b/public/media-src/resources/population.png deleted file mode 100644 index 20abfd22d..000000000 Binary files a/public/media-src/resources/population.png and /dev/null differ diff --git a/public/media-src/resources/rate.png b/public/media-src/resources/rate.png deleted file mode 100755 index 7b480861d..000000000 Binary files a/public/media-src/resources/rate.png and /dev/null differ diff --git a/public/media-src/resources/resource.png b/public/media-src/resources/resource.png deleted file mode 100755 index 83da14b2e..000000000 Binary files a/public/media-src/resources/resource.png and /dev/null differ diff --git a/public/media-src/resources/science.png b/public/media-src/resources/science.png deleted file mode 100644 index e1fa99b60..000000000 Binary files a/public/media-src/resources/science.png and /dev/null differ diff --git a/public/media-src/resources/speed.png b/public/media-src/resources/speed.png deleted file mode 100755 index b57626520..000000000 Binary files a/public/media-src/resources/speed.png and /dev/null differ diff --git a/public/media-src/resources/time.png b/public/media-src/resources/time.png deleted file mode 100755 index 74bec4461..000000000 Binary files a/public/media-src/resources/time.png and /dev/null differ diff --git a/public/media-src/resources/transport.png b/public/media-src/resources/transport.png deleted file mode 100755 index ce86124f5..000000000 Binary files a/public/media-src/resources/transport.png and /dev/null differ diff --git a/public/media-src/resources/xp.png b/public/media-src/resources/xp.png deleted file mode 100755 index 7180067cb..000000000 Binary files a/public/media-src/resources/xp.png and /dev/null differ diff --git a/public/media-src/school/school-0.png b/public/media-src/school/school-0.png deleted file mode 100755 index c19958cc3..000000000 Binary files a/public/media-src/school/school-0.png and /dev/null differ diff --git a/public/media-src/school/school-1.png b/public/media-src/school/school-1.png deleted file mode 100755 index 9a25d2838..000000000 Binary files a/public/media-src/school/school-1.png and /dev/null differ diff --git a/public/media-src/school/school-2.png b/public/media-src/school/school-2.png deleted file mode 100755 index 5a6d46d20..000000000 Binary files a/public/media-src/school/school-2.png and /dev/null differ diff --git a/public/media-src/ship/img/01-01.png b/public/media-src/ship/img/01-01.png deleted file mode 100755 index 4a6610937..000000000 Binary files a/public/media-src/ship/img/01-01.png and /dev/null differ diff --git a/public/media-src/ship/img/01-02.png b/public/media-src/ship/img/01-02.png deleted file mode 100755 index 07c4d8cee..000000000 Binary files a/public/media-src/ship/img/01-02.png and /dev/null differ diff --git a/public/media-src/ship/img/01-03.png b/public/media-src/ship/img/01-03.png deleted file mode 100755 index 457822725..000000000 Binary files a/public/media-src/ship/img/01-03.png and /dev/null differ diff --git a/public/media-src/ship/img/01-04.png b/public/media-src/ship/img/01-04.png deleted file mode 100755 index dede3cf19..000000000 Binary files a/public/media-src/ship/img/01-04.png and /dev/null differ diff --git a/public/media-src/ship/img/01-05.png b/public/media-src/ship/img/01-05.png deleted file mode 100755 index da9979188..000000000 Binary files a/public/media-src/ship/img/01-05.png and /dev/null differ diff --git a/public/media-src/ship/img/01-06.png b/public/media-src/ship/img/01-06.png deleted file mode 100755 index 2bde3cda1..000000000 Binary files a/public/media-src/ship/img/01-06.png and /dev/null differ diff --git a/public/media-src/ship/img/01-07.png b/public/media-src/ship/img/01-07.png deleted file mode 100755 index a5a437702..000000000 Binary files a/public/media-src/ship/img/01-07.png and /dev/null differ diff --git a/public/media-src/ship/img/01-08.png b/public/media-src/ship/img/01-08.png deleted file mode 100644 index 6c2931f2c..000000000 Binary files a/public/media-src/ship/img/01-08.png and /dev/null differ diff --git a/public/media-src/ship/img/01-09.png b/public/media-src/ship/img/01-09.png deleted file mode 100644 index 6575727c6..000000000 Binary files a/public/media-src/ship/img/01-09.png and /dev/null differ diff --git a/public/media-src/ship/img/01-10.png b/public/media-src/ship/img/01-10.png deleted file mode 100644 index 1283fc1b7..000000000 Binary files a/public/media-src/ship/img/01-10.png and /dev/null differ diff --git a/public/media-src/ship/img/01-11.png b/public/media-src/ship/img/01-11.png deleted file mode 100644 index 3bdca7ac4..000000000 Binary files a/public/media-src/ship/img/01-11.png and /dev/null differ diff --git a/public/media-src/ship/img/01-12.png b/public/media-src/ship/img/01-12.png deleted file mode 100644 index d73a5086f..000000000 Binary files a/public/media-src/ship/img/01-12.png and /dev/null differ diff --git a/public/media-src/ship/img/02-01.png b/public/media-src/ship/img/02-01.png deleted file mode 100755 index e3ef11cd6..000000000 Binary files a/public/media-src/ship/img/02-01.png and /dev/null differ diff --git a/public/media-src/ship/img/02-02.png b/public/media-src/ship/img/02-02.png deleted file mode 100755 index 1a65b875d..000000000 Binary files a/public/media-src/ship/img/02-02.png and /dev/null differ diff --git a/public/media-src/ship/img/02-03.png b/public/media-src/ship/img/02-03.png deleted file mode 100755 index 80fda3f49..000000000 Binary files a/public/media-src/ship/img/02-03.png and /dev/null differ diff --git a/public/media-src/ship/img/02-04.png b/public/media-src/ship/img/02-04.png deleted file mode 100755 index 86ef43a0b..000000000 Binary files a/public/media-src/ship/img/02-04.png and /dev/null differ diff --git a/public/media-src/ship/img/02-05.png b/public/media-src/ship/img/02-05.png deleted file mode 100755 index e821c9f00..000000000 Binary files a/public/media-src/ship/img/02-05.png and /dev/null differ diff --git a/public/media-src/ship/img/02-06.png b/public/media-src/ship/img/02-06.png deleted file mode 100755 index e472efcf6..000000000 Binary files a/public/media-src/ship/img/02-06.png and /dev/null differ diff --git a/public/media-src/ship/img/02-07.png b/public/media-src/ship/img/02-07.png deleted file mode 100755 index 597dac074..000000000 Binary files a/public/media-src/ship/img/02-07.png and /dev/null differ diff --git a/public/media-src/ship/img/02-08.png b/public/media-src/ship/img/02-08.png deleted file mode 100644 index 15d6bbd5e..000000000 Binary files a/public/media-src/ship/img/02-08.png and /dev/null differ diff --git a/public/media-src/ship/img/02-09.png b/public/media-src/ship/img/02-09.png deleted file mode 100644 index 0edbb1684..000000000 Binary files a/public/media-src/ship/img/02-09.png and /dev/null differ diff --git a/public/media-src/ship/img/02-10.png b/public/media-src/ship/img/02-10.png deleted file mode 100644 index 0338e45ae..000000000 Binary files a/public/media-src/ship/img/02-10.png and /dev/null differ diff --git a/public/media-src/ship/img/02-11.png b/public/media-src/ship/img/02-11.png deleted file mode 100644 index b6405c46d..000000000 Binary files a/public/media-src/ship/img/02-11.png and /dev/null differ diff --git a/public/media-src/ship/img/02-12.png b/public/media-src/ship/img/02-12.png deleted file mode 100644 index a40d51cb4..000000000 Binary files a/public/media-src/ship/img/02-12.png and /dev/null differ diff --git a/public/media-src/ship/img/03-01.png b/public/media-src/ship/img/03-01.png deleted file mode 100755 index 2e8747a38..000000000 Binary files a/public/media-src/ship/img/03-01.png and /dev/null differ diff --git a/public/media-src/ship/img/03-02.png b/public/media-src/ship/img/03-02.png deleted file mode 100755 index c0812c6f6..000000000 Binary files a/public/media-src/ship/img/03-02.png and /dev/null differ diff --git a/public/media-src/ship/img/03-03.png b/public/media-src/ship/img/03-03.png deleted file mode 100755 index 026dfa942..000000000 Binary files a/public/media-src/ship/img/03-03.png and /dev/null differ diff --git a/public/media-src/ship/img/03-04.png b/public/media-src/ship/img/03-04.png deleted file mode 100755 index c3d95059e..000000000 Binary files a/public/media-src/ship/img/03-04.png and /dev/null differ diff --git a/public/media-src/ship/img/03-05.png b/public/media-src/ship/img/03-05.png deleted file mode 100755 index 3b258b7e7..000000000 Binary files a/public/media-src/ship/img/03-05.png and /dev/null differ diff --git a/public/media-src/ship/img/03-06.png b/public/media-src/ship/img/03-06.png deleted file mode 100755 index d725e56d1..000000000 Binary files a/public/media-src/ship/img/03-06.png and /dev/null differ diff --git a/public/media-src/ship/img/03-07.png b/public/media-src/ship/img/03-07.png deleted file mode 100755 index 49e1d75e8..000000000 Binary files a/public/media-src/ship/img/03-07.png and /dev/null differ diff --git a/public/media-src/ship/img/03-08.png b/public/media-src/ship/img/03-08.png deleted file mode 100644 index 7119ec5bd..000000000 Binary files a/public/media-src/ship/img/03-08.png and /dev/null differ diff --git a/public/media-src/ship/img/03-09.png b/public/media-src/ship/img/03-09.png deleted file mode 100644 index 44b655c3c..000000000 Binary files a/public/media-src/ship/img/03-09.png and /dev/null differ diff --git a/public/media-src/ship/img/03-10.png b/public/media-src/ship/img/03-10.png deleted file mode 100644 index 7c7cacc2d..000000000 Binary files a/public/media-src/ship/img/03-10.png and /dev/null differ diff --git a/public/media-src/ship/img/03-11.png b/public/media-src/ship/img/03-11.png deleted file mode 100644 index 2460f4ae7..000000000 Binary files a/public/media-src/ship/img/03-11.png and /dev/null differ diff --git a/public/media-src/ship/img/03-12.png b/public/media-src/ship/img/03-12.png deleted file mode 100644 index 1c4e0a062..000000000 Binary files a/public/media-src/ship/img/03-12.png and /dev/null differ diff --git a/public/media-src/ship/img/04-01.png b/public/media-src/ship/img/04-01.png deleted file mode 100755 index ebfa08edb..000000000 Binary files a/public/media-src/ship/img/04-01.png and /dev/null differ diff --git a/public/media-src/ship/img/04-02.png b/public/media-src/ship/img/04-02.png deleted file mode 100755 index 3f18dc8a4..000000000 Binary files a/public/media-src/ship/img/04-02.png and /dev/null differ diff --git a/public/media-src/ship/img/04-03.png b/public/media-src/ship/img/04-03.png deleted file mode 100755 index 8b4360907..000000000 Binary files a/public/media-src/ship/img/04-03.png and /dev/null differ diff --git a/public/media-src/ship/img/04-04.png b/public/media-src/ship/img/04-04.png deleted file mode 100755 index 52d219bc8..000000000 Binary files a/public/media-src/ship/img/04-04.png and /dev/null differ diff --git a/public/media-src/ship/img/04-05.png b/public/media-src/ship/img/04-05.png deleted file mode 100755 index 35f51a2ff..000000000 Binary files a/public/media-src/ship/img/04-05.png and /dev/null differ diff --git a/public/media-src/ship/img/04-06.png b/public/media-src/ship/img/04-06.png deleted file mode 100755 index 0e3260771..000000000 Binary files a/public/media-src/ship/img/04-06.png and /dev/null differ diff --git a/public/media-src/ship/img/04-07.png b/public/media-src/ship/img/04-07.png deleted file mode 100755 index 34f3a2253..000000000 Binary files a/public/media-src/ship/img/04-07.png and /dev/null differ diff --git a/public/media-src/ship/img/04-08.png b/public/media-src/ship/img/04-08.png deleted file mode 100644 index 6ac7cfb85..000000000 Binary files a/public/media-src/ship/img/04-08.png and /dev/null differ diff --git a/public/media-src/ship/img/04-09.png b/public/media-src/ship/img/04-09.png deleted file mode 100644 index 0775d8ffb..000000000 Binary files a/public/media-src/ship/img/04-09.png and /dev/null differ diff --git a/public/media-src/ship/img/04-10.png b/public/media-src/ship/img/04-10.png deleted file mode 100644 index 65eaab6a5..000000000 Binary files a/public/media-src/ship/img/04-10.png and /dev/null differ diff --git a/public/media-src/ship/img/04-11.png b/public/media-src/ship/img/04-11.png deleted file mode 100644 index 9790bec7d..000000000 Binary files a/public/media-src/ship/img/04-11.png and /dev/null differ diff --git a/public/media-src/ship/img/04-12.png b/public/media-src/ship/img/04-12.png deleted file mode 100644 index 94e8e4dc4..000000000 Binary files a/public/media-src/ship/img/04-12.png and /dev/null differ diff --git a/public/media-src/ship/img/05-01.png b/public/media-src/ship/img/05-01.png deleted file mode 100755 index c59c1ed35..000000000 Binary files a/public/media-src/ship/img/05-01.png and /dev/null differ diff --git a/public/media-src/ship/img/05-02.png b/public/media-src/ship/img/05-02.png deleted file mode 100755 index f1222d477..000000000 Binary files a/public/media-src/ship/img/05-02.png and /dev/null differ diff --git a/public/media-src/ship/img/05-03.png b/public/media-src/ship/img/05-03.png deleted file mode 100755 index 0cae2f068..000000000 Binary files a/public/media-src/ship/img/05-03.png and /dev/null differ diff --git a/public/media-src/ship/img/05-04.png b/public/media-src/ship/img/05-04.png deleted file mode 100755 index d509ce192..000000000 Binary files a/public/media-src/ship/img/05-04.png and /dev/null differ diff --git a/public/media-src/ship/img/05-05.png b/public/media-src/ship/img/05-05.png deleted file mode 100755 index d131330d6..000000000 Binary files a/public/media-src/ship/img/05-05.png and /dev/null differ diff --git a/public/media-src/ship/img/05-06.png b/public/media-src/ship/img/05-06.png deleted file mode 100755 index 0aaedc1cd..000000000 Binary files a/public/media-src/ship/img/05-06.png and /dev/null differ diff --git a/public/media-src/ship/img/05-07.png b/public/media-src/ship/img/05-07.png deleted file mode 100755 index c3baacfca..000000000 Binary files a/public/media-src/ship/img/05-07.png and /dev/null differ diff --git a/public/media-src/ship/img/05-08.png b/public/media-src/ship/img/05-08.png deleted file mode 100644 index 1fc2ebe89..000000000 Binary files a/public/media-src/ship/img/05-08.png and /dev/null differ diff --git a/public/media-src/ship/img/05-09.png b/public/media-src/ship/img/05-09.png deleted file mode 100644 index fd6d5f910..000000000 Binary files a/public/media-src/ship/img/05-09.png and /dev/null differ diff --git a/public/media-src/ship/img/05-10.png b/public/media-src/ship/img/05-10.png deleted file mode 100644 index d2f6cdc6e..000000000 Binary files a/public/media-src/ship/img/05-10.png and /dev/null differ diff --git a/public/media-src/ship/img/05-11.png b/public/media-src/ship/img/05-11.png deleted file mode 100644 index a7a671e8c..000000000 Binary files a/public/media-src/ship/img/05-11.png and /dev/null differ diff --git a/public/media-src/ship/img/05-12.png b/public/media-src/ship/img/05-12.png deleted file mode 100644 index c54312370..000000000 Binary files a/public/media-src/ship/img/05-12.png and /dev/null differ diff --git a/public/media-src/ship/img/06-01.png b/public/media-src/ship/img/06-01.png deleted file mode 100755 index a932fa8ac..000000000 Binary files a/public/media-src/ship/img/06-01.png and /dev/null differ diff --git a/public/media-src/ship/img/06-02.png b/public/media-src/ship/img/06-02.png deleted file mode 100755 index 14b5ebb51..000000000 Binary files a/public/media-src/ship/img/06-02.png and /dev/null differ diff --git a/public/media-src/ship/img/06-03.png b/public/media-src/ship/img/06-03.png deleted file mode 100755 index 8892d64ea..000000000 Binary files a/public/media-src/ship/img/06-03.png and /dev/null differ diff --git a/public/media-src/ship/img/06-04.png b/public/media-src/ship/img/06-04.png deleted file mode 100755 index dcff6a905..000000000 Binary files a/public/media-src/ship/img/06-04.png and /dev/null differ diff --git a/public/media-src/ship/img/06-05.png b/public/media-src/ship/img/06-05.png deleted file mode 100755 index 277fc36a8..000000000 Binary files a/public/media-src/ship/img/06-05.png and /dev/null differ diff --git a/public/media-src/ship/img/06-06.png b/public/media-src/ship/img/06-06.png deleted file mode 100755 index 52dcf479c..000000000 Binary files a/public/media-src/ship/img/06-06.png and /dev/null differ diff --git a/public/media-src/ship/img/06-07.png b/public/media-src/ship/img/06-07.png deleted file mode 100755 index 8242d46e6..000000000 Binary files a/public/media-src/ship/img/06-07.png and /dev/null differ diff --git a/public/media-src/ship/img/06-08.png b/public/media-src/ship/img/06-08.png deleted file mode 100644 index 47c846ff2..000000000 Binary files a/public/media-src/ship/img/06-08.png and /dev/null differ diff --git a/public/media-src/ship/img/06-09.png b/public/media-src/ship/img/06-09.png deleted file mode 100644 index fbeb2dbd3..000000000 Binary files a/public/media-src/ship/img/06-09.png and /dev/null differ diff --git a/public/media-src/ship/img/06-10.png b/public/media-src/ship/img/06-10.png deleted file mode 100644 index 7fe0dd795..000000000 Binary files a/public/media-src/ship/img/06-10.png and /dev/null differ diff --git a/public/media-src/ship/img/06-11.png b/public/media-src/ship/img/06-11.png deleted file mode 100644 index b38fb2acb..000000000 Binary files a/public/media-src/ship/img/06-11.png and /dev/null differ diff --git a/public/media-src/ship/img/06-12.png b/public/media-src/ship/img/06-12.png deleted file mode 100644 index a7b8a0d82..000000000 Binary files a/public/media-src/ship/img/06-12.png and /dev/null differ diff --git a/public/media-src/ship/img/07-01.png b/public/media-src/ship/img/07-01.png deleted file mode 100755 index 45de1b506..000000000 Binary files a/public/media-src/ship/img/07-01.png and /dev/null differ diff --git a/public/media-src/ship/img/07-02.png b/public/media-src/ship/img/07-02.png deleted file mode 100755 index 018e77c2b..000000000 Binary files a/public/media-src/ship/img/07-02.png and /dev/null differ diff --git a/public/media-src/ship/img/07-03.png b/public/media-src/ship/img/07-03.png deleted file mode 100755 index 2065a37de..000000000 Binary files a/public/media-src/ship/img/07-03.png and /dev/null differ diff --git a/public/media-src/ship/img/07-04.png b/public/media-src/ship/img/07-04.png deleted file mode 100755 index 3a20d2dbc..000000000 Binary files a/public/media-src/ship/img/07-04.png and /dev/null differ diff --git a/public/media-src/ship/img/07-05.png b/public/media-src/ship/img/07-05.png deleted file mode 100755 index 8cfc024c8..000000000 Binary files a/public/media-src/ship/img/07-05.png and /dev/null differ diff --git a/public/media-src/ship/img/07-06.png b/public/media-src/ship/img/07-06.png deleted file mode 100755 index e107b4504..000000000 Binary files a/public/media-src/ship/img/07-06.png and /dev/null differ diff --git a/public/media-src/ship/img/07-07.png b/public/media-src/ship/img/07-07.png deleted file mode 100755 index 9d50f2fb1..000000000 Binary files a/public/media-src/ship/img/07-07.png and /dev/null differ diff --git a/public/media-src/ship/img/07-08.png b/public/media-src/ship/img/07-08.png deleted file mode 100644 index 77e3ae0fb..000000000 Binary files a/public/media-src/ship/img/07-08.png and /dev/null differ diff --git a/public/media-src/ship/img/07-09.png b/public/media-src/ship/img/07-09.png deleted file mode 100644 index 126ee3e3f..000000000 Binary files a/public/media-src/ship/img/07-09.png and /dev/null differ diff --git a/public/media-src/ship/img/07-10.png b/public/media-src/ship/img/07-10.png deleted file mode 100644 index 0e676acea..000000000 Binary files a/public/media-src/ship/img/07-10.png and /dev/null differ diff --git a/public/media-src/ship/img/07-11.png b/public/media-src/ship/img/07-11.png deleted file mode 100644 index 491466aa1..000000000 Binary files a/public/media-src/ship/img/07-11.png and /dev/null differ diff --git a/public/media-src/ship/img/07-12.png b/public/media-src/ship/img/07-12.png deleted file mode 100644 index 6cf087bce..000000000 Binary files a/public/media-src/ship/img/07-12.png and /dev/null differ diff --git a/public/media-src/ship/img/08-01.png b/public/media-src/ship/img/08-01.png deleted file mode 100755 index 2ae93dbb2..000000000 Binary files a/public/media-src/ship/img/08-01.png and /dev/null differ diff --git a/public/media-src/ship/img/08-02.png b/public/media-src/ship/img/08-02.png deleted file mode 100755 index 202259e2c..000000000 Binary files a/public/media-src/ship/img/08-02.png and /dev/null differ diff --git a/public/media-src/ship/img/08-03.png b/public/media-src/ship/img/08-03.png deleted file mode 100755 index c22d4b58b..000000000 Binary files a/public/media-src/ship/img/08-03.png and /dev/null differ diff --git a/public/media-src/ship/img/08-04.png b/public/media-src/ship/img/08-04.png deleted file mode 100755 index f8ca26e33..000000000 Binary files a/public/media-src/ship/img/08-04.png and /dev/null differ diff --git a/public/media-src/ship/img/08-05.png b/public/media-src/ship/img/08-05.png deleted file mode 100755 index da3f0afd8..000000000 Binary files a/public/media-src/ship/img/08-05.png and /dev/null differ diff --git a/public/media-src/ship/img/08-06.png b/public/media-src/ship/img/08-06.png deleted file mode 100755 index 533211184..000000000 Binary files a/public/media-src/ship/img/08-06.png and /dev/null differ diff --git a/public/media-src/ship/img/08-07.png b/public/media-src/ship/img/08-07.png deleted file mode 100755 index be23c47e8..000000000 Binary files a/public/media-src/ship/img/08-07.png and /dev/null differ diff --git a/public/media-src/ship/img/08-08.png b/public/media-src/ship/img/08-08.png deleted file mode 100644 index c7bd3f5d8..000000000 Binary files a/public/media-src/ship/img/08-08.png and /dev/null differ diff --git a/public/media-src/ship/img/08-09.png b/public/media-src/ship/img/08-09.png deleted file mode 100644 index 574b3c9d4..000000000 Binary files a/public/media-src/ship/img/08-09.png and /dev/null differ diff --git a/public/media-src/ship/img/08-10.png b/public/media-src/ship/img/08-10.png deleted file mode 100644 index d5857aea2..000000000 Binary files a/public/media-src/ship/img/08-10.png and /dev/null differ diff --git a/public/media-src/ship/img/08-11.png b/public/media-src/ship/img/08-11.png deleted file mode 100644 index abc3a26f1..000000000 Binary files a/public/media-src/ship/img/08-11.png and /dev/null differ diff --git a/public/media-src/ship/img/08-12.png b/public/media-src/ship/img/08-12.png deleted file mode 100644 index 8ad704ec1..000000000 Binary files a/public/media-src/ship/img/08-12.png and /dev/null differ diff --git a/public/media-src/ship/img/09-01.png b/public/media-src/ship/img/09-01.png deleted file mode 100755 index 510ffc774..000000000 Binary files a/public/media-src/ship/img/09-01.png and /dev/null differ diff --git a/public/media-src/ship/img/09-02.png b/public/media-src/ship/img/09-02.png deleted file mode 100755 index a03308836..000000000 Binary files a/public/media-src/ship/img/09-02.png and /dev/null differ diff --git a/public/media-src/ship/img/09-03.png b/public/media-src/ship/img/09-03.png deleted file mode 100755 index fbe23d41b..000000000 Binary files a/public/media-src/ship/img/09-03.png and /dev/null differ diff --git a/public/media-src/ship/img/09-04.png b/public/media-src/ship/img/09-04.png deleted file mode 100755 index 44bf1e44b..000000000 Binary files a/public/media-src/ship/img/09-04.png and /dev/null differ diff --git a/public/media-src/ship/img/09-05.png b/public/media-src/ship/img/09-05.png deleted file mode 100755 index 646e7588f..000000000 Binary files a/public/media-src/ship/img/09-05.png and /dev/null differ diff --git a/public/media-src/ship/img/09-06.png b/public/media-src/ship/img/09-06.png deleted file mode 100755 index 6b02661f6..000000000 Binary files a/public/media-src/ship/img/09-06.png and /dev/null differ diff --git a/public/media-src/ship/img/09-07.png b/public/media-src/ship/img/09-07.png deleted file mode 100755 index d090976a6..000000000 Binary files a/public/media-src/ship/img/09-07.png and /dev/null differ diff --git a/public/media-src/ship/img/09-08.png b/public/media-src/ship/img/09-08.png deleted file mode 100644 index 47bd84d8d..000000000 Binary files a/public/media-src/ship/img/09-08.png and /dev/null differ diff --git a/public/media-src/ship/img/09-09.png b/public/media-src/ship/img/09-09.png deleted file mode 100644 index a9a491246..000000000 Binary files a/public/media-src/ship/img/09-09.png and /dev/null differ diff --git a/public/media-src/ship/img/09-10.png b/public/media-src/ship/img/09-10.png deleted file mode 100644 index 1104f993d..000000000 Binary files a/public/media-src/ship/img/09-10.png and /dev/null differ diff --git a/public/media-src/ship/img/09-11.png b/public/media-src/ship/img/09-11.png deleted file mode 100644 index c7983ccb3..000000000 Binary files a/public/media-src/ship/img/09-11.png and /dev/null differ diff --git a/public/media-src/ship/img/09-12.png b/public/media-src/ship/img/09-12.png deleted file mode 100644 index 82b0304cb..000000000 Binary files a/public/media-src/ship/img/09-12.png and /dev/null differ diff --git a/public/media-src/ship/img/10-01.png b/public/media-src/ship/img/10-01.png deleted file mode 100755 index 64ecee054..000000000 Binary files a/public/media-src/ship/img/10-01.png and /dev/null differ diff --git a/public/media-src/ship/img/10-02.png b/public/media-src/ship/img/10-02.png deleted file mode 100755 index 7e60c8f12..000000000 Binary files a/public/media-src/ship/img/10-02.png and /dev/null differ diff --git a/public/media-src/ship/img/10-03.png b/public/media-src/ship/img/10-03.png deleted file mode 100755 index af959a2bc..000000000 Binary files a/public/media-src/ship/img/10-03.png and /dev/null differ diff --git a/public/media-src/ship/img/10-04.png b/public/media-src/ship/img/10-04.png deleted file mode 100755 index 0d479db23..000000000 Binary files a/public/media-src/ship/img/10-04.png and /dev/null differ diff --git a/public/media-src/ship/img/10-05.png b/public/media-src/ship/img/10-05.png deleted file mode 100755 index fd621af15..000000000 Binary files a/public/media-src/ship/img/10-05.png and /dev/null differ diff --git a/public/media-src/ship/img/10-06.png b/public/media-src/ship/img/10-06.png deleted file mode 100755 index 9f321631d..000000000 Binary files a/public/media-src/ship/img/10-06.png and /dev/null differ diff --git a/public/media-src/ship/img/10-07.png b/public/media-src/ship/img/10-07.png deleted file mode 100755 index 0f0e0d529..000000000 Binary files a/public/media-src/ship/img/10-07.png and /dev/null differ diff --git a/public/media-src/ship/img/10-08.png b/public/media-src/ship/img/10-08.png deleted file mode 100644 index fbd91f861..000000000 Binary files a/public/media-src/ship/img/10-08.png and /dev/null differ diff --git a/public/media-src/ship/img/10-09.png b/public/media-src/ship/img/10-09.png deleted file mode 100644 index e0a3896c3..000000000 Binary files a/public/media-src/ship/img/10-09.png and /dev/null differ diff --git a/public/media-src/ship/img/10-10.png b/public/media-src/ship/img/10-10.png deleted file mode 100644 index c540e023a..000000000 Binary files a/public/media-src/ship/img/10-10.png and /dev/null differ diff --git a/public/media-src/ship/img/10-11.png b/public/media-src/ship/img/10-11.png deleted file mode 100644 index c0b4147ce..000000000 Binary files a/public/media-src/ship/img/10-11.png and /dev/null differ diff --git a/public/media-src/ship/img/10-12.png b/public/media-src/ship/img/10-12.png deleted file mode 100644 index 40b145fce..000000000 Binary files a/public/media-src/ship/img/10-12.png and /dev/null differ diff --git a/public/media-src/ship/img/11-01.png b/public/media-src/ship/img/11-01.png deleted file mode 100755 index 31725b8ea..000000000 Binary files a/public/media-src/ship/img/11-01.png and /dev/null differ diff --git a/public/media-src/ship/img/11-02.png b/public/media-src/ship/img/11-02.png deleted file mode 100755 index dece92d14..000000000 Binary files a/public/media-src/ship/img/11-02.png and /dev/null differ diff --git a/public/media-src/ship/img/11-03.png b/public/media-src/ship/img/11-03.png deleted file mode 100755 index c5a6d79e6..000000000 Binary files a/public/media-src/ship/img/11-03.png and /dev/null differ diff --git a/public/media-src/ship/img/11-04.png b/public/media-src/ship/img/11-04.png deleted file mode 100755 index 3f23d863c..000000000 Binary files a/public/media-src/ship/img/11-04.png and /dev/null differ diff --git a/public/media-src/ship/img/11-05.png b/public/media-src/ship/img/11-05.png deleted file mode 100755 index c16fabf57..000000000 Binary files a/public/media-src/ship/img/11-05.png and /dev/null differ diff --git a/public/media-src/ship/img/11-06.png b/public/media-src/ship/img/11-06.png deleted file mode 100755 index e14c7520a..000000000 Binary files a/public/media-src/ship/img/11-06.png and /dev/null differ diff --git a/public/media-src/ship/img/11-07.png b/public/media-src/ship/img/11-07.png deleted file mode 100755 index d754e7e27..000000000 Binary files a/public/media-src/ship/img/11-07.png and /dev/null differ diff --git a/public/media-src/ship/img/11-08.png b/public/media-src/ship/img/11-08.png deleted file mode 100644 index 9464092e4..000000000 Binary files a/public/media-src/ship/img/11-08.png and /dev/null differ diff --git a/public/media-src/ship/img/11-09.png b/public/media-src/ship/img/11-09.png deleted file mode 100644 index fbacc8189..000000000 Binary files a/public/media-src/ship/img/11-09.png and /dev/null differ diff --git a/public/media-src/ship/img/11-10.png b/public/media-src/ship/img/11-10.png deleted file mode 100644 index ab23f4dfe..000000000 Binary files a/public/media-src/ship/img/11-10.png and /dev/null differ diff --git a/public/media-src/ship/img/11-11.png b/public/media-src/ship/img/11-11.png deleted file mode 100644 index d50b158ef..000000000 Binary files a/public/media-src/ship/img/11-11.png and /dev/null differ diff --git a/public/media-src/ship/img/11-12.png b/public/media-src/ship/img/11-12.png deleted file mode 100644 index 4c5fc111e..000000000 Binary files a/public/media-src/ship/img/11-12.png and /dev/null differ diff --git a/public/media-src/ship/img/12-01.png b/public/media-src/ship/img/12-01.png deleted file mode 100755 index b37634d3f..000000000 Binary files a/public/media-src/ship/img/12-01.png and /dev/null differ diff --git a/public/media-src/ship/img/12-02.png b/public/media-src/ship/img/12-02.png deleted file mode 100755 index e61ee3679..000000000 Binary files a/public/media-src/ship/img/12-02.png and /dev/null differ diff --git a/public/media-src/ship/img/12-03.png b/public/media-src/ship/img/12-03.png deleted file mode 100755 index 606fa7f8e..000000000 Binary files a/public/media-src/ship/img/12-03.png and /dev/null differ diff --git a/public/media-src/ship/img/12-04.png b/public/media-src/ship/img/12-04.png deleted file mode 100755 index 3cb9022a9..000000000 Binary files a/public/media-src/ship/img/12-04.png and /dev/null differ diff --git a/public/media-src/ship/img/12-05.png b/public/media-src/ship/img/12-05.png deleted file mode 100755 index 41fccb3e6..000000000 Binary files a/public/media-src/ship/img/12-05.png and /dev/null differ diff --git a/public/media-src/ship/img/12-06.png b/public/media-src/ship/img/12-06.png deleted file mode 100755 index 9f836aabd..000000000 Binary files a/public/media-src/ship/img/12-06.png and /dev/null differ diff --git a/public/media-src/ship/img/12-07.png b/public/media-src/ship/img/12-07.png deleted file mode 100755 index 94caf2c55..000000000 Binary files a/public/media-src/ship/img/12-07.png and /dev/null differ diff --git a/public/media-src/ship/img/12-08.png b/public/media-src/ship/img/12-08.png deleted file mode 100644 index d65304daf..000000000 Binary files a/public/media-src/ship/img/12-08.png and /dev/null differ diff --git a/public/media-src/ship/img/12-09.png b/public/media-src/ship/img/12-09.png deleted file mode 100644 index e2e36bba4..000000000 Binary files a/public/media-src/ship/img/12-09.png and /dev/null differ diff --git a/public/media-src/ship/img/12-10.png b/public/media-src/ship/img/12-10.png deleted file mode 100644 index 10bd23ea5..000000000 Binary files a/public/media-src/ship/img/12-10.png and /dev/null differ diff --git a/public/media-src/ship/img/12-11.png b/public/media-src/ship/img/12-11.png deleted file mode 100644 index ecde8ca49..000000000 Binary files a/public/media-src/ship/img/12-11.png and /dev/null differ diff --git a/public/media-src/ship/img/12-12.png b/public/media-src/ship/img/12-12.png deleted file mode 100644 index 5f3d3c2f2..000000000 Binary files a/public/media-src/ship/img/12-12.png and /dev/null differ diff --git a/public/media-src/ship/picto/locked.png b/public/media-src/ship/picto/locked.png deleted file mode 100755 index e740cec40..000000000 Binary files a/public/media-src/ship/picto/locked.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship0.png b/public/media-src/ship/picto/ship0.png deleted file mode 100755 index 312e10c58..000000000 Binary files a/public/media-src/ship/picto/ship0.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship1.png b/public/media-src/ship/picto/ship1.png deleted file mode 100755 index aa88a1140..000000000 Binary files a/public/media-src/ship/picto/ship1.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship10.png b/public/media-src/ship/picto/ship10.png deleted file mode 100755 index 47adb0a5a..000000000 Binary files a/public/media-src/ship/picto/ship10.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship11.png b/public/media-src/ship/picto/ship11.png deleted file mode 100755 index de5e655e5..000000000 Binary files a/public/media-src/ship/picto/ship11.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship2.png b/public/media-src/ship/picto/ship2.png deleted file mode 100755 index c976e40db..000000000 Binary files a/public/media-src/ship/picto/ship2.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship3.png b/public/media-src/ship/picto/ship3.png deleted file mode 100755 index 1ee662631..000000000 Binary files a/public/media-src/ship/picto/ship3.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship4.png b/public/media-src/ship/picto/ship4.png deleted file mode 100755 index 26abec0d6..000000000 Binary files a/public/media-src/ship/picto/ship4.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship5.png b/public/media-src/ship/picto/ship5.png deleted file mode 100755 index a96d7bfa4..000000000 Binary files a/public/media-src/ship/picto/ship5.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship6.png b/public/media-src/ship/picto/ship6.png deleted file mode 100755 index 742f70d91..000000000 Binary files a/public/media-src/ship/picto/ship6.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship7.png b/public/media-src/ship/picto/ship7.png deleted file mode 100755 index beb633c85..000000000 Binary files a/public/media-src/ship/picto/ship7.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship8.png b/public/media-src/ship/picto/ship8.png deleted file mode 100755 index aa3df2b42..000000000 Binary files a/public/media-src/ship/picto/ship8.png and /dev/null differ diff --git a/public/media-src/ship/picto/ship9.png b/public/media-src/ship/picto/ship9.png deleted file mode 100755 index 94ee6d79c..000000000 Binary files a/public/media-src/ship/picto/ship9.png and /dev/null differ diff --git a/public/media-src/technology/img/_26.png b/public/media-src/technology/img/_26.png deleted file mode 100755 index a9193a97a..000000000 Binary files a/public/media-src/technology/img/_26.png and /dev/null differ diff --git a/public/media-src/technology/img/_27.png b/public/media-src/technology/img/_27.png deleted file mode 100755 index 7fb1f77ed..000000000 Binary files a/public/media-src/technology/img/_27.png and /dev/null differ diff --git a/public/media-src/technology/img/_28.png b/public/media-src/technology/img/_28.png deleted file mode 100755 index e5b156444..000000000 Binary files a/public/media-src/technology/img/_28.png and /dev/null differ diff --git a/public/media-src/technology/img/_29.png b/public/media-src/technology/img/_29.png deleted file mode 100755 index 1a45b7dbe..000000000 Binary files a/public/media-src/technology/img/_29.png and /dev/null differ diff --git a/public/media-src/technology/img/antispyinvest.png b/public/media-src/technology/img/antispyinvest.png deleted file mode 100755 index 92f8ae403..000000000 Binary files a/public/media-src/technology/img/antispyinvest.png and /dev/null differ diff --git a/public/media-src/technology/img/basequantity.png b/public/media-src/technology/img/basequantity.png deleted file mode 100755 index 89b47015b..000000000 Binary files a/public/media-src/technology/img/basequantity.png and /dev/null differ diff --git a/public/media-src/technology/img/colonization.png b/public/media-src/technology/img/colonization.png deleted file mode 100755 index 9c3f06016..000000000 Binary files a/public/media-src/technology/img/colonization.png and /dev/null differ diff --git a/public/media-src/technology/img/commanderinvest.png b/public/media-src/technology/img/commanderinvest.png deleted file mode 100755 index 5d72d2956..000000000 Binary files a/public/media-src/technology/img/commanderinvest.png and /dev/null differ diff --git a/public/media-src/technology/img/commercialincome.png b/public/media-src/technology/img/commercialincome.png deleted file mode 100755 index 5d5806125..000000000 Binary files a/public/media-src/technology/img/commercialincome.png and /dev/null differ diff --git a/public/media-src/technology/img/complatunblock.png b/public/media-src/technology/img/complatunblock.png deleted file mode 100644 index 2834e4f91..000000000 Binary files a/public/media-src/technology/img/complatunblock.png and /dev/null differ diff --git a/public/media-src/technology/img/conquest.png b/public/media-src/technology/img/conquest.png deleted file mode 100755 index 6b0ca86c3..000000000 Binary files a/public/media-src/technology/img/conquest.png and /dev/null differ diff --git a/public/media-src/technology/img/corvetteattack.png b/public/media-src/technology/img/corvetteattack.png deleted file mode 100755 index 992f69f88..000000000 Binary files a/public/media-src/technology/img/corvetteattack.png and /dev/null differ diff --git a/public/media-src/technology/img/corvettedefense.png b/public/media-src/technology/img/corvettedefense.png deleted file mode 100755 index 1e23940f1..000000000 Binary files a/public/media-src/technology/img/corvettedefense.png and /dev/null differ diff --git a/public/media-src/technology/img/corvettespeed.png b/public/media-src/technology/img/corvettespeed.png deleted file mode 100755 index 198121786..000000000 Binary files a/public/media-src/technology/img/corvettespeed.png and /dev/null differ diff --git a/public/media-src/technology/img/destroyerattack.png b/public/media-src/technology/img/destroyerattack.png deleted file mode 100755 index 736be3020..000000000 Binary files a/public/media-src/technology/img/destroyerattack.png and /dev/null differ diff --git a/public/media-src/technology/img/destroyerdefense.png b/public/media-src/technology/img/destroyerdefense.png deleted file mode 100755 index 7ccbadc4a..000000000 Binary files a/public/media-src/technology/img/destroyerdefense.png and /dev/null differ diff --git a/public/media-src/technology/img/destroyerspeed.png b/public/media-src/technology/img/destroyerspeed.png deleted file mode 100755 index 238bee384..000000000 Binary files a/public/media-src/technology/img/destroyerspeed.png and /dev/null differ diff --git a/public/media-src/technology/img/dock1speed.png b/public/media-src/technology/img/dock1speed.png deleted file mode 100755 index 12ec89e27..000000000 Binary files a/public/media-src/technology/img/dock1speed.png and /dev/null differ diff --git a/public/media-src/technology/img/dock2speed.png b/public/media-src/technology/img/dock2speed.png deleted file mode 100755 index b16076097..000000000 Binary files a/public/media-src/technology/img/dock2speed.png and /dev/null differ diff --git a/public/media-src/technology/img/dock2unblock.png b/public/media-src/technology/img/dock2unblock.png deleted file mode 100755 index 500967ec6..000000000 Binary files a/public/media-src/technology/img/dock2unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/dock3speed.png b/public/media-src/technology/img/dock3speed.png deleted file mode 100755 index 2caf25c89..000000000 Binary files a/public/media-src/technology/img/dock3speed.png and /dev/null differ diff --git a/public/media-src/technology/img/dock3unblock.png b/public/media-src/technology/img/dock3unblock.png deleted file mode 100755 index d95b3487b..000000000 Binary files a/public/media-src/technology/img/dock3unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/fighterattack.png b/public/media-src/technology/img/fighterattack.png deleted file mode 100755 index 4655962c8..000000000 Binary files a/public/media-src/technology/img/fighterattack.png and /dev/null differ diff --git a/public/media-src/technology/img/fighterdefense.png b/public/media-src/technology/img/fighterdefense.png deleted file mode 100755 index ef1fd5bbc..000000000 Binary files a/public/media-src/technology/img/fighterdefense.png and /dev/null differ diff --git a/public/media-src/technology/img/fighterspeed.png b/public/media-src/technology/img/fighterspeed.png deleted file mode 100755 index ca4f101f4..000000000 Binary files a/public/media-src/technology/img/fighterspeed.png and /dev/null differ diff --git a/public/media-src/technology/img/frigateattack.png b/public/media-src/technology/img/frigateattack.png deleted file mode 100755 index 90a7a77ac..000000000 Binary files a/public/media-src/technology/img/frigateattack.png and /dev/null differ diff --git a/public/media-src/technology/img/frigatedefense.png b/public/media-src/technology/img/frigatedefense.png deleted file mode 100755 index 110dc5b08..000000000 Binary files a/public/media-src/technology/img/frigatedefense.png and /dev/null differ diff --git a/public/media-src/technology/img/frigatespeed.png b/public/media-src/technology/img/frigatespeed.png deleted file mode 100755 index c34ca2014..000000000 Binary files a/public/media-src/technology/img/frigatespeed.png and /dev/null differ diff --git a/public/media-src/technology/img/generatorspeed.png b/public/media-src/technology/img/generatorspeed.png deleted file mode 100755 index eea0d71ed..000000000 Binary files a/public/media-src/technology/img/generatorspeed.png and /dev/null differ diff --git a/public/media-src/technology/img/generatorspeed2.png b/public/media-src/technology/img/generatorspeed2.png deleted file mode 100755 index eab2256e9..000000000 Binary files a/public/media-src/technology/img/generatorspeed2.png and /dev/null differ diff --git a/public/media-src/technology/img/gravitmodule.png b/public/media-src/technology/img/gravitmodule.png deleted file mode 100755 index 770b2ff8e..000000000 Binary files a/public/media-src/technology/img/gravitmodule.png and /dev/null differ diff --git a/public/media-src/technology/img/gravitmoduleunblock.png b/public/media-src/technology/img/gravitmoduleunblock.png deleted file mode 100755 index 757dda838..000000000 Binary files a/public/media-src/technology/img/gravitmoduleunblock.png and /dev/null differ diff --git a/public/media-src/technology/img/populationtax.png b/public/media-src/technology/img/populationtax.png deleted file mode 100755 index 02c98e2e6..000000000 Binary files a/public/media-src/technology/img/populationtax.png and /dev/null differ diff --git a/public/media-src/technology/img/recyclingunblock.png b/public/media-src/technology/img/recyclingunblock.png deleted file mode 100644 index eb4578cb0..000000000 Binary files a/public/media-src/technology/img/recyclingunblock.png and /dev/null differ diff --git a/public/media-src/technology/img/refineryrefining.png b/public/media-src/technology/img/refineryrefining.png deleted file mode 100755 index 1d31e89bb..000000000 Binary files a/public/media-src/technology/img/refineryrefining.png and /dev/null differ diff --git a/public/media-src/technology/img/refinerystorage.png b/public/media-src/technology/img/refinerystorage.png deleted file mode 100755 index 2b250da19..000000000 Binary files a/public/media-src/technology/img/refinerystorage.png and /dev/null differ diff --git a/public/media-src/technology/img/ship0unblock.png b/public/media-src/technology/img/ship0unblock.png deleted file mode 100755 index 9ded3d8d6..000000000 Binary files a/public/media-src/technology/img/ship0unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship10unblock.png b/public/media-src/technology/img/ship10unblock.png deleted file mode 100755 index 59d64fa7d..000000000 Binary files a/public/media-src/technology/img/ship10unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship11unblock.png b/public/media-src/technology/img/ship11unblock.png deleted file mode 100755 index b09afe81c..000000000 Binary files a/public/media-src/technology/img/ship11unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship1unblock.png b/public/media-src/technology/img/ship1unblock.png deleted file mode 100755 index 5fbc39452..000000000 Binary files a/public/media-src/technology/img/ship1unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship2unblock.png b/public/media-src/technology/img/ship2unblock.png deleted file mode 100755 index 3b6c61792..000000000 Binary files a/public/media-src/technology/img/ship2unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship3unblock.png b/public/media-src/technology/img/ship3unblock.png deleted file mode 100755 index 23f9561e2..000000000 Binary files a/public/media-src/technology/img/ship3unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship4unblock.png b/public/media-src/technology/img/ship4unblock.png deleted file mode 100755 index 16dd218e0..000000000 Binary files a/public/media-src/technology/img/ship4unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship5unblock.png b/public/media-src/technology/img/ship5unblock.png deleted file mode 100755 index 8decc7238..000000000 Binary files a/public/media-src/technology/img/ship5unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship6unblock.png b/public/media-src/technology/img/ship6unblock.png deleted file mode 100755 index 33f400362..000000000 Binary files a/public/media-src/technology/img/ship6unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship7unblock.png b/public/media-src/technology/img/ship7unblock.png deleted file mode 100755 index 3fc796038..000000000 Binary files a/public/media-src/technology/img/ship7unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship8unblock.png b/public/media-src/technology/img/ship8unblock.png deleted file mode 100755 index bcf6b2bcb..000000000 Binary files a/public/media-src/technology/img/ship8unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/ship9unblock.png b/public/media-src/technology/img/ship9unblock.png deleted file mode 100755 index 624ffea86..000000000 Binary files a/public/media-src/technology/img/ship9unblock.png and /dev/null differ diff --git a/public/media-src/technology/img/spaceshipscontainer.png b/public/media-src/technology/img/spaceshipscontainer.png deleted file mode 100755 index 2a8f6e004..000000000 Binary files a/public/media-src/technology/img/spaceshipscontainer.png and /dev/null differ diff --git a/public/media-src/technology/img/spaceshipsspeed.png b/public/media-src/technology/img/spaceshipsspeed.png deleted file mode 100755 index f53029c47..000000000 Binary files a/public/media-src/technology/img/spaceshipsspeed.png and /dev/null differ diff --git a/public/media-src/technology/img/spatioportunblock.png b/public/media-src/technology/img/spatioportunblock.png deleted file mode 100755 index bf25bcf8c..000000000 Binary files a/public/media-src/technology/img/spatioportunblock.png and /dev/null differ diff --git a/public/media-src/technology/img/technospherespeed.png b/public/media-src/technology/img/technospherespeed.png deleted file mode 100755 index e1a3f291d..000000000 Binary files a/public/media-src/technology/img/technospherespeed.png and /dev/null differ diff --git a/public/media-src/technology/img/uniinvest.png b/public/media-src/technology/img/uniinvest.png deleted file mode 100755 index b6eed5e24..000000000 Binary files a/public/media-src/technology/img/uniinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/_infomaticinvest.png b/public/media-src/technology/picto/_infomaticinvest.png deleted file mode 100755 index b9b5e334f..000000000 Binary files a/public/media-src/technology/picto/_infomaticinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/_lifeinvest.png b/public/media-src/technology/picto/_lifeinvest.png deleted file mode 100755 index 19962ea29..000000000 Binary files a/public/media-src/technology/picto/_lifeinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/_naturalinvest.png b/public/media-src/technology/picto/_naturalinvest.png deleted file mode 100755 index e2dd2b2d4..000000000 Binary files a/public/media-src/technology/picto/_naturalinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/_socialinvest.png b/public/media-src/technology/picto/_socialinvest.png deleted file mode 100755 index 9a880a116..000000000 Binary files a/public/media-src/technology/picto/_socialinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/antispyinvest.png b/public/media-src/technology/picto/antispyinvest.png deleted file mode 100755 index 8c00bb94c..000000000 Binary files a/public/media-src/technology/picto/antispyinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/basequantity.png b/public/media-src/technology/picto/basequantity.png deleted file mode 100755 index 15f1e7ad1..000000000 Binary files a/public/media-src/technology/picto/basequantity.png and /dev/null differ diff --git a/public/media-src/technology/picto/colonization.png b/public/media-src/technology/picto/colonization.png deleted file mode 100755 index 2dda3a5eb..000000000 Binary files a/public/media-src/technology/picto/colonization.png and /dev/null differ diff --git a/public/media-src/technology/picto/commanderinvest.png b/public/media-src/technology/picto/commanderinvest.png deleted file mode 100755 index d24f2617b..000000000 Binary files a/public/media-src/technology/picto/commanderinvest.png and /dev/null differ diff --git a/public/media-src/technology/picto/commercialincome.png b/public/media-src/technology/picto/commercialincome.png deleted file mode 100755 index 97d3b02e7..000000000 Binary files a/public/media-src/technology/picto/commercialincome.png and /dev/null differ diff --git a/public/media-src/technology/picto/complatunblock.png b/public/media-src/technology/picto/complatunblock.png deleted file mode 100644 index bedb2d1b5..000000000 Binary files a/public/media-src/technology/picto/complatunblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/conquest.png b/public/media-src/technology/picto/conquest.png deleted file mode 100755 index de687c08c..000000000 Binary files a/public/media-src/technology/picto/conquest.png and /dev/null differ diff --git a/public/media-src/technology/picto/corvetteattack.png b/public/media-src/technology/picto/corvetteattack.png deleted file mode 100755 index 4366cdca1..000000000 Binary files a/public/media-src/technology/picto/corvetteattack.png and /dev/null differ diff --git a/public/media-src/technology/picto/corvettedefense.png b/public/media-src/technology/picto/corvettedefense.png deleted file mode 100755 index 68da7776e..000000000 Binary files a/public/media-src/technology/picto/corvettedefense.png and /dev/null differ diff --git a/public/media-src/technology/picto/corvettespeed.png b/public/media-src/technology/picto/corvettespeed.png deleted file mode 100755 index d24c4f2bf..000000000 Binary files a/public/media-src/technology/picto/corvettespeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/destroyerattack.png b/public/media-src/technology/picto/destroyerattack.png deleted file mode 100755 index c586d2e71..000000000 Binary files a/public/media-src/technology/picto/destroyerattack.png and /dev/null differ diff --git a/public/media-src/technology/picto/destroyerdefense.png b/public/media-src/technology/picto/destroyerdefense.png deleted file mode 100755 index 122d29a6c..000000000 Binary files a/public/media-src/technology/picto/destroyerdefense.png and /dev/null differ diff --git a/public/media-src/technology/picto/destroyerspeed.png b/public/media-src/technology/picto/destroyerspeed.png deleted file mode 100755 index 4dd5e66cc..000000000 Binary files a/public/media-src/technology/picto/destroyerspeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/dock1speed.png b/public/media-src/technology/picto/dock1speed.png deleted file mode 100755 index b47968c17..000000000 Binary files a/public/media-src/technology/picto/dock1speed.png and /dev/null differ diff --git a/public/media-src/technology/picto/dock2speed.png b/public/media-src/technology/picto/dock2speed.png deleted file mode 100755 index 6e227b87e..000000000 Binary files a/public/media-src/technology/picto/dock2speed.png and /dev/null differ diff --git a/public/media-src/technology/picto/dock2unblock.png b/public/media-src/technology/picto/dock2unblock.png deleted file mode 100755 index afffe8a14..000000000 Binary files a/public/media-src/technology/picto/dock2unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/dock3speed.png b/public/media-src/technology/picto/dock3speed.png deleted file mode 100755 index 7488f8973..000000000 Binary files a/public/media-src/technology/picto/dock3speed.png and /dev/null differ diff --git a/public/media-src/technology/picto/dock3unblock.png b/public/media-src/technology/picto/dock3unblock.png deleted file mode 100755 index 568cd723a..000000000 Binary files a/public/media-src/technology/picto/dock3unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/fighterattack.png b/public/media-src/technology/picto/fighterattack.png deleted file mode 100755 index 8bafe0284..000000000 Binary files a/public/media-src/technology/picto/fighterattack.png and /dev/null differ diff --git a/public/media-src/technology/picto/fighterdefense.png b/public/media-src/technology/picto/fighterdefense.png deleted file mode 100755 index a601cd214..000000000 Binary files a/public/media-src/technology/picto/fighterdefense.png and /dev/null differ diff --git a/public/media-src/technology/picto/fighterspeed.png b/public/media-src/technology/picto/fighterspeed.png deleted file mode 100755 index e1c413f46..000000000 Binary files a/public/media-src/technology/picto/fighterspeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/frigateattack.png b/public/media-src/technology/picto/frigateattack.png deleted file mode 100755 index 4c71df329..000000000 Binary files a/public/media-src/technology/picto/frigateattack.png and /dev/null differ diff --git a/public/media-src/technology/picto/frigatedefense.png b/public/media-src/technology/picto/frigatedefense.png deleted file mode 100755 index 3e70b031f..000000000 Binary files a/public/media-src/technology/picto/frigatedefense.png and /dev/null differ diff --git a/public/media-src/technology/picto/frigatespeed.png b/public/media-src/technology/picto/frigatespeed.png deleted file mode 100755 index 1026a8327..000000000 Binary files a/public/media-src/technology/picto/frigatespeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/generatorspeed.png b/public/media-src/technology/picto/generatorspeed.png deleted file mode 100755 index bf90e9dce..000000000 Binary files a/public/media-src/technology/picto/generatorspeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/gravitmodule.png b/public/media-src/technology/picto/gravitmodule.png deleted file mode 100755 index eddb11a2e..000000000 Binary files a/public/media-src/technology/picto/gravitmodule.png and /dev/null differ diff --git a/public/media-src/technology/picto/gravitmoduleunblock.png b/public/media-src/technology/picto/gravitmoduleunblock.png deleted file mode 100755 index 53781a27b..000000000 Binary files a/public/media-src/technology/picto/gravitmoduleunblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/populationtax.png b/public/media-src/technology/picto/populationtax.png deleted file mode 100755 index b3550caa9..000000000 Binary files a/public/media-src/technology/picto/populationtax.png and /dev/null differ diff --git a/public/media-src/technology/picto/recyclingunblock.png b/public/media-src/technology/picto/recyclingunblock.png deleted file mode 100644 index ebe7f86a9..000000000 Binary files a/public/media-src/technology/picto/recyclingunblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/refineryrefining.png b/public/media-src/technology/picto/refineryrefining.png deleted file mode 100755 index 16fe70185..000000000 Binary files a/public/media-src/technology/picto/refineryrefining.png and /dev/null differ diff --git a/public/media-src/technology/picto/refinerystorage.png b/public/media-src/technology/picto/refinerystorage.png deleted file mode 100755 index acc347598..000000000 Binary files a/public/media-src/technology/picto/refinerystorage.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship0unblock.png b/public/media-src/technology/picto/ship0unblock.png deleted file mode 100755 index bd8be932e..000000000 Binary files a/public/media-src/technology/picto/ship0unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship10unblock.png b/public/media-src/technology/picto/ship10unblock.png deleted file mode 100755 index 113cc2b37..000000000 Binary files a/public/media-src/technology/picto/ship10unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship11unblock.png b/public/media-src/technology/picto/ship11unblock.png deleted file mode 100755 index 72c161abb..000000000 Binary files a/public/media-src/technology/picto/ship11unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship1unblock.png b/public/media-src/technology/picto/ship1unblock.png deleted file mode 100755 index 520106c8a..000000000 Binary files a/public/media-src/technology/picto/ship1unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship2unblock.png b/public/media-src/technology/picto/ship2unblock.png deleted file mode 100755 index 0af55fe49..000000000 Binary files a/public/media-src/technology/picto/ship2unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship3unblock.png b/public/media-src/technology/picto/ship3unblock.png deleted file mode 100755 index 98e659260..000000000 Binary files a/public/media-src/technology/picto/ship3unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship4unblock.png b/public/media-src/technology/picto/ship4unblock.png deleted file mode 100755 index f644f9183..000000000 Binary files a/public/media-src/technology/picto/ship4unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship5unblock.png b/public/media-src/technology/picto/ship5unblock.png deleted file mode 100755 index 1c0304485..000000000 Binary files a/public/media-src/technology/picto/ship5unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship6unblock.png b/public/media-src/technology/picto/ship6unblock.png deleted file mode 100755 index bd96bec81..000000000 Binary files a/public/media-src/technology/picto/ship6unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship7unblock.png b/public/media-src/technology/picto/ship7unblock.png deleted file mode 100755 index 93aa745f6..000000000 Binary files a/public/media-src/technology/picto/ship7unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship8unblock.png b/public/media-src/technology/picto/ship8unblock.png deleted file mode 100755 index ffb0c1bc3..000000000 Binary files a/public/media-src/technology/picto/ship8unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/ship9unblock.png b/public/media-src/technology/picto/ship9unblock.png deleted file mode 100755 index 44b1175af..000000000 Binary files a/public/media-src/technology/picto/ship9unblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/spaceshipscontainer.png b/public/media-src/technology/picto/spaceshipscontainer.png deleted file mode 100755 index 77b5edfed..000000000 Binary files a/public/media-src/technology/picto/spaceshipscontainer.png and /dev/null differ diff --git a/public/media-src/technology/picto/spaceshipsspeed.png b/public/media-src/technology/picto/spaceshipsspeed.png deleted file mode 100755 index da74d3ba8..000000000 Binary files a/public/media-src/technology/picto/spaceshipsspeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/spatioportunblock.png b/public/media-src/technology/picto/spatioportunblock.png deleted file mode 100755 index f92f2cf43..000000000 Binary files a/public/media-src/technology/picto/spatioportunblock.png and /dev/null differ diff --git a/public/media-src/technology/picto/technospherespeed.png b/public/media-src/technology/picto/technospherespeed.png deleted file mode 100755 index 2ea6ed11c..000000000 Binary files a/public/media-src/technology/picto/technospherespeed.png and /dev/null differ diff --git a/public/media-src/technology/picto/uniinvest.png b/public/media-src/technology/picto/uniinvest.png deleted file mode 100755 index ef30c9c66..000000000 Binary files a/public/media-src/technology/picto/uniinvest.png and /dev/null differ diff --git a/public/media-src/university/algorithmic.png b/public/media-src/university/algorithmic.png deleted file mode 100755 index 4c7db63f9..000000000 Binary files a/public/media-src/university/algorithmic.png and /dev/null differ diff --git a/public/media-src/university/biology.png b/public/media-src/university/biology.png deleted file mode 100755 index 3be4547bd..000000000 Binary files a/public/media-src/university/biology.png and /dev/null differ diff --git a/public/media-src/university/chemistry.png b/public/media-src/university/chemistry.png deleted file mode 100755 index b262104b6..000000000 Binary files a/public/media-src/university/chemistry.png and /dev/null differ diff --git a/public/media-src/university/communication.png b/public/media-src/university/communication.png deleted file mode 100644 index 991693645..000000000 Binary files a/public/media-src/university/communication.png and /dev/null differ diff --git a/public/media-src/university/economy.png b/public/media-src/university/economy.png deleted file mode 100755 index 9e24965f9..000000000 Binary files a/public/media-src/university/economy.png and /dev/null differ diff --git a/public/media-src/university/law.png b/public/media-src/university/law.png deleted file mode 100644 index 274c95d91..000000000 Binary files a/public/media-src/university/law.png and /dev/null differ diff --git a/public/media-src/university/mathematics.png b/public/media-src/university/mathematics.png deleted file mode 100755 index 2c2c3c3ca..000000000 Binary files a/public/media-src/university/mathematics.png and /dev/null differ diff --git a/public/media-src/university/medicine.png b/public/media-src/university/medicine.png deleted file mode 100755 index 6f6a2970c..000000000 Binary files a/public/media-src/university/medicine.png and /dev/null differ diff --git a/public/media-src/university/networks.png b/public/media-src/university/networks.png deleted file mode 100755 index 15f0a8c1c..000000000 Binary files a/public/media-src/university/networks.png and /dev/null differ diff --git a/public/media-src/university/physics.png b/public/media-src/university/physics.png deleted file mode 100755 index 6edb0b5c4..000000000 Binary files a/public/media-src/university/physics.png and /dev/null differ diff --git a/public/media-src/university/psychology.png b/public/media-src/university/psychology.png deleted file mode 100755 index bfb5341a0..000000000 Binary files a/public/media-src/university/psychology.png and /dev/null differ diff --git a/public/media-src/university/statistics.png b/public/media-src/university/statistics.png deleted file mode 100755 index b9f726592..000000000 Binary files a/public/media-src/university/statistics.png and /dev/null differ diff --git a/public/media/admin/bugtracker.png b/public/media/admin/bugtracker.png deleted file mode 100755 index 39c1b4aec..000000000 Binary files a/public/media/admin/bugtracker.png and /dev/null differ diff --git a/public/media/admin/main.png b/public/media/admin/main.png deleted file mode 100755 index d59750d33..000000000 Binary files a/public/media/admin/main.png and /dev/null differ diff --git a/public/media/admin/roadmap.png b/public/media/admin/roadmap.png deleted file mode 100755 index 0d4f745a4..000000000 Binary files a/public/media/admin/roadmap.png and /dev/null differ diff --git a/public/media/alert/antispy.png b/public/media/alert/antispy.png deleted file mode 100755 index 3cf65d0c3..000000000 Binary files a/public/media/alert/antispy.png and /dev/null differ diff --git a/public/media/alert/bug.png b/public/media/alert/bug.png deleted file mode 100755 index db03fd70a..000000000 Binary files a/public/media/alert/bug.png and /dev/null differ diff --git a/public/media/alert/credit.png b/public/media/alert/credit.png deleted file mode 100755 index 8ab5eb952..000000000 Binary files a/public/media/alert/credit.png and /dev/null differ diff --git a/public/media/alert/dock1.png b/public/media/alert/dock1.png deleted file mode 100755 index 3ef7e4125..000000000 Binary files a/public/media/alert/dock1.png and /dev/null differ diff --git a/public/media/alert/dock2.png b/public/media/alert/dock2.png deleted file mode 100755 index da775cb69..000000000 Binary files a/public/media/alert/dock2.png and /dev/null differ diff --git a/public/media/alert/error.png b/public/media/alert/error.png deleted file mode 100755 index 93a225fa9..000000000 Binary files a/public/media/alert/error.png and /dev/null differ diff --git a/public/media/alert/fight.png b/public/media/alert/fight.png deleted file mode 100755 index 3b85324cb..000000000 Binary files a/public/media/alert/fight.png and /dev/null differ diff --git a/public/media/alert/fillform.png b/public/media/alert/fillform.png deleted file mode 100755 index ec38fb89e..000000000 Binary files a/public/media/alert/fillform.png and /dev/null differ diff --git a/public/media/alert/generator.png b/public/media/alert/generator.png deleted file mode 100755 index 16f301201..000000000 Binary files a/public/media/alert/generator.png and /dev/null differ diff --git a/public/media/alert/info.png b/public/media/alert/info.png deleted file mode 100755 index d50a1f93e..000000000 Binary files a/public/media/alert/info.png and /dev/null differ diff --git a/public/media/alert/market.png b/public/media/alert/market.png deleted file mode 100755 index 0bdcc1ab8..000000000 Binary files a/public/media/alert/market.png and /dev/null differ diff --git a/public/media/alert/message.png b/public/media/alert/message.png deleted file mode 100755 index 4674c7b46..000000000 Binary files a/public/media/alert/message.png and /dev/null differ diff --git a/public/media/alert/refinery.png b/public/media/alert/refinery.png deleted file mode 100755 index 2e03d1ca5..000000000 Binary files a/public/media/alert/refinery.png and /dev/null differ diff --git a/public/media/alert/research.png b/public/media/alert/research.png deleted file mode 100755 index 4cee38c4a..000000000 Binary files a/public/media/alert/research.png and /dev/null differ diff --git a/public/media/alert/success.png b/public/media/alert/success.png deleted file mode 100755 index 74dde961b..000000000 Binary files a/public/media/alert/success.png and /dev/null differ diff --git a/public/media/alert/techno.png b/public/media/alert/techno.png deleted file mode 100755 index 6ab498fa0..000000000 Binary files a/public/media/alert/techno.png and /dev/null differ diff --git a/public/media/alert/temp.png b/public/media/alert/temp.png deleted file mode 100755 index 0f2b572c0..000000000 Binary files a/public/media/alert/temp.png and /dev/null differ diff --git a/public/media/ally/big/color1.png b/public/media/ally/big/color1.png deleted file mode 100755 index 634bba8b1..000000000 Binary files a/public/media/ally/big/color1.png and /dev/null differ diff --git a/public/media/ally/big/color10.png b/public/media/ally/big/color10.png deleted file mode 100644 index 4f0487535..000000000 Binary files a/public/media/ally/big/color10.png and /dev/null differ diff --git a/public/media/ally/big/color11.png b/public/media/ally/big/color11.png deleted file mode 100644 index 1329c671b..000000000 Binary files a/public/media/ally/big/color11.png and /dev/null differ diff --git a/public/media/ally/big/color12.png b/public/media/ally/big/color12.png deleted file mode 100644 index 35c3c786d..000000000 Binary files a/public/media/ally/big/color12.png and /dev/null differ diff --git a/public/media/ally/big/color2.png b/public/media/ally/big/color2.png deleted file mode 100755 index e1684ecc6..000000000 Binary files a/public/media/ally/big/color2.png and /dev/null differ diff --git a/public/media/ally/big/color3.png b/public/media/ally/big/color3.png deleted file mode 100755 index 6ae215c45..000000000 Binary files a/public/media/ally/big/color3.png and /dev/null differ diff --git a/public/media/ally/big/color4.png b/public/media/ally/big/color4.png deleted file mode 100755 index d0cd09a9f..000000000 Binary files a/public/media/ally/big/color4.png and /dev/null differ diff --git a/public/media/ally/big/color5.png b/public/media/ally/big/color5.png deleted file mode 100755 index c9088307b..000000000 Binary files a/public/media/ally/big/color5.png and /dev/null differ diff --git a/public/media/ally/big/color6.png b/public/media/ally/big/color6.png deleted file mode 100755 index ed0d3dc00..000000000 Binary files a/public/media/ally/big/color6.png and /dev/null differ diff --git a/public/media/ally/big/color7.png b/public/media/ally/big/color7.png deleted file mode 100755 index 669fedafb..000000000 Binary files a/public/media/ally/big/color7.png and /dev/null differ diff --git a/public/media/ally/big/color8.png b/public/media/ally/big/color8.png deleted file mode 100644 index 9fdcf7636..000000000 Binary files a/public/media/ally/big/color8.png and /dev/null differ diff --git a/public/media/ally/big/color9.png b/public/media/ally/big/color9.png deleted file mode 100644 index c9b8308ec..000000000 Binary files a/public/media/ally/big/color9.png and /dev/null differ diff --git a/public/media/asylamba.jpg b/public/media/asylamba.jpg deleted file mode 100755 index 6b862fab7..000000000 Binary files a/public/media/asylamba.jpg and /dev/null differ diff --git a/public/media/avatar/big/001-1.png b/public/media/avatar/big/001-1.png deleted file mode 100755 index 8b5b4c0ac..000000000 Binary files a/public/media/avatar/big/001-1.png and /dev/null differ diff --git a/public/media/avatar/big/001-10.png b/public/media/avatar/big/001-10.png deleted file mode 100644 index 666a2b295..000000000 Binary files a/public/media/avatar/big/001-10.png and /dev/null differ diff --git a/public/media/avatar/big/001-11.png b/public/media/avatar/big/001-11.png deleted file mode 100644 index cd22efacc..000000000 Binary files a/public/media/avatar/big/001-11.png and /dev/null differ diff --git a/public/media/avatar/big/001-12.png b/public/media/avatar/big/001-12.png deleted file mode 100644 index f932c5cec..000000000 Binary files a/public/media/avatar/big/001-12.png and /dev/null differ diff --git a/public/media/avatar/big/001-2.png b/public/media/avatar/big/001-2.png deleted file mode 100755 index e73c43256..000000000 Binary files a/public/media/avatar/big/001-2.png and /dev/null differ diff --git a/public/media/avatar/big/001-3.png b/public/media/avatar/big/001-3.png deleted file mode 100755 index f932c5cec..000000000 Binary files a/public/media/avatar/big/001-3.png and /dev/null differ diff --git a/public/media/avatar/big/001-4.png b/public/media/avatar/big/001-4.png deleted file mode 100755 index 6527f0fe5..000000000 Binary files a/public/media/avatar/big/001-4.png and /dev/null differ diff --git a/public/media/avatar/big/001-5.png b/public/media/avatar/big/001-5.png deleted file mode 100755 index d1bdb3c7f..000000000 Binary files a/public/media/avatar/big/001-5.png and /dev/null differ diff --git a/public/media/avatar/big/001-6.png b/public/media/avatar/big/001-6.png deleted file mode 100755 index c3810fd94..000000000 Binary files a/public/media/avatar/big/001-6.png and /dev/null differ diff --git a/public/media/avatar/big/001-7.png b/public/media/avatar/big/001-7.png deleted file mode 100755 index de4cd1090..000000000 Binary files a/public/media/avatar/big/001-7.png and /dev/null differ diff --git a/public/media/avatar/big/001-8.png b/public/media/avatar/big/001-8.png deleted file mode 100644 index 773d42a59..000000000 Binary files a/public/media/avatar/big/001-8.png and /dev/null differ diff --git a/public/media/avatar/big/001-9.png b/public/media/avatar/big/001-9.png deleted file mode 100644 index d1bdb3c7f..000000000 Binary files a/public/media/avatar/big/001-9.png and /dev/null differ diff --git a/public/media/avatar/big/002-1.png b/public/media/avatar/big/002-1.png deleted file mode 100755 index babea2d0a..000000000 Binary files a/public/media/avatar/big/002-1.png and /dev/null differ diff --git a/public/media/avatar/big/002-10.png b/public/media/avatar/big/002-10.png deleted file mode 100644 index a969ca5ea..000000000 Binary files a/public/media/avatar/big/002-10.png and /dev/null differ diff --git a/public/media/avatar/big/002-11.png b/public/media/avatar/big/002-11.png deleted file mode 100644 index c8e5c0ec0..000000000 Binary files a/public/media/avatar/big/002-11.png and /dev/null differ diff --git a/public/media/avatar/big/002-12.png b/public/media/avatar/big/002-12.png deleted file mode 100644 index a16c30c3c..000000000 Binary files a/public/media/avatar/big/002-12.png and /dev/null differ diff --git a/public/media/avatar/big/002-2.png b/public/media/avatar/big/002-2.png deleted file mode 100755 index f7f56bdca..000000000 Binary files a/public/media/avatar/big/002-2.png and /dev/null differ diff --git a/public/media/avatar/big/002-3.png b/public/media/avatar/big/002-3.png deleted file mode 100755 index a16c30c3c..000000000 Binary files a/public/media/avatar/big/002-3.png and /dev/null differ diff --git a/public/media/avatar/big/002-4.png b/public/media/avatar/big/002-4.png deleted file mode 100755 index 74cb00cb0..000000000 Binary files a/public/media/avatar/big/002-4.png and /dev/null differ diff --git a/public/media/avatar/big/002-5.png b/public/media/avatar/big/002-5.png deleted file mode 100755 index fe20fdaea..000000000 Binary files a/public/media/avatar/big/002-5.png and /dev/null differ diff --git a/public/media/avatar/big/002-6.png b/public/media/avatar/big/002-6.png deleted file mode 100755 index 57c433677..000000000 Binary files a/public/media/avatar/big/002-6.png and /dev/null differ diff --git a/public/media/avatar/big/002-7.png b/public/media/avatar/big/002-7.png deleted file mode 100755 index 1c20b51f8..000000000 Binary files a/public/media/avatar/big/002-7.png and /dev/null differ diff --git a/public/media/avatar/big/002-8.png b/public/media/avatar/big/002-8.png deleted file mode 100644 index 2c3d7977c..000000000 Binary files a/public/media/avatar/big/002-8.png and /dev/null differ diff --git a/public/media/avatar/big/002-9.png b/public/media/avatar/big/002-9.png deleted file mode 100644 index fe20fdaea..000000000 Binary files a/public/media/avatar/big/002-9.png and /dev/null differ diff --git a/public/media/avatar/big/003-1.png b/public/media/avatar/big/003-1.png deleted file mode 100755 index 7d7a17fba..000000000 Binary files a/public/media/avatar/big/003-1.png and /dev/null differ diff --git a/public/media/avatar/big/003-10.png b/public/media/avatar/big/003-10.png deleted file mode 100644 index 3b68646a0..000000000 Binary files a/public/media/avatar/big/003-10.png and /dev/null differ diff --git a/public/media/avatar/big/003-11.png b/public/media/avatar/big/003-11.png deleted file mode 100644 index 931655f94..000000000 Binary files a/public/media/avatar/big/003-11.png and /dev/null differ diff --git a/public/media/avatar/big/003-12.png b/public/media/avatar/big/003-12.png deleted file mode 100644 index b41b60e67..000000000 Binary files a/public/media/avatar/big/003-12.png and /dev/null differ diff --git a/public/media/avatar/big/003-2.png b/public/media/avatar/big/003-2.png deleted file mode 100755 index 5a9708d42..000000000 Binary files a/public/media/avatar/big/003-2.png and /dev/null differ diff --git a/public/media/avatar/big/003-3.png b/public/media/avatar/big/003-3.png deleted file mode 100755 index b41b60e67..000000000 Binary files a/public/media/avatar/big/003-3.png and /dev/null differ diff --git a/public/media/avatar/big/003-4.png b/public/media/avatar/big/003-4.png deleted file mode 100755 index f84fb15a0..000000000 Binary files a/public/media/avatar/big/003-4.png and /dev/null differ diff --git a/public/media/avatar/big/003-5.png b/public/media/avatar/big/003-5.png deleted file mode 100755 index dd3118b63..000000000 Binary files a/public/media/avatar/big/003-5.png and /dev/null differ diff --git a/public/media/avatar/big/003-6.png b/public/media/avatar/big/003-6.png deleted file mode 100755 index 4e7bc90c2..000000000 Binary files a/public/media/avatar/big/003-6.png and /dev/null differ diff --git a/public/media/avatar/big/003-7.png b/public/media/avatar/big/003-7.png deleted file mode 100755 index 9678f7779..000000000 Binary files a/public/media/avatar/big/003-7.png and /dev/null differ diff --git a/public/media/avatar/big/003-8.png b/public/media/avatar/big/003-8.png deleted file mode 100644 index 830857ab5..000000000 Binary files a/public/media/avatar/big/003-8.png and /dev/null differ diff --git a/public/media/avatar/big/003-9.png b/public/media/avatar/big/003-9.png deleted file mode 100644 index dd3118b63..000000000 Binary files a/public/media/avatar/big/003-9.png and /dev/null differ diff --git a/public/media/avatar/big/004-1.png b/public/media/avatar/big/004-1.png deleted file mode 100755 index 42c6609b2..000000000 Binary files a/public/media/avatar/big/004-1.png and /dev/null differ diff --git a/public/media/avatar/big/004-10.png b/public/media/avatar/big/004-10.png deleted file mode 100644 index ccb6b09e1..000000000 Binary files a/public/media/avatar/big/004-10.png and /dev/null differ diff --git a/public/media/avatar/big/004-11.png b/public/media/avatar/big/004-11.png deleted file mode 100644 index 91e77c849..000000000 Binary files a/public/media/avatar/big/004-11.png and /dev/null differ diff --git a/public/media/avatar/big/004-12.png b/public/media/avatar/big/004-12.png deleted file mode 100644 index 7d8c8a65d..000000000 Binary files a/public/media/avatar/big/004-12.png and /dev/null differ diff --git a/public/media/avatar/big/004-2.png b/public/media/avatar/big/004-2.png deleted file mode 100755 index e9ef5727c..000000000 Binary files a/public/media/avatar/big/004-2.png and /dev/null differ diff --git a/public/media/avatar/big/004-3.png b/public/media/avatar/big/004-3.png deleted file mode 100755 index 7d8c8a65d..000000000 Binary files a/public/media/avatar/big/004-3.png and /dev/null differ diff --git a/public/media/avatar/big/004-4.png b/public/media/avatar/big/004-4.png deleted file mode 100755 index 6d0bf49cf..000000000 Binary files a/public/media/avatar/big/004-4.png and /dev/null differ diff --git a/public/media/avatar/big/004-5.png b/public/media/avatar/big/004-5.png deleted file mode 100755 index 65a759f0a..000000000 Binary files a/public/media/avatar/big/004-5.png and /dev/null differ diff --git a/public/media/avatar/big/004-6.png b/public/media/avatar/big/004-6.png deleted file mode 100755 index 62b85851d..000000000 Binary files a/public/media/avatar/big/004-6.png and /dev/null differ diff --git a/public/media/avatar/big/004-7.png b/public/media/avatar/big/004-7.png deleted file mode 100755 index 3e9f0f211..000000000 Binary files a/public/media/avatar/big/004-7.png and /dev/null differ diff --git a/public/media/avatar/big/004-8.png b/public/media/avatar/big/004-8.png deleted file mode 100644 index bc28dd0f4..000000000 Binary files a/public/media/avatar/big/004-8.png and /dev/null differ diff --git a/public/media/avatar/big/004-9.png b/public/media/avatar/big/004-9.png deleted file mode 100644 index 65a759f0a..000000000 Binary files a/public/media/avatar/big/004-9.png and /dev/null differ diff --git a/public/media/avatar/big/005-1.png b/public/media/avatar/big/005-1.png deleted file mode 100755 index a05d6ce37..000000000 Binary files a/public/media/avatar/big/005-1.png and /dev/null differ diff --git a/public/media/avatar/big/005-10.png b/public/media/avatar/big/005-10.png deleted file mode 100644 index 6a53b369c..000000000 Binary files a/public/media/avatar/big/005-10.png and /dev/null differ diff --git a/public/media/avatar/big/005-11.png b/public/media/avatar/big/005-11.png deleted file mode 100644 index 602c5138e..000000000 Binary files a/public/media/avatar/big/005-11.png and /dev/null differ diff --git a/public/media/avatar/big/005-12.png b/public/media/avatar/big/005-12.png deleted file mode 100644 index a7fe9c8d3..000000000 Binary files a/public/media/avatar/big/005-12.png and /dev/null differ diff --git a/public/media/avatar/big/005-2.png b/public/media/avatar/big/005-2.png deleted file mode 100755 index 7a3742374..000000000 Binary files a/public/media/avatar/big/005-2.png and /dev/null differ diff --git a/public/media/avatar/big/005-3.png b/public/media/avatar/big/005-3.png deleted file mode 100755 index a7fe9c8d3..000000000 Binary files a/public/media/avatar/big/005-3.png and /dev/null differ diff --git a/public/media/avatar/big/005-4.png b/public/media/avatar/big/005-4.png deleted file mode 100755 index 90d5f57bd..000000000 Binary files a/public/media/avatar/big/005-4.png and /dev/null differ diff --git a/public/media/avatar/big/005-5.png b/public/media/avatar/big/005-5.png deleted file mode 100755 index 3da80575d..000000000 Binary files a/public/media/avatar/big/005-5.png and /dev/null differ diff --git a/public/media/avatar/big/005-6.png b/public/media/avatar/big/005-6.png deleted file mode 100755 index da2ef85f0..000000000 Binary files a/public/media/avatar/big/005-6.png and /dev/null differ diff --git a/public/media/avatar/big/005-7.png b/public/media/avatar/big/005-7.png deleted file mode 100755 index ac0f10c64..000000000 Binary files a/public/media/avatar/big/005-7.png and /dev/null differ diff --git a/public/media/avatar/big/005-8.png b/public/media/avatar/big/005-8.png deleted file mode 100644 index 358e6fc43..000000000 Binary files a/public/media/avatar/big/005-8.png and /dev/null differ diff --git a/public/media/avatar/big/005-9.png b/public/media/avatar/big/005-9.png deleted file mode 100644 index 3da80575d..000000000 Binary files a/public/media/avatar/big/005-9.png and /dev/null differ diff --git a/public/media/avatar/big/006-1.png b/public/media/avatar/big/006-1.png deleted file mode 100755 index e0746676f..000000000 Binary files a/public/media/avatar/big/006-1.png and /dev/null differ diff --git a/public/media/avatar/big/006-10.png b/public/media/avatar/big/006-10.png deleted file mode 100644 index 4b8e65271..000000000 Binary files a/public/media/avatar/big/006-10.png and /dev/null differ diff --git a/public/media/avatar/big/006-11.png b/public/media/avatar/big/006-11.png deleted file mode 100644 index c3c09dc56..000000000 Binary files a/public/media/avatar/big/006-11.png and /dev/null differ diff --git a/public/media/avatar/big/006-12.png b/public/media/avatar/big/006-12.png deleted file mode 100644 index 8322e31bc..000000000 Binary files a/public/media/avatar/big/006-12.png and /dev/null differ diff --git a/public/media/avatar/big/006-2.png b/public/media/avatar/big/006-2.png deleted file mode 100755 index eea57f741..000000000 Binary files a/public/media/avatar/big/006-2.png and /dev/null differ diff --git a/public/media/avatar/big/006-3.png b/public/media/avatar/big/006-3.png deleted file mode 100755 index 8322e31bc..000000000 Binary files a/public/media/avatar/big/006-3.png and /dev/null differ diff --git a/public/media/avatar/big/006-4.png b/public/media/avatar/big/006-4.png deleted file mode 100755 index 8e0fb20ed..000000000 Binary files a/public/media/avatar/big/006-4.png and /dev/null differ diff --git a/public/media/avatar/big/006-5.png b/public/media/avatar/big/006-5.png deleted file mode 100755 index 54714cc10..000000000 Binary files a/public/media/avatar/big/006-5.png and /dev/null differ diff --git a/public/media/avatar/big/006-6.png b/public/media/avatar/big/006-6.png deleted file mode 100755 index 03e9fafbe..000000000 Binary files a/public/media/avatar/big/006-6.png and /dev/null differ diff --git a/public/media/avatar/big/006-7.png b/public/media/avatar/big/006-7.png deleted file mode 100755 index 4f82b00dc..000000000 Binary files a/public/media/avatar/big/006-7.png and /dev/null differ diff --git a/public/media/avatar/big/006-8.png b/public/media/avatar/big/006-8.png deleted file mode 100644 index d2f03f1cf..000000000 Binary files a/public/media/avatar/big/006-8.png and /dev/null differ diff --git a/public/media/avatar/big/006-9.png b/public/media/avatar/big/006-9.png deleted file mode 100644 index 54714cc10..000000000 Binary files a/public/media/avatar/big/006-9.png and /dev/null differ diff --git a/public/media/avatar/big/007-1.png b/public/media/avatar/big/007-1.png deleted file mode 100755 index 3a91c050a..000000000 Binary files a/public/media/avatar/big/007-1.png and /dev/null differ diff --git a/public/media/avatar/big/007-10.png b/public/media/avatar/big/007-10.png deleted file mode 100644 index 47ba439a9..000000000 Binary files a/public/media/avatar/big/007-10.png and /dev/null differ diff --git a/public/media/avatar/big/007-11.png b/public/media/avatar/big/007-11.png deleted file mode 100644 index 27170da2a..000000000 Binary files a/public/media/avatar/big/007-11.png and /dev/null differ diff --git a/public/media/avatar/big/007-12.png b/public/media/avatar/big/007-12.png deleted file mode 100644 index 5b50b73b7..000000000 Binary files a/public/media/avatar/big/007-12.png and /dev/null differ diff --git a/public/media/avatar/big/007-2.png b/public/media/avatar/big/007-2.png deleted file mode 100755 index 86c1d2ac5..000000000 Binary files a/public/media/avatar/big/007-2.png and /dev/null differ diff --git a/public/media/avatar/big/007-3.png b/public/media/avatar/big/007-3.png deleted file mode 100755 index 5b50b73b7..000000000 Binary files a/public/media/avatar/big/007-3.png and /dev/null differ diff --git a/public/media/avatar/big/007-4.png b/public/media/avatar/big/007-4.png deleted file mode 100755 index 6b3d36451..000000000 Binary files a/public/media/avatar/big/007-4.png and /dev/null differ diff --git a/public/media/avatar/big/007-5.png b/public/media/avatar/big/007-5.png deleted file mode 100755 index 17a75d499..000000000 Binary files a/public/media/avatar/big/007-5.png and /dev/null differ diff --git a/public/media/avatar/big/007-6.png b/public/media/avatar/big/007-6.png deleted file mode 100755 index 977c0373f..000000000 Binary files a/public/media/avatar/big/007-6.png and /dev/null differ diff --git a/public/media/avatar/big/007-7.png b/public/media/avatar/big/007-7.png deleted file mode 100755 index b6a8fba42..000000000 Binary files a/public/media/avatar/big/007-7.png and /dev/null differ diff --git a/public/media/avatar/big/007-8.png b/public/media/avatar/big/007-8.png deleted file mode 100644 index ba151b976..000000000 Binary files a/public/media/avatar/big/007-8.png and /dev/null differ diff --git a/public/media/avatar/big/007-9.png b/public/media/avatar/big/007-9.png deleted file mode 100644 index 17a75d499..000000000 Binary files a/public/media/avatar/big/007-9.png and /dev/null differ diff --git a/public/media/avatar/big/008-1.png b/public/media/avatar/big/008-1.png deleted file mode 100755 index 360a834a4..000000000 Binary files a/public/media/avatar/big/008-1.png and /dev/null differ diff --git a/public/media/avatar/big/008-10.png b/public/media/avatar/big/008-10.png deleted file mode 100644 index a6ffc6fef..000000000 Binary files a/public/media/avatar/big/008-10.png and /dev/null differ diff --git a/public/media/avatar/big/008-11.png b/public/media/avatar/big/008-11.png deleted file mode 100644 index fbc46b174..000000000 Binary files a/public/media/avatar/big/008-11.png and /dev/null differ diff --git a/public/media/avatar/big/008-12.png b/public/media/avatar/big/008-12.png deleted file mode 100644 index 7ac463eee..000000000 Binary files a/public/media/avatar/big/008-12.png and /dev/null differ diff --git a/public/media/avatar/big/008-2.png b/public/media/avatar/big/008-2.png deleted file mode 100755 index 7c4892fb7..000000000 Binary files a/public/media/avatar/big/008-2.png and /dev/null differ diff --git a/public/media/avatar/big/008-3.png b/public/media/avatar/big/008-3.png deleted file mode 100755 index 7ac463eee..000000000 Binary files a/public/media/avatar/big/008-3.png and /dev/null differ diff --git a/public/media/avatar/big/008-4.png b/public/media/avatar/big/008-4.png deleted file mode 100755 index 9fe3edbf5..000000000 Binary files a/public/media/avatar/big/008-4.png and /dev/null differ diff --git a/public/media/avatar/big/008-5.png b/public/media/avatar/big/008-5.png deleted file mode 100755 index a15c5fb65..000000000 Binary files a/public/media/avatar/big/008-5.png and /dev/null differ diff --git a/public/media/avatar/big/008-6.png b/public/media/avatar/big/008-6.png deleted file mode 100755 index 3260fa474..000000000 Binary files a/public/media/avatar/big/008-6.png and /dev/null differ diff --git a/public/media/avatar/big/008-7.png b/public/media/avatar/big/008-7.png deleted file mode 100755 index 398f281fa..000000000 Binary files a/public/media/avatar/big/008-7.png and /dev/null differ diff --git a/public/media/avatar/big/008-8.png b/public/media/avatar/big/008-8.png deleted file mode 100644 index 1305d0e9e..000000000 Binary files a/public/media/avatar/big/008-8.png and /dev/null differ diff --git a/public/media/avatar/big/008-9.png b/public/media/avatar/big/008-9.png deleted file mode 100644 index a15c5fb65..000000000 Binary files a/public/media/avatar/big/008-9.png and /dev/null differ diff --git a/public/media/avatar/big/009-1.png b/public/media/avatar/big/009-1.png deleted file mode 100755 index 4a6427f88..000000000 Binary files a/public/media/avatar/big/009-1.png and /dev/null differ diff --git a/public/media/avatar/big/009-10.png b/public/media/avatar/big/009-10.png deleted file mode 100644 index 80dae2fee..000000000 Binary files a/public/media/avatar/big/009-10.png and /dev/null differ diff --git a/public/media/avatar/big/009-11.png b/public/media/avatar/big/009-11.png deleted file mode 100644 index 84f34b78c..000000000 Binary files a/public/media/avatar/big/009-11.png and /dev/null differ diff --git a/public/media/avatar/big/009-12.png b/public/media/avatar/big/009-12.png deleted file mode 100644 index 67576e3cd..000000000 Binary files a/public/media/avatar/big/009-12.png and /dev/null differ diff --git a/public/media/avatar/big/009-2.png b/public/media/avatar/big/009-2.png deleted file mode 100755 index 624e7d7ee..000000000 Binary files a/public/media/avatar/big/009-2.png and /dev/null differ diff --git a/public/media/avatar/big/009-3.png b/public/media/avatar/big/009-3.png deleted file mode 100755 index 67576e3cd..000000000 Binary files a/public/media/avatar/big/009-3.png and /dev/null differ diff --git a/public/media/avatar/big/009-4.png b/public/media/avatar/big/009-4.png deleted file mode 100755 index 1a9773f31..000000000 Binary files a/public/media/avatar/big/009-4.png and /dev/null differ diff --git a/public/media/avatar/big/009-5.png b/public/media/avatar/big/009-5.png deleted file mode 100755 index cb359f505..000000000 Binary files a/public/media/avatar/big/009-5.png and /dev/null differ diff --git a/public/media/avatar/big/009-6.png b/public/media/avatar/big/009-6.png deleted file mode 100755 index 511ddb04d..000000000 Binary files a/public/media/avatar/big/009-6.png and /dev/null differ diff --git a/public/media/avatar/big/009-7.png b/public/media/avatar/big/009-7.png deleted file mode 100755 index a3e56d5f6..000000000 Binary files a/public/media/avatar/big/009-7.png and /dev/null differ diff --git a/public/media/avatar/big/009-8.png b/public/media/avatar/big/009-8.png deleted file mode 100644 index 07ff7c118..000000000 Binary files a/public/media/avatar/big/009-8.png and /dev/null differ diff --git a/public/media/avatar/big/009-9.png b/public/media/avatar/big/009-9.png deleted file mode 100644 index cb359f505..000000000 Binary files a/public/media/avatar/big/009-9.png and /dev/null differ diff --git a/public/media/avatar/big/010-1.png b/public/media/avatar/big/010-1.png deleted file mode 100755 index 786d8f9ee..000000000 Binary files a/public/media/avatar/big/010-1.png and /dev/null differ diff --git a/public/media/avatar/big/010-10.png b/public/media/avatar/big/010-10.png deleted file mode 100644 index 94d06144e..000000000 Binary files a/public/media/avatar/big/010-10.png and /dev/null differ diff --git a/public/media/avatar/big/010-11.png b/public/media/avatar/big/010-11.png deleted file mode 100644 index b156eb92e..000000000 Binary files a/public/media/avatar/big/010-11.png and /dev/null differ diff --git a/public/media/avatar/big/010-12.png b/public/media/avatar/big/010-12.png deleted file mode 100644 index 344bcde52..000000000 Binary files a/public/media/avatar/big/010-12.png and /dev/null differ diff --git a/public/media/avatar/big/010-2.png b/public/media/avatar/big/010-2.png deleted file mode 100755 index 5bd0d774a..000000000 Binary files a/public/media/avatar/big/010-2.png and /dev/null differ diff --git a/public/media/avatar/big/010-3.png b/public/media/avatar/big/010-3.png deleted file mode 100755 index 344bcde52..000000000 Binary files a/public/media/avatar/big/010-3.png and /dev/null differ diff --git a/public/media/avatar/big/010-4.png b/public/media/avatar/big/010-4.png deleted file mode 100755 index 54b4cf4e3..000000000 Binary files a/public/media/avatar/big/010-4.png and /dev/null differ diff --git a/public/media/avatar/big/010-5.png b/public/media/avatar/big/010-5.png deleted file mode 100755 index 2f2c04f8c..000000000 Binary files a/public/media/avatar/big/010-5.png and /dev/null differ diff --git a/public/media/avatar/big/010-6.png b/public/media/avatar/big/010-6.png deleted file mode 100755 index b2e1c070e..000000000 Binary files a/public/media/avatar/big/010-6.png and /dev/null differ diff --git a/public/media/avatar/big/010-7.png b/public/media/avatar/big/010-7.png deleted file mode 100755 index 6ab9b3abd..000000000 Binary files a/public/media/avatar/big/010-7.png and /dev/null differ diff --git a/public/media/avatar/big/010-8.png b/public/media/avatar/big/010-8.png deleted file mode 100644 index f467105aa..000000000 Binary files a/public/media/avatar/big/010-8.png and /dev/null differ diff --git a/public/media/avatar/big/010-9.png b/public/media/avatar/big/010-9.png deleted file mode 100644 index 2f2c04f8c..000000000 Binary files a/public/media/avatar/big/010-9.png and /dev/null differ diff --git a/public/media/avatar/big/011-1.png b/public/media/avatar/big/011-1.png deleted file mode 100755 index ae75385db..000000000 Binary files a/public/media/avatar/big/011-1.png and /dev/null differ diff --git a/public/media/avatar/big/011-10.png b/public/media/avatar/big/011-10.png deleted file mode 100644 index 121028ffc..000000000 Binary files a/public/media/avatar/big/011-10.png and /dev/null differ diff --git a/public/media/avatar/big/011-11.png b/public/media/avatar/big/011-11.png deleted file mode 100644 index 4851c0251..000000000 Binary files a/public/media/avatar/big/011-11.png and /dev/null differ diff --git a/public/media/avatar/big/011-12.png b/public/media/avatar/big/011-12.png deleted file mode 100644 index d69881ea9..000000000 Binary files a/public/media/avatar/big/011-12.png and /dev/null differ diff --git a/public/media/avatar/big/011-2.png b/public/media/avatar/big/011-2.png deleted file mode 100755 index fb4e31e9d..000000000 Binary files a/public/media/avatar/big/011-2.png and /dev/null differ diff --git a/public/media/avatar/big/011-3.png b/public/media/avatar/big/011-3.png deleted file mode 100755 index d69881ea9..000000000 Binary files a/public/media/avatar/big/011-3.png and /dev/null differ diff --git a/public/media/avatar/big/011-4.png b/public/media/avatar/big/011-4.png deleted file mode 100755 index 6b5c6e6d2..000000000 Binary files a/public/media/avatar/big/011-4.png and /dev/null differ diff --git a/public/media/avatar/big/011-5.png b/public/media/avatar/big/011-5.png deleted file mode 100755 index 2726d8634..000000000 Binary files a/public/media/avatar/big/011-5.png and /dev/null differ diff --git a/public/media/avatar/big/011-6.png b/public/media/avatar/big/011-6.png deleted file mode 100755 index 2605869f4..000000000 Binary files a/public/media/avatar/big/011-6.png and /dev/null differ diff --git a/public/media/avatar/big/011-7.png b/public/media/avatar/big/011-7.png deleted file mode 100755 index f2f688d37..000000000 Binary files a/public/media/avatar/big/011-7.png and /dev/null differ diff --git a/public/media/avatar/big/011-8.png b/public/media/avatar/big/011-8.png deleted file mode 100644 index c4ab3b0f0..000000000 Binary files a/public/media/avatar/big/011-8.png and /dev/null differ diff --git a/public/media/avatar/big/011-9.png b/public/media/avatar/big/011-9.png deleted file mode 100644 index 2726d8634..000000000 Binary files a/public/media/avatar/big/011-9.png and /dev/null differ diff --git a/public/media/avatar/big/012-1.png b/public/media/avatar/big/012-1.png deleted file mode 100755 index 80d903abb..000000000 Binary files a/public/media/avatar/big/012-1.png and /dev/null differ diff --git a/public/media/avatar/big/012-10.png b/public/media/avatar/big/012-10.png deleted file mode 100644 index b2994d1a8..000000000 Binary files a/public/media/avatar/big/012-10.png and /dev/null differ diff --git a/public/media/avatar/big/012-11.png b/public/media/avatar/big/012-11.png deleted file mode 100644 index c0e10052d..000000000 Binary files a/public/media/avatar/big/012-11.png and /dev/null differ diff --git a/public/media/avatar/big/012-12.png b/public/media/avatar/big/012-12.png deleted file mode 100644 index b9e94b011..000000000 Binary files a/public/media/avatar/big/012-12.png and /dev/null differ diff --git a/public/media/avatar/big/012-2.png b/public/media/avatar/big/012-2.png deleted file mode 100755 index 7d7f1040e..000000000 Binary files a/public/media/avatar/big/012-2.png and /dev/null differ diff --git a/public/media/avatar/big/012-3.png b/public/media/avatar/big/012-3.png deleted file mode 100755 index b9e94b011..000000000 Binary files a/public/media/avatar/big/012-3.png and /dev/null differ diff --git a/public/media/avatar/big/012-4.png b/public/media/avatar/big/012-4.png deleted file mode 100755 index 6afa4b466..000000000 Binary files a/public/media/avatar/big/012-4.png and /dev/null differ diff --git a/public/media/avatar/big/012-5.png b/public/media/avatar/big/012-5.png deleted file mode 100755 index 3f1562d22..000000000 Binary files a/public/media/avatar/big/012-5.png and /dev/null differ diff --git a/public/media/avatar/big/012-6.png b/public/media/avatar/big/012-6.png deleted file mode 100755 index 274f068c4..000000000 Binary files a/public/media/avatar/big/012-6.png and /dev/null differ diff --git a/public/media/avatar/big/012-7.png b/public/media/avatar/big/012-7.png deleted file mode 100755 index d55332aea..000000000 Binary files a/public/media/avatar/big/012-7.png and /dev/null differ diff --git a/public/media/avatar/big/012-8.png b/public/media/avatar/big/012-8.png deleted file mode 100644 index 01bb25075..000000000 Binary files a/public/media/avatar/big/012-8.png and /dev/null differ diff --git a/public/media/avatar/big/012-9.png b/public/media/avatar/big/012-9.png deleted file mode 100644 index 3f1562d22..000000000 Binary files a/public/media/avatar/big/012-9.png and /dev/null differ diff --git a/public/media/avatar/big/013-1.png b/public/media/avatar/big/013-1.png deleted file mode 100755 index 498861c5c..000000000 Binary files a/public/media/avatar/big/013-1.png and /dev/null differ diff --git a/public/media/avatar/big/013-10.png b/public/media/avatar/big/013-10.png deleted file mode 100644 index fcebd61c0..000000000 Binary files a/public/media/avatar/big/013-10.png and /dev/null differ diff --git a/public/media/avatar/big/013-11.png b/public/media/avatar/big/013-11.png deleted file mode 100644 index 75f1b3baf..000000000 Binary files a/public/media/avatar/big/013-11.png and /dev/null differ diff --git a/public/media/avatar/big/013-12.png b/public/media/avatar/big/013-12.png deleted file mode 100644 index 1265505c6..000000000 Binary files a/public/media/avatar/big/013-12.png and /dev/null differ diff --git a/public/media/avatar/big/013-2.png b/public/media/avatar/big/013-2.png deleted file mode 100755 index 0c534f2f7..000000000 Binary files a/public/media/avatar/big/013-2.png and /dev/null differ diff --git a/public/media/avatar/big/013-3.png b/public/media/avatar/big/013-3.png deleted file mode 100755 index 1265505c6..000000000 Binary files a/public/media/avatar/big/013-3.png and /dev/null differ diff --git a/public/media/avatar/big/013-4.png b/public/media/avatar/big/013-4.png deleted file mode 100755 index 344af9617..000000000 Binary files a/public/media/avatar/big/013-4.png and /dev/null differ diff --git a/public/media/avatar/big/013-5.png b/public/media/avatar/big/013-5.png deleted file mode 100755 index 75a4123e2..000000000 Binary files a/public/media/avatar/big/013-5.png and /dev/null differ diff --git a/public/media/avatar/big/013-6.png b/public/media/avatar/big/013-6.png deleted file mode 100755 index 359d15634..000000000 Binary files a/public/media/avatar/big/013-6.png and /dev/null differ diff --git a/public/media/avatar/big/013-7.png b/public/media/avatar/big/013-7.png deleted file mode 100755 index d22a05822..000000000 Binary files a/public/media/avatar/big/013-7.png and /dev/null differ diff --git a/public/media/avatar/big/013-8.png b/public/media/avatar/big/013-8.png deleted file mode 100644 index 4c517cf48..000000000 Binary files a/public/media/avatar/big/013-8.png and /dev/null differ diff --git a/public/media/avatar/big/013-9.png b/public/media/avatar/big/013-9.png deleted file mode 100644 index 75a4123e2..000000000 Binary files a/public/media/avatar/big/013-9.png and /dev/null differ diff --git a/public/media/avatar/big/014-1.png b/public/media/avatar/big/014-1.png deleted file mode 100755 index b4926e2bc..000000000 Binary files a/public/media/avatar/big/014-1.png and /dev/null differ diff --git a/public/media/avatar/big/014-10.png b/public/media/avatar/big/014-10.png deleted file mode 100644 index c1dd63e38..000000000 Binary files a/public/media/avatar/big/014-10.png and /dev/null differ diff --git a/public/media/avatar/big/014-11.png b/public/media/avatar/big/014-11.png deleted file mode 100644 index 16edef1ff..000000000 Binary files a/public/media/avatar/big/014-11.png and /dev/null differ diff --git a/public/media/avatar/big/014-12.png b/public/media/avatar/big/014-12.png deleted file mode 100644 index 829a0e647..000000000 Binary files a/public/media/avatar/big/014-12.png and /dev/null differ diff --git a/public/media/avatar/big/014-2.png b/public/media/avatar/big/014-2.png deleted file mode 100755 index d9d5906a5..000000000 Binary files a/public/media/avatar/big/014-2.png and /dev/null differ diff --git a/public/media/avatar/big/014-3.png b/public/media/avatar/big/014-3.png deleted file mode 100755 index 829a0e647..000000000 Binary files a/public/media/avatar/big/014-3.png and /dev/null differ diff --git a/public/media/avatar/big/014-4.png b/public/media/avatar/big/014-4.png deleted file mode 100755 index e05b09e01..000000000 Binary files a/public/media/avatar/big/014-4.png and /dev/null differ diff --git a/public/media/avatar/big/014-5.png b/public/media/avatar/big/014-5.png deleted file mode 100755 index 0d4f374ca..000000000 Binary files a/public/media/avatar/big/014-5.png and /dev/null differ diff --git a/public/media/avatar/big/014-6.png b/public/media/avatar/big/014-6.png deleted file mode 100755 index b64690a5d..000000000 Binary files a/public/media/avatar/big/014-6.png and /dev/null differ diff --git a/public/media/avatar/big/014-7.png b/public/media/avatar/big/014-7.png deleted file mode 100755 index 0d48633c6..000000000 Binary files a/public/media/avatar/big/014-7.png and /dev/null differ diff --git a/public/media/avatar/big/014-8.png b/public/media/avatar/big/014-8.png deleted file mode 100644 index a31cf8f64..000000000 Binary files a/public/media/avatar/big/014-8.png and /dev/null differ diff --git a/public/media/avatar/big/014-9.png b/public/media/avatar/big/014-9.png deleted file mode 100644 index 0d4f374ca..000000000 Binary files a/public/media/avatar/big/014-9.png and /dev/null differ diff --git a/public/media/avatar/big/015-1.png b/public/media/avatar/big/015-1.png deleted file mode 100755 index 56a2478e3..000000000 Binary files a/public/media/avatar/big/015-1.png and /dev/null differ diff --git a/public/media/avatar/big/015-10.png b/public/media/avatar/big/015-10.png deleted file mode 100644 index 3b6cbcd81..000000000 Binary files a/public/media/avatar/big/015-10.png and /dev/null differ diff --git a/public/media/avatar/big/015-11.png b/public/media/avatar/big/015-11.png deleted file mode 100644 index 938520706..000000000 Binary files a/public/media/avatar/big/015-11.png and /dev/null differ diff --git a/public/media/avatar/big/015-12.png b/public/media/avatar/big/015-12.png deleted file mode 100644 index 3128f1067..000000000 Binary files a/public/media/avatar/big/015-12.png and /dev/null differ diff --git a/public/media/avatar/big/015-2.png b/public/media/avatar/big/015-2.png deleted file mode 100755 index 440f83be8..000000000 Binary files a/public/media/avatar/big/015-2.png and /dev/null differ diff --git a/public/media/avatar/big/015-3.png b/public/media/avatar/big/015-3.png deleted file mode 100755 index 3128f1067..000000000 Binary files a/public/media/avatar/big/015-3.png and /dev/null differ diff --git a/public/media/avatar/big/015-4.png b/public/media/avatar/big/015-4.png deleted file mode 100755 index 32ca94a6f..000000000 Binary files a/public/media/avatar/big/015-4.png and /dev/null differ diff --git a/public/media/avatar/big/015-5.png b/public/media/avatar/big/015-5.png deleted file mode 100755 index b1794a38c..000000000 Binary files a/public/media/avatar/big/015-5.png and /dev/null differ diff --git a/public/media/avatar/big/015-6.png b/public/media/avatar/big/015-6.png deleted file mode 100755 index fbc88ab94..000000000 Binary files a/public/media/avatar/big/015-6.png and /dev/null differ diff --git a/public/media/avatar/big/015-7.png b/public/media/avatar/big/015-7.png deleted file mode 100755 index 81171cb25..000000000 Binary files a/public/media/avatar/big/015-7.png and /dev/null differ diff --git a/public/media/avatar/big/015-8.png b/public/media/avatar/big/015-8.png deleted file mode 100644 index a0eb16501..000000000 Binary files a/public/media/avatar/big/015-8.png and /dev/null differ diff --git a/public/media/avatar/big/015-9.png b/public/media/avatar/big/015-9.png deleted file mode 100644 index b1794a38c..000000000 Binary files a/public/media/avatar/big/015-9.png and /dev/null differ diff --git a/public/media/avatar/big/016-1.png b/public/media/avatar/big/016-1.png deleted file mode 100755 index bb16442c9..000000000 Binary files a/public/media/avatar/big/016-1.png and /dev/null differ diff --git a/public/media/avatar/big/016-10.png b/public/media/avatar/big/016-10.png deleted file mode 100644 index 4118cb8e2..000000000 Binary files a/public/media/avatar/big/016-10.png and /dev/null differ diff --git a/public/media/avatar/big/016-11.png b/public/media/avatar/big/016-11.png deleted file mode 100644 index d88ddc664..000000000 Binary files a/public/media/avatar/big/016-11.png and /dev/null differ diff --git a/public/media/avatar/big/016-12.png b/public/media/avatar/big/016-12.png deleted file mode 100644 index 77cff9d48..000000000 Binary files a/public/media/avatar/big/016-12.png and /dev/null differ diff --git a/public/media/avatar/big/016-2.png b/public/media/avatar/big/016-2.png deleted file mode 100755 index 4f2449ff6..000000000 Binary files a/public/media/avatar/big/016-2.png and /dev/null differ diff --git a/public/media/avatar/big/016-3.png b/public/media/avatar/big/016-3.png deleted file mode 100755 index 77cff9d48..000000000 Binary files a/public/media/avatar/big/016-3.png and /dev/null differ diff --git a/public/media/avatar/big/016-4.png b/public/media/avatar/big/016-4.png deleted file mode 100755 index 40a349867..000000000 Binary files a/public/media/avatar/big/016-4.png and /dev/null differ diff --git a/public/media/avatar/big/016-5.png b/public/media/avatar/big/016-5.png deleted file mode 100755 index 2140717a6..000000000 Binary files a/public/media/avatar/big/016-5.png and /dev/null differ diff --git a/public/media/avatar/big/016-6.png b/public/media/avatar/big/016-6.png deleted file mode 100755 index b6edeeb8d..000000000 Binary files a/public/media/avatar/big/016-6.png and /dev/null differ diff --git a/public/media/avatar/big/016-7.png b/public/media/avatar/big/016-7.png deleted file mode 100755 index 4ddc1ecce..000000000 Binary files a/public/media/avatar/big/016-7.png and /dev/null differ diff --git a/public/media/avatar/big/016-8.png b/public/media/avatar/big/016-8.png deleted file mode 100644 index 0c2eaf883..000000000 Binary files a/public/media/avatar/big/016-8.png and /dev/null differ diff --git a/public/media/avatar/big/016-9.png b/public/media/avatar/big/016-9.png deleted file mode 100644 index 2140717a6..000000000 Binary files a/public/media/avatar/big/016-9.png and /dev/null differ diff --git a/public/media/avatar/big/017-1.png b/public/media/avatar/big/017-1.png deleted file mode 100755 index f3c23370e..000000000 Binary files a/public/media/avatar/big/017-1.png and /dev/null differ diff --git a/public/media/avatar/big/017-10.png b/public/media/avatar/big/017-10.png deleted file mode 100644 index c42e0375f..000000000 Binary files a/public/media/avatar/big/017-10.png and /dev/null differ diff --git a/public/media/avatar/big/017-11.png b/public/media/avatar/big/017-11.png deleted file mode 100644 index cf25faa0a..000000000 Binary files a/public/media/avatar/big/017-11.png and /dev/null differ diff --git a/public/media/avatar/big/017-12.png b/public/media/avatar/big/017-12.png deleted file mode 100644 index a79f6032d..000000000 Binary files a/public/media/avatar/big/017-12.png and /dev/null differ diff --git a/public/media/avatar/big/017-2.png b/public/media/avatar/big/017-2.png deleted file mode 100755 index 1a1ed457c..000000000 Binary files a/public/media/avatar/big/017-2.png and /dev/null differ diff --git a/public/media/avatar/big/017-3.png b/public/media/avatar/big/017-3.png deleted file mode 100755 index a79f6032d..000000000 Binary files a/public/media/avatar/big/017-3.png and /dev/null differ diff --git a/public/media/avatar/big/017-4.png b/public/media/avatar/big/017-4.png deleted file mode 100755 index 31c99c601..000000000 Binary files a/public/media/avatar/big/017-4.png and /dev/null differ diff --git a/public/media/avatar/big/017-5.png b/public/media/avatar/big/017-5.png deleted file mode 100755 index a107f56f9..000000000 Binary files a/public/media/avatar/big/017-5.png and /dev/null differ diff --git a/public/media/avatar/big/017-6.png b/public/media/avatar/big/017-6.png deleted file mode 100755 index d27cfb630..000000000 Binary files a/public/media/avatar/big/017-6.png and /dev/null differ diff --git a/public/media/avatar/big/017-7.png b/public/media/avatar/big/017-7.png deleted file mode 100755 index a2354665f..000000000 Binary files a/public/media/avatar/big/017-7.png and /dev/null differ diff --git a/public/media/avatar/big/017-8.png b/public/media/avatar/big/017-8.png deleted file mode 100644 index 760644c81..000000000 Binary files a/public/media/avatar/big/017-8.png and /dev/null differ diff --git a/public/media/avatar/big/017-9.png b/public/media/avatar/big/017-9.png deleted file mode 100644 index a107f56f9..000000000 Binary files a/public/media/avatar/big/017-9.png and /dev/null differ diff --git a/public/media/avatar/big/018-1.png b/public/media/avatar/big/018-1.png deleted file mode 100755 index ec2216968..000000000 Binary files a/public/media/avatar/big/018-1.png and /dev/null differ diff --git a/public/media/avatar/big/018-10.png b/public/media/avatar/big/018-10.png deleted file mode 100644 index a538cb965..000000000 Binary files a/public/media/avatar/big/018-10.png and /dev/null differ diff --git a/public/media/avatar/big/018-11.png b/public/media/avatar/big/018-11.png deleted file mode 100644 index 8a3ac51ac..000000000 Binary files a/public/media/avatar/big/018-11.png and /dev/null differ diff --git a/public/media/avatar/big/018-12.png b/public/media/avatar/big/018-12.png deleted file mode 100644 index 57b9beb54..000000000 Binary files a/public/media/avatar/big/018-12.png and /dev/null differ diff --git a/public/media/avatar/big/018-2.png b/public/media/avatar/big/018-2.png deleted file mode 100755 index b94332f7a..000000000 Binary files a/public/media/avatar/big/018-2.png and /dev/null differ diff --git a/public/media/avatar/big/018-3.png b/public/media/avatar/big/018-3.png deleted file mode 100755 index 57b9beb54..000000000 Binary files a/public/media/avatar/big/018-3.png and /dev/null differ diff --git a/public/media/avatar/big/018-4.png b/public/media/avatar/big/018-4.png deleted file mode 100755 index 52be6cd2d..000000000 Binary files a/public/media/avatar/big/018-4.png and /dev/null differ diff --git a/public/media/avatar/big/018-5.png b/public/media/avatar/big/018-5.png deleted file mode 100755 index cc3de2906..000000000 Binary files a/public/media/avatar/big/018-5.png and /dev/null differ diff --git a/public/media/avatar/big/018-6.png b/public/media/avatar/big/018-6.png deleted file mode 100755 index 8d1adc0ba..000000000 Binary files a/public/media/avatar/big/018-6.png and /dev/null differ diff --git a/public/media/avatar/big/018-7.png b/public/media/avatar/big/018-7.png deleted file mode 100755 index 7d95c38d8..000000000 Binary files a/public/media/avatar/big/018-7.png and /dev/null differ diff --git a/public/media/avatar/big/018-8.png b/public/media/avatar/big/018-8.png deleted file mode 100644 index ba30f3f4d..000000000 Binary files a/public/media/avatar/big/018-8.png and /dev/null differ diff --git a/public/media/avatar/big/018-9.png b/public/media/avatar/big/018-9.png deleted file mode 100644 index cc3de2906..000000000 Binary files a/public/media/avatar/big/018-9.png and /dev/null differ diff --git a/public/media/avatar/big/019-1.png b/public/media/avatar/big/019-1.png deleted file mode 100755 index 867ccbf61..000000000 Binary files a/public/media/avatar/big/019-1.png and /dev/null differ diff --git a/public/media/avatar/big/019-10.png b/public/media/avatar/big/019-10.png deleted file mode 100644 index 80da52258..000000000 Binary files a/public/media/avatar/big/019-10.png and /dev/null differ diff --git a/public/media/avatar/big/019-11.png b/public/media/avatar/big/019-11.png deleted file mode 100644 index fe700c702..000000000 Binary files a/public/media/avatar/big/019-11.png and /dev/null differ diff --git a/public/media/avatar/big/019-12.png b/public/media/avatar/big/019-12.png deleted file mode 100644 index 40b8dcd12..000000000 Binary files a/public/media/avatar/big/019-12.png and /dev/null differ diff --git a/public/media/avatar/big/019-2.png b/public/media/avatar/big/019-2.png deleted file mode 100755 index 8b5f1894b..000000000 Binary files a/public/media/avatar/big/019-2.png and /dev/null differ diff --git a/public/media/avatar/big/019-3.png b/public/media/avatar/big/019-3.png deleted file mode 100755 index 40b8dcd12..000000000 Binary files a/public/media/avatar/big/019-3.png and /dev/null differ diff --git a/public/media/avatar/big/019-4.png b/public/media/avatar/big/019-4.png deleted file mode 100755 index 3809b4def..000000000 Binary files a/public/media/avatar/big/019-4.png and /dev/null differ diff --git a/public/media/avatar/big/019-5.png b/public/media/avatar/big/019-5.png deleted file mode 100755 index a3c04a304..000000000 Binary files a/public/media/avatar/big/019-5.png and /dev/null differ diff --git a/public/media/avatar/big/019-6.png b/public/media/avatar/big/019-6.png deleted file mode 100755 index 1c31ef07a..000000000 Binary files a/public/media/avatar/big/019-6.png and /dev/null differ diff --git a/public/media/avatar/big/019-7.png b/public/media/avatar/big/019-7.png deleted file mode 100755 index e142b89f7..000000000 Binary files a/public/media/avatar/big/019-7.png and /dev/null differ diff --git a/public/media/avatar/big/019-8.png b/public/media/avatar/big/019-8.png deleted file mode 100644 index 74c21c751..000000000 Binary files a/public/media/avatar/big/019-8.png and /dev/null differ diff --git a/public/media/avatar/big/019-9.png b/public/media/avatar/big/019-9.png deleted file mode 100644 index a3c04a304..000000000 Binary files a/public/media/avatar/big/019-9.png and /dev/null differ diff --git a/public/media/avatar/big/020-1.png b/public/media/avatar/big/020-1.png deleted file mode 100755 index e107afd90..000000000 Binary files a/public/media/avatar/big/020-1.png and /dev/null differ diff --git a/public/media/avatar/big/020-10.png b/public/media/avatar/big/020-10.png deleted file mode 100644 index cac14c72e..000000000 Binary files a/public/media/avatar/big/020-10.png and /dev/null differ diff --git a/public/media/avatar/big/020-11.png b/public/media/avatar/big/020-11.png deleted file mode 100644 index 9682dba31..000000000 Binary files a/public/media/avatar/big/020-11.png and /dev/null differ diff --git a/public/media/avatar/big/020-12.png b/public/media/avatar/big/020-12.png deleted file mode 100644 index 89492d8b1..000000000 Binary files a/public/media/avatar/big/020-12.png and /dev/null differ diff --git a/public/media/avatar/big/020-2.png b/public/media/avatar/big/020-2.png deleted file mode 100755 index aeedd2555..000000000 Binary files a/public/media/avatar/big/020-2.png and /dev/null differ diff --git a/public/media/avatar/big/020-3.png b/public/media/avatar/big/020-3.png deleted file mode 100755 index 89492d8b1..000000000 Binary files a/public/media/avatar/big/020-3.png and /dev/null differ diff --git a/public/media/avatar/big/020-4.png b/public/media/avatar/big/020-4.png deleted file mode 100755 index d82803d2f..000000000 Binary files a/public/media/avatar/big/020-4.png and /dev/null differ diff --git a/public/media/avatar/big/020-5.png b/public/media/avatar/big/020-5.png deleted file mode 100755 index ce6ccb9f1..000000000 Binary files a/public/media/avatar/big/020-5.png and /dev/null differ diff --git a/public/media/avatar/big/020-6.png b/public/media/avatar/big/020-6.png deleted file mode 100755 index eccfc1054..000000000 Binary files a/public/media/avatar/big/020-6.png and /dev/null differ diff --git a/public/media/avatar/big/020-7.png b/public/media/avatar/big/020-7.png deleted file mode 100755 index fa3a95c70..000000000 Binary files a/public/media/avatar/big/020-7.png and /dev/null differ diff --git a/public/media/avatar/big/020-8.png b/public/media/avatar/big/020-8.png deleted file mode 100644 index dbfd1e045..000000000 Binary files a/public/media/avatar/big/020-8.png and /dev/null differ diff --git a/public/media/avatar/big/020-9.png b/public/media/avatar/big/020-9.png deleted file mode 100644 index ce6ccb9f1..000000000 Binary files a/public/media/avatar/big/020-9.png and /dev/null differ diff --git a/public/media/avatar/big/021-1.png b/public/media/avatar/big/021-1.png deleted file mode 100755 index 88a912135..000000000 Binary files a/public/media/avatar/big/021-1.png and /dev/null differ diff --git a/public/media/avatar/big/021-10.png b/public/media/avatar/big/021-10.png deleted file mode 100644 index 97c4bada5..000000000 Binary files a/public/media/avatar/big/021-10.png and /dev/null differ diff --git a/public/media/avatar/big/021-11.png b/public/media/avatar/big/021-11.png deleted file mode 100644 index 36081c9c2..000000000 Binary files a/public/media/avatar/big/021-11.png and /dev/null differ diff --git a/public/media/avatar/big/021-12.png b/public/media/avatar/big/021-12.png deleted file mode 100644 index 890c25b44..000000000 Binary files a/public/media/avatar/big/021-12.png and /dev/null differ diff --git a/public/media/avatar/big/021-2.png b/public/media/avatar/big/021-2.png deleted file mode 100755 index 1395ab434..000000000 Binary files a/public/media/avatar/big/021-2.png and /dev/null differ diff --git a/public/media/avatar/big/021-3.png b/public/media/avatar/big/021-3.png deleted file mode 100755 index 890c25b44..000000000 Binary files a/public/media/avatar/big/021-3.png and /dev/null differ diff --git a/public/media/avatar/big/021-4.png b/public/media/avatar/big/021-4.png deleted file mode 100755 index 9513189f1..000000000 Binary files a/public/media/avatar/big/021-4.png and /dev/null differ diff --git a/public/media/avatar/big/021-5.png b/public/media/avatar/big/021-5.png deleted file mode 100755 index 4280cc62b..000000000 Binary files a/public/media/avatar/big/021-5.png and /dev/null differ diff --git a/public/media/avatar/big/021-6.png b/public/media/avatar/big/021-6.png deleted file mode 100755 index 418998f4f..000000000 Binary files a/public/media/avatar/big/021-6.png and /dev/null differ diff --git a/public/media/avatar/big/021-7.png b/public/media/avatar/big/021-7.png deleted file mode 100755 index 6956a19da..000000000 Binary files a/public/media/avatar/big/021-7.png and /dev/null differ diff --git a/public/media/avatar/big/021-8.png b/public/media/avatar/big/021-8.png deleted file mode 100644 index 63ca11743..000000000 Binary files a/public/media/avatar/big/021-8.png and /dev/null differ diff --git a/public/media/avatar/big/021-9.png b/public/media/avatar/big/021-9.png deleted file mode 100644 index 4280cc62b..000000000 Binary files a/public/media/avatar/big/021-9.png and /dev/null differ diff --git a/public/media/avatar/big/022-1.png b/public/media/avatar/big/022-1.png deleted file mode 100755 index 08ab390b3..000000000 Binary files a/public/media/avatar/big/022-1.png and /dev/null differ diff --git a/public/media/avatar/big/022-10.png b/public/media/avatar/big/022-10.png deleted file mode 100644 index a58e152c1..000000000 Binary files a/public/media/avatar/big/022-10.png and /dev/null differ diff --git a/public/media/avatar/big/022-11.png b/public/media/avatar/big/022-11.png deleted file mode 100644 index e82250f2b..000000000 Binary files a/public/media/avatar/big/022-11.png and /dev/null differ diff --git a/public/media/avatar/big/022-12.png b/public/media/avatar/big/022-12.png deleted file mode 100644 index d637b2056..000000000 Binary files a/public/media/avatar/big/022-12.png and /dev/null differ diff --git a/public/media/avatar/big/022-2.png b/public/media/avatar/big/022-2.png deleted file mode 100755 index 7527cb4f8..000000000 Binary files a/public/media/avatar/big/022-2.png and /dev/null differ diff --git a/public/media/avatar/big/022-3.png b/public/media/avatar/big/022-3.png deleted file mode 100755 index 250cd88d0..000000000 Binary files a/public/media/avatar/big/022-3.png and /dev/null differ diff --git a/public/media/avatar/big/022-4.png b/public/media/avatar/big/022-4.png deleted file mode 100755 index 633753800..000000000 Binary files a/public/media/avatar/big/022-4.png and /dev/null differ diff --git a/public/media/avatar/big/022-5.png b/public/media/avatar/big/022-5.png deleted file mode 100755 index 18c66faa1..000000000 Binary files a/public/media/avatar/big/022-5.png and /dev/null differ diff --git a/public/media/avatar/big/022-6.png b/public/media/avatar/big/022-6.png deleted file mode 100755 index 039d250a8..000000000 Binary files a/public/media/avatar/big/022-6.png and /dev/null differ diff --git a/public/media/avatar/big/022-7.png b/public/media/avatar/big/022-7.png deleted file mode 100755 index c51343fa0..000000000 Binary files a/public/media/avatar/big/022-7.png and /dev/null differ diff --git a/public/media/avatar/big/022-8.png b/public/media/avatar/big/022-8.png deleted file mode 100644 index 113c97aa9..000000000 Binary files a/public/media/avatar/big/022-8.png and /dev/null differ diff --git a/public/media/avatar/big/022-9.png b/public/media/avatar/big/022-9.png deleted file mode 100644 index 18c66faa1..000000000 Binary files a/public/media/avatar/big/022-9.png and /dev/null differ diff --git a/public/media/avatar/big/023-1.png b/public/media/avatar/big/023-1.png deleted file mode 100755 index b1d1a9a0a..000000000 Binary files a/public/media/avatar/big/023-1.png and /dev/null differ diff --git a/public/media/avatar/big/023-10.png b/public/media/avatar/big/023-10.png deleted file mode 100644 index ee8e2d828..000000000 Binary files a/public/media/avatar/big/023-10.png and /dev/null differ diff --git a/public/media/avatar/big/023-11.png b/public/media/avatar/big/023-11.png deleted file mode 100644 index 43fd7e32c..000000000 Binary files a/public/media/avatar/big/023-11.png and /dev/null differ diff --git a/public/media/avatar/big/023-12.png b/public/media/avatar/big/023-12.png deleted file mode 100644 index 2609da9d0..000000000 Binary files a/public/media/avatar/big/023-12.png and /dev/null differ diff --git a/public/media/avatar/big/023-2.png b/public/media/avatar/big/023-2.png deleted file mode 100755 index da76a1472..000000000 Binary files a/public/media/avatar/big/023-2.png and /dev/null differ diff --git a/public/media/avatar/big/023-3.png b/public/media/avatar/big/023-3.png deleted file mode 100755 index 2609da9d0..000000000 Binary files a/public/media/avatar/big/023-3.png and /dev/null differ diff --git a/public/media/avatar/big/023-4.png b/public/media/avatar/big/023-4.png deleted file mode 100755 index 6e1551ee8..000000000 Binary files a/public/media/avatar/big/023-4.png and /dev/null differ diff --git a/public/media/avatar/big/023-5.png b/public/media/avatar/big/023-5.png deleted file mode 100755 index fb64024de..000000000 Binary files a/public/media/avatar/big/023-5.png and /dev/null differ diff --git a/public/media/avatar/big/023-6.png b/public/media/avatar/big/023-6.png deleted file mode 100755 index 90efbd069..000000000 Binary files a/public/media/avatar/big/023-6.png and /dev/null differ diff --git a/public/media/avatar/big/023-7.png b/public/media/avatar/big/023-7.png deleted file mode 100755 index 52550dd2e..000000000 Binary files a/public/media/avatar/big/023-7.png and /dev/null differ diff --git a/public/media/avatar/big/023-8.png b/public/media/avatar/big/023-8.png deleted file mode 100644 index 643ad9834..000000000 Binary files a/public/media/avatar/big/023-8.png and /dev/null differ diff --git a/public/media/avatar/big/023-9.png b/public/media/avatar/big/023-9.png deleted file mode 100644 index fb64024de..000000000 Binary files a/public/media/avatar/big/023-9.png and /dev/null differ diff --git a/public/media/avatar/big/024-1.png b/public/media/avatar/big/024-1.png deleted file mode 100755 index 3b2bef283..000000000 Binary files a/public/media/avatar/big/024-1.png and /dev/null differ diff --git a/public/media/avatar/big/024-10.png b/public/media/avatar/big/024-10.png deleted file mode 100644 index 32221ea28..000000000 Binary files a/public/media/avatar/big/024-10.png and /dev/null differ diff --git a/public/media/avatar/big/024-11.png b/public/media/avatar/big/024-11.png deleted file mode 100644 index 7e5c31605..000000000 Binary files a/public/media/avatar/big/024-11.png and /dev/null differ diff --git a/public/media/avatar/big/024-12.png b/public/media/avatar/big/024-12.png deleted file mode 100644 index 952e61556..000000000 Binary files a/public/media/avatar/big/024-12.png and /dev/null differ diff --git a/public/media/avatar/big/024-2.png b/public/media/avatar/big/024-2.png deleted file mode 100755 index f7d1144b8..000000000 Binary files a/public/media/avatar/big/024-2.png and /dev/null differ diff --git a/public/media/avatar/big/024-3.png b/public/media/avatar/big/024-3.png deleted file mode 100755 index 952e61556..000000000 Binary files a/public/media/avatar/big/024-3.png and /dev/null differ diff --git a/public/media/avatar/big/024-4.png b/public/media/avatar/big/024-4.png deleted file mode 100755 index 87f03936d..000000000 Binary files a/public/media/avatar/big/024-4.png and /dev/null differ diff --git a/public/media/avatar/big/024-5.png b/public/media/avatar/big/024-5.png deleted file mode 100755 index 6381e7034..000000000 Binary files a/public/media/avatar/big/024-5.png and /dev/null differ diff --git a/public/media/avatar/big/024-6.png b/public/media/avatar/big/024-6.png deleted file mode 100755 index 8fac212b9..000000000 Binary files a/public/media/avatar/big/024-6.png and /dev/null differ diff --git a/public/media/avatar/big/024-7.png b/public/media/avatar/big/024-7.png deleted file mode 100755 index a3be836b8..000000000 Binary files a/public/media/avatar/big/024-7.png and /dev/null differ diff --git a/public/media/avatar/big/024-8.png b/public/media/avatar/big/024-8.png deleted file mode 100644 index 7c8c1ccf1..000000000 Binary files a/public/media/avatar/big/024-8.png and /dev/null differ diff --git a/public/media/avatar/big/024-9.png b/public/media/avatar/big/024-9.png deleted file mode 100644 index 6381e7034..000000000 Binary files a/public/media/avatar/big/024-9.png and /dev/null differ diff --git a/public/media/avatar/big/025-1.png b/public/media/avatar/big/025-1.png deleted file mode 100755 index 26c276f05..000000000 Binary files a/public/media/avatar/big/025-1.png and /dev/null differ diff --git a/public/media/avatar/big/025-10.png b/public/media/avatar/big/025-10.png deleted file mode 100644 index e7d0bfd54..000000000 Binary files a/public/media/avatar/big/025-10.png and /dev/null differ diff --git a/public/media/avatar/big/025-11.png b/public/media/avatar/big/025-11.png deleted file mode 100644 index 0efe9fed0..000000000 Binary files a/public/media/avatar/big/025-11.png and /dev/null differ diff --git a/public/media/avatar/big/025-12.png b/public/media/avatar/big/025-12.png deleted file mode 100644 index e01eaed61..000000000 Binary files a/public/media/avatar/big/025-12.png and /dev/null differ diff --git a/public/media/avatar/big/025-2.png b/public/media/avatar/big/025-2.png deleted file mode 100755 index 3e6f40499..000000000 Binary files a/public/media/avatar/big/025-2.png and /dev/null differ diff --git a/public/media/avatar/big/025-3.png b/public/media/avatar/big/025-3.png deleted file mode 100755 index 5019800ed..000000000 Binary files a/public/media/avatar/big/025-3.png and /dev/null differ diff --git a/public/media/avatar/big/025-4.png b/public/media/avatar/big/025-4.png deleted file mode 100755 index e5e52279b..000000000 Binary files a/public/media/avatar/big/025-4.png and /dev/null differ diff --git a/public/media/avatar/big/025-5.png b/public/media/avatar/big/025-5.png deleted file mode 100755 index 38e62535d..000000000 Binary files a/public/media/avatar/big/025-5.png and /dev/null differ diff --git a/public/media/avatar/big/025-6.png b/public/media/avatar/big/025-6.png deleted file mode 100755 index 96e863fc4..000000000 Binary files a/public/media/avatar/big/025-6.png and /dev/null differ diff --git a/public/media/avatar/big/025-7.png b/public/media/avatar/big/025-7.png deleted file mode 100755 index 01482fdc0..000000000 Binary files a/public/media/avatar/big/025-7.png and /dev/null differ diff --git a/public/media/avatar/big/025-8.png b/public/media/avatar/big/025-8.png deleted file mode 100644 index 2a018353e..000000000 Binary files a/public/media/avatar/big/025-8.png and /dev/null differ diff --git a/public/media/avatar/big/025-9.png b/public/media/avatar/big/025-9.png deleted file mode 100644 index 38e62535d..000000000 Binary files a/public/media/avatar/big/025-9.png and /dev/null differ diff --git a/public/media/avatar/big/026-1.png b/public/media/avatar/big/026-1.png deleted file mode 100755 index 5600e55da..000000000 Binary files a/public/media/avatar/big/026-1.png and /dev/null differ diff --git a/public/media/avatar/big/026-10.png b/public/media/avatar/big/026-10.png deleted file mode 100644 index ee9b8a29c..000000000 Binary files a/public/media/avatar/big/026-10.png and /dev/null differ diff --git a/public/media/avatar/big/026-11.png b/public/media/avatar/big/026-11.png deleted file mode 100644 index 2ffcc5f44..000000000 Binary files a/public/media/avatar/big/026-11.png and /dev/null differ diff --git a/public/media/avatar/big/026-12.png b/public/media/avatar/big/026-12.png deleted file mode 100644 index b9cbceb82..000000000 Binary files a/public/media/avatar/big/026-12.png and /dev/null differ diff --git a/public/media/avatar/big/026-2.png b/public/media/avatar/big/026-2.png deleted file mode 100755 index b2be78017..000000000 Binary files a/public/media/avatar/big/026-2.png and /dev/null differ diff --git a/public/media/avatar/big/026-3.png b/public/media/avatar/big/026-3.png deleted file mode 100755 index b9cbceb82..000000000 Binary files a/public/media/avatar/big/026-3.png and /dev/null differ diff --git a/public/media/avatar/big/026-4.png b/public/media/avatar/big/026-4.png deleted file mode 100755 index 6fabb686d..000000000 Binary files a/public/media/avatar/big/026-4.png and /dev/null differ diff --git a/public/media/avatar/big/026-5.png b/public/media/avatar/big/026-5.png deleted file mode 100755 index 8d76e13f0..000000000 Binary files a/public/media/avatar/big/026-5.png and /dev/null differ diff --git a/public/media/avatar/big/026-6.png b/public/media/avatar/big/026-6.png deleted file mode 100755 index e4f9e87ad..000000000 Binary files a/public/media/avatar/big/026-6.png and /dev/null differ diff --git a/public/media/avatar/big/026-7.png b/public/media/avatar/big/026-7.png deleted file mode 100755 index d9cb4d1f7..000000000 Binary files a/public/media/avatar/big/026-7.png and /dev/null differ diff --git a/public/media/avatar/big/026-8.png b/public/media/avatar/big/026-8.png deleted file mode 100644 index e8d1bf625..000000000 Binary files a/public/media/avatar/big/026-8.png and /dev/null differ diff --git a/public/media/avatar/big/026-9.png b/public/media/avatar/big/026-9.png deleted file mode 100644 index 8d76e13f0..000000000 Binary files a/public/media/avatar/big/026-9.png and /dev/null differ diff --git a/public/media/avatar/big/027-1.png b/public/media/avatar/big/027-1.png deleted file mode 100755 index 49a6eba56..000000000 Binary files a/public/media/avatar/big/027-1.png and /dev/null differ diff --git a/public/media/avatar/big/027-10.png b/public/media/avatar/big/027-10.png deleted file mode 100644 index aaead6e6a..000000000 Binary files a/public/media/avatar/big/027-10.png and /dev/null differ diff --git a/public/media/avatar/big/027-11.png b/public/media/avatar/big/027-11.png deleted file mode 100644 index bfcc99f24..000000000 Binary files a/public/media/avatar/big/027-11.png and /dev/null differ diff --git a/public/media/avatar/big/027-12.png b/public/media/avatar/big/027-12.png deleted file mode 100644 index d3060ec5c..000000000 Binary files a/public/media/avatar/big/027-12.png and /dev/null differ diff --git a/public/media/avatar/big/027-2.png b/public/media/avatar/big/027-2.png deleted file mode 100755 index a2d1e184d..000000000 Binary files a/public/media/avatar/big/027-2.png and /dev/null differ diff --git a/public/media/avatar/big/027-3.png b/public/media/avatar/big/027-3.png deleted file mode 100755 index d3060ec5c..000000000 Binary files a/public/media/avatar/big/027-3.png and /dev/null differ diff --git a/public/media/avatar/big/027-4.png b/public/media/avatar/big/027-4.png deleted file mode 100755 index 288f1dd49..000000000 Binary files a/public/media/avatar/big/027-4.png and /dev/null differ diff --git a/public/media/avatar/big/027-5.png b/public/media/avatar/big/027-5.png deleted file mode 100755 index fbb352016..000000000 Binary files a/public/media/avatar/big/027-5.png and /dev/null differ diff --git a/public/media/avatar/big/027-6.png b/public/media/avatar/big/027-6.png deleted file mode 100755 index fc1b65cf0..000000000 Binary files a/public/media/avatar/big/027-6.png and /dev/null differ diff --git a/public/media/avatar/big/027-7.png b/public/media/avatar/big/027-7.png deleted file mode 100755 index 419ca78e2..000000000 Binary files a/public/media/avatar/big/027-7.png and /dev/null differ diff --git a/public/media/avatar/big/027-8.png b/public/media/avatar/big/027-8.png deleted file mode 100644 index 245a0b101..000000000 Binary files a/public/media/avatar/big/027-8.png and /dev/null differ diff --git a/public/media/avatar/big/027-9.png b/public/media/avatar/big/027-9.png deleted file mode 100644 index fbb352016..000000000 Binary files a/public/media/avatar/big/027-9.png and /dev/null differ diff --git a/public/media/avatar/big/028-1.png b/public/media/avatar/big/028-1.png deleted file mode 100755 index 748ff82a2..000000000 Binary files a/public/media/avatar/big/028-1.png and /dev/null differ diff --git a/public/media/avatar/big/028-10.png b/public/media/avatar/big/028-10.png deleted file mode 100644 index f93a1465c..000000000 Binary files a/public/media/avatar/big/028-10.png and /dev/null differ diff --git a/public/media/avatar/big/028-11.png b/public/media/avatar/big/028-11.png deleted file mode 100644 index 567c4eff3..000000000 Binary files a/public/media/avatar/big/028-11.png and /dev/null differ diff --git a/public/media/avatar/big/028-12.png b/public/media/avatar/big/028-12.png deleted file mode 100644 index 35f6ff5bb..000000000 Binary files a/public/media/avatar/big/028-12.png and /dev/null differ diff --git a/public/media/avatar/big/028-2.png b/public/media/avatar/big/028-2.png deleted file mode 100755 index e5a20e120..000000000 Binary files a/public/media/avatar/big/028-2.png and /dev/null differ diff --git a/public/media/avatar/big/028-3.png b/public/media/avatar/big/028-3.png deleted file mode 100755 index 35f6ff5bb..000000000 Binary files a/public/media/avatar/big/028-3.png and /dev/null differ diff --git a/public/media/avatar/big/028-4.png b/public/media/avatar/big/028-4.png deleted file mode 100755 index 1bbfa7103..000000000 Binary files a/public/media/avatar/big/028-4.png and /dev/null differ diff --git a/public/media/avatar/big/028-5.png b/public/media/avatar/big/028-5.png deleted file mode 100755 index 63699159d..000000000 Binary files a/public/media/avatar/big/028-5.png and /dev/null differ diff --git a/public/media/avatar/big/028-6.png b/public/media/avatar/big/028-6.png deleted file mode 100755 index c088c3edb..000000000 Binary files a/public/media/avatar/big/028-6.png and /dev/null differ diff --git a/public/media/avatar/big/028-7.png b/public/media/avatar/big/028-7.png deleted file mode 100755 index 17aa47992..000000000 Binary files a/public/media/avatar/big/028-7.png and /dev/null differ diff --git a/public/media/avatar/big/028-8.png b/public/media/avatar/big/028-8.png deleted file mode 100644 index 109d37d82..000000000 Binary files a/public/media/avatar/big/028-8.png and /dev/null differ diff --git a/public/media/avatar/big/028-9.png b/public/media/avatar/big/028-9.png deleted file mode 100644 index 63699159d..000000000 Binary files a/public/media/avatar/big/028-9.png and /dev/null differ diff --git a/public/media/avatar/big/029-1.png b/public/media/avatar/big/029-1.png deleted file mode 100755 index 829dd2685..000000000 Binary files a/public/media/avatar/big/029-1.png and /dev/null differ diff --git a/public/media/avatar/big/029-10.png b/public/media/avatar/big/029-10.png deleted file mode 100644 index 76623fe30..000000000 Binary files a/public/media/avatar/big/029-10.png and /dev/null differ diff --git a/public/media/avatar/big/029-11.png b/public/media/avatar/big/029-11.png deleted file mode 100644 index cc708c7d3..000000000 Binary files a/public/media/avatar/big/029-11.png and /dev/null differ diff --git a/public/media/avatar/big/029-12.png b/public/media/avatar/big/029-12.png deleted file mode 100644 index 93cdf109b..000000000 Binary files a/public/media/avatar/big/029-12.png and /dev/null differ diff --git a/public/media/avatar/big/029-2.png b/public/media/avatar/big/029-2.png deleted file mode 100755 index 5a347c225..000000000 Binary files a/public/media/avatar/big/029-2.png and /dev/null differ diff --git a/public/media/avatar/big/029-3.png b/public/media/avatar/big/029-3.png deleted file mode 100755 index 93cdf109b..000000000 Binary files a/public/media/avatar/big/029-3.png and /dev/null differ diff --git a/public/media/avatar/big/029-4.png b/public/media/avatar/big/029-4.png deleted file mode 100755 index e234ecd9d..000000000 Binary files a/public/media/avatar/big/029-4.png and /dev/null differ diff --git a/public/media/avatar/big/029-5.png b/public/media/avatar/big/029-5.png deleted file mode 100755 index 765d628fb..000000000 Binary files a/public/media/avatar/big/029-5.png and /dev/null differ diff --git a/public/media/avatar/big/029-6.png b/public/media/avatar/big/029-6.png deleted file mode 100755 index ff19f47eb..000000000 Binary files a/public/media/avatar/big/029-6.png and /dev/null differ diff --git a/public/media/avatar/big/029-7.png b/public/media/avatar/big/029-7.png deleted file mode 100755 index ea791737a..000000000 Binary files a/public/media/avatar/big/029-7.png and /dev/null differ diff --git a/public/media/avatar/big/029-8.png b/public/media/avatar/big/029-8.png deleted file mode 100644 index 96ce04d40..000000000 Binary files a/public/media/avatar/big/029-8.png and /dev/null differ diff --git a/public/media/avatar/big/029-9.png b/public/media/avatar/big/029-9.png deleted file mode 100644 index 765d628fb..000000000 Binary files a/public/media/avatar/big/029-9.png and /dev/null differ diff --git a/public/media/avatar/big/030-1.png b/public/media/avatar/big/030-1.png deleted file mode 100755 index 949b4e06a..000000000 Binary files a/public/media/avatar/big/030-1.png and /dev/null differ diff --git a/public/media/avatar/big/030-10.png b/public/media/avatar/big/030-10.png deleted file mode 100644 index f0a9c93e4..000000000 Binary files a/public/media/avatar/big/030-10.png and /dev/null differ diff --git a/public/media/avatar/big/030-11.png b/public/media/avatar/big/030-11.png deleted file mode 100644 index 68bb8e8e3..000000000 Binary files a/public/media/avatar/big/030-11.png and /dev/null differ diff --git a/public/media/avatar/big/030-12.png b/public/media/avatar/big/030-12.png deleted file mode 100644 index 22472ff4b..000000000 Binary files a/public/media/avatar/big/030-12.png and /dev/null differ diff --git a/public/media/avatar/big/030-2.png b/public/media/avatar/big/030-2.png deleted file mode 100755 index 254a5c8d4..000000000 Binary files a/public/media/avatar/big/030-2.png and /dev/null differ diff --git a/public/media/avatar/big/030-3.png b/public/media/avatar/big/030-3.png deleted file mode 100755 index 22472ff4b..000000000 Binary files a/public/media/avatar/big/030-3.png and /dev/null differ diff --git a/public/media/avatar/big/030-4.png b/public/media/avatar/big/030-4.png deleted file mode 100755 index 4ef4f04e9..000000000 Binary files a/public/media/avatar/big/030-4.png and /dev/null differ diff --git a/public/media/avatar/big/030-5.png b/public/media/avatar/big/030-5.png deleted file mode 100755 index 0b7522b31..000000000 Binary files a/public/media/avatar/big/030-5.png and /dev/null differ diff --git a/public/media/avatar/big/030-6.png b/public/media/avatar/big/030-6.png deleted file mode 100755 index bc012653e..000000000 Binary files a/public/media/avatar/big/030-6.png and /dev/null differ diff --git a/public/media/avatar/big/030-7.png b/public/media/avatar/big/030-7.png deleted file mode 100755 index 63372e78a..000000000 Binary files a/public/media/avatar/big/030-7.png and /dev/null differ diff --git a/public/media/avatar/big/030-8.png b/public/media/avatar/big/030-8.png deleted file mode 100644 index 94423a2da..000000000 Binary files a/public/media/avatar/big/030-8.png and /dev/null differ diff --git a/public/media/avatar/big/030-9.png b/public/media/avatar/big/030-9.png deleted file mode 100644 index 0b7522b31..000000000 Binary files a/public/media/avatar/big/030-9.png and /dev/null differ diff --git a/public/media/avatar/big/031-1.png b/public/media/avatar/big/031-1.png deleted file mode 100755 index 5b885ab72..000000000 Binary files a/public/media/avatar/big/031-1.png and /dev/null differ diff --git a/public/media/avatar/big/031-10.png b/public/media/avatar/big/031-10.png deleted file mode 100644 index d548f98f9..000000000 Binary files a/public/media/avatar/big/031-10.png and /dev/null differ diff --git a/public/media/avatar/big/031-11.png b/public/media/avatar/big/031-11.png deleted file mode 100644 index f693d4956..000000000 Binary files a/public/media/avatar/big/031-11.png and /dev/null differ diff --git a/public/media/avatar/big/031-12.png b/public/media/avatar/big/031-12.png deleted file mode 100644 index 656f6187e..000000000 Binary files a/public/media/avatar/big/031-12.png and /dev/null differ diff --git a/public/media/avatar/big/031-2.png b/public/media/avatar/big/031-2.png deleted file mode 100755 index 293aa0544..000000000 Binary files a/public/media/avatar/big/031-2.png and /dev/null differ diff --git a/public/media/avatar/big/031-3.png b/public/media/avatar/big/031-3.png deleted file mode 100755 index 656f6187e..000000000 Binary files a/public/media/avatar/big/031-3.png and /dev/null differ diff --git a/public/media/avatar/big/031-4.png b/public/media/avatar/big/031-4.png deleted file mode 100755 index 6c412f830..000000000 Binary files a/public/media/avatar/big/031-4.png and /dev/null differ diff --git a/public/media/avatar/big/031-5.png b/public/media/avatar/big/031-5.png deleted file mode 100755 index 26b588cec..000000000 Binary files a/public/media/avatar/big/031-5.png and /dev/null differ diff --git a/public/media/avatar/big/031-6.png b/public/media/avatar/big/031-6.png deleted file mode 100755 index 4c7c5ec7b..000000000 Binary files a/public/media/avatar/big/031-6.png and /dev/null differ diff --git a/public/media/avatar/big/031-7.png b/public/media/avatar/big/031-7.png deleted file mode 100755 index d6f187d5e..000000000 Binary files a/public/media/avatar/big/031-7.png and /dev/null differ diff --git a/public/media/avatar/big/031-8.png b/public/media/avatar/big/031-8.png deleted file mode 100644 index b978e2e8a..000000000 Binary files a/public/media/avatar/big/031-8.png and /dev/null differ diff --git a/public/media/avatar/big/031-9.png b/public/media/avatar/big/031-9.png deleted file mode 100644 index 26b588cec..000000000 Binary files a/public/media/avatar/big/031-9.png and /dev/null differ diff --git a/public/media/avatar/big/032-1.png b/public/media/avatar/big/032-1.png deleted file mode 100755 index b59c6a77c..000000000 Binary files a/public/media/avatar/big/032-1.png and /dev/null differ diff --git a/public/media/avatar/big/032-10.png b/public/media/avatar/big/032-10.png deleted file mode 100644 index 1898ac354..000000000 Binary files a/public/media/avatar/big/032-10.png and /dev/null differ diff --git a/public/media/avatar/big/032-11.png b/public/media/avatar/big/032-11.png deleted file mode 100644 index a870d6f09..000000000 Binary files a/public/media/avatar/big/032-11.png and /dev/null differ diff --git a/public/media/avatar/big/032-12.png b/public/media/avatar/big/032-12.png deleted file mode 100644 index 52e767f3a..000000000 Binary files a/public/media/avatar/big/032-12.png and /dev/null differ diff --git a/public/media/avatar/big/032-2.png b/public/media/avatar/big/032-2.png deleted file mode 100755 index 9c897216d..000000000 Binary files a/public/media/avatar/big/032-2.png and /dev/null differ diff --git a/public/media/avatar/big/032-3.png b/public/media/avatar/big/032-3.png deleted file mode 100755 index f06d7bb11..000000000 Binary files a/public/media/avatar/big/032-3.png and /dev/null differ diff --git a/public/media/avatar/big/032-4.png b/public/media/avatar/big/032-4.png deleted file mode 100755 index b8e283725..000000000 Binary files a/public/media/avatar/big/032-4.png and /dev/null differ diff --git a/public/media/avatar/big/032-5.png b/public/media/avatar/big/032-5.png deleted file mode 100755 index e3c7509f3..000000000 Binary files a/public/media/avatar/big/032-5.png and /dev/null differ diff --git a/public/media/avatar/big/032-6.png b/public/media/avatar/big/032-6.png deleted file mode 100755 index 5cf046da1..000000000 Binary files a/public/media/avatar/big/032-6.png and /dev/null differ diff --git a/public/media/avatar/big/032-7.png b/public/media/avatar/big/032-7.png deleted file mode 100755 index 92d5dba1a..000000000 Binary files a/public/media/avatar/big/032-7.png and /dev/null differ diff --git a/public/media/avatar/big/032-8.png b/public/media/avatar/big/032-8.png deleted file mode 100644 index c6deef3d5..000000000 Binary files a/public/media/avatar/big/032-8.png and /dev/null differ diff --git a/public/media/avatar/big/032-9.png b/public/media/avatar/big/032-9.png deleted file mode 100644 index e3c7509f3..000000000 Binary files a/public/media/avatar/big/032-9.png and /dev/null differ diff --git a/public/media/avatar/big/033-1.png b/public/media/avatar/big/033-1.png deleted file mode 100755 index 065744ae1..000000000 Binary files a/public/media/avatar/big/033-1.png and /dev/null differ diff --git a/public/media/avatar/big/033-10.png b/public/media/avatar/big/033-10.png deleted file mode 100644 index ba02f334d..000000000 Binary files a/public/media/avatar/big/033-10.png and /dev/null differ diff --git a/public/media/avatar/big/033-11.png b/public/media/avatar/big/033-11.png deleted file mode 100644 index 0eb6a534b..000000000 Binary files a/public/media/avatar/big/033-11.png and /dev/null differ diff --git a/public/media/avatar/big/033-12.png b/public/media/avatar/big/033-12.png deleted file mode 100644 index e4baa7644..000000000 Binary files a/public/media/avatar/big/033-12.png and /dev/null differ diff --git a/public/media/avatar/big/033-2.png b/public/media/avatar/big/033-2.png deleted file mode 100755 index 675eefc26..000000000 Binary files a/public/media/avatar/big/033-2.png and /dev/null differ diff --git a/public/media/avatar/big/033-3.png b/public/media/avatar/big/033-3.png deleted file mode 100755 index e4baa7644..000000000 Binary files a/public/media/avatar/big/033-3.png and /dev/null differ diff --git a/public/media/avatar/big/033-4.png b/public/media/avatar/big/033-4.png deleted file mode 100755 index 1a8792db3..000000000 Binary files a/public/media/avatar/big/033-4.png and /dev/null differ diff --git a/public/media/avatar/big/033-5.png b/public/media/avatar/big/033-5.png deleted file mode 100755 index 01c0c0275..000000000 Binary files a/public/media/avatar/big/033-5.png and /dev/null differ diff --git a/public/media/avatar/big/033-6.png b/public/media/avatar/big/033-6.png deleted file mode 100755 index 186de8274..000000000 Binary files a/public/media/avatar/big/033-6.png and /dev/null differ diff --git a/public/media/avatar/big/033-7.png b/public/media/avatar/big/033-7.png deleted file mode 100755 index 9ff40eead..000000000 Binary files a/public/media/avatar/big/033-7.png and /dev/null differ diff --git a/public/media/avatar/big/033-8.png b/public/media/avatar/big/033-8.png deleted file mode 100644 index 220e249d3..000000000 Binary files a/public/media/avatar/big/033-8.png and /dev/null differ diff --git a/public/media/avatar/big/033-9.png b/public/media/avatar/big/033-9.png deleted file mode 100644 index 01c0c0275..000000000 Binary files a/public/media/avatar/big/033-9.png and /dev/null differ diff --git a/public/media/avatar/big/034-1.png b/public/media/avatar/big/034-1.png deleted file mode 100755 index 0ed3e3985..000000000 Binary files a/public/media/avatar/big/034-1.png and /dev/null differ diff --git a/public/media/avatar/big/034-10.png b/public/media/avatar/big/034-10.png deleted file mode 100644 index 9aba43c84..000000000 Binary files a/public/media/avatar/big/034-10.png and /dev/null differ diff --git a/public/media/avatar/big/034-11.png b/public/media/avatar/big/034-11.png deleted file mode 100644 index b7637b48f..000000000 Binary files a/public/media/avatar/big/034-11.png and /dev/null differ diff --git a/public/media/avatar/big/034-12.png b/public/media/avatar/big/034-12.png deleted file mode 100644 index f7e943dd9..000000000 Binary files a/public/media/avatar/big/034-12.png and /dev/null differ diff --git a/public/media/avatar/big/034-2.png b/public/media/avatar/big/034-2.png deleted file mode 100755 index e4965b08c..000000000 Binary files a/public/media/avatar/big/034-2.png and /dev/null differ diff --git a/public/media/avatar/big/034-3.png b/public/media/avatar/big/034-3.png deleted file mode 100755 index f7e943dd9..000000000 Binary files a/public/media/avatar/big/034-3.png and /dev/null differ diff --git a/public/media/avatar/big/034-4.png b/public/media/avatar/big/034-4.png deleted file mode 100755 index 5fed3b3e8..000000000 Binary files a/public/media/avatar/big/034-4.png and /dev/null differ diff --git a/public/media/avatar/big/034-5.png b/public/media/avatar/big/034-5.png deleted file mode 100755 index ecfc4f730..000000000 Binary files a/public/media/avatar/big/034-5.png and /dev/null differ diff --git a/public/media/avatar/big/034-6.png b/public/media/avatar/big/034-6.png deleted file mode 100755 index 0308406be..000000000 Binary files a/public/media/avatar/big/034-6.png and /dev/null differ diff --git a/public/media/avatar/big/034-7.png b/public/media/avatar/big/034-7.png deleted file mode 100755 index 7b1ac03a5..000000000 Binary files a/public/media/avatar/big/034-7.png and /dev/null differ diff --git a/public/media/avatar/big/034-8.png b/public/media/avatar/big/034-8.png deleted file mode 100644 index 673280616..000000000 Binary files a/public/media/avatar/big/034-8.png and /dev/null differ diff --git a/public/media/avatar/big/034-9.png b/public/media/avatar/big/034-9.png deleted file mode 100644 index ecfc4f730..000000000 Binary files a/public/media/avatar/big/034-9.png and /dev/null differ diff --git a/public/media/avatar/big/035-1.png b/public/media/avatar/big/035-1.png deleted file mode 100755 index 6110fc555..000000000 Binary files a/public/media/avatar/big/035-1.png and /dev/null differ diff --git a/public/media/avatar/big/035-10.png b/public/media/avatar/big/035-10.png deleted file mode 100644 index 7735e9f7c..000000000 Binary files a/public/media/avatar/big/035-10.png and /dev/null differ diff --git a/public/media/avatar/big/035-11.png b/public/media/avatar/big/035-11.png deleted file mode 100644 index 9f317ad87..000000000 Binary files a/public/media/avatar/big/035-11.png and /dev/null differ diff --git a/public/media/avatar/big/035-12.png b/public/media/avatar/big/035-12.png deleted file mode 100644 index a83e12644..000000000 Binary files a/public/media/avatar/big/035-12.png and /dev/null differ diff --git a/public/media/avatar/big/035-2.png b/public/media/avatar/big/035-2.png deleted file mode 100755 index 64f98477f..000000000 Binary files a/public/media/avatar/big/035-2.png and /dev/null differ diff --git a/public/media/avatar/big/035-3.png b/public/media/avatar/big/035-3.png deleted file mode 100755 index a83e12644..000000000 Binary files a/public/media/avatar/big/035-3.png and /dev/null differ diff --git a/public/media/avatar/big/035-4.png b/public/media/avatar/big/035-4.png deleted file mode 100755 index 3c42bfeb8..000000000 Binary files a/public/media/avatar/big/035-4.png and /dev/null differ diff --git a/public/media/avatar/big/035-5.png b/public/media/avatar/big/035-5.png deleted file mode 100755 index cecd4467e..000000000 Binary files a/public/media/avatar/big/035-5.png and /dev/null differ diff --git a/public/media/avatar/big/035-6.png b/public/media/avatar/big/035-6.png deleted file mode 100755 index 7d0408d27..000000000 Binary files a/public/media/avatar/big/035-6.png and /dev/null differ diff --git a/public/media/avatar/big/035-7.png b/public/media/avatar/big/035-7.png deleted file mode 100755 index 18a6c0dae..000000000 Binary files a/public/media/avatar/big/035-7.png and /dev/null differ diff --git a/public/media/avatar/big/035-8.png b/public/media/avatar/big/035-8.png deleted file mode 100644 index 17f722875..000000000 Binary files a/public/media/avatar/big/035-8.png and /dev/null differ diff --git a/public/media/avatar/big/035-9.png b/public/media/avatar/big/035-9.png deleted file mode 100644 index cecd4467e..000000000 Binary files a/public/media/avatar/big/035-9.png and /dev/null differ diff --git a/public/media/avatar/big/036-1.png b/public/media/avatar/big/036-1.png deleted file mode 100755 index 2956b0c71..000000000 Binary files a/public/media/avatar/big/036-1.png and /dev/null differ diff --git a/public/media/avatar/big/036-10.png b/public/media/avatar/big/036-10.png deleted file mode 100644 index 94f086102..000000000 Binary files a/public/media/avatar/big/036-10.png and /dev/null differ diff --git a/public/media/avatar/big/036-11.png b/public/media/avatar/big/036-11.png deleted file mode 100644 index a3792b8ca..000000000 Binary files a/public/media/avatar/big/036-11.png and /dev/null differ diff --git a/public/media/avatar/big/036-12.png b/public/media/avatar/big/036-12.png deleted file mode 100644 index d262320b7..000000000 Binary files a/public/media/avatar/big/036-12.png and /dev/null differ diff --git a/public/media/avatar/big/036-2.png b/public/media/avatar/big/036-2.png deleted file mode 100755 index 4ec4252d4..000000000 Binary files a/public/media/avatar/big/036-2.png and /dev/null differ diff --git a/public/media/avatar/big/036-3.png b/public/media/avatar/big/036-3.png deleted file mode 100755 index d262320b7..000000000 Binary files a/public/media/avatar/big/036-3.png and /dev/null differ diff --git a/public/media/avatar/big/036-4.png b/public/media/avatar/big/036-4.png deleted file mode 100755 index 3fa7a0015..000000000 Binary files a/public/media/avatar/big/036-4.png and /dev/null differ diff --git a/public/media/avatar/big/036-5.png b/public/media/avatar/big/036-5.png deleted file mode 100755 index b7909e7a7..000000000 Binary files a/public/media/avatar/big/036-5.png and /dev/null differ diff --git a/public/media/avatar/big/036-6.png b/public/media/avatar/big/036-6.png deleted file mode 100755 index 43ba410b9..000000000 Binary files a/public/media/avatar/big/036-6.png and /dev/null differ diff --git a/public/media/avatar/big/036-7.png b/public/media/avatar/big/036-7.png deleted file mode 100755 index 774b1d767..000000000 Binary files a/public/media/avatar/big/036-7.png and /dev/null differ diff --git a/public/media/avatar/big/036-8.png b/public/media/avatar/big/036-8.png deleted file mode 100644 index b02106309..000000000 Binary files a/public/media/avatar/big/036-8.png and /dev/null differ diff --git a/public/media/avatar/big/036-9.png b/public/media/avatar/big/036-9.png deleted file mode 100644 index b7909e7a7..000000000 Binary files a/public/media/avatar/big/036-9.png and /dev/null differ diff --git a/public/media/avatar/big/037-1.png b/public/media/avatar/big/037-1.png deleted file mode 100755 index 235da7a23..000000000 Binary files a/public/media/avatar/big/037-1.png and /dev/null differ diff --git a/public/media/avatar/big/037-10.png b/public/media/avatar/big/037-10.png deleted file mode 100644 index 27ef6be00..000000000 Binary files a/public/media/avatar/big/037-10.png and /dev/null differ diff --git a/public/media/avatar/big/037-11.png b/public/media/avatar/big/037-11.png deleted file mode 100644 index 500c04029..000000000 Binary files a/public/media/avatar/big/037-11.png and /dev/null differ diff --git a/public/media/avatar/big/037-12.png b/public/media/avatar/big/037-12.png deleted file mode 100644 index 23a305a67..000000000 Binary files a/public/media/avatar/big/037-12.png and /dev/null differ diff --git a/public/media/avatar/big/037-2.png b/public/media/avatar/big/037-2.png deleted file mode 100755 index 76cfb2a69..000000000 Binary files a/public/media/avatar/big/037-2.png and /dev/null differ diff --git a/public/media/avatar/big/037-3.png b/public/media/avatar/big/037-3.png deleted file mode 100755 index 23a305a67..000000000 Binary files a/public/media/avatar/big/037-3.png and /dev/null differ diff --git a/public/media/avatar/big/037-4.png b/public/media/avatar/big/037-4.png deleted file mode 100755 index 4eae89598..000000000 Binary files a/public/media/avatar/big/037-4.png and /dev/null differ diff --git a/public/media/avatar/big/037-5.png b/public/media/avatar/big/037-5.png deleted file mode 100755 index 873913f55..000000000 Binary files a/public/media/avatar/big/037-5.png and /dev/null differ diff --git a/public/media/avatar/big/037-6.png b/public/media/avatar/big/037-6.png deleted file mode 100755 index 536dbd204..000000000 Binary files a/public/media/avatar/big/037-6.png and /dev/null differ diff --git a/public/media/avatar/big/037-7.png b/public/media/avatar/big/037-7.png deleted file mode 100755 index 68d4b83f4..000000000 Binary files a/public/media/avatar/big/037-7.png and /dev/null differ diff --git a/public/media/avatar/big/037-8.png b/public/media/avatar/big/037-8.png deleted file mode 100644 index 0ab67e559..000000000 Binary files a/public/media/avatar/big/037-8.png and /dev/null differ diff --git a/public/media/avatar/big/037-9.png b/public/media/avatar/big/037-9.png deleted file mode 100644 index 873913f55..000000000 Binary files a/public/media/avatar/big/037-9.png and /dev/null differ diff --git a/public/media/avatar/big/038-1.png b/public/media/avatar/big/038-1.png deleted file mode 100755 index 1f4bcca9e..000000000 Binary files a/public/media/avatar/big/038-1.png and /dev/null differ diff --git a/public/media/avatar/big/038-10.png b/public/media/avatar/big/038-10.png deleted file mode 100644 index 26789761b..000000000 Binary files a/public/media/avatar/big/038-10.png and /dev/null differ diff --git a/public/media/avatar/big/038-11.png b/public/media/avatar/big/038-11.png deleted file mode 100644 index aa17358c4..000000000 Binary files a/public/media/avatar/big/038-11.png and /dev/null differ diff --git a/public/media/avatar/big/038-12.png b/public/media/avatar/big/038-12.png deleted file mode 100644 index 42828d0c2..000000000 Binary files a/public/media/avatar/big/038-12.png and /dev/null differ diff --git a/public/media/avatar/big/038-2.png b/public/media/avatar/big/038-2.png deleted file mode 100755 index 6ea7b08d6..000000000 Binary files a/public/media/avatar/big/038-2.png and /dev/null differ diff --git a/public/media/avatar/big/038-3.png b/public/media/avatar/big/038-3.png deleted file mode 100755 index 42828d0c2..000000000 Binary files a/public/media/avatar/big/038-3.png and /dev/null differ diff --git a/public/media/avatar/big/038-4.png b/public/media/avatar/big/038-4.png deleted file mode 100755 index cece93bfd..000000000 Binary files a/public/media/avatar/big/038-4.png and /dev/null differ diff --git a/public/media/avatar/big/038-5.png b/public/media/avatar/big/038-5.png deleted file mode 100755 index 5970c2384..000000000 Binary files a/public/media/avatar/big/038-5.png and /dev/null differ diff --git a/public/media/avatar/big/038-6.png b/public/media/avatar/big/038-6.png deleted file mode 100755 index f4ffa7b65..000000000 Binary files a/public/media/avatar/big/038-6.png and /dev/null differ diff --git a/public/media/avatar/big/038-7.png b/public/media/avatar/big/038-7.png deleted file mode 100755 index c0e645544..000000000 Binary files a/public/media/avatar/big/038-7.png and /dev/null differ diff --git a/public/media/avatar/big/038-8.png b/public/media/avatar/big/038-8.png deleted file mode 100644 index cb9fac549..000000000 Binary files a/public/media/avatar/big/038-8.png and /dev/null differ diff --git a/public/media/avatar/big/038-9.png b/public/media/avatar/big/038-9.png deleted file mode 100644 index 5970c2384..000000000 Binary files a/public/media/avatar/big/038-9.png and /dev/null differ diff --git a/public/media/avatar/big/039-1.png b/public/media/avatar/big/039-1.png deleted file mode 100755 index ab4648123..000000000 Binary files a/public/media/avatar/big/039-1.png and /dev/null differ diff --git a/public/media/avatar/big/039-10.png b/public/media/avatar/big/039-10.png deleted file mode 100644 index bac204d2a..000000000 Binary files a/public/media/avatar/big/039-10.png and /dev/null differ diff --git a/public/media/avatar/big/039-11.png b/public/media/avatar/big/039-11.png deleted file mode 100644 index 614238563..000000000 Binary files a/public/media/avatar/big/039-11.png and /dev/null differ diff --git a/public/media/avatar/big/039-12.png b/public/media/avatar/big/039-12.png deleted file mode 100644 index 317d7d416..000000000 Binary files a/public/media/avatar/big/039-12.png and /dev/null differ diff --git a/public/media/avatar/big/039-2.png b/public/media/avatar/big/039-2.png deleted file mode 100755 index 2469a32d0..000000000 Binary files a/public/media/avatar/big/039-2.png and /dev/null differ diff --git a/public/media/avatar/big/039-3.png b/public/media/avatar/big/039-3.png deleted file mode 100755 index 317d7d416..000000000 Binary files a/public/media/avatar/big/039-3.png and /dev/null differ diff --git a/public/media/avatar/big/039-4.png b/public/media/avatar/big/039-4.png deleted file mode 100755 index 58b47e91d..000000000 Binary files a/public/media/avatar/big/039-4.png and /dev/null differ diff --git a/public/media/avatar/big/039-5.png b/public/media/avatar/big/039-5.png deleted file mode 100755 index 7b7886e3b..000000000 Binary files a/public/media/avatar/big/039-5.png and /dev/null differ diff --git a/public/media/avatar/big/039-6.png b/public/media/avatar/big/039-6.png deleted file mode 100755 index afb9a3f16..000000000 Binary files a/public/media/avatar/big/039-6.png and /dev/null differ diff --git a/public/media/avatar/big/039-7.png b/public/media/avatar/big/039-7.png deleted file mode 100755 index 55cafeb32..000000000 Binary files a/public/media/avatar/big/039-7.png and /dev/null differ diff --git a/public/media/avatar/big/039-8.png b/public/media/avatar/big/039-8.png deleted file mode 100644 index 9d3cf4013..000000000 Binary files a/public/media/avatar/big/039-8.png and /dev/null differ diff --git a/public/media/avatar/big/039-9.png b/public/media/avatar/big/039-9.png deleted file mode 100644 index 7b7886e3b..000000000 Binary files a/public/media/avatar/big/039-9.png and /dev/null differ diff --git a/public/media/avatar/big/040-1.png b/public/media/avatar/big/040-1.png deleted file mode 100755 index 216d148cb..000000000 Binary files a/public/media/avatar/big/040-1.png and /dev/null differ diff --git a/public/media/avatar/big/040-10.png b/public/media/avatar/big/040-10.png deleted file mode 100644 index d37b3b606..000000000 Binary files a/public/media/avatar/big/040-10.png and /dev/null differ diff --git a/public/media/avatar/big/040-11.png b/public/media/avatar/big/040-11.png deleted file mode 100644 index 0a16ee15f..000000000 Binary files a/public/media/avatar/big/040-11.png and /dev/null differ diff --git a/public/media/avatar/big/040-12.png b/public/media/avatar/big/040-12.png deleted file mode 100644 index 80a43b7de..000000000 Binary files a/public/media/avatar/big/040-12.png and /dev/null differ diff --git a/public/media/avatar/big/040-2.png b/public/media/avatar/big/040-2.png deleted file mode 100755 index aa824c563..000000000 Binary files a/public/media/avatar/big/040-2.png and /dev/null differ diff --git a/public/media/avatar/big/040-3.png b/public/media/avatar/big/040-3.png deleted file mode 100755 index 80a43b7de..000000000 Binary files a/public/media/avatar/big/040-3.png and /dev/null differ diff --git a/public/media/avatar/big/040-4.png b/public/media/avatar/big/040-4.png deleted file mode 100755 index d7587df38..000000000 Binary files a/public/media/avatar/big/040-4.png and /dev/null differ diff --git a/public/media/avatar/big/040-5.png b/public/media/avatar/big/040-5.png deleted file mode 100755 index 8446cd068..000000000 Binary files a/public/media/avatar/big/040-5.png and /dev/null differ diff --git a/public/media/avatar/big/040-6.png b/public/media/avatar/big/040-6.png deleted file mode 100755 index f80822ec8..000000000 Binary files a/public/media/avatar/big/040-6.png and /dev/null differ diff --git a/public/media/avatar/big/040-7.png b/public/media/avatar/big/040-7.png deleted file mode 100755 index a32ee1507..000000000 Binary files a/public/media/avatar/big/040-7.png and /dev/null differ diff --git a/public/media/avatar/big/040-8.png b/public/media/avatar/big/040-8.png deleted file mode 100644 index 59c4be5e4..000000000 Binary files a/public/media/avatar/big/040-8.png and /dev/null differ diff --git a/public/media/avatar/big/040-9.png b/public/media/avatar/big/040-9.png deleted file mode 100644 index 8446cd068..000000000 Binary files a/public/media/avatar/big/040-9.png and /dev/null differ diff --git a/public/media/avatar/big/041-1.png b/public/media/avatar/big/041-1.png deleted file mode 100755 index 87e5ab4ba..000000000 Binary files a/public/media/avatar/big/041-1.png and /dev/null differ diff --git a/public/media/avatar/big/041-10.png b/public/media/avatar/big/041-10.png deleted file mode 100644 index f78b9ca81..000000000 Binary files a/public/media/avatar/big/041-10.png and /dev/null differ diff --git a/public/media/avatar/big/041-11.png b/public/media/avatar/big/041-11.png deleted file mode 100644 index 4cd06cf3a..000000000 Binary files a/public/media/avatar/big/041-11.png and /dev/null differ diff --git a/public/media/avatar/big/041-12.png b/public/media/avatar/big/041-12.png deleted file mode 100644 index 74a615f08..000000000 Binary files a/public/media/avatar/big/041-12.png and /dev/null differ diff --git a/public/media/avatar/big/041-2.png b/public/media/avatar/big/041-2.png deleted file mode 100755 index 9a1b1abf3..000000000 Binary files a/public/media/avatar/big/041-2.png and /dev/null differ diff --git a/public/media/avatar/big/041-3.png b/public/media/avatar/big/041-3.png deleted file mode 100755 index a482598fd..000000000 Binary files a/public/media/avatar/big/041-3.png and /dev/null differ diff --git a/public/media/avatar/big/041-4.png b/public/media/avatar/big/041-4.png deleted file mode 100755 index 0b0ceb697..000000000 Binary files a/public/media/avatar/big/041-4.png and /dev/null differ diff --git a/public/media/avatar/big/041-5.png b/public/media/avatar/big/041-5.png deleted file mode 100755 index 59cc844e4..000000000 Binary files a/public/media/avatar/big/041-5.png and /dev/null differ diff --git a/public/media/avatar/big/041-6.png b/public/media/avatar/big/041-6.png deleted file mode 100755 index 0b0b2037d..000000000 Binary files a/public/media/avatar/big/041-6.png and /dev/null differ diff --git a/public/media/avatar/big/041-7.png b/public/media/avatar/big/041-7.png deleted file mode 100755 index 5b5904373..000000000 Binary files a/public/media/avatar/big/041-7.png and /dev/null differ diff --git a/public/media/avatar/big/041-8.png b/public/media/avatar/big/041-8.png deleted file mode 100644 index fe9def927..000000000 Binary files a/public/media/avatar/big/041-8.png and /dev/null differ diff --git a/public/media/avatar/big/041-9.png b/public/media/avatar/big/041-9.png deleted file mode 100644 index 59cc844e4..000000000 Binary files a/public/media/avatar/big/041-9.png and /dev/null differ diff --git a/public/media/avatar/big/042-1.png b/public/media/avatar/big/042-1.png deleted file mode 100755 index 3e1d9a43b..000000000 Binary files a/public/media/avatar/big/042-1.png and /dev/null differ diff --git a/public/media/avatar/big/042-10.png b/public/media/avatar/big/042-10.png deleted file mode 100644 index 5876082d0..000000000 Binary files a/public/media/avatar/big/042-10.png and /dev/null differ diff --git a/public/media/avatar/big/042-11.png b/public/media/avatar/big/042-11.png deleted file mode 100644 index de2eb9016..000000000 Binary files a/public/media/avatar/big/042-11.png and /dev/null differ diff --git a/public/media/avatar/big/042-12.png b/public/media/avatar/big/042-12.png deleted file mode 100644 index 91bd86eeb..000000000 Binary files a/public/media/avatar/big/042-12.png and /dev/null differ diff --git a/public/media/avatar/big/042-2.png b/public/media/avatar/big/042-2.png deleted file mode 100755 index c77bab3e2..000000000 Binary files a/public/media/avatar/big/042-2.png and /dev/null differ diff --git a/public/media/avatar/big/042-3.png b/public/media/avatar/big/042-3.png deleted file mode 100755 index 91bd86eeb..000000000 Binary files a/public/media/avatar/big/042-3.png and /dev/null differ diff --git a/public/media/avatar/big/042-4.png b/public/media/avatar/big/042-4.png deleted file mode 100755 index 932c239dd..000000000 Binary files a/public/media/avatar/big/042-4.png and /dev/null differ diff --git a/public/media/avatar/big/042-5.png b/public/media/avatar/big/042-5.png deleted file mode 100755 index f388b0cd0..000000000 Binary files a/public/media/avatar/big/042-5.png and /dev/null differ diff --git a/public/media/avatar/big/042-6.png b/public/media/avatar/big/042-6.png deleted file mode 100755 index c0dd738e3..000000000 Binary files a/public/media/avatar/big/042-6.png and /dev/null differ diff --git a/public/media/avatar/big/042-7.png b/public/media/avatar/big/042-7.png deleted file mode 100755 index 5a53ce1cc..000000000 Binary files a/public/media/avatar/big/042-7.png and /dev/null differ diff --git a/public/media/avatar/big/042-8.png b/public/media/avatar/big/042-8.png deleted file mode 100644 index 539d544a3..000000000 Binary files a/public/media/avatar/big/042-8.png and /dev/null differ diff --git a/public/media/avatar/big/042-9.png b/public/media/avatar/big/042-9.png deleted file mode 100644 index f388b0cd0..000000000 Binary files a/public/media/avatar/big/042-9.png and /dev/null differ diff --git a/public/media/avatar/big/043-1.png b/public/media/avatar/big/043-1.png deleted file mode 100755 index 0fb7ef95a..000000000 Binary files a/public/media/avatar/big/043-1.png and /dev/null differ diff --git a/public/media/avatar/big/043-10.png b/public/media/avatar/big/043-10.png deleted file mode 100644 index 43710b9d2..000000000 Binary files a/public/media/avatar/big/043-10.png and /dev/null differ diff --git a/public/media/avatar/big/043-11.png b/public/media/avatar/big/043-11.png deleted file mode 100644 index 1dc9f7d24..000000000 Binary files a/public/media/avatar/big/043-11.png and /dev/null differ diff --git a/public/media/avatar/big/043-12.png b/public/media/avatar/big/043-12.png deleted file mode 100644 index 0d643320d..000000000 Binary files a/public/media/avatar/big/043-12.png and /dev/null differ diff --git a/public/media/avatar/big/043-2.png b/public/media/avatar/big/043-2.png deleted file mode 100755 index f12d4cf33..000000000 Binary files a/public/media/avatar/big/043-2.png and /dev/null differ diff --git a/public/media/avatar/big/043-3.png b/public/media/avatar/big/043-3.png deleted file mode 100755 index 0d643320d..000000000 Binary files a/public/media/avatar/big/043-3.png and /dev/null differ diff --git a/public/media/avatar/big/043-4.png b/public/media/avatar/big/043-4.png deleted file mode 100755 index dbd11291c..000000000 Binary files a/public/media/avatar/big/043-4.png and /dev/null differ diff --git a/public/media/avatar/big/043-5.png b/public/media/avatar/big/043-5.png deleted file mode 100755 index 126cbdece..000000000 Binary files a/public/media/avatar/big/043-5.png and /dev/null differ diff --git a/public/media/avatar/big/043-6.png b/public/media/avatar/big/043-6.png deleted file mode 100755 index 5e43bcfd7..000000000 Binary files a/public/media/avatar/big/043-6.png and /dev/null differ diff --git a/public/media/avatar/big/043-7.png b/public/media/avatar/big/043-7.png deleted file mode 100755 index 535ab0072..000000000 Binary files a/public/media/avatar/big/043-7.png and /dev/null differ diff --git a/public/media/avatar/big/043-8.png b/public/media/avatar/big/043-8.png deleted file mode 100644 index 4f27d54ee..000000000 Binary files a/public/media/avatar/big/043-8.png and /dev/null differ diff --git a/public/media/avatar/big/043-9.png b/public/media/avatar/big/043-9.png deleted file mode 100644 index 126cbdece..000000000 Binary files a/public/media/avatar/big/043-9.png and /dev/null differ diff --git a/public/media/avatar/big/044-1.png b/public/media/avatar/big/044-1.png deleted file mode 100755 index 0cceb1c26..000000000 Binary files a/public/media/avatar/big/044-1.png and /dev/null differ diff --git a/public/media/avatar/big/044-10.png b/public/media/avatar/big/044-10.png deleted file mode 100644 index 81c859d9e..000000000 Binary files a/public/media/avatar/big/044-10.png and /dev/null differ diff --git a/public/media/avatar/big/044-11.png b/public/media/avatar/big/044-11.png deleted file mode 100644 index 06781078e..000000000 Binary files a/public/media/avatar/big/044-11.png and /dev/null differ diff --git a/public/media/avatar/big/044-12.png b/public/media/avatar/big/044-12.png deleted file mode 100644 index a8725c774..000000000 Binary files a/public/media/avatar/big/044-12.png and /dev/null differ diff --git a/public/media/avatar/big/044-2.png b/public/media/avatar/big/044-2.png deleted file mode 100755 index ce8cd6261..000000000 Binary files a/public/media/avatar/big/044-2.png and /dev/null differ diff --git a/public/media/avatar/big/044-3.png b/public/media/avatar/big/044-3.png deleted file mode 100755 index a8725c774..000000000 Binary files a/public/media/avatar/big/044-3.png and /dev/null differ diff --git a/public/media/avatar/big/044-4.png b/public/media/avatar/big/044-4.png deleted file mode 100755 index 19babe32f..000000000 Binary files a/public/media/avatar/big/044-4.png and /dev/null differ diff --git a/public/media/avatar/big/044-5.png b/public/media/avatar/big/044-5.png deleted file mode 100755 index ec7111cd3..000000000 Binary files a/public/media/avatar/big/044-5.png and /dev/null differ diff --git a/public/media/avatar/big/044-6.png b/public/media/avatar/big/044-6.png deleted file mode 100755 index af6f94f36..000000000 Binary files a/public/media/avatar/big/044-6.png and /dev/null differ diff --git a/public/media/avatar/big/044-7.png b/public/media/avatar/big/044-7.png deleted file mode 100755 index 0307960dd..000000000 Binary files a/public/media/avatar/big/044-7.png and /dev/null differ diff --git a/public/media/avatar/big/044-8.png b/public/media/avatar/big/044-8.png deleted file mode 100644 index 5d2f32ffb..000000000 Binary files a/public/media/avatar/big/044-8.png and /dev/null differ diff --git a/public/media/avatar/big/044-9.png b/public/media/avatar/big/044-9.png deleted file mode 100644 index ec7111cd3..000000000 Binary files a/public/media/avatar/big/044-9.png and /dev/null differ diff --git a/public/media/avatar/big/045-1.png b/public/media/avatar/big/045-1.png deleted file mode 100755 index 788a89b09..000000000 Binary files a/public/media/avatar/big/045-1.png and /dev/null differ diff --git a/public/media/avatar/big/045-10.png b/public/media/avatar/big/045-10.png deleted file mode 100644 index 05257626e..000000000 Binary files a/public/media/avatar/big/045-10.png and /dev/null differ diff --git a/public/media/avatar/big/045-11.png b/public/media/avatar/big/045-11.png deleted file mode 100644 index 511a24ab8..000000000 Binary files a/public/media/avatar/big/045-11.png and /dev/null differ diff --git a/public/media/avatar/big/045-12.png b/public/media/avatar/big/045-12.png deleted file mode 100644 index 7314f4481..000000000 Binary files a/public/media/avatar/big/045-12.png and /dev/null differ diff --git a/public/media/avatar/big/045-2.png b/public/media/avatar/big/045-2.png deleted file mode 100755 index 09556eaa4..000000000 Binary files a/public/media/avatar/big/045-2.png and /dev/null differ diff --git a/public/media/avatar/big/045-3.png b/public/media/avatar/big/045-3.png deleted file mode 100755 index 7314f4481..000000000 Binary files a/public/media/avatar/big/045-3.png and /dev/null differ diff --git a/public/media/avatar/big/045-4.png b/public/media/avatar/big/045-4.png deleted file mode 100755 index 4563a160c..000000000 Binary files a/public/media/avatar/big/045-4.png and /dev/null differ diff --git a/public/media/avatar/big/045-5.png b/public/media/avatar/big/045-5.png deleted file mode 100755 index 50553da55..000000000 Binary files a/public/media/avatar/big/045-5.png and /dev/null differ diff --git a/public/media/avatar/big/045-6.png b/public/media/avatar/big/045-6.png deleted file mode 100755 index 0d5242a8a..000000000 Binary files a/public/media/avatar/big/045-6.png and /dev/null differ diff --git a/public/media/avatar/big/045-7.png b/public/media/avatar/big/045-7.png deleted file mode 100755 index 2cd520a6c..000000000 Binary files a/public/media/avatar/big/045-7.png and /dev/null differ diff --git a/public/media/avatar/big/045-8.png b/public/media/avatar/big/045-8.png deleted file mode 100644 index 222c949db..000000000 Binary files a/public/media/avatar/big/045-8.png and /dev/null differ diff --git a/public/media/avatar/big/045-9.png b/public/media/avatar/big/045-9.png deleted file mode 100644 index 50553da55..000000000 Binary files a/public/media/avatar/big/045-9.png and /dev/null differ diff --git a/public/media/avatar/big/046-1.png b/public/media/avatar/big/046-1.png deleted file mode 100755 index a3545c0db..000000000 Binary files a/public/media/avatar/big/046-1.png and /dev/null differ diff --git a/public/media/avatar/big/046-10.png b/public/media/avatar/big/046-10.png deleted file mode 100644 index 891884d8c..000000000 Binary files a/public/media/avatar/big/046-10.png and /dev/null differ diff --git a/public/media/avatar/big/046-11.png b/public/media/avatar/big/046-11.png deleted file mode 100644 index 854fa404e..000000000 Binary files a/public/media/avatar/big/046-11.png and /dev/null differ diff --git a/public/media/avatar/big/046-12.png b/public/media/avatar/big/046-12.png deleted file mode 100644 index d489e2786..000000000 Binary files a/public/media/avatar/big/046-12.png and /dev/null differ diff --git a/public/media/avatar/big/046-2.png b/public/media/avatar/big/046-2.png deleted file mode 100755 index bbbaa2017..000000000 Binary files a/public/media/avatar/big/046-2.png and /dev/null differ diff --git a/public/media/avatar/big/046-3.png b/public/media/avatar/big/046-3.png deleted file mode 100755 index d489e2786..000000000 Binary files a/public/media/avatar/big/046-3.png and /dev/null differ diff --git a/public/media/avatar/big/046-4.png b/public/media/avatar/big/046-4.png deleted file mode 100755 index 45d099088..000000000 Binary files a/public/media/avatar/big/046-4.png and /dev/null differ diff --git a/public/media/avatar/big/046-5.png b/public/media/avatar/big/046-5.png deleted file mode 100755 index 65c1cb726..000000000 Binary files a/public/media/avatar/big/046-5.png and /dev/null differ diff --git a/public/media/avatar/big/046-6.png b/public/media/avatar/big/046-6.png deleted file mode 100755 index 6e00ad51e..000000000 Binary files a/public/media/avatar/big/046-6.png and /dev/null differ diff --git a/public/media/avatar/big/046-7.png b/public/media/avatar/big/046-7.png deleted file mode 100755 index 133b00090..000000000 Binary files a/public/media/avatar/big/046-7.png and /dev/null differ diff --git a/public/media/avatar/big/046-8.png b/public/media/avatar/big/046-8.png deleted file mode 100644 index 0ef6d15a5..000000000 Binary files a/public/media/avatar/big/046-8.png and /dev/null differ diff --git a/public/media/avatar/big/046-9.png b/public/media/avatar/big/046-9.png deleted file mode 100644 index 65c1cb726..000000000 Binary files a/public/media/avatar/big/046-9.png and /dev/null differ diff --git a/public/media/avatar/big/047-1.png b/public/media/avatar/big/047-1.png deleted file mode 100755 index 701257458..000000000 Binary files a/public/media/avatar/big/047-1.png and /dev/null differ diff --git a/public/media/avatar/big/047-10.png b/public/media/avatar/big/047-10.png deleted file mode 100644 index ae5207798..000000000 Binary files a/public/media/avatar/big/047-10.png and /dev/null differ diff --git a/public/media/avatar/big/047-11.png b/public/media/avatar/big/047-11.png deleted file mode 100644 index f5dd40400..000000000 Binary files a/public/media/avatar/big/047-11.png and /dev/null differ diff --git a/public/media/avatar/big/047-12.png b/public/media/avatar/big/047-12.png deleted file mode 100644 index 8482171f3..000000000 Binary files a/public/media/avatar/big/047-12.png and /dev/null differ diff --git a/public/media/avatar/big/047-2.png b/public/media/avatar/big/047-2.png deleted file mode 100755 index 93bff5dd9..000000000 Binary files a/public/media/avatar/big/047-2.png and /dev/null differ diff --git a/public/media/avatar/big/047-3.png b/public/media/avatar/big/047-3.png deleted file mode 100755 index 8482171f3..000000000 Binary files a/public/media/avatar/big/047-3.png and /dev/null differ diff --git a/public/media/avatar/big/047-4.png b/public/media/avatar/big/047-4.png deleted file mode 100755 index 6a2e62c8e..000000000 Binary files a/public/media/avatar/big/047-4.png and /dev/null differ diff --git a/public/media/avatar/big/047-5.png b/public/media/avatar/big/047-5.png deleted file mode 100755 index 3e8c53f28..000000000 Binary files a/public/media/avatar/big/047-5.png and /dev/null differ diff --git a/public/media/avatar/big/047-6.png b/public/media/avatar/big/047-6.png deleted file mode 100755 index 82b630689..000000000 Binary files a/public/media/avatar/big/047-6.png and /dev/null differ diff --git a/public/media/avatar/big/047-7.png b/public/media/avatar/big/047-7.png deleted file mode 100755 index e976955c2..000000000 Binary files a/public/media/avatar/big/047-7.png and /dev/null differ diff --git a/public/media/avatar/big/047-8.png b/public/media/avatar/big/047-8.png deleted file mode 100644 index bcda7f598..000000000 Binary files a/public/media/avatar/big/047-8.png and /dev/null differ diff --git a/public/media/avatar/big/047-9.png b/public/media/avatar/big/047-9.png deleted file mode 100644 index 3e8c53f28..000000000 Binary files a/public/media/avatar/big/047-9.png and /dev/null differ diff --git a/public/media/avatar/big/048-1.png b/public/media/avatar/big/048-1.png deleted file mode 100755 index 716a0d157..000000000 Binary files a/public/media/avatar/big/048-1.png and /dev/null differ diff --git a/public/media/avatar/big/048-10.png b/public/media/avatar/big/048-10.png deleted file mode 100644 index 0eae1b2c6..000000000 Binary files a/public/media/avatar/big/048-10.png and /dev/null differ diff --git a/public/media/avatar/big/048-11.png b/public/media/avatar/big/048-11.png deleted file mode 100644 index e71793268..000000000 Binary files a/public/media/avatar/big/048-11.png and /dev/null differ diff --git a/public/media/avatar/big/048-12.png b/public/media/avatar/big/048-12.png deleted file mode 100644 index 6c1ce67c7..000000000 Binary files a/public/media/avatar/big/048-12.png and /dev/null differ diff --git a/public/media/avatar/big/048-2.png b/public/media/avatar/big/048-2.png deleted file mode 100755 index 6ba22be77..000000000 Binary files a/public/media/avatar/big/048-2.png and /dev/null differ diff --git a/public/media/avatar/big/048-3.png b/public/media/avatar/big/048-3.png deleted file mode 100755 index 6c1ce67c7..000000000 Binary files a/public/media/avatar/big/048-3.png and /dev/null differ diff --git a/public/media/avatar/big/048-4.png b/public/media/avatar/big/048-4.png deleted file mode 100755 index cfdc0a5a5..000000000 Binary files a/public/media/avatar/big/048-4.png and /dev/null differ diff --git a/public/media/avatar/big/048-5.png b/public/media/avatar/big/048-5.png deleted file mode 100755 index e6a8d1037..000000000 Binary files a/public/media/avatar/big/048-5.png and /dev/null differ diff --git a/public/media/avatar/big/048-6.png b/public/media/avatar/big/048-6.png deleted file mode 100755 index fccd7c00e..000000000 Binary files a/public/media/avatar/big/048-6.png and /dev/null differ diff --git a/public/media/avatar/big/048-7.png b/public/media/avatar/big/048-7.png deleted file mode 100755 index 1832aff71..000000000 Binary files a/public/media/avatar/big/048-7.png and /dev/null differ diff --git a/public/media/avatar/big/048-8.png b/public/media/avatar/big/048-8.png deleted file mode 100644 index 7a431a78c..000000000 Binary files a/public/media/avatar/big/048-8.png and /dev/null differ diff --git a/public/media/avatar/big/048-9.png b/public/media/avatar/big/048-9.png deleted file mode 100644 index e6a8d1037..000000000 Binary files a/public/media/avatar/big/048-9.png and /dev/null differ diff --git a/public/media/avatar/big/049-1.png b/public/media/avatar/big/049-1.png deleted file mode 100755 index d91cc3e60..000000000 Binary files a/public/media/avatar/big/049-1.png and /dev/null differ diff --git a/public/media/avatar/big/049-10.png b/public/media/avatar/big/049-10.png deleted file mode 100644 index f17ca5cab..000000000 Binary files a/public/media/avatar/big/049-10.png and /dev/null differ diff --git a/public/media/avatar/big/049-11.png b/public/media/avatar/big/049-11.png deleted file mode 100644 index ef148be17..000000000 Binary files a/public/media/avatar/big/049-11.png and /dev/null differ diff --git a/public/media/avatar/big/049-12.png b/public/media/avatar/big/049-12.png deleted file mode 100644 index ee0595215..000000000 Binary files a/public/media/avatar/big/049-12.png and /dev/null differ diff --git a/public/media/avatar/big/049-2.png b/public/media/avatar/big/049-2.png deleted file mode 100755 index 6a39034fe..000000000 Binary files a/public/media/avatar/big/049-2.png and /dev/null differ diff --git a/public/media/avatar/big/049-3.png b/public/media/avatar/big/049-3.png deleted file mode 100755 index ee0595215..000000000 Binary files a/public/media/avatar/big/049-3.png and /dev/null differ diff --git a/public/media/avatar/big/049-4.png b/public/media/avatar/big/049-4.png deleted file mode 100755 index adf6b3ace..000000000 Binary files a/public/media/avatar/big/049-4.png and /dev/null differ diff --git a/public/media/avatar/big/049-5.png b/public/media/avatar/big/049-5.png deleted file mode 100755 index 87e7cf8c5..000000000 Binary files a/public/media/avatar/big/049-5.png and /dev/null differ diff --git a/public/media/avatar/big/049-6.png b/public/media/avatar/big/049-6.png deleted file mode 100755 index 92ae7bb0f..000000000 Binary files a/public/media/avatar/big/049-6.png and /dev/null differ diff --git a/public/media/avatar/big/049-7.png b/public/media/avatar/big/049-7.png deleted file mode 100755 index 992f2336f..000000000 Binary files a/public/media/avatar/big/049-7.png and /dev/null differ diff --git a/public/media/avatar/big/049-8.png b/public/media/avatar/big/049-8.png deleted file mode 100644 index 6b191defc..000000000 Binary files a/public/media/avatar/big/049-8.png and /dev/null differ diff --git a/public/media/avatar/big/049-9.png b/public/media/avatar/big/049-9.png deleted file mode 100644 index 87e7cf8c5..000000000 Binary files a/public/media/avatar/big/049-9.png and /dev/null differ diff --git a/public/media/avatar/big/050-1.png b/public/media/avatar/big/050-1.png deleted file mode 100755 index 73ed90d2d..000000000 Binary files a/public/media/avatar/big/050-1.png and /dev/null differ diff --git a/public/media/avatar/big/050-10.png b/public/media/avatar/big/050-10.png deleted file mode 100644 index d27e22b77..000000000 Binary files a/public/media/avatar/big/050-10.png and /dev/null differ diff --git a/public/media/avatar/big/050-11.png b/public/media/avatar/big/050-11.png deleted file mode 100644 index 7debd460c..000000000 Binary files a/public/media/avatar/big/050-11.png and /dev/null differ diff --git a/public/media/avatar/big/050-12.png b/public/media/avatar/big/050-12.png deleted file mode 100644 index dcfd5a484..000000000 Binary files a/public/media/avatar/big/050-12.png and /dev/null differ diff --git a/public/media/avatar/big/050-2.png b/public/media/avatar/big/050-2.png deleted file mode 100755 index c69da5db1..000000000 Binary files a/public/media/avatar/big/050-2.png and /dev/null differ diff --git a/public/media/avatar/big/050-3.png b/public/media/avatar/big/050-3.png deleted file mode 100755 index dcfd5a484..000000000 Binary files a/public/media/avatar/big/050-3.png and /dev/null differ diff --git a/public/media/avatar/big/050-4.png b/public/media/avatar/big/050-4.png deleted file mode 100755 index f5af0f331..000000000 Binary files a/public/media/avatar/big/050-4.png and /dev/null differ diff --git a/public/media/avatar/big/050-5.png b/public/media/avatar/big/050-5.png deleted file mode 100755 index ccd8f3631..000000000 Binary files a/public/media/avatar/big/050-5.png and /dev/null differ diff --git a/public/media/avatar/big/050-6.png b/public/media/avatar/big/050-6.png deleted file mode 100755 index 81b300dba..000000000 Binary files a/public/media/avatar/big/050-6.png and /dev/null differ diff --git a/public/media/avatar/big/050-7.png b/public/media/avatar/big/050-7.png deleted file mode 100755 index 566063bb3..000000000 Binary files a/public/media/avatar/big/050-7.png and /dev/null differ diff --git a/public/media/avatar/big/050-8.png b/public/media/avatar/big/050-8.png deleted file mode 100644 index 5207403c5..000000000 Binary files a/public/media/avatar/big/050-8.png and /dev/null differ diff --git a/public/media/avatar/big/050-9.png b/public/media/avatar/big/050-9.png deleted file mode 100644 index ccd8f3631..000000000 Binary files a/public/media/avatar/big/050-9.png and /dev/null differ diff --git a/public/media/avatar/big/051-1.png b/public/media/avatar/big/051-1.png deleted file mode 100755 index cced456cc..000000000 Binary files a/public/media/avatar/big/051-1.png and /dev/null differ diff --git a/public/media/avatar/big/051-10.png b/public/media/avatar/big/051-10.png deleted file mode 100644 index 097de8262..000000000 Binary files a/public/media/avatar/big/051-10.png and /dev/null differ diff --git a/public/media/avatar/big/051-11.png b/public/media/avatar/big/051-11.png deleted file mode 100644 index eaeef5cdc..000000000 Binary files a/public/media/avatar/big/051-11.png and /dev/null differ diff --git a/public/media/avatar/big/051-12.png b/public/media/avatar/big/051-12.png deleted file mode 100644 index e1d1bd333..000000000 Binary files a/public/media/avatar/big/051-12.png and /dev/null differ diff --git a/public/media/avatar/big/051-2.png b/public/media/avatar/big/051-2.png deleted file mode 100755 index 4b09733ed..000000000 Binary files a/public/media/avatar/big/051-2.png and /dev/null differ diff --git a/public/media/avatar/big/051-3.png b/public/media/avatar/big/051-3.png deleted file mode 100755 index e1d1bd333..000000000 Binary files a/public/media/avatar/big/051-3.png and /dev/null differ diff --git a/public/media/avatar/big/051-4.png b/public/media/avatar/big/051-4.png deleted file mode 100755 index 97821ca20..000000000 Binary files a/public/media/avatar/big/051-4.png and /dev/null differ diff --git a/public/media/avatar/big/051-5.png b/public/media/avatar/big/051-5.png deleted file mode 100755 index 7436300b0..000000000 Binary files a/public/media/avatar/big/051-5.png and /dev/null differ diff --git a/public/media/avatar/big/051-6.png b/public/media/avatar/big/051-6.png deleted file mode 100755 index c43c61fa1..000000000 Binary files a/public/media/avatar/big/051-6.png and /dev/null differ diff --git a/public/media/avatar/big/051-7.png b/public/media/avatar/big/051-7.png deleted file mode 100755 index 1c2c0c272..000000000 Binary files a/public/media/avatar/big/051-7.png and /dev/null differ diff --git a/public/media/avatar/big/051-8.png b/public/media/avatar/big/051-8.png deleted file mode 100644 index f7c18e0cd..000000000 Binary files a/public/media/avatar/big/051-8.png and /dev/null differ diff --git a/public/media/avatar/big/051-9.png b/public/media/avatar/big/051-9.png deleted file mode 100644 index 7436300b0..000000000 Binary files a/public/media/avatar/big/051-9.png and /dev/null differ diff --git a/public/media/avatar/big/052-1.png b/public/media/avatar/big/052-1.png deleted file mode 100755 index 221be406b..000000000 Binary files a/public/media/avatar/big/052-1.png and /dev/null differ diff --git a/public/media/avatar/big/052-10.png b/public/media/avatar/big/052-10.png deleted file mode 100644 index be231f761..000000000 Binary files a/public/media/avatar/big/052-10.png and /dev/null differ diff --git a/public/media/avatar/big/052-11.png b/public/media/avatar/big/052-11.png deleted file mode 100644 index 64626b7eb..000000000 Binary files a/public/media/avatar/big/052-11.png and /dev/null differ diff --git a/public/media/avatar/big/052-12.png b/public/media/avatar/big/052-12.png deleted file mode 100644 index 8b09c0348..000000000 Binary files a/public/media/avatar/big/052-12.png and /dev/null differ diff --git a/public/media/avatar/big/052-2.png b/public/media/avatar/big/052-2.png deleted file mode 100755 index b580898ff..000000000 Binary files a/public/media/avatar/big/052-2.png and /dev/null differ diff --git a/public/media/avatar/big/052-3.png b/public/media/avatar/big/052-3.png deleted file mode 100755 index 8b09c0348..000000000 Binary files a/public/media/avatar/big/052-3.png and /dev/null differ diff --git a/public/media/avatar/big/052-4.png b/public/media/avatar/big/052-4.png deleted file mode 100755 index 72e50a0e7..000000000 Binary files a/public/media/avatar/big/052-4.png and /dev/null differ diff --git a/public/media/avatar/big/052-5.png b/public/media/avatar/big/052-5.png deleted file mode 100755 index e1e308609..000000000 Binary files a/public/media/avatar/big/052-5.png and /dev/null differ diff --git a/public/media/avatar/big/052-6.png b/public/media/avatar/big/052-6.png deleted file mode 100755 index a6d44ce9c..000000000 Binary files a/public/media/avatar/big/052-6.png and /dev/null differ diff --git a/public/media/avatar/big/052-7.png b/public/media/avatar/big/052-7.png deleted file mode 100755 index 8f2ae02c0..000000000 Binary files a/public/media/avatar/big/052-7.png and /dev/null differ diff --git a/public/media/avatar/big/052-8.png b/public/media/avatar/big/052-8.png deleted file mode 100644 index 567471674..000000000 Binary files a/public/media/avatar/big/052-8.png and /dev/null differ diff --git a/public/media/avatar/big/052-9.png b/public/media/avatar/big/052-9.png deleted file mode 100644 index e1e308609..000000000 Binary files a/public/media/avatar/big/052-9.png and /dev/null differ diff --git a/public/media/avatar/big/053-1.png b/public/media/avatar/big/053-1.png deleted file mode 100755 index e59cebebe..000000000 Binary files a/public/media/avatar/big/053-1.png and /dev/null differ diff --git a/public/media/avatar/big/053-10.png b/public/media/avatar/big/053-10.png deleted file mode 100644 index 36b8ffd08..000000000 Binary files a/public/media/avatar/big/053-10.png and /dev/null differ diff --git a/public/media/avatar/big/053-11.png b/public/media/avatar/big/053-11.png deleted file mode 100644 index 8f2feed73..000000000 Binary files a/public/media/avatar/big/053-11.png and /dev/null differ diff --git a/public/media/avatar/big/053-12.png b/public/media/avatar/big/053-12.png deleted file mode 100644 index f79ee6908..000000000 Binary files a/public/media/avatar/big/053-12.png and /dev/null differ diff --git a/public/media/avatar/big/053-2.png b/public/media/avatar/big/053-2.png deleted file mode 100755 index aa280016d..000000000 Binary files a/public/media/avatar/big/053-2.png and /dev/null differ diff --git a/public/media/avatar/big/053-3.png b/public/media/avatar/big/053-3.png deleted file mode 100755 index 6140ad11e..000000000 Binary files a/public/media/avatar/big/053-3.png and /dev/null differ diff --git a/public/media/avatar/big/053-4.png b/public/media/avatar/big/053-4.png deleted file mode 100755 index 65d8e79b2..000000000 Binary files a/public/media/avatar/big/053-4.png and /dev/null differ diff --git a/public/media/avatar/big/053-5.png b/public/media/avatar/big/053-5.png deleted file mode 100755 index f0787ddac..000000000 Binary files a/public/media/avatar/big/053-5.png and /dev/null differ diff --git a/public/media/avatar/big/053-6.png b/public/media/avatar/big/053-6.png deleted file mode 100755 index e959e9855..000000000 Binary files a/public/media/avatar/big/053-6.png and /dev/null differ diff --git a/public/media/avatar/big/053-7.png b/public/media/avatar/big/053-7.png deleted file mode 100755 index c3668d4fb..000000000 Binary files a/public/media/avatar/big/053-7.png and /dev/null differ diff --git a/public/media/avatar/big/053-8.png b/public/media/avatar/big/053-8.png deleted file mode 100644 index 9f71a9ad8..000000000 Binary files a/public/media/avatar/big/053-8.png and /dev/null differ diff --git a/public/media/avatar/big/053-9.png b/public/media/avatar/big/053-9.png deleted file mode 100644 index f0787ddac..000000000 Binary files a/public/media/avatar/big/053-9.png and /dev/null differ diff --git a/public/media/avatar/big/054-1.png b/public/media/avatar/big/054-1.png deleted file mode 100755 index 134fa5c6a..000000000 Binary files a/public/media/avatar/big/054-1.png and /dev/null differ diff --git a/public/media/avatar/big/054-10.png b/public/media/avatar/big/054-10.png deleted file mode 100644 index cf884374d..000000000 Binary files a/public/media/avatar/big/054-10.png and /dev/null differ diff --git a/public/media/avatar/big/054-11.png b/public/media/avatar/big/054-11.png deleted file mode 100644 index 015c9ff8a..000000000 Binary files a/public/media/avatar/big/054-11.png and /dev/null differ diff --git a/public/media/avatar/big/054-12.png b/public/media/avatar/big/054-12.png deleted file mode 100644 index bbb8dedbf..000000000 Binary files a/public/media/avatar/big/054-12.png and /dev/null differ diff --git a/public/media/avatar/big/054-2.png b/public/media/avatar/big/054-2.png deleted file mode 100755 index 67697d762..000000000 Binary files a/public/media/avatar/big/054-2.png and /dev/null differ diff --git a/public/media/avatar/big/054-3.png b/public/media/avatar/big/054-3.png deleted file mode 100755 index bbb8dedbf..000000000 Binary files a/public/media/avatar/big/054-3.png and /dev/null differ diff --git a/public/media/avatar/big/054-4.png b/public/media/avatar/big/054-4.png deleted file mode 100755 index 97a7b2a68..000000000 Binary files a/public/media/avatar/big/054-4.png and /dev/null differ diff --git a/public/media/avatar/big/054-5.png b/public/media/avatar/big/054-5.png deleted file mode 100755 index 987d60d4f..000000000 Binary files a/public/media/avatar/big/054-5.png and /dev/null differ diff --git a/public/media/avatar/big/054-6.png b/public/media/avatar/big/054-6.png deleted file mode 100755 index 9f30d7bb6..000000000 Binary files a/public/media/avatar/big/054-6.png and /dev/null differ diff --git a/public/media/avatar/big/054-7.png b/public/media/avatar/big/054-7.png deleted file mode 100755 index 93b5323ea..000000000 Binary files a/public/media/avatar/big/054-7.png and /dev/null differ diff --git a/public/media/avatar/big/054-8.png b/public/media/avatar/big/054-8.png deleted file mode 100644 index 5db2e6b62..000000000 Binary files a/public/media/avatar/big/054-8.png and /dev/null differ diff --git a/public/media/avatar/big/054-9.png b/public/media/avatar/big/054-9.png deleted file mode 100644 index 987d60d4f..000000000 Binary files a/public/media/avatar/big/054-9.png and /dev/null differ diff --git a/public/media/avatar/big/055-1.png b/public/media/avatar/big/055-1.png deleted file mode 100755 index aa0a3038e..000000000 Binary files a/public/media/avatar/big/055-1.png and /dev/null differ diff --git a/public/media/avatar/big/055-10.png b/public/media/avatar/big/055-10.png deleted file mode 100644 index f4b097657..000000000 Binary files a/public/media/avatar/big/055-10.png and /dev/null differ diff --git a/public/media/avatar/big/055-11.png b/public/media/avatar/big/055-11.png deleted file mode 100644 index e5b2affe2..000000000 Binary files a/public/media/avatar/big/055-11.png and /dev/null differ diff --git a/public/media/avatar/big/055-12.png b/public/media/avatar/big/055-12.png deleted file mode 100644 index d2dbb8a78..000000000 Binary files a/public/media/avatar/big/055-12.png and /dev/null differ diff --git a/public/media/avatar/big/055-2.png b/public/media/avatar/big/055-2.png deleted file mode 100755 index 17acc4c43..000000000 Binary files a/public/media/avatar/big/055-2.png and /dev/null differ diff --git a/public/media/avatar/big/055-3.png b/public/media/avatar/big/055-3.png deleted file mode 100755 index d2dbb8a78..000000000 Binary files a/public/media/avatar/big/055-3.png and /dev/null differ diff --git a/public/media/avatar/big/055-4.png b/public/media/avatar/big/055-4.png deleted file mode 100755 index 514f24ff5..000000000 Binary files a/public/media/avatar/big/055-4.png and /dev/null differ diff --git a/public/media/avatar/big/055-5.png b/public/media/avatar/big/055-5.png deleted file mode 100755 index 54d2c4fd9..000000000 Binary files a/public/media/avatar/big/055-5.png and /dev/null differ diff --git a/public/media/avatar/big/055-6.png b/public/media/avatar/big/055-6.png deleted file mode 100755 index 0d241ea00..000000000 Binary files a/public/media/avatar/big/055-6.png and /dev/null differ diff --git a/public/media/avatar/big/055-7.png b/public/media/avatar/big/055-7.png deleted file mode 100755 index 43abf20bf..000000000 Binary files a/public/media/avatar/big/055-7.png and /dev/null differ diff --git a/public/media/avatar/big/055-8.png b/public/media/avatar/big/055-8.png deleted file mode 100644 index 2c283ad94..000000000 Binary files a/public/media/avatar/big/055-8.png and /dev/null differ diff --git a/public/media/avatar/big/055-9.png b/public/media/avatar/big/055-9.png deleted file mode 100644 index 54d2c4fd9..000000000 Binary files a/public/media/avatar/big/055-9.png and /dev/null differ diff --git a/public/media/avatar/big/056-1.png b/public/media/avatar/big/056-1.png deleted file mode 100755 index 801507733..000000000 Binary files a/public/media/avatar/big/056-1.png and /dev/null differ diff --git a/public/media/avatar/big/056-10.png b/public/media/avatar/big/056-10.png deleted file mode 100644 index bd371f6d6..000000000 Binary files a/public/media/avatar/big/056-10.png and /dev/null differ diff --git a/public/media/avatar/big/056-11.png b/public/media/avatar/big/056-11.png deleted file mode 100644 index 566de5fc3..000000000 Binary files a/public/media/avatar/big/056-11.png and /dev/null differ diff --git a/public/media/avatar/big/056-12.png b/public/media/avatar/big/056-12.png deleted file mode 100644 index 2606207ec..000000000 Binary files a/public/media/avatar/big/056-12.png and /dev/null differ diff --git a/public/media/avatar/big/056-2.png b/public/media/avatar/big/056-2.png deleted file mode 100755 index c9868d1a2..000000000 Binary files a/public/media/avatar/big/056-2.png and /dev/null differ diff --git a/public/media/avatar/big/056-3.png b/public/media/avatar/big/056-3.png deleted file mode 100755 index 2606207ec..000000000 Binary files a/public/media/avatar/big/056-3.png and /dev/null differ diff --git a/public/media/avatar/big/056-4.png b/public/media/avatar/big/056-4.png deleted file mode 100755 index 4b850efa8..000000000 Binary files a/public/media/avatar/big/056-4.png and /dev/null differ diff --git a/public/media/avatar/big/056-5.png b/public/media/avatar/big/056-5.png deleted file mode 100755 index d8fba5bfb..000000000 Binary files a/public/media/avatar/big/056-5.png and /dev/null differ diff --git a/public/media/avatar/big/056-6.png b/public/media/avatar/big/056-6.png deleted file mode 100755 index 76ac48886..000000000 Binary files a/public/media/avatar/big/056-6.png and /dev/null differ diff --git a/public/media/avatar/big/056-7.png b/public/media/avatar/big/056-7.png deleted file mode 100755 index 4e3faad59..000000000 Binary files a/public/media/avatar/big/056-7.png and /dev/null differ diff --git a/public/media/avatar/big/056-8.png b/public/media/avatar/big/056-8.png deleted file mode 100644 index 7f33d609c..000000000 Binary files a/public/media/avatar/big/056-8.png and /dev/null differ diff --git a/public/media/avatar/big/056-9.png b/public/media/avatar/big/056-9.png deleted file mode 100644 index d8fba5bfb..000000000 Binary files a/public/media/avatar/big/056-9.png and /dev/null differ diff --git a/public/media/avatar/big/057-1.png b/public/media/avatar/big/057-1.png deleted file mode 100755 index 06db856c7..000000000 Binary files a/public/media/avatar/big/057-1.png and /dev/null differ diff --git a/public/media/avatar/big/057-10.png b/public/media/avatar/big/057-10.png deleted file mode 100644 index 469594ffe..000000000 Binary files a/public/media/avatar/big/057-10.png and /dev/null differ diff --git a/public/media/avatar/big/057-11.png b/public/media/avatar/big/057-11.png deleted file mode 100644 index 1326515ca..000000000 Binary files a/public/media/avatar/big/057-11.png and /dev/null differ diff --git a/public/media/avatar/big/057-12.png b/public/media/avatar/big/057-12.png deleted file mode 100644 index ee06c7edb..000000000 Binary files a/public/media/avatar/big/057-12.png and /dev/null differ diff --git a/public/media/avatar/big/057-2.png b/public/media/avatar/big/057-2.png deleted file mode 100755 index 473e182db..000000000 Binary files a/public/media/avatar/big/057-2.png and /dev/null differ diff --git a/public/media/avatar/big/057-3.png b/public/media/avatar/big/057-3.png deleted file mode 100755 index ee06c7edb..000000000 Binary files a/public/media/avatar/big/057-3.png and /dev/null differ diff --git a/public/media/avatar/big/057-4.png b/public/media/avatar/big/057-4.png deleted file mode 100755 index 2999e1b69..000000000 Binary files a/public/media/avatar/big/057-4.png and /dev/null differ diff --git a/public/media/avatar/big/057-5.png b/public/media/avatar/big/057-5.png deleted file mode 100755 index 8446307c4..000000000 Binary files a/public/media/avatar/big/057-5.png and /dev/null differ diff --git a/public/media/avatar/big/057-6.png b/public/media/avatar/big/057-6.png deleted file mode 100755 index d16e020ea..000000000 Binary files a/public/media/avatar/big/057-6.png and /dev/null differ diff --git a/public/media/avatar/big/057-7.png b/public/media/avatar/big/057-7.png deleted file mode 100755 index 8f462c72d..000000000 Binary files a/public/media/avatar/big/057-7.png and /dev/null differ diff --git a/public/media/avatar/big/057-8.png b/public/media/avatar/big/057-8.png deleted file mode 100644 index c44746311..000000000 Binary files a/public/media/avatar/big/057-8.png and /dev/null differ diff --git a/public/media/avatar/big/057-9.png b/public/media/avatar/big/057-9.png deleted file mode 100644 index 8446307c4..000000000 Binary files a/public/media/avatar/big/057-9.png and /dev/null differ diff --git a/public/media/avatar/big/058-1.png b/public/media/avatar/big/058-1.png deleted file mode 100755 index dda000277..000000000 Binary files a/public/media/avatar/big/058-1.png and /dev/null differ diff --git a/public/media/avatar/big/058-10.png b/public/media/avatar/big/058-10.png deleted file mode 100644 index 8c30f3af7..000000000 Binary files a/public/media/avatar/big/058-10.png and /dev/null differ diff --git a/public/media/avatar/big/058-11.png b/public/media/avatar/big/058-11.png deleted file mode 100644 index 3612e82b7..000000000 Binary files a/public/media/avatar/big/058-11.png and /dev/null differ diff --git a/public/media/avatar/big/058-12.png b/public/media/avatar/big/058-12.png deleted file mode 100644 index a4f44a17c..000000000 Binary files a/public/media/avatar/big/058-12.png and /dev/null differ diff --git a/public/media/avatar/big/058-2.png b/public/media/avatar/big/058-2.png deleted file mode 100755 index 0a3dcc97d..000000000 Binary files a/public/media/avatar/big/058-2.png and /dev/null differ diff --git a/public/media/avatar/big/058-3.png b/public/media/avatar/big/058-3.png deleted file mode 100755 index a4f44a17c..000000000 Binary files a/public/media/avatar/big/058-3.png and /dev/null differ diff --git a/public/media/avatar/big/058-4.png b/public/media/avatar/big/058-4.png deleted file mode 100755 index be6d04167..000000000 Binary files a/public/media/avatar/big/058-4.png and /dev/null differ diff --git a/public/media/avatar/big/058-5.png b/public/media/avatar/big/058-5.png deleted file mode 100755 index 276084502..000000000 Binary files a/public/media/avatar/big/058-5.png and /dev/null differ diff --git a/public/media/avatar/big/058-6.png b/public/media/avatar/big/058-6.png deleted file mode 100755 index e256046d5..000000000 Binary files a/public/media/avatar/big/058-6.png and /dev/null differ diff --git a/public/media/avatar/big/058-7.png b/public/media/avatar/big/058-7.png deleted file mode 100755 index ec0863014..000000000 Binary files a/public/media/avatar/big/058-7.png and /dev/null differ diff --git a/public/media/avatar/big/058-8.png b/public/media/avatar/big/058-8.png deleted file mode 100644 index 6703d042b..000000000 Binary files a/public/media/avatar/big/058-8.png and /dev/null differ diff --git a/public/media/avatar/big/058-9.png b/public/media/avatar/big/058-9.png deleted file mode 100644 index 276084502..000000000 Binary files a/public/media/avatar/big/058-9.png and /dev/null differ diff --git a/public/media/avatar/big/059-1.png b/public/media/avatar/big/059-1.png deleted file mode 100755 index c761fe473..000000000 Binary files a/public/media/avatar/big/059-1.png and /dev/null differ diff --git a/public/media/avatar/big/059-10.png b/public/media/avatar/big/059-10.png deleted file mode 100644 index dd723a32e..000000000 Binary files a/public/media/avatar/big/059-10.png and /dev/null differ diff --git a/public/media/avatar/big/059-11.png b/public/media/avatar/big/059-11.png deleted file mode 100644 index 8bde66987..000000000 Binary files a/public/media/avatar/big/059-11.png and /dev/null differ diff --git a/public/media/avatar/big/059-12.png b/public/media/avatar/big/059-12.png deleted file mode 100644 index 06287a338..000000000 Binary files a/public/media/avatar/big/059-12.png and /dev/null differ diff --git a/public/media/avatar/big/059-2.png b/public/media/avatar/big/059-2.png deleted file mode 100755 index e63116a2b..000000000 Binary files a/public/media/avatar/big/059-2.png and /dev/null differ diff --git a/public/media/avatar/big/059-3.png b/public/media/avatar/big/059-3.png deleted file mode 100755 index 06287a338..000000000 Binary files a/public/media/avatar/big/059-3.png and /dev/null differ diff --git a/public/media/avatar/big/059-4.png b/public/media/avatar/big/059-4.png deleted file mode 100755 index 8f03d9747..000000000 Binary files a/public/media/avatar/big/059-4.png and /dev/null differ diff --git a/public/media/avatar/big/059-5.png b/public/media/avatar/big/059-5.png deleted file mode 100755 index e4c8936db..000000000 Binary files a/public/media/avatar/big/059-5.png and /dev/null differ diff --git a/public/media/avatar/big/059-6.png b/public/media/avatar/big/059-6.png deleted file mode 100755 index 6a8deb5a0..000000000 Binary files a/public/media/avatar/big/059-6.png and /dev/null differ diff --git a/public/media/avatar/big/059-7.png b/public/media/avatar/big/059-7.png deleted file mode 100755 index 63c29f3f4..000000000 Binary files a/public/media/avatar/big/059-7.png and /dev/null differ diff --git a/public/media/avatar/big/059-8.png b/public/media/avatar/big/059-8.png deleted file mode 100644 index 2129147ca..000000000 Binary files a/public/media/avatar/big/059-8.png and /dev/null differ diff --git a/public/media/avatar/big/059-9.png b/public/media/avatar/big/059-9.png deleted file mode 100644 index e4c8936db..000000000 Binary files a/public/media/avatar/big/059-9.png and /dev/null differ diff --git a/public/media/avatar/big/060-1.png b/public/media/avatar/big/060-1.png deleted file mode 100755 index ddf51c422..000000000 Binary files a/public/media/avatar/big/060-1.png and /dev/null differ diff --git a/public/media/avatar/big/060-10.png b/public/media/avatar/big/060-10.png deleted file mode 100644 index 5eb2bddfd..000000000 Binary files a/public/media/avatar/big/060-10.png and /dev/null differ diff --git a/public/media/avatar/big/060-11.png b/public/media/avatar/big/060-11.png deleted file mode 100644 index da221c1ae..000000000 Binary files a/public/media/avatar/big/060-11.png and /dev/null differ diff --git a/public/media/avatar/big/060-12.png b/public/media/avatar/big/060-12.png deleted file mode 100644 index dee0abdc2..000000000 Binary files a/public/media/avatar/big/060-12.png and /dev/null differ diff --git a/public/media/avatar/big/060-2.png b/public/media/avatar/big/060-2.png deleted file mode 100755 index 53ba497dd..000000000 Binary files a/public/media/avatar/big/060-2.png and /dev/null differ diff --git a/public/media/avatar/big/060-3.png b/public/media/avatar/big/060-3.png deleted file mode 100755 index dee0abdc2..000000000 Binary files a/public/media/avatar/big/060-3.png and /dev/null differ diff --git a/public/media/avatar/big/060-4.png b/public/media/avatar/big/060-4.png deleted file mode 100755 index 2f0acccac..000000000 Binary files a/public/media/avatar/big/060-4.png and /dev/null differ diff --git a/public/media/avatar/big/060-5.png b/public/media/avatar/big/060-5.png deleted file mode 100755 index 110985ed4..000000000 Binary files a/public/media/avatar/big/060-5.png and /dev/null differ diff --git a/public/media/avatar/big/060-6.png b/public/media/avatar/big/060-6.png deleted file mode 100755 index 69bf9e0e3..000000000 Binary files a/public/media/avatar/big/060-6.png and /dev/null differ diff --git a/public/media/avatar/big/060-7.png b/public/media/avatar/big/060-7.png deleted file mode 100755 index 3e1caa3fd..000000000 Binary files a/public/media/avatar/big/060-7.png and /dev/null differ diff --git a/public/media/avatar/big/060-8.png b/public/media/avatar/big/060-8.png deleted file mode 100644 index 283c02755..000000000 Binary files a/public/media/avatar/big/060-8.png and /dev/null differ diff --git a/public/media/avatar/big/060-9.png b/public/media/avatar/big/060-9.png deleted file mode 100644 index 110985ed4..000000000 Binary files a/public/media/avatar/big/060-9.png and /dev/null differ diff --git a/public/media/avatar/big/061-1.png b/public/media/avatar/big/061-1.png deleted file mode 100755 index 016ab05d1..000000000 Binary files a/public/media/avatar/big/061-1.png and /dev/null differ diff --git a/public/media/avatar/big/061-10.png b/public/media/avatar/big/061-10.png deleted file mode 100644 index b54b597d1..000000000 Binary files a/public/media/avatar/big/061-10.png and /dev/null differ diff --git a/public/media/avatar/big/061-11.png b/public/media/avatar/big/061-11.png deleted file mode 100644 index e73335878..000000000 Binary files a/public/media/avatar/big/061-11.png and /dev/null differ diff --git a/public/media/avatar/big/061-12.png b/public/media/avatar/big/061-12.png deleted file mode 100644 index d491e4e2c..000000000 Binary files a/public/media/avatar/big/061-12.png and /dev/null differ diff --git a/public/media/avatar/big/061-2.png b/public/media/avatar/big/061-2.png deleted file mode 100755 index 9ea0db5c2..000000000 Binary files a/public/media/avatar/big/061-2.png and /dev/null differ diff --git a/public/media/avatar/big/061-3.png b/public/media/avatar/big/061-3.png deleted file mode 100755 index d491e4e2c..000000000 Binary files a/public/media/avatar/big/061-3.png and /dev/null differ diff --git a/public/media/avatar/big/061-4.png b/public/media/avatar/big/061-4.png deleted file mode 100755 index 8b40249e4..000000000 Binary files a/public/media/avatar/big/061-4.png and /dev/null differ diff --git a/public/media/avatar/big/061-5.png b/public/media/avatar/big/061-5.png deleted file mode 100755 index 80f923986..000000000 Binary files a/public/media/avatar/big/061-5.png and /dev/null differ diff --git a/public/media/avatar/big/061-6.png b/public/media/avatar/big/061-6.png deleted file mode 100755 index 04a22fa40..000000000 Binary files a/public/media/avatar/big/061-6.png and /dev/null differ diff --git a/public/media/avatar/big/061-7.png b/public/media/avatar/big/061-7.png deleted file mode 100755 index 6ad6662ab..000000000 Binary files a/public/media/avatar/big/061-7.png and /dev/null differ diff --git a/public/media/avatar/big/061-8.png b/public/media/avatar/big/061-8.png deleted file mode 100644 index 74570cd1f..000000000 Binary files a/public/media/avatar/big/061-8.png and /dev/null differ diff --git a/public/media/avatar/big/061-9.png b/public/media/avatar/big/061-9.png deleted file mode 100644 index 80f923986..000000000 Binary files a/public/media/avatar/big/061-9.png and /dev/null differ diff --git a/public/media/avatar/big/062-1.png b/public/media/avatar/big/062-1.png deleted file mode 100755 index d8c19d962..000000000 Binary files a/public/media/avatar/big/062-1.png and /dev/null differ diff --git a/public/media/avatar/big/062-10.png b/public/media/avatar/big/062-10.png deleted file mode 100644 index 8dfd9eac5..000000000 Binary files a/public/media/avatar/big/062-10.png and /dev/null differ diff --git a/public/media/avatar/big/062-11.png b/public/media/avatar/big/062-11.png deleted file mode 100644 index 481c9a1c3..000000000 Binary files a/public/media/avatar/big/062-11.png and /dev/null differ diff --git a/public/media/avatar/big/062-12.png b/public/media/avatar/big/062-12.png deleted file mode 100644 index ddd9f0c75..000000000 Binary files a/public/media/avatar/big/062-12.png and /dev/null differ diff --git a/public/media/avatar/big/062-2.png b/public/media/avatar/big/062-2.png deleted file mode 100755 index a07da1546..000000000 Binary files a/public/media/avatar/big/062-2.png and /dev/null differ diff --git a/public/media/avatar/big/062-3.png b/public/media/avatar/big/062-3.png deleted file mode 100755 index ddd9f0c75..000000000 Binary files a/public/media/avatar/big/062-3.png and /dev/null differ diff --git a/public/media/avatar/big/062-4.png b/public/media/avatar/big/062-4.png deleted file mode 100755 index d5a792e80..000000000 Binary files a/public/media/avatar/big/062-4.png and /dev/null differ diff --git a/public/media/avatar/big/062-5.png b/public/media/avatar/big/062-5.png deleted file mode 100755 index db1a40154..000000000 Binary files a/public/media/avatar/big/062-5.png and /dev/null differ diff --git a/public/media/avatar/big/062-6.png b/public/media/avatar/big/062-6.png deleted file mode 100755 index c50d20e96..000000000 Binary files a/public/media/avatar/big/062-6.png and /dev/null differ diff --git a/public/media/avatar/big/062-7.png b/public/media/avatar/big/062-7.png deleted file mode 100755 index 8639304fc..000000000 Binary files a/public/media/avatar/big/062-7.png and /dev/null differ diff --git a/public/media/avatar/big/062-8.png b/public/media/avatar/big/062-8.png deleted file mode 100644 index 515e0b9bc..000000000 Binary files a/public/media/avatar/big/062-8.png and /dev/null differ diff --git a/public/media/avatar/big/062-9.png b/public/media/avatar/big/062-9.png deleted file mode 100644 index db1a40154..000000000 Binary files a/public/media/avatar/big/062-9.png and /dev/null differ diff --git a/public/media/avatar/big/063-1.png b/public/media/avatar/big/063-1.png deleted file mode 100755 index 9ebdd2b29..000000000 Binary files a/public/media/avatar/big/063-1.png and /dev/null differ diff --git a/public/media/avatar/big/063-10.png b/public/media/avatar/big/063-10.png deleted file mode 100644 index 01faeacf8..000000000 Binary files a/public/media/avatar/big/063-10.png and /dev/null differ diff --git a/public/media/avatar/big/063-11.png b/public/media/avatar/big/063-11.png deleted file mode 100644 index 0325332a8..000000000 Binary files a/public/media/avatar/big/063-11.png and /dev/null differ diff --git a/public/media/avatar/big/063-12.png b/public/media/avatar/big/063-12.png deleted file mode 100644 index 868cd985b..000000000 Binary files a/public/media/avatar/big/063-12.png and /dev/null differ diff --git a/public/media/avatar/big/063-2.png b/public/media/avatar/big/063-2.png deleted file mode 100755 index 23072d372..000000000 Binary files a/public/media/avatar/big/063-2.png and /dev/null differ diff --git a/public/media/avatar/big/063-3.png b/public/media/avatar/big/063-3.png deleted file mode 100755 index 6b3718f5d..000000000 Binary files a/public/media/avatar/big/063-3.png and /dev/null differ diff --git a/public/media/avatar/big/063-4.png b/public/media/avatar/big/063-4.png deleted file mode 100755 index 2889b1de2..000000000 Binary files a/public/media/avatar/big/063-4.png and /dev/null differ diff --git a/public/media/avatar/big/063-5.png b/public/media/avatar/big/063-5.png deleted file mode 100755 index a9eb9f352..000000000 Binary files a/public/media/avatar/big/063-5.png and /dev/null differ diff --git a/public/media/avatar/big/063-6.png b/public/media/avatar/big/063-6.png deleted file mode 100755 index 25508914f..000000000 Binary files a/public/media/avatar/big/063-6.png and /dev/null differ diff --git a/public/media/avatar/big/063-7.png b/public/media/avatar/big/063-7.png deleted file mode 100755 index d4f47e46f..000000000 Binary files a/public/media/avatar/big/063-7.png and /dev/null differ diff --git a/public/media/avatar/big/063-8.png b/public/media/avatar/big/063-8.png deleted file mode 100644 index f4803546c..000000000 Binary files a/public/media/avatar/big/063-8.png and /dev/null differ diff --git a/public/media/avatar/big/063-9.png b/public/media/avatar/big/063-9.png deleted file mode 100644 index a9eb9f352..000000000 Binary files a/public/media/avatar/big/063-9.png and /dev/null differ diff --git a/public/media/avatar/big/064-1.png b/public/media/avatar/big/064-1.png deleted file mode 100755 index a55d84c2f..000000000 Binary files a/public/media/avatar/big/064-1.png and /dev/null differ diff --git a/public/media/avatar/big/064-10.png b/public/media/avatar/big/064-10.png deleted file mode 100644 index b1af45f2a..000000000 Binary files a/public/media/avatar/big/064-10.png and /dev/null differ diff --git a/public/media/avatar/big/064-11.png b/public/media/avatar/big/064-11.png deleted file mode 100644 index eb02e7f06..000000000 Binary files a/public/media/avatar/big/064-11.png and /dev/null differ diff --git a/public/media/avatar/big/064-12.png b/public/media/avatar/big/064-12.png deleted file mode 100644 index 70e560201..000000000 Binary files a/public/media/avatar/big/064-12.png and /dev/null differ diff --git a/public/media/avatar/big/064-2.png b/public/media/avatar/big/064-2.png deleted file mode 100755 index d1eed399d..000000000 Binary files a/public/media/avatar/big/064-2.png and /dev/null differ diff --git a/public/media/avatar/big/064-3.png b/public/media/avatar/big/064-3.png deleted file mode 100755 index e218e852b..000000000 Binary files a/public/media/avatar/big/064-3.png and /dev/null differ diff --git a/public/media/avatar/big/064-4.png b/public/media/avatar/big/064-4.png deleted file mode 100755 index a84aa616a..000000000 Binary files a/public/media/avatar/big/064-4.png and /dev/null differ diff --git a/public/media/avatar/big/064-5.png b/public/media/avatar/big/064-5.png deleted file mode 100755 index 8651252b9..000000000 Binary files a/public/media/avatar/big/064-5.png and /dev/null differ diff --git a/public/media/avatar/big/064-6.png b/public/media/avatar/big/064-6.png deleted file mode 100755 index 122e5df5f..000000000 Binary files a/public/media/avatar/big/064-6.png and /dev/null differ diff --git a/public/media/avatar/big/064-7.png b/public/media/avatar/big/064-7.png deleted file mode 100755 index 869c31337..000000000 Binary files a/public/media/avatar/big/064-7.png and /dev/null differ diff --git a/public/media/avatar/big/064-8.png b/public/media/avatar/big/064-8.png deleted file mode 100644 index f1b860d75..000000000 Binary files a/public/media/avatar/big/064-8.png and /dev/null differ diff --git a/public/media/avatar/big/064-9.png b/public/media/avatar/big/064-9.png deleted file mode 100644 index 8651252b9..000000000 Binary files a/public/media/avatar/big/064-9.png and /dev/null differ diff --git a/public/media/avatar/big/065-1.png b/public/media/avatar/big/065-1.png deleted file mode 100755 index fa814a3f0..000000000 Binary files a/public/media/avatar/big/065-1.png and /dev/null differ diff --git a/public/media/avatar/big/065-10.png b/public/media/avatar/big/065-10.png deleted file mode 100644 index 64bfb8a45..000000000 Binary files a/public/media/avatar/big/065-10.png and /dev/null differ diff --git a/public/media/avatar/big/065-11.png b/public/media/avatar/big/065-11.png deleted file mode 100644 index db5a082e5..000000000 Binary files a/public/media/avatar/big/065-11.png and /dev/null differ diff --git a/public/media/avatar/big/065-12.png b/public/media/avatar/big/065-12.png deleted file mode 100644 index af010e159..000000000 Binary files a/public/media/avatar/big/065-12.png and /dev/null differ diff --git a/public/media/avatar/big/065-2.png b/public/media/avatar/big/065-2.png deleted file mode 100755 index ab8d16550..000000000 Binary files a/public/media/avatar/big/065-2.png and /dev/null differ diff --git a/public/media/avatar/big/065-3.png b/public/media/avatar/big/065-3.png deleted file mode 100755 index af010e159..000000000 Binary files a/public/media/avatar/big/065-3.png and /dev/null differ diff --git a/public/media/avatar/big/065-4.png b/public/media/avatar/big/065-4.png deleted file mode 100755 index 4d39f30b6..000000000 Binary files a/public/media/avatar/big/065-4.png and /dev/null differ diff --git a/public/media/avatar/big/065-5.png b/public/media/avatar/big/065-5.png deleted file mode 100755 index 0ccf652eb..000000000 Binary files a/public/media/avatar/big/065-5.png and /dev/null differ diff --git a/public/media/avatar/big/065-6.png b/public/media/avatar/big/065-6.png deleted file mode 100755 index 4e765d212..000000000 Binary files a/public/media/avatar/big/065-6.png and /dev/null differ diff --git a/public/media/avatar/big/065-7.png b/public/media/avatar/big/065-7.png deleted file mode 100755 index ce5d3da00..000000000 Binary files a/public/media/avatar/big/065-7.png and /dev/null differ diff --git a/public/media/avatar/big/065-8.png b/public/media/avatar/big/065-8.png deleted file mode 100644 index f77a7520a..000000000 Binary files a/public/media/avatar/big/065-8.png and /dev/null differ diff --git a/public/media/avatar/big/065-9.png b/public/media/avatar/big/065-9.png deleted file mode 100644 index 0ccf652eb..000000000 Binary files a/public/media/avatar/big/065-9.png and /dev/null differ diff --git a/public/media/avatar/big/066-1.png b/public/media/avatar/big/066-1.png deleted file mode 100755 index 6dff0c6ce..000000000 Binary files a/public/media/avatar/big/066-1.png and /dev/null differ diff --git a/public/media/avatar/big/066-10.png b/public/media/avatar/big/066-10.png deleted file mode 100644 index d8dcdcbeb..000000000 Binary files a/public/media/avatar/big/066-10.png and /dev/null differ diff --git a/public/media/avatar/big/066-11.png b/public/media/avatar/big/066-11.png deleted file mode 100644 index fe1267318..000000000 Binary files a/public/media/avatar/big/066-11.png and /dev/null differ diff --git a/public/media/avatar/big/066-12.png b/public/media/avatar/big/066-12.png deleted file mode 100644 index 5e45d1889..000000000 Binary files a/public/media/avatar/big/066-12.png and /dev/null differ diff --git a/public/media/avatar/big/066-2.png b/public/media/avatar/big/066-2.png deleted file mode 100755 index 0f31ad5f2..000000000 Binary files a/public/media/avatar/big/066-2.png and /dev/null differ diff --git a/public/media/avatar/big/066-3.png b/public/media/avatar/big/066-3.png deleted file mode 100755 index 5e45d1889..000000000 Binary files a/public/media/avatar/big/066-3.png and /dev/null differ diff --git a/public/media/avatar/big/066-4.png b/public/media/avatar/big/066-4.png deleted file mode 100755 index cd91072c1..000000000 Binary files a/public/media/avatar/big/066-4.png and /dev/null differ diff --git a/public/media/avatar/big/066-5.png b/public/media/avatar/big/066-5.png deleted file mode 100755 index e98717c6a..000000000 Binary files a/public/media/avatar/big/066-5.png and /dev/null differ diff --git a/public/media/avatar/big/066-6.png b/public/media/avatar/big/066-6.png deleted file mode 100755 index 257eaa7a9..000000000 Binary files a/public/media/avatar/big/066-6.png and /dev/null differ diff --git a/public/media/avatar/big/066-7.png b/public/media/avatar/big/066-7.png deleted file mode 100755 index fd2210c4a..000000000 Binary files a/public/media/avatar/big/066-7.png and /dev/null differ diff --git a/public/media/avatar/big/066-8.png b/public/media/avatar/big/066-8.png deleted file mode 100644 index d759312e4..000000000 Binary files a/public/media/avatar/big/066-8.png and /dev/null differ diff --git a/public/media/avatar/big/066-9.png b/public/media/avatar/big/066-9.png deleted file mode 100644 index e98717c6a..000000000 Binary files a/public/media/avatar/big/066-9.png and /dev/null differ diff --git a/public/media/avatar/big/067-1.png b/public/media/avatar/big/067-1.png deleted file mode 100755 index a05e3a3ad..000000000 Binary files a/public/media/avatar/big/067-1.png and /dev/null differ diff --git a/public/media/avatar/big/067-10.png b/public/media/avatar/big/067-10.png deleted file mode 100644 index 2d2f7e812..000000000 Binary files a/public/media/avatar/big/067-10.png and /dev/null differ diff --git a/public/media/avatar/big/067-11.png b/public/media/avatar/big/067-11.png deleted file mode 100644 index 8386b677e..000000000 Binary files a/public/media/avatar/big/067-11.png and /dev/null differ diff --git a/public/media/avatar/big/067-12.png b/public/media/avatar/big/067-12.png deleted file mode 100644 index b1ba15f99..000000000 Binary files a/public/media/avatar/big/067-12.png and /dev/null differ diff --git a/public/media/avatar/big/067-2.png b/public/media/avatar/big/067-2.png deleted file mode 100755 index 841544a89..000000000 Binary files a/public/media/avatar/big/067-2.png and /dev/null differ diff --git a/public/media/avatar/big/067-3.png b/public/media/avatar/big/067-3.png deleted file mode 100755 index b1ba15f99..000000000 Binary files a/public/media/avatar/big/067-3.png and /dev/null differ diff --git a/public/media/avatar/big/067-4.png b/public/media/avatar/big/067-4.png deleted file mode 100755 index 393e88c68..000000000 Binary files a/public/media/avatar/big/067-4.png and /dev/null differ diff --git a/public/media/avatar/big/067-5.png b/public/media/avatar/big/067-5.png deleted file mode 100755 index 122160e81..000000000 Binary files a/public/media/avatar/big/067-5.png and /dev/null differ diff --git a/public/media/avatar/big/067-6.png b/public/media/avatar/big/067-6.png deleted file mode 100755 index c96d18629..000000000 Binary files a/public/media/avatar/big/067-6.png and /dev/null differ diff --git a/public/media/avatar/big/067-7.png b/public/media/avatar/big/067-7.png deleted file mode 100755 index 1fd969943..000000000 Binary files a/public/media/avatar/big/067-7.png and /dev/null differ diff --git a/public/media/avatar/big/067-8.png b/public/media/avatar/big/067-8.png deleted file mode 100644 index a3ba460f4..000000000 Binary files a/public/media/avatar/big/067-8.png and /dev/null differ diff --git a/public/media/avatar/big/067-9.png b/public/media/avatar/big/067-9.png deleted file mode 100644 index 122160e81..000000000 Binary files a/public/media/avatar/big/067-9.png and /dev/null differ diff --git a/public/media/avatar/big/068-1.png b/public/media/avatar/big/068-1.png deleted file mode 100755 index fe8d262eb..000000000 Binary files a/public/media/avatar/big/068-1.png and /dev/null differ diff --git a/public/media/avatar/big/068-10.png b/public/media/avatar/big/068-10.png deleted file mode 100644 index 4c47ec33e..000000000 Binary files a/public/media/avatar/big/068-10.png and /dev/null differ diff --git a/public/media/avatar/big/068-11.png b/public/media/avatar/big/068-11.png deleted file mode 100644 index 2ec59175a..000000000 Binary files a/public/media/avatar/big/068-11.png and /dev/null differ diff --git a/public/media/avatar/big/068-12.png b/public/media/avatar/big/068-12.png deleted file mode 100644 index 5c0389936..000000000 Binary files a/public/media/avatar/big/068-12.png and /dev/null differ diff --git a/public/media/avatar/big/068-2.png b/public/media/avatar/big/068-2.png deleted file mode 100755 index abfca12f5..000000000 Binary files a/public/media/avatar/big/068-2.png and /dev/null differ diff --git a/public/media/avatar/big/068-3.png b/public/media/avatar/big/068-3.png deleted file mode 100755 index 5c0389936..000000000 Binary files a/public/media/avatar/big/068-3.png and /dev/null differ diff --git a/public/media/avatar/big/068-4.png b/public/media/avatar/big/068-4.png deleted file mode 100755 index 64e7b66bc..000000000 Binary files a/public/media/avatar/big/068-4.png and /dev/null differ diff --git a/public/media/avatar/big/068-5.png b/public/media/avatar/big/068-5.png deleted file mode 100755 index 8a97aa10f..000000000 Binary files a/public/media/avatar/big/068-5.png and /dev/null differ diff --git a/public/media/avatar/big/068-6.png b/public/media/avatar/big/068-6.png deleted file mode 100755 index 0f3f78423..000000000 Binary files a/public/media/avatar/big/068-6.png and /dev/null differ diff --git a/public/media/avatar/big/068-7.png b/public/media/avatar/big/068-7.png deleted file mode 100755 index 5b0e3c3ad..000000000 Binary files a/public/media/avatar/big/068-7.png and /dev/null differ diff --git a/public/media/avatar/big/068-8.png b/public/media/avatar/big/068-8.png deleted file mode 100644 index 1cd1ba187..000000000 Binary files a/public/media/avatar/big/068-8.png and /dev/null differ diff --git a/public/media/avatar/big/068-9.png b/public/media/avatar/big/068-9.png deleted file mode 100644 index 8a97aa10f..000000000 Binary files a/public/media/avatar/big/068-9.png and /dev/null differ diff --git a/public/media/avatar/big/069-1.png b/public/media/avatar/big/069-1.png deleted file mode 100755 index 476446539..000000000 Binary files a/public/media/avatar/big/069-1.png and /dev/null differ diff --git a/public/media/avatar/big/069-10.png b/public/media/avatar/big/069-10.png deleted file mode 100644 index 422a2fa26..000000000 Binary files a/public/media/avatar/big/069-10.png and /dev/null differ diff --git a/public/media/avatar/big/069-11.png b/public/media/avatar/big/069-11.png deleted file mode 100644 index c0da867b7..000000000 Binary files a/public/media/avatar/big/069-11.png and /dev/null differ diff --git a/public/media/avatar/big/069-12.png b/public/media/avatar/big/069-12.png deleted file mode 100644 index 54aa84ea4..000000000 Binary files a/public/media/avatar/big/069-12.png and /dev/null differ diff --git a/public/media/avatar/big/069-2.png b/public/media/avatar/big/069-2.png deleted file mode 100755 index 2fe1fc5b5..000000000 Binary files a/public/media/avatar/big/069-2.png and /dev/null differ diff --git a/public/media/avatar/big/069-3.png b/public/media/avatar/big/069-3.png deleted file mode 100755 index 54aa84ea4..000000000 Binary files a/public/media/avatar/big/069-3.png and /dev/null differ diff --git a/public/media/avatar/big/069-4.png b/public/media/avatar/big/069-4.png deleted file mode 100755 index e80b4405c..000000000 Binary files a/public/media/avatar/big/069-4.png and /dev/null differ diff --git a/public/media/avatar/big/069-5.png b/public/media/avatar/big/069-5.png deleted file mode 100755 index 969c164a8..000000000 Binary files a/public/media/avatar/big/069-5.png and /dev/null differ diff --git a/public/media/avatar/big/069-6.png b/public/media/avatar/big/069-6.png deleted file mode 100755 index dfc5402fb..000000000 Binary files a/public/media/avatar/big/069-6.png and /dev/null differ diff --git a/public/media/avatar/big/069-7.png b/public/media/avatar/big/069-7.png deleted file mode 100755 index 0f1657b7a..000000000 Binary files a/public/media/avatar/big/069-7.png and /dev/null differ diff --git a/public/media/avatar/big/069-8.png b/public/media/avatar/big/069-8.png deleted file mode 100644 index 0f1657b7a..000000000 Binary files a/public/media/avatar/big/069-8.png and /dev/null differ diff --git a/public/media/avatar/big/069-9.png b/public/media/avatar/big/069-9.png deleted file mode 100644 index 969c164a8..000000000 Binary files a/public/media/avatar/big/069-9.png and /dev/null differ diff --git a/public/media/avatar/big/070-1.png b/public/media/avatar/big/070-1.png deleted file mode 100755 index 9b1f250d7..000000000 Binary files a/public/media/avatar/big/070-1.png and /dev/null differ diff --git a/public/media/avatar/big/070-10.png b/public/media/avatar/big/070-10.png deleted file mode 100644 index 1da4d1760..000000000 Binary files a/public/media/avatar/big/070-10.png and /dev/null differ diff --git a/public/media/avatar/big/070-11.png b/public/media/avatar/big/070-11.png deleted file mode 100644 index 9f5ceb2ee..000000000 Binary files a/public/media/avatar/big/070-11.png and /dev/null differ diff --git a/public/media/avatar/big/070-12.png b/public/media/avatar/big/070-12.png deleted file mode 100644 index ace66dc45..000000000 Binary files a/public/media/avatar/big/070-12.png and /dev/null differ diff --git a/public/media/avatar/big/070-2.png b/public/media/avatar/big/070-2.png deleted file mode 100755 index 204bff6d5..000000000 Binary files a/public/media/avatar/big/070-2.png and /dev/null differ diff --git a/public/media/avatar/big/070-3.png b/public/media/avatar/big/070-3.png deleted file mode 100755 index ace66dc45..000000000 Binary files a/public/media/avatar/big/070-3.png and /dev/null differ diff --git a/public/media/avatar/big/070-4.png b/public/media/avatar/big/070-4.png deleted file mode 100755 index a301a5606..000000000 Binary files a/public/media/avatar/big/070-4.png and /dev/null differ diff --git a/public/media/avatar/big/070-5.png b/public/media/avatar/big/070-5.png deleted file mode 100755 index 6e725a283..000000000 Binary files a/public/media/avatar/big/070-5.png and /dev/null differ diff --git a/public/media/avatar/big/070-6.png b/public/media/avatar/big/070-6.png deleted file mode 100755 index c3110dc74..000000000 Binary files a/public/media/avatar/big/070-6.png and /dev/null differ diff --git a/public/media/avatar/big/070-7.png b/public/media/avatar/big/070-7.png deleted file mode 100755 index 8d6296c5c..000000000 Binary files a/public/media/avatar/big/070-7.png and /dev/null differ diff --git a/public/media/avatar/big/070-8.png b/public/media/avatar/big/070-8.png deleted file mode 100644 index 63bdd12a2..000000000 Binary files a/public/media/avatar/big/070-8.png and /dev/null differ diff --git a/public/media/avatar/big/070-9.png b/public/media/avatar/big/070-9.png deleted file mode 100644 index 6e725a283..000000000 Binary files a/public/media/avatar/big/070-9.png and /dev/null differ diff --git a/public/media/avatar/big/071-1.png b/public/media/avatar/big/071-1.png deleted file mode 100755 index 48448438a..000000000 Binary files a/public/media/avatar/big/071-1.png and /dev/null differ diff --git a/public/media/avatar/big/071-10.png b/public/media/avatar/big/071-10.png deleted file mode 100644 index d2c68b817..000000000 Binary files a/public/media/avatar/big/071-10.png and /dev/null differ diff --git a/public/media/avatar/big/071-11.png b/public/media/avatar/big/071-11.png deleted file mode 100644 index 1298a9213..000000000 Binary files a/public/media/avatar/big/071-11.png and /dev/null differ diff --git a/public/media/avatar/big/071-12.png b/public/media/avatar/big/071-12.png deleted file mode 100644 index f431b33b9..000000000 Binary files a/public/media/avatar/big/071-12.png and /dev/null differ diff --git a/public/media/avatar/big/071-2.png b/public/media/avatar/big/071-2.png deleted file mode 100755 index 326a1085a..000000000 Binary files a/public/media/avatar/big/071-2.png and /dev/null differ diff --git a/public/media/avatar/big/071-3.png b/public/media/avatar/big/071-3.png deleted file mode 100755 index f431b33b9..000000000 Binary files a/public/media/avatar/big/071-3.png and /dev/null differ diff --git a/public/media/avatar/big/071-4.png b/public/media/avatar/big/071-4.png deleted file mode 100755 index f9dd32db6..000000000 Binary files a/public/media/avatar/big/071-4.png and /dev/null differ diff --git a/public/media/avatar/big/071-5.png b/public/media/avatar/big/071-5.png deleted file mode 100755 index 21256e3f0..000000000 Binary files a/public/media/avatar/big/071-5.png and /dev/null differ diff --git a/public/media/avatar/big/071-6.png b/public/media/avatar/big/071-6.png deleted file mode 100755 index be875f0e7..000000000 Binary files a/public/media/avatar/big/071-6.png and /dev/null differ diff --git a/public/media/avatar/big/071-7.png b/public/media/avatar/big/071-7.png deleted file mode 100755 index 8273717a6..000000000 Binary files a/public/media/avatar/big/071-7.png and /dev/null differ diff --git a/public/media/avatar/big/071-8.png b/public/media/avatar/big/071-8.png deleted file mode 100644 index 8273717a6..000000000 Binary files a/public/media/avatar/big/071-8.png and /dev/null differ diff --git a/public/media/avatar/big/071-9.png b/public/media/avatar/big/071-9.png deleted file mode 100644 index 21256e3f0..000000000 Binary files a/public/media/avatar/big/071-9.png and /dev/null differ diff --git a/public/media/avatar/big/072-1.png b/public/media/avatar/big/072-1.png deleted file mode 100755 index e0292a4b0..000000000 Binary files a/public/media/avatar/big/072-1.png and /dev/null differ diff --git a/public/media/avatar/big/072-10.png b/public/media/avatar/big/072-10.png deleted file mode 100644 index d0c54c34a..000000000 Binary files a/public/media/avatar/big/072-10.png and /dev/null differ diff --git a/public/media/avatar/big/072-11.png b/public/media/avatar/big/072-11.png deleted file mode 100644 index ca6b38dad..000000000 Binary files a/public/media/avatar/big/072-11.png and /dev/null differ diff --git a/public/media/avatar/big/072-12.png b/public/media/avatar/big/072-12.png deleted file mode 100644 index 74abf1ee1..000000000 Binary files a/public/media/avatar/big/072-12.png and /dev/null differ diff --git a/public/media/avatar/big/072-2.png b/public/media/avatar/big/072-2.png deleted file mode 100755 index 1e4a1a08b..000000000 Binary files a/public/media/avatar/big/072-2.png and /dev/null differ diff --git a/public/media/avatar/big/072-3.png b/public/media/avatar/big/072-3.png deleted file mode 100755 index 74abf1ee1..000000000 Binary files a/public/media/avatar/big/072-3.png and /dev/null differ diff --git a/public/media/avatar/big/072-4.png b/public/media/avatar/big/072-4.png deleted file mode 100755 index 76ea68bb2..000000000 Binary files a/public/media/avatar/big/072-4.png and /dev/null differ diff --git a/public/media/avatar/big/072-5.png b/public/media/avatar/big/072-5.png deleted file mode 100755 index 6b6d8afc4..000000000 Binary files a/public/media/avatar/big/072-5.png and /dev/null differ diff --git a/public/media/avatar/big/072-6.png b/public/media/avatar/big/072-6.png deleted file mode 100755 index 7f49f99e0..000000000 Binary files a/public/media/avatar/big/072-6.png and /dev/null differ diff --git a/public/media/avatar/big/072-7.png b/public/media/avatar/big/072-7.png deleted file mode 100755 index 95b2e4490..000000000 Binary files a/public/media/avatar/big/072-7.png and /dev/null differ diff --git a/public/media/avatar/big/072-8.png b/public/media/avatar/big/072-8.png deleted file mode 100644 index 95b2e4490..000000000 Binary files a/public/media/avatar/big/072-8.png and /dev/null differ diff --git a/public/media/avatar/big/072-9.png b/public/media/avatar/big/072-9.png deleted file mode 100644 index 6b6d8afc4..000000000 Binary files a/public/media/avatar/big/072-9.png and /dev/null differ diff --git a/public/media/avatar/big/073-1.png b/public/media/avatar/big/073-1.png deleted file mode 100755 index 75c7d9441..000000000 Binary files a/public/media/avatar/big/073-1.png and /dev/null differ diff --git a/public/media/avatar/big/073-10.png b/public/media/avatar/big/073-10.png deleted file mode 100644 index bd8d8c0de..000000000 Binary files a/public/media/avatar/big/073-10.png and /dev/null differ diff --git a/public/media/avatar/big/073-11.png b/public/media/avatar/big/073-11.png deleted file mode 100644 index 7d2992319..000000000 Binary files a/public/media/avatar/big/073-11.png and /dev/null differ diff --git a/public/media/avatar/big/073-12.png b/public/media/avatar/big/073-12.png deleted file mode 100644 index ad35d33b1..000000000 Binary files a/public/media/avatar/big/073-12.png and /dev/null differ diff --git a/public/media/avatar/big/073-2.png b/public/media/avatar/big/073-2.png deleted file mode 100755 index f0716f130..000000000 Binary files a/public/media/avatar/big/073-2.png and /dev/null differ diff --git a/public/media/avatar/big/073-3.png b/public/media/avatar/big/073-3.png deleted file mode 100755 index ad35d33b1..000000000 Binary files a/public/media/avatar/big/073-3.png and /dev/null differ diff --git a/public/media/avatar/big/073-4.png b/public/media/avatar/big/073-4.png deleted file mode 100755 index 65c5d6a8f..000000000 Binary files a/public/media/avatar/big/073-4.png and /dev/null differ diff --git a/public/media/avatar/big/073-5.png b/public/media/avatar/big/073-5.png deleted file mode 100755 index 789d1496a..000000000 Binary files a/public/media/avatar/big/073-5.png and /dev/null differ diff --git a/public/media/avatar/big/073-6.png b/public/media/avatar/big/073-6.png deleted file mode 100755 index f5f7fd777..000000000 Binary files a/public/media/avatar/big/073-6.png and /dev/null differ diff --git a/public/media/avatar/big/073-7.png b/public/media/avatar/big/073-7.png deleted file mode 100755 index 058a5c0d1..000000000 Binary files a/public/media/avatar/big/073-7.png and /dev/null differ diff --git a/public/media/avatar/big/073-8.png b/public/media/avatar/big/073-8.png deleted file mode 100644 index 28950d2f7..000000000 Binary files a/public/media/avatar/big/073-8.png and /dev/null differ diff --git a/public/media/avatar/big/073-9.png b/public/media/avatar/big/073-9.png deleted file mode 100644 index 789d1496a..000000000 Binary files a/public/media/avatar/big/073-9.png and /dev/null differ diff --git a/public/media/avatar/big/074-1.png b/public/media/avatar/big/074-1.png deleted file mode 100755 index 00aa38a9d..000000000 Binary files a/public/media/avatar/big/074-1.png and /dev/null differ diff --git a/public/media/avatar/big/074-10.png b/public/media/avatar/big/074-10.png deleted file mode 100644 index 189cc6946..000000000 Binary files a/public/media/avatar/big/074-10.png and /dev/null differ diff --git a/public/media/avatar/big/074-11.png b/public/media/avatar/big/074-11.png deleted file mode 100644 index 69263ac85..000000000 Binary files a/public/media/avatar/big/074-11.png and /dev/null differ diff --git a/public/media/avatar/big/074-12.png b/public/media/avatar/big/074-12.png deleted file mode 100644 index 6ca4c7cd6..000000000 Binary files a/public/media/avatar/big/074-12.png and /dev/null differ diff --git a/public/media/avatar/big/074-2.png b/public/media/avatar/big/074-2.png deleted file mode 100755 index 719a35b1b..000000000 Binary files a/public/media/avatar/big/074-2.png and /dev/null differ diff --git a/public/media/avatar/big/074-3.png b/public/media/avatar/big/074-3.png deleted file mode 100755 index 6ca4c7cd6..000000000 Binary files a/public/media/avatar/big/074-3.png and /dev/null differ diff --git a/public/media/avatar/big/074-4.png b/public/media/avatar/big/074-4.png deleted file mode 100755 index 010ac7ed3..000000000 Binary files a/public/media/avatar/big/074-4.png and /dev/null differ diff --git a/public/media/avatar/big/074-5.png b/public/media/avatar/big/074-5.png deleted file mode 100755 index 8b5cb3cfd..000000000 Binary files a/public/media/avatar/big/074-5.png and /dev/null differ diff --git a/public/media/avatar/big/074-6.png b/public/media/avatar/big/074-6.png deleted file mode 100755 index 60f98c8c1..000000000 Binary files a/public/media/avatar/big/074-6.png and /dev/null differ diff --git a/public/media/avatar/big/074-7.png b/public/media/avatar/big/074-7.png deleted file mode 100755 index 839141e52..000000000 Binary files a/public/media/avatar/big/074-7.png and /dev/null differ diff --git a/public/media/avatar/big/074-8.png b/public/media/avatar/big/074-8.png deleted file mode 100644 index 1982fdec0..000000000 Binary files a/public/media/avatar/big/074-8.png and /dev/null differ diff --git a/public/media/avatar/big/074-9.png b/public/media/avatar/big/074-9.png deleted file mode 100644 index 8b5cb3cfd..000000000 Binary files a/public/media/avatar/big/074-9.png and /dev/null differ diff --git a/public/media/avatar/big/075-1.png b/public/media/avatar/big/075-1.png deleted file mode 100755 index 3144b6c4b..000000000 Binary files a/public/media/avatar/big/075-1.png and /dev/null differ diff --git a/public/media/avatar/big/075-10.png b/public/media/avatar/big/075-10.png deleted file mode 100644 index fc9d23b36..000000000 Binary files a/public/media/avatar/big/075-10.png and /dev/null differ diff --git a/public/media/avatar/big/075-11.png b/public/media/avatar/big/075-11.png deleted file mode 100644 index 1fd80a96b..000000000 Binary files a/public/media/avatar/big/075-11.png and /dev/null differ diff --git a/public/media/avatar/big/075-12.png b/public/media/avatar/big/075-12.png deleted file mode 100644 index 3d532d9e7..000000000 Binary files a/public/media/avatar/big/075-12.png and /dev/null differ diff --git a/public/media/avatar/big/075-2.png b/public/media/avatar/big/075-2.png deleted file mode 100755 index 8096feaf7..000000000 Binary files a/public/media/avatar/big/075-2.png and /dev/null differ diff --git a/public/media/avatar/big/075-3.png b/public/media/avatar/big/075-3.png deleted file mode 100755 index 3d532d9e7..000000000 Binary files a/public/media/avatar/big/075-3.png and /dev/null differ diff --git a/public/media/avatar/big/075-4.png b/public/media/avatar/big/075-4.png deleted file mode 100755 index 1d869cc1a..000000000 Binary files a/public/media/avatar/big/075-4.png and /dev/null differ diff --git a/public/media/avatar/big/075-5.png b/public/media/avatar/big/075-5.png deleted file mode 100755 index a0f8b772e..000000000 Binary files a/public/media/avatar/big/075-5.png and /dev/null differ diff --git a/public/media/avatar/big/075-6.png b/public/media/avatar/big/075-6.png deleted file mode 100755 index cbba67432..000000000 Binary files a/public/media/avatar/big/075-6.png and /dev/null differ diff --git a/public/media/avatar/big/075-7.png b/public/media/avatar/big/075-7.png deleted file mode 100755 index bad0f5165..000000000 Binary files a/public/media/avatar/big/075-7.png and /dev/null differ diff --git a/public/media/avatar/big/075-8.png b/public/media/avatar/big/075-8.png deleted file mode 100644 index 2ac620469..000000000 Binary files a/public/media/avatar/big/075-8.png and /dev/null differ diff --git a/public/media/avatar/big/075-9.png b/public/media/avatar/big/075-9.png deleted file mode 100644 index a0f8b772e..000000000 Binary files a/public/media/avatar/big/075-9.png and /dev/null differ diff --git a/public/media/avatar/big/076-1.png b/public/media/avatar/big/076-1.png deleted file mode 100755 index c9c87f7ed..000000000 Binary files a/public/media/avatar/big/076-1.png and /dev/null differ diff --git a/public/media/avatar/big/076-10.png b/public/media/avatar/big/076-10.png deleted file mode 100644 index d91f65063..000000000 Binary files a/public/media/avatar/big/076-10.png and /dev/null differ diff --git a/public/media/avatar/big/076-11.png b/public/media/avatar/big/076-11.png deleted file mode 100644 index 8881aa80d..000000000 Binary files a/public/media/avatar/big/076-11.png and /dev/null differ diff --git a/public/media/avatar/big/076-12.png b/public/media/avatar/big/076-12.png deleted file mode 100644 index 16d0346d7..000000000 Binary files a/public/media/avatar/big/076-12.png and /dev/null differ diff --git a/public/media/avatar/big/076-2.png b/public/media/avatar/big/076-2.png deleted file mode 100755 index a8d3f6260..000000000 Binary files a/public/media/avatar/big/076-2.png and /dev/null differ diff --git a/public/media/avatar/big/076-3.png b/public/media/avatar/big/076-3.png deleted file mode 100755 index 16d0346d7..000000000 Binary files a/public/media/avatar/big/076-3.png and /dev/null differ diff --git a/public/media/avatar/big/076-4.png b/public/media/avatar/big/076-4.png deleted file mode 100755 index b68c9581c..000000000 Binary files a/public/media/avatar/big/076-4.png and /dev/null differ diff --git a/public/media/avatar/big/076-5.png b/public/media/avatar/big/076-5.png deleted file mode 100755 index 379e3ebc3..000000000 Binary files a/public/media/avatar/big/076-5.png and /dev/null differ diff --git a/public/media/avatar/big/076-6.png b/public/media/avatar/big/076-6.png deleted file mode 100755 index 959959b21..000000000 Binary files a/public/media/avatar/big/076-6.png and /dev/null differ diff --git a/public/media/avatar/big/076-7.png b/public/media/avatar/big/076-7.png deleted file mode 100755 index 0122912c6..000000000 Binary files a/public/media/avatar/big/076-7.png and /dev/null differ diff --git a/public/media/avatar/big/076-8.png b/public/media/avatar/big/076-8.png deleted file mode 100644 index 0122912c6..000000000 Binary files a/public/media/avatar/big/076-8.png and /dev/null differ diff --git a/public/media/avatar/big/076-9.png b/public/media/avatar/big/076-9.png deleted file mode 100644 index 379e3ebc3..000000000 Binary files a/public/media/avatar/big/076-9.png and /dev/null differ diff --git a/public/media/avatar/big/077-1.png b/public/media/avatar/big/077-1.png deleted file mode 100755 index 55ad33a77..000000000 Binary files a/public/media/avatar/big/077-1.png and /dev/null differ diff --git a/public/media/avatar/big/077-10.png b/public/media/avatar/big/077-10.png deleted file mode 100644 index 0af289375..000000000 Binary files a/public/media/avatar/big/077-10.png and /dev/null differ diff --git a/public/media/avatar/big/077-11.png b/public/media/avatar/big/077-11.png deleted file mode 100644 index d2e8bc992..000000000 Binary files a/public/media/avatar/big/077-11.png and /dev/null differ diff --git a/public/media/avatar/big/077-12.png b/public/media/avatar/big/077-12.png deleted file mode 100644 index 253507d64..000000000 Binary files a/public/media/avatar/big/077-12.png and /dev/null differ diff --git a/public/media/avatar/big/077-2.png b/public/media/avatar/big/077-2.png deleted file mode 100755 index 8e69ccf3b..000000000 Binary files a/public/media/avatar/big/077-2.png and /dev/null differ diff --git a/public/media/avatar/big/077-3.png b/public/media/avatar/big/077-3.png deleted file mode 100755 index d29462845..000000000 Binary files a/public/media/avatar/big/077-3.png and /dev/null differ diff --git a/public/media/avatar/big/077-4.png b/public/media/avatar/big/077-4.png deleted file mode 100755 index 54908b295..000000000 Binary files a/public/media/avatar/big/077-4.png and /dev/null differ diff --git a/public/media/avatar/big/077-5.png b/public/media/avatar/big/077-5.png deleted file mode 100755 index 45128e1fa..000000000 Binary files a/public/media/avatar/big/077-5.png and /dev/null differ diff --git a/public/media/avatar/big/077-6.png b/public/media/avatar/big/077-6.png deleted file mode 100755 index 1a4815740..000000000 Binary files a/public/media/avatar/big/077-6.png and /dev/null differ diff --git a/public/media/avatar/big/077-7.png b/public/media/avatar/big/077-7.png deleted file mode 100755 index 72068172e..000000000 Binary files a/public/media/avatar/big/077-7.png and /dev/null differ diff --git a/public/media/avatar/big/077-8.png b/public/media/avatar/big/077-8.png deleted file mode 100644 index 72068172e..000000000 Binary files a/public/media/avatar/big/077-8.png and /dev/null differ diff --git a/public/media/avatar/big/077-9.png b/public/media/avatar/big/077-9.png deleted file mode 100644 index 45128e1fa..000000000 Binary files a/public/media/avatar/big/077-9.png and /dev/null differ diff --git a/public/media/avatar/big/078-1.png b/public/media/avatar/big/078-1.png deleted file mode 100755 index a9ca75360..000000000 Binary files a/public/media/avatar/big/078-1.png and /dev/null differ diff --git a/public/media/avatar/big/078-10.png b/public/media/avatar/big/078-10.png deleted file mode 100644 index fdf038973..000000000 Binary files a/public/media/avatar/big/078-10.png and /dev/null differ diff --git a/public/media/avatar/big/078-11.png b/public/media/avatar/big/078-11.png deleted file mode 100644 index 0cda6a46f..000000000 Binary files a/public/media/avatar/big/078-11.png and /dev/null differ diff --git a/public/media/avatar/big/078-12.png b/public/media/avatar/big/078-12.png deleted file mode 100644 index 5cf108fce..000000000 Binary files a/public/media/avatar/big/078-12.png and /dev/null differ diff --git a/public/media/avatar/big/078-2.png b/public/media/avatar/big/078-2.png deleted file mode 100755 index eb4186f2e..000000000 Binary files a/public/media/avatar/big/078-2.png and /dev/null differ diff --git a/public/media/avatar/big/078-3.png b/public/media/avatar/big/078-3.png deleted file mode 100755 index 5cf108fce..000000000 Binary files a/public/media/avatar/big/078-3.png and /dev/null differ diff --git a/public/media/avatar/big/078-4.png b/public/media/avatar/big/078-4.png deleted file mode 100755 index 6cf0ab936..000000000 Binary files a/public/media/avatar/big/078-4.png and /dev/null differ diff --git a/public/media/avatar/big/078-5.png b/public/media/avatar/big/078-5.png deleted file mode 100755 index a1b4c61a5..000000000 Binary files a/public/media/avatar/big/078-5.png and /dev/null differ diff --git a/public/media/avatar/big/078-6.png b/public/media/avatar/big/078-6.png deleted file mode 100755 index e405fbb44..000000000 Binary files a/public/media/avatar/big/078-6.png and /dev/null differ diff --git a/public/media/avatar/big/078-7.png b/public/media/avatar/big/078-7.png deleted file mode 100755 index 876cb11b8..000000000 Binary files a/public/media/avatar/big/078-7.png and /dev/null differ diff --git a/public/media/avatar/big/078-8.png b/public/media/avatar/big/078-8.png deleted file mode 100644 index 876cb11b8..000000000 Binary files a/public/media/avatar/big/078-8.png and /dev/null differ diff --git a/public/media/avatar/big/078-9.png b/public/media/avatar/big/078-9.png deleted file mode 100644 index a1b4c61a5..000000000 Binary files a/public/media/avatar/big/078-9.png and /dev/null differ diff --git a/public/media/avatar/big/079-1.png b/public/media/avatar/big/079-1.png deleted file mode 100755 index 51763adde..000000000 Binary files a/public/media/avatar/big/079-1.png and /dev/null differ diff --git a/public/media/avatar/big/079-10.png b/public/media/avatar/big/079-10.png deleted file mode 100644 index e0cc2dac4..000000000 Binary files a/public/media/avatar/big/079-10.png and /dev/null differ diff --git a/public/media/avatar/big/079-11.png b/public/media/avatar/big/079-11.png deleted file mode 100644 index e677918c6..000000000 Binary files a/public/media/avatar/big/079-11.png and /dev/null differ diff --git a/public/media/avatar/big/079-12.png b/public/media/avatar/big/079-12.png deleted file mode 100644 index 45ed84ff3..000000000 Binary files a/public/media/avatar/big/079-12.png and /dev/null differ diff --git a/public/media/avatar/big/079-2.png b/public/media/avatar/big/079-2.png deleted file mode 100755 index 7b278a817..000000000 Binary files a/public/media/avatar/big/079-2.png and /dev/null differ diff --git a/public/media/avatar/big/079-3.png b/public/media/avatar/big/079-3.png deleted file mode 100755 index 45ed84ff3..000000000 Binary files a/public/media/avatar/big/079-3.png and /dev/null differ diff --git a/public/media/avatar/big/079-4.png b/public/media/avatar/big/079-4.png deleted file mode 100755 index 2236a8204..000000000 Binary files a/public/media/avatar/big/079-4.png and /dev/null differ diff --git a/public/media/avatar/big/079-5.png b/public/media/avatar/big/079-5.png deleted file mode 100755 index 7cd9a6b07..000000000 Binary files a/public/media/avatar/big/079-5.png and /dev/null differ diff --git a/public/media/avatar/big/079-6.png b/public/media/avatar/big/079-6.png deleted file mode 100755 index a2c46b082..000000000 Binary files a/public/media/avatar/big/079-6.png and /dev/null differ diff --git a/public/media/avatar/big/079-7.png b/public/media/avatar/big/079-7.png deleted file mode 100755 index 01e65ce51..000000000 Binary files a/public/media/avatar/big/079-7.png and /dev/null differ diff --git a/public/media/avatar/big/079-8.png b/public/media/avatar/big/079-8.png deleted file mode 100644 index 01e65ce51..000000000 Binary files a/public/media/avatar/big/079-8.png and /dev/null differ diff --git a/public/media/avatar/big/079-9.png b/public/media/avatar/big/079-9.png deleted file mode 100644 index 7cd9a6b07..000000000 Binary files a/public/media/avatar/big/079-9.png and /dev/null differ diff --git a/public/media/avatar/big/080-1.png b/public/media/avatar/big/080-1.png deleted file mode 100755 index 0fdbb27d3..000000000 Binary files a/public/media/avatar/big/080-1.png and /dev/null differ diff --git a/public/media/avatar/big/080-10.png b/public/media/avatar/big/080-10.png deleted file mode 100644 index c6a1fcdca..000000000 Binary files a/public/media/avatar/big/080-10.png and /dev/null differ diff --git a/public/media/avatar/big/080-11.png b/public/media/avatar/big/080-11.png deleted file mode 100644 index b0554c759..000000000 Binary files a/public/media/avatar/big/080-11.png and /dev/null differ diff --git a/public/media/avatar/big/080-12.png b/public/media/avatar/big/080-12.png deleted file mode 100644 index 75ad44758..000000000 Binary files a/public/media/avatar/big/080-12.png and /dev/null differ diff --git a/public/media/avatar/big/080-2.png b/public/media/avatar/big/080-2.png deleted file mode 100755 index 80afa4cc5..000000000 Binary files a/public/media/avatar/big/080-2.png and /dev/null differ diff --git a/public/media/avatar/big/080-3.png b/public/media/avatar/big/080-3.png deleted file mode 100755 index 75ad44758..000000000 Binary files a/public/media/avatar/big/080-3.png and /dev/null differ diff --git a/public/media/avatar/big/080-4.png b/public/media/avatar/big/080-4.png deleted file mode 100755 index f9a14afcb..000000000 Binary files a/public/media/avatar/big/080-4.png and /dev/null differ diff --git a/public/media/avatar/big/080-5.png b/public/media/avatar/big/080-5.png deleted file mode 100755 index 035f126a1..000000000 Binary files a/public/media/avatar/big/080-5.png and /dev/null differ diff --git a/public/media/avatar/big/080-6.png b/public/media/avatar/big/080-6.png deleted file mode 100755 index 238eb8c2c..000000000 Binary files a/public/media/avatar/big/080-6.png and /dev/null differ diff --git a/public/media/avatar/big/080-7.png b/public/media/avatar/big/080-7.png deleted file mode 100755 index 590f65444..000000000 Binary files a/public/media/avatar/big/080-7.png and /dev/null differ diff --git a/public/media/avatar/big/080-8.png b/public/media/avatar/big/080-8.png deleted file mode 100644 index 590f65444..000000000 Binary files a/public/media/avatar/big/080-8.png and /dev/null differ diff --git a/public/media/avatar/big/080-9.png b/public/media/avatar/big/080-9.png deleted file mode 100644 index 035f126a1..000000000 Binary files a/public/media/avatar/big/080-9.png and /dev/null differ diff --git a/public/media/avatar/big/900-1.png b/public/media/avatar/big/900-1.png deleted file mode 100644 index 0afb865a5..000000000 Binary files a/public/media/avatar/big/900-1.png and /dev/null differ diff --git a/public/media/avatar/big/900-10.png b/public/media/avatar/big/900-10.png deleted file mode 100644 index f62c58932..000000000 Binary files a/public/media/avatar/big/900-10.png and /dev/null differ diff --git a/public/media/avatar/big/900-11.png b/public/media/avatar/big/900-11.png deleted file mode 100644 index b1309bdc4..000000000 Binary files a/public/media/avatar/big/900-11.png and /dev/null differ diff --git a/public/media/avatar/big/900-12.png b/public/media/avatar/big/900-12.png deleted file mode 100644 index 8a243bc92..000000000 Binary files a/public/media/avatar/big/900-12.png and /dev/null differ diff --git a/public/media/avatar/big/900-2.png b/public/media/avatar/big/900-2.png deleted file mode 100644 index 1190afad6..000000000 Binary files a/public/media/avatar/big/900-2.png and /dev/null differ diff --git a/public/media/avatar/big/900-3.png b/public/media/avatar/big/900-3.png deleted file mode 100644 index 8a243bc92..000000000 Binary files a/public/media/avatar/big/900-3.png and /dev/null differ diff --git a/public/media/avatar/big/900-4.png b/public/media/avatar/big/900-4.png deleted file mode 100644 index ddc4a9dfd..000000000 Binary files a/public/media/avatar/big/900-4.png and /dev/null differ diff --git a/public/media/avatar/big/900-5.png b/public/media/avatar/big/900-5.png deleted file mode 100644 index 945ab4576..000000000 Binary files a/public/media/avatar/big/900-5.png and /dev/null differ diff --git a/public/media/avatar/big/900-6.png b/public/media/avatar/big/900-6.png deleted file mode 100644 index d79c01f79..000000000 Binary files a/public/media/avatar/big/900-6.png and /dev/null differ diff --git a/public/media/avatar/big/900-7.png b/public/media/avatar/big/900-7.png deleted file mode 100644 index 2221d4f8b..000000000 Binary files a/public/media/avatar/big/900-7.png and /dev/null differ diff --git a/public/media/avatar/big/900-8.png b/public/media/avatar/big/900-8.png deleted file mode 100644 index 65ee13fcc..000000000 Binary files a/public/media/avatar/big/900-8.png and /dev/null differ diff --git a/public/media/avatar/big/900-9.png b/public/media/avatar/big/900-9.png deleted file mode 100644 index 945ab4576..000000000 Binary files a/public/media/avatar/big/900-9.png and /dev/null differ diff --git a/public/media/avatar/big/901-1.png b/public/media/avatar/big/901-1.png deleted file mode 100644 index 100107504..000000000 Binary files a/public/media/avatar/big/901-1.png and /dev/null differ diff --git a/public/media/avatar/big/901-10.png b/public/media/avatar/big/901-10.png deleted file mode 100644 index 7aad180f7..000000000 Binary files a/public/media/avatar/big/901-10.png and /dev/null differ diff --git a/public/media/avatar/big/901-11.png b/public/media/avatar/big/901-11.png deleted file mode 100644 index 9d9c3b914..000000000 Binary files a/public/media/avatar/big/901-11.png and /dev/null differ diff --git a/public/media/avatar/big/901-12.png b/public/media/avatar/big/901-12.png deleted file mode 100644 index f00a7bcb3..000000000 Binary files a/public/media/avatar/big/901-12.png and /dev/null differ diff --git a/public/media/avatar/big/901-2.png b/public/media/avatar/big/901-2.png deleted file mode 100644 index 3fb5eb0a1..000000000 Binary files a/public/media/avatar/big/901-2.png and /dev/null differ diff --git a/public/media/avatar/big/901-3.png b/public/media/avatar/big/901-3.png deleted file mode 100644 index f00a7bcb3..000000000 Binary files a/public/media/avatar/big/901-3.png and /dev/null differ diff --git a/public/media/avatar/big/901-4.png b/public/media/avatar/big/901-4.png deleted file mode 100644 index 9dd18ccf0..000000000 Binary files a/public/media/avatar/big/901-4.png and /dev/null differ diff --git a/public/media/avatar/big/901-5.png b/public/media/avatar/big/901-5.png deleted file mode 100644 index 3b7a0c9fc..000000000 Binary files a/public/media/avatar/big/901-5.png and /dev/null differ diff --git a/public/media/avatar/big/901-6.png b/public/media/avatar/big/901-6.png deleted file mode 100644 index e7bd5422d..000000000 Binary files a/public/media/avatar/big/901-6.png and /dev/null differ diff --git a/public/media/avatar/big/901-7.png b/public/media/avatar/big/901-7.png deleted file mode 100644 index d680d23ad..000000000 Binary files a/public/media/avatar/big/901-7.png and /dev/null differ diff --git a/public/media/avatar/big/901-8.png b/public/media/avatar/big/901-8.png deleted file mode 100644 index b19e0011c..000000000 Binary files a/public/media/avatar/big/901-8.png and /dev/null differ diff --git a/public/media/avatar/big/901-9.png b/public/media/avatar/big/901-9.png deleted file mode 100644 index 3b7a0c9fc..000000000 Binary files a/public/media/avatar/big/901-9.png and /dev/null differ diff --git a/public/media/avatar/big/902-1.png b/public/media/avatar/big/902-1.png deleted file mode 100644 index 871eda1c2..000000000 Binary files a/public/media/avatar/big/902-1.png and /dev/null differ diff --git a/public/media/avatar/big/902-10.png b/public/media/avatar/big/902-10.png deleted file mode 100644 index 5e4b9efc9..000000000 Binary files a/public/media/avatar/big/902-10.png and /dev/null differ diff --git a/public/media/avatar/big/902-11.png b/public/media/avatar/big/902-11.png deleted file mode 100644 index af7eaf339..000000000 Binary files a/public/media/avatar/big/902-11.png and /dev/null differ diff --git a/public/media/avatar/big/902-12.png b/public/media/avatar/big/902-12.png deleted file mode 100644 index 635d06271..000000000 Binary files a/public/media/avatar/big/902-12.png and /dev/null differ diff --git a/public/media/avatar/big/902-2.png b/public/media/avatar/big/902-2.png deleted file mode 100644 index 7e34e295b..000000000 Binary files a/public/media/avatar/big/902-2.png and /dev/null differ diff --git a/public/media/avatar/big/902-3.png b/public/media/avatar/big/902-3.png deleted file mode 100644 index 15eebf96f..000000000 Binary files a/public/media/avatar/big/902-3.png and /dev/null differ diff --git a/public/media/avatar/big/902-4.png b/public/media/avatar/big/902-4.png deleted file mode 100644 index fd68395c9..000000000 Binary files a/public/media/avatar/big/902-4.png and /dev/null differ diff --git a/public/media/avatar/big/902-5.png b/public/media/avatar/big/902-5.png deleted file mode 100644 index bb027065f..000000000 Binary files a/public/media/avatar/big/902-5.png and /dev/null differ diff --git a/public/media/avatar/big/902-6.png b/public/media/avatar/big/902-6.png deleted file mode 100644 index 98681a6c7..000000000 Binary files a/public/media/avatar/big/902-6.png and /dev/null differ diff --git a/public/media/avatar/big/902-7.png b/public/media/avatar/big/902-7.png deleted file mode 100644 index a939d1007..000000000 Binary files a/public/media/avatar/big/902-7.png and /dev/null differ diff --git a/public/media/avatar/big/902-8.png b/public/media/avatar/big/902-8.png deleted file mode 100644 index f91abd936..000000000 Binary files a/public/media/avatar/big/902-8.png and /dev/null differ diff --git a/public/media/avatar/big/902-9.png b/public/media/avatar/big/902-9.png deleted file mode 100644 index bb027065f..000000000 Binary files a/public/media/avatar/big/902-9.png and /dev/null differ diff --git a/public/media/avatar/big/903-1.png b/public/media/avatar/big/903-1.png deleted file mode 100644 index f717a76c5..000000000 Binary files a/public/media/avatar/big/903-1.png and /dev/null differ diff --git a/public/media/avatar/big/903-10.png b/public/media/avatar/big/903-10.png deleted file mode 100644 index 72cfacd98..000000000 Binary files a/public/media/avatar/big/903-10.png and /dev/null differ diff --git a/public/media/avatar/big/903-11.png b/public/media/avatar/big/903-11.png deleted file mode 100644 index ce2b583b2..000000000 Binary files a/public/media/avatar/big/903-11.png and /dev/null differ diff --git a/public/media/avatar/big/903-12.png b/public/media/avatar/big/903-12.png deleted file mode 100644 index 901bb65be..000000000 Binary files a/public/media/avatar/big/903-12.png and /dev/null differ diff --git a/public/media/avatar/big/903-2.png b/public/media/avatar/big/903-2.png deleted file mode 100644 index 679ddfe2f..000000000 Binary files a/public/media/avatar/big/903-2.png and /dev/null differ diff --git a/public/media/avatar/big/903-3.png b/public/media/avatar/big/903-3.png deleted file mode 100644 index 901bb65be..000000000 Binary files a/public/media/avatar/big/903-3.png and /dev/null differ diff --git a/public/media/avatar/big/903-4.png b/public/media/avatar/big/903-4.png deleted file mode 100644 index 29226d2dc..000000000 Binary files a/public/media/avatar/big/903-4.png and /dev/null differ diff --git a/public/media/avatar/big/903-5.png b/public/media/avatar/big/903-5.png deleted file mode 100644 index c5741a9ca..000000000 Binary files a/public/media/avatar/big/903-5.png and /dev/null differ diff --git a/public/media/avatar/big/903-6.png b/public/media/avatar/big/903-6.png deleted file mode 100644 index b7ac3fb74..000000000 Binary files a/public/media/avatar/big/903-6.png and /dev/null differ diff --git a/public/media/avatar/big/903-7.png b/public/media/avatar/big/903-7.png deleted file mode 100644 index b4c332a9d..000000000 Binary files a/public/media/avatar/big/903-7.png and /dev/null differ diff --git a/public/media/avatar/big/903-8.png b/public/media/avatar/big/903-8.png deleted file mode 100644 index 2a0d9c2fe..000000000 Binary files a/public/media/avatar/big/903-8.png and /dev/null differ diff --git a/public/media/avatar/big/903-9.png b/public/media/avatar/big/903-9.png deleted file mode 100644 index c5741a9ca..000000000 Binary files a/public/media/avatar/big/903-9.png and /dev/null differ diff --git a/public/media/avatar/big/904-1.png b/public/media/avatar/big/904-1.png deleted file mode 100644 index 12d5370c2..000000000 Binary files a/public/media/avatar/big/904-1.png and /dev/null differ diff --git a/public/media/avatar/big/904-10.png b/public/media/avatar/big/904-10.png deleted file mode 100644 index a4c7acd2d..000000000 Binary files a/public/media/avatar/big/904-10.png and /dev/null differ diff --git a/public/media/avatar/big/904-11.png b/public/media/avatar/big/904-11.png deleted file mode 100644 index cd221b7c1..000000000 Binary files a/public/media/avatar/big/904-11.png and /dev/null differ diff --git a/public/media/avatar/big/904-12.png b/public/media/avatar/big/904-12.png deleted file mode 100644 index c0fa580d6..000000000 Binary files a/public/media/avatar/big/904-12.png and /dev/null differ diff --git a/public/media/avatar/big/904-2.png b/public/media/avatar/big/904-2.png deleted file mode 100644 index 4fff31493..000000000 Binary files a/public/media/avatar/big/904-2.png and /dev/null differ diff --git a/public/media/avatar/big/904-3.png b/public/media/avatar/big/904-3.png deleted file mode 100644 index c0fa580d6..000000000 Binary files a/public/media/avatar/big/904-3.png and /dev/null differ diff --git a/public/media/avatar/big/904-4.png b/public/media/avatar/big/904-4.png deleted file mode 100644 index bbed71227..000000000 Binary files a/public/media/avatar/big/904-4.png and /dev/null differ diff --git a/public/media/avatar/big/904-5.png b/public/media/avatar/big/904-5.png deleted file mode 100644 index 78c5a029e..000000000 Binary files a/public/media/avatar/big/904-5.png and /dev/null differ diff --git a/public/media/avatar/big/904-6.png b/public/media/avatar/big/904-6.png deleted file mode 100644 index c54756a14..000000000 Binary files a/public/media/avatar/big/904-6.png and /dev/null differ diff --git a/public/media/avatar/big/904-7.png b/public/media/avatar/big/904-7.png deleted file mode 100644 index a3fd4d867..000000000 Binary files a/public/media/avatar/big/904-7.png and /dev/null differ diff --git a/public/media/avatar/big/904-8.png b/public/media/avatar/big/904-8.png deleted file mode 100644 index e7a54f758..000000000 Binary files a/public/media/avatar/big/904-8.png and /dev/null differ diff --git a/public/media/avatar/big/904-9.png b/public/media/avatar/big/904-9.png deleted file mode 100644 index 78c5a029e..000000000 Binary files a/public/media/avatar/big/904-9.png and /dev/null differ diff --git a/public/media/avatar/big/905-1.png b/public/media/avatar/big/905-1.png deleted file mode 100644 index 5788a5c21..000000000 Binary files a/public/media/avatar/big/905-1.png and /dev/null differ diff --git a/public/media/avatar/big/905-10.png b/public/media/avatar/big/905-10.png deleted file mode 100644 index 6c57d0f8b..000000000 Binary files a/public/media/avatar/big/905-10.png and /dev/null differ diff --git a/public/media/avatar/big/905-11.png b/public/media/avatar/big/905-11.png deleted file mode 100644 index 58e3104f1..000000000 Binary files a/public/media/avatar/big/905-11.png and /dev/null differ diff --git a/public/media/avatar/big/905-12.png b/public/media/avatar/big/905-12.png deleted file mode 100644 index af28466b9..000000000 Binary files a/public/media/avatar/big/905-12.png and /dev/null differ diff --git a/public/media/avatar/big/905-2.png b/public/media/avatar/big/905-2.png deleted file mode 100644 index 898aea106..000000000 Binary files a/public/media/avatar/big/905-2.png and /dev/null differ diff --git a/public/media/avatar/big/905-3.png b/public/media/avatar/big/905-3.png deleted file mode 100644 index af28466b9..000000000 Binary files a/public/media/avatar/big/905-3.png and /dev/null differ diff --git a/public/media/avatar/big/905-4.png b/public/media/avatar/big/905-4.png deleted file mode 100644 index 012f8d4a9..000000000 Binary files a/public/media/avatar/big/905-4.png and /dev/null differ diff --git a/public/media/avatar/big/905-5.png b/public/media/avatar/big/905-5.png deleted file mode 100644 index aa1a779d7..000000000 Binary files a/public/media/avatar/big/905-5.png and /dev/null differ diff --git a/public/media/avatar/big/905-6.png b/public/media/avatar/big/905-6.png deleted file mode 100644 index 25999167a..000000000 Binary files a/public/media/avatar/big/905-6.png and /dev/null differ diff --git a/public/media/avatar/big/905-7.png b/public/media/avatar/big/905-7.png deleted file mode 100644 index ac9c57a93..000000000 Binary files a/public/media/avatar/big/905-7.png and /dev/null differ diff --git a/public/media/avatar/big/905-8.png b/public/media/avatar/big/905-8.png deleted file mode 100644 index 566d13721..000000000 Binary files a/public/media/avatar/big/905-8.png and /dev/null differ diff --git a/public/media/avatar/big/905-9.png b/public/media/avatar/big/905-9.png deleted file mode 100644 index aa1a779d7..000000000 Binary files a/public/media/avatar/big/905-9.png and /dev/null differ diff --git a/public/media/avatar/big/color-1.png b/public/media/avatar/big/color-1.png deleted file mode 100755 index 634bba8b1..000000000 Binary files a/public/media/avatar/big/color-1.png and /dev/null differ diff --git a/public/media/avatar/big/color-10.png b/public/media/avatar/big/color-10.png deleted file mode 100644 index 4f0487535..000000000 Binary files a/public/media/avatar/big/color-10.png and /dev/null differ diff --git a/public/media/avatar/big/color-11.png b/public/media/avatar/big/color-11.png deleted file mode 100644 index 1329c671b..000000000 Binary files a/public/media/avatar/big/color-11.png and /dev/null differ diff --git a/public/media/avatar/big/color-12.png b/public/media/avatar/big/color-12.png deleted file mode 100644 index 35c3c786d..000000000 Binary files a/public/media/avatar/big/color-12.png and /dev/null differ diff --git a/public/media/avatar/big/color-2.png b/public/media/avatar/big/color-2.png deleted file mode 100755 index e1684ecc6..000000000 Binary files a/public/media/avatar/big/color-2.png and /dev/null differ diff --git a/public/media/avatar/big/color-3.png b/public/media/avatar/big/color-3.png deleted file mode 100755 index 6ae215c45..000000000 Binary files a/public/media/avatar/big/color-3.png and /dev/null differ diff --git a/public/media/avatar/big/color-4.png b/public/media/avatar/big/color-4.png deleted file mode 100755 index d0cd09a9f..000000000 Binary files a/public/media/avatar/big/color-4.png and /dev/null differ diff --git a/public/media/avatar/big/color-5.png b/public/media/avatar/big/color-5.png deleted file mode 100755 index c9088307b..000000000 Binary files a/public/media/avatar/big/color-5.png and /dev/null differ diff --git a/public/media/avatar/big/color-6.png b/public/media/avatar/big/color-6.png deleted file mode 100755 index ed0d3dc00..000000000 Binary files a/public/media/avatar/big/color-6.png and /dev/null differ diff --git a/public/media/avatar/big/color-7.png b/public/media/avatar/big/color-7.png deleted file mode 100755 index 669fedafb..000000000 Binary files a/public/media/avatar/big/color-7.png and /dev/null differ diff --git a/public/media/avatar/big/color-8.png b/public/media/avatar/big/color-8.png deleted file mode 100644 index 9fdcf7636..000000000 Binary files a/public/media/avatar/big/color-8.png and /dev/null differ diff --git a/public/media/avatar/big/color-9.png b/public/media/avatar/big/color-9.png deleted file mode 100644 index 00f4611d6..000000000 Binary files a/public/media/avatar/big/color-9.png and /dev/null differ diff --git a/public/media/avatar/big/empty.png b/public/media/avatar/big/empty.png deleted file mode 100755 index 5f6984095..000000000 Binary files a/public/media/avatar/big/empty.png and /dev/null differ diff --git a/public/media/avatar/big/jm-1.png b/public/media/avatar/big/jm-1.png deleted file mode 100755 index 5f2053784..000000000 Binary files a/public/media/avatar/big/jm-1.png and /dev/null differ diff --git a/public/media/avatar/big/jm-10.png b/public/media/avatar/big/jm-10.png deleted file mode 100644 index bca90f852..000000000 Binary files a/public/media/avatar/big/jm-10.png and /dev/null differ diff --git a/public/media/avatar/big/jm-11.png b/public/media/avatar/big/jm-11.png deleted file mode 100644 index ad37e68db..000000000 Binary files a/public/media/avatar/big/jm-11.png and /dev/null differ diff --git a/public/media/avatar/big/jm-12.png b/public/media/avatar/big/jm-12.png deleted file mode 100644 index 9dadbb298..000000000 Binary files a/public/media/avatar/big/jm-12.png and /dev/null differ diff --git a/public/media/avatar/big/jm-2.png b/public/media/avatar/big/jm-2.png deleted file mode 100755 index 90d2fbb75..000000000 Binary files a/public/media/avatar/big/jm-2.png and /dev/null differ diff --git a/public/media/avatar/big/jm-3.png b/public/media/avatar/big/jm-3.png deleted file mode 100755 index 9dadbb298..000000000 Binary files a/public/media/avatar/big/jm-3.png and /dev/null differ diff --git a/public/media/avatar/big/jm-4.png b/public/media/avatar/big/jm-4.png deleted file mode 100755 index c0b496a88..000000000 Binary files a/public/media/avatar/big/jm-4.png and /dev/null differ diff --git a/public/media/avatar/big/jm-5.png b/public/media/avatar/big/jm-5.png deleted file mode 100755 index 693530f9d..000000000 Binary files a/public/media/avatar/big/jm-5.png and /dev/null differ diff --git a/public/media/avatar/big/jm-6.png b/public/media/avatar/big/jm-6.png deleted file mode 100755 index f9a7ed417..000000000 Binary files a/public/media/avatar/big/jm-6.png and /dev/null differ diff --git a/public/media/avatar/big/jm-7.png b/public/media/avatar/big/jm-7.png deleted file mode 100755 index 7ad3794cf..000000000 Binary files a/public/media/avatar/big/jm-7.png and /dev/null differ diff --git a/public/media/avatar/big/jm-8.png b/public/media/avatar/big/jm-8.png deleted file mode 100644 index 6c0b7712e..000000000 Binary files a/public/media/avatar/big/jm-8.png and /dev/null differ diff --git a/public/media/avatar/big/jm-9.png b/public/media/avatar/big/jm-9.png deleted file mode 100644 index 693530f9d..000000000 Binary files a/public/media/avatar/big/jm-9.png and /dev/null differ diff --git a/public/media/avatar/big/jm.png b/public/media/avatar/big/jm.png deleted file mode 100755 index eda4c5a5f..000000000 Binary files a/public/media/avatar/big/jm.png and /dev/null differ diff --git a/public/media/avatar/big/multi.png b/public/media/avatar/big/multi.png deleted file mode 100644 index 5f6984095..000000000 Binary files a/public/media/avatar/big/multi.png and /dev/null differ diff --git a/public/media/avatar/big/rebel.png b/public/media/avatar/big/rebel.png deleted file mode 100755 index 9c65a21ca..000000000 Binary files a/public/media/avatar/big/rebel.png and /dev/null differ diff --git a/public/media/avatar/medium/001-1.png b/public/media/avatar/medium/001-1.png deleted file mode 100755 index aba4d0753..000000000 Binary files a/public/media/avatar/medium/001-1.png and /dev/null differ diff --git a/public/media/avatar/medium/001-10.png b/public/media/avatar/medium/001-10.png deleted file mode 100644 index 5c3c05019..000000000 Binary files a/public/media/avatar/medium/001-10.png and /dev/null differ diff --git a/public/media/avatar/medium/001-11.png b/public/media/avatar/medium/001-11.png deleted file mode 100644 index 4ee448cdb..000000000 Binary files a/public/media/avatar/medium/001-11.png and /dev/null differ diff --git a/public/media/avatar/medium/001-12.png b/public/media/avatar/medium/001-12.png deleted file mode 100644 index 75b92aeed..000000000 Binary files a/public/media/avatar/medium/001-12.png and /dev/null differ diff --git a/public/media/avatar/medium/001-2.png b/public/media/avatar/medium/001-2.png deleted file mode 100755 index f5c18c40e..000000000 Binary files a/public/media/avatar/medium/001-2.png and /dev/null differ diff --git a/public/media/avatar/medium/001-3.png b/public/media/avatar/medium/001-3.png deleted file mode 100755 index 75b92aeed..000000000 Binary files a/public/media/avatar/medium/001-3.png and /dev/null differ diff --git a/public/media/avatar/medium/001-4.png b/public/media/avatar/medium/001-4.png deleted file mode 100755 index 8d848aea1..000000000 Binary files a/public/media/avatar/medium/001-4.png and /dev/null differ diff --git a/public/media/avatar/medium/001-5.png b/public/media/avatar/medium/001-5.png deleted file mode 100755 index d8a0ab24a..000000000 Binary files a/public/media/avatar/medium/001-5.png and /dev/null differ diff --git a/public/media/avatar/medium/001-6.png b/public/media/avatar/medium/001-6.png deleted file mode 100755 index acef5b392..000000000 Binary files a/public/media/avatar/medium/001-6.png and /dev/null differ diff --git a/public/media/avatar/medium/001-7.png b/public/media/avatar/medium/001-7.png deleted file mode 100755 index 0bfea1aa6..000000000 Binary files a/public/media/avatar/medium/001-7.png and /dev/null differ diff --git a/public/media/avatar/medium/001-8.png b/public/media/avatar/medium/001-8.png deleted file mode 100644 index 418d392b9..000000000 Binary files a/public/media/avatar/medium/001-8.png and /dev/null differ diff --git a/public/media/avatar/medium/001-9.png b/public/media/avatar/medium/001-9.png deleted file mode 100644 index d8a0ab24a..000000000 Binary files a/public/media/avatar/medium/001-9.png and /dev/null differ diff --git a/public/media/avatar/medium/002-1.png b/public/media/avatar/medium/002-1.png deleted file mode 100755 index 91acc1c7c..000000000 Binary files a/public/media/avatar/medium/002-1.png and /dev/null differ diff --git a/public/media/avatar/medium/002-10.png b/public/media/avatar/medium/002-10.png deleted file mode 100644 index 2da45c79b..000000000 Binary files a/public/media/avatar/medium/002-10.png and /dev/null differ diff --git a/public/media/avatar/medium/002-11.png b/public/media/avatar/medium/002-11.png deleted file mode 100644 index f11e3f9f8..000000000 Binary files a/public/media/avatar/medium/002-11.png and /dev/null differ diff --git a/public/media/avatar/medium/002-12.png b/public/media/avatar/medium/002-12.png deleted file mode 100644 index e62a8884b..000000000 Binary files a/public/media/avatar/medium/002-12.png and /dev/null differ diff --git a/public/media/avatar/medium/002-2.png b/public/media/avatar/medium/002-2.png deleted file mode 100755 index a970ad70c..000000000 Binary files a/public/media/avatar/medium/002-2.png and /dev/null differ diff --git a/public/media/avatar/medium/002-3.png b/public/media/avatar/medium/002-3.png deleted file mode 100755 index e62a8884b..000000000 Binary files a/public/media/avatar/medium/002-3.png and /dev/null differ diff --git a/public/media/avatar/medium/002-4.png b/public/media/avatar/medium/002-4.png deleted file mode 100755 index b6fb9405f..000000000 Binary files a/public/media/avatar/medium/002-4.png and /dev/null differ diff --git a/public/media/avatar/medium/002-5.png b/public/media/avatar/medium/002-5.png deleted file mode 100755 index a96e66786..000000000 Binary files a/public/media/avatar/medium/002-5.png and /dev/null differ diff --git a/public/media/avatar/medium/002-6.png b/public/media/avatar/medium/002-6.png deleted file mode 100755 index 35e898f68..000000000 Binary files a/public/media/avatar/medium/002-6.png and /dev/null differ diff --git a/public/media/avatar/medium/002-7.png b/public/media/avatar/medium/002-7.png deleted file mode 100755 index cbc92bfbf..000000000 Binary files a/public/media/avatar/medium/002-7.png and /dev/null differ diff --git a/public/media/avatar/medium/002-8.png b/public/media/avatar/medium/002-8.png deleted file mode 100644 index 34390ad0a..000000000 Binary files a/public/media/avatar/medium/002-8.png and /dev/null differ diff --git a/public/media/avatar/medium/002-9.png b/public/media/avatar/medium/002-9.png deleted file mode 100644 index a96e66786..000000000 Binary files a/public/media/avatar/medium/002-9.png and /dev/null differ diff --git a/public/media/avatar/medium/003-1.png b/public/media/avatar/medium/003-1.png deleted file mode 100755 index 5a761c920..000000000 Binary files a/public/media/avatar/medium/003-1.png and /dev/null differ diff --git a/public/media/avatar/medium/003-10.png b/public/media/avatar/medium/003-10.png deleted file mode 100644 index 7946c1668..000000000 Binary files a/public/media/avatar/medium/003-10.png and /dev/null differ diff --git a/public/media/avatar/medium/003-11.png b/public/media/avatar/medium/003-11.png deleted file mode 100644 index ed21243dc..000000000 Binary files a/public/media/avatar/medium/003-11.png and /dev/null differ diff --git a/public/media/avatar/medium/003-12.png b/public/media/avatar/medium/003-12.png deleted file mode 100644 index f4cb89ce9..000000000 Binary files a/public/media/avatar/medium/003-12.png and /dev/null differ diff --git a/public/media/avatar/medium/003-2.png b/public/media/avatar/medium/003-2.png deleted file mode 100755 index db8761caa..000000000 Binary files a/public/media/avatar/medium/003-2.png and /dev/null differ diff --git a/public/media/avatar/medium/003-3.png b/public/media/avatar/medium/003-3.png deleted file mode 100755 index f4cb89ce9..000000000 Binary files a/public/media/avatar/medium/003-3.png and /dev/null differ diff --git a/public/media/avatar/medium/003-4.png b/public/media/avatar/medium/003-4.png deleted file mode 100755 index 789b1555f..000000000 Binary files a/public/media/avatar/medium/003-4.png and /dev/null differ diff --git a/public/media/avatar/medium/003-5.png b/public/media/avatar/medium/003-5.png deleted file mode 100755 index d48926263..000000000 Binary files a/public/media/avatar/medium/003-5.png and /dev/null differ diff --git a/public/media/avatar/medium/003-6.png b/public/media/avatar/medium/003-6.png deleted file mode 100755 index 94694c665..000000000 Binary files a/public/media/avatar/medium/003-6.png and /dev/null differ diff --git a/public/media/avatar/medium/003-7.png b/public/media/avatar/medium/003-7.png deleted file mode 100755 index 4b0edae46..000000000 Binary files a/public/media/avatar/medium/003-7.png and /dev/null differ diff --git a/public/media/avatar/medium/003-8.png b/public/media/avatar/medium/003-8.png deleted file mode 100644 index 714fda565..000000000 Binary files a/public/media/avatar/medium/003-8.png and /dev/null differ diff --git a/public/media/avatar/medium/003-9.png b/public/media/avatar/medium/003-9.png deleted file mode 100644 index d48926263..000000000 Binary files a/public/media/avatar/medium/003-9.png and /dev/null differ diff --git a/public/media/avatar/medium/004-1.png b/public/media/avatar/medium/004-1.png deleted file mode 100755 index 1f9d38c47..000000000 Binary files a/public/media/avatar/medium/004-1.png and /dev/null differ diff --git a/public/media/avatar/medium/004-10.png b/public/media/avatar/medium/004-10.png deleted file mode 100644 index d13cf5219..000000000 Binary files a/public/media/avatar/medium/004-10.png and /dev/null differ diff --git a/public/media/avatar/medium/004-11.png b/public/media/avatar/medium/004-11.png deleted file mode 100644 index 0d62cf8ac..000000000 Binary files a/public/media/avatar/medium/004-11.png and /dev/null differ diff --git a/public/media/avatar/medium/004-12.png b/public/media/avatar/medium/004-12.png deleted file mode 100644 index 93dc6b005..000000000 Binary files a/public/media/avatar/medium/004-12.png and /dev/null differ diff --git a/public/media/avatar/medium/004-2.png b/public/media/avatar/medium/004-2.png deleted file mode 100755 index 785ba9635..000000000 Binary files a/public/media/avatar/medium/004-2.png and /dev/null differ diff --git a/public/media/avatar/medium/004-3.png b/public/media/avatar/medium/004-3.png deleted file mode 100755 index a48c5193a..000000000 Binary files a/public/media/avatar/medium/004-3.png and /dev/null differ diff --git a/public/media/avatar/medium/004-4.png b/public/media/avatar/medium/004-4.png deleted file mode 100755 index 63ae0584d..000000000 Binary files a/public/media/avatar/medium/004-4.png and /dev/null differ diff --git a/public/media/avatar/medium/004-5.png b/public/media/avatar/medium/004-5.png deleted file mode 100755 index 9b5f3aa12..000000000 Binary files a/public/media/avatar/medium/004-5.png and /dev/null differ diff --git a/public/media/avatar/medium/004-6.png b/public/media/avatar/medium/004-6.png deleted file mode 100755 index 7e8de7388..000000000 Binary files a/public/media/avatar/medium/004-6.png and /dev/null differ diff --git a/public/media/avatar/medium/004-7.png b/public/media/avatar/medium/004-7.png deleted file mode 100755 index a3f3d228e..000000000 Binary files a/public/media/avatar/medium/004-7.png and /dev/null differ diff --git a/public/media/avatar/medium/004-8.png b/public/media/avatar/medium/004-8.png deleted file mode 100644 index aebdcb0ca..000000000 Binary files a/public/media/avatar/medium/004-8.png and /dev/null differ diff --git a/public/media/avatar/medium/004-9.png b/public/media/avatar/medium/004-9.png deleted file mode 100644 index 9b5f3aa12..000000000 Binary files a/public/media/avatar/medium/004-9.png and /dev/null differ diff --git a/public/media/avatar/medium/005-1.png b/public/media/avatar/medium/005-1.png deleted file mode 100755 index ccddeb5ca..000000000 Binary files a/public/media/avatar/medium/005-1.png and /dev/null differ diff --git a/public/media/avatar/medium/005-10.png b/public/media/avatar/medium/005-10.png deleted file mode 100644 index 1a4fde1b1..000000000 Binary files a/public/media/avatar/medium/005-10.png and /dev/null differ diff --git a/public/media/avatar/medium/005-11.png b/public/media/avatar/medium/005-11.png deleted file mode 100644 index 6b9b5bf98..000000000 Binary files a/public/media/avatar/medium/005-11.png and /dev/null differ diff --git a/public/media/avatar/medium/005-12.png b/public/media/avatar/medium/005-12.png deleted file mode 100644 index f18a65be3..000000000 Binary files a/public/media/avatar/medium/005-12.png and /dev/null differ diff --git a/public/media/avatar/medium/005-2.png b/public/media/avatar/medium/005-2.png deleted file mode 100755 index 5cb9d55d9..000000000 Binary files a/public/media/avatar/medium/005-2.png and /dev/null differ diff --git a/public/media/avatar/medium/005-3.png b/public/media/avatar/medium/005-3.png deleted file mode 100755 index f18a65be3..000000000 Binary files a/public/media/avatar/medium/005-3.png and /dev/null differ diff --git a/public/media/avatar/medium/005-4.png b/public/media/avatar/medium/005-4.png deleted file mode 100755 index 384cae363..000000000 Binary files a/public/media/avatar/medium/005-4.png and /dev/null differ diff --git a/public/media/avatar/medium/005-5.png b/public/media/avatar/medium/005-5.png deleted file mode 100755 index 76bbe59e4..000000000 Binary files a/public/media/avatar/medium/005-5.png and /dev/null differ diff --git a/public/media/avatar/medium/005-6.png b/public/media/avatar/medium/005-6.png deleted file mode 100755 index 0fabb92b7..000000000 Binary files a/public/media/avatar/medium/005-6.png and /dev/null differ diff --git a/public/media/avatar/medium/005-7.png b/public/media/avatar/medium/005-7.png deleted file mode 100755 index b029b6c7a..000000000 Binary files a/public/media/avatar/medium/005-7.png and /dev/null differ diff --git a/public/media/avatar/medium/005-8.png b/public/media/avatar/medium/005-8.png deleted file mode 100644 index f4435f5a9..000000000 Binary files a/public/media/avatar/medium/005-8.png and /dev/null differ diff --git a/public/media/avatar/medium/005-9.png b/public/media/avatar/medium/005-9.png deleted file mode 100644 index 76bbe59e4..000000000 Binary files a/public/media/avatar/medium/005-9.png and /dev/null differ diff --git a/public/media/avatar/medium/006-1.png b/public/media/avatar/medium/006-1.png deleted file mode 100755 index ef242daf0..000000000 Binary files a/public/media/avatar/medium/006-1.png and /dev/null differ diff --git a/public/media/avatar/medium/006-10.png b/public/media/avatar/medium/006-10.png deleted file mode 100644 index 0d69b3561..000000000 Binary files a/public/media/avatar/medium/006-10.png and /dev/null differ diff --git a/public/media/avatar/medium/006-11.png b/public/media/avatar/medium/006-11.png deleted file mode 100644 index 487fc16df..000000000 Binary files a/public/media/avatar/medium/006-11.png and /dev/null differ diff --git a/public/media/avatar/medium/006-12.png b/public/media/avatar/medium/006-12.png deleted file mode 100644 index 90c52cc4d..000000000 Binary files a/public/media/avatar/medium/006-12.png and /dev/null differ diff --git a/public/media/avatar/medium/006-2.png b/public/media/avatar/medium/006-2.png deleted file mode 100755 index 292e4f57d..000000000 Binary files a/public/media/avatar/medium/006-2.png and /dev/null differ diff --git a/public/media/avatar/medium/006-3.png b/public/media/avatar/medium/006-3.png deleted file mode 100755 index 90c52cc4d..000000000 Binary files a/public/media/avatar/medium/006-3.png and /dev/null differ diff --git a/public/media/avatar/medium/006-4.png b/public/media/avatar/medium/006-4.png deleted file mode 100755 index a272b4134..000000000 Binary files a/public/media/avatar/medium/006-4.png and /dev/null differ diff --git a/public/media/avatar/medium/006-5.png b/public/media/avatar/medium/006-5.png deleted file mode 100755 index 4f2973aba..000000000 Binary files a/public/media/avatar/medium/006-5.png and /dev/null differ diff --git a/public/media/avatar/medium/006-6.png b/public/media/avatar/medium/006-6.png deleted file mode 100755 index e9a89fd59..000000000 Binary files a/public/media/avatar/medium/006-6.png and /dev/null differ diff --git a/public/media/avatar/medium/006-7.png b/public/media/avatar/medium/006-7.png deleted file mode 100755 index ab4b6d38f..000000000 Binary files a/public/media/avatar/medium/006-7.png and /dev/null differ diff --git a/public/media/avatar/medium/006-8.png b/public/media/avatar/medium/006-8.png deleted file mode 100644 index fc9f15164..000000000 Binary files a/public/media/avatar/medium/006-8.png and /dev/null differ diff --git a/public/media/avatar/medium/006-9.png b/public/media/avatar/medium/006-9.png deleted file mode 100644 index 4f2973aba..000000000 Binary files a/public/media/avatar/medium/006-9.png and /dev/null differ diff --git a/public/media/avatar/medium/007-1.png b/public/media/avatar/medium/007-1.png deleted file mode 100755 index 47e08e575..000000000 Binary files a/public/media/avatar/medium/007-1.png and /dev/null differ diff --git a/public/media/avatar/medium/007-10.png b/public/media/avatar/medium/007-10.png deleted file mode 100644 index 4e36d924a..000000000 Binary files a/public/media/avatar/medium/007-10.png and /dev/null differ diff --git a/public/media/avatar/medium/007-11.png b/public/media/avatar/medium/007-11.png deleted file mode 100644 index 59b33e5c4..000000000 Binary files a/public/media/avatar/medium/007-11.png and /dev/null differ diff --git a/public/media/avatar/medium/007-12.png b/public/media/avatar/medium/007-12.png deleted file mode 100644 index cbd5c4d35..000000000 Binary files a/public/media/avatar/medium/007-12.png and /dev/null differ diff --git a/public/media/avatar/medium/007-2.png b/public/media/avatar/medium/007-2.png deleted file mode 100755 index 150a5c9b0..000000000 Binary files a/public/media/avatar/medium/007-2.png and /dev/null differ diff --git a/public/media/avatar/medium/007-3.png b/public/media/avatar/medium/007-3.png deleted file mode 100755 index cbd5c4d35..000000000 Binary files a/public/media/avatar/medium/007-3.png and /dev/null differ diff --git a/public/media/avatar/medium/007-4.png b/public/media/avatar/medium/007-4.png deleted file mode 100755 index c478c1692..000000000 Binary files a/public/media/avatar/medium/007-4.png and /dev/null differ diff --git a/public/media/avatar/medium/007-5.png b/public/media/avatar/medium/007-5.png deleted file mode 100755 index 6529e59b8..000000000 Binary files a/public/media/avatar/medium/007-5.png and /dev/null differ diff --git a/public/media/avatar/medium/007-6.png b/public/media/avatar/medium/007-6.png deleted file mode 100755 index 329db230e..000000000 Binary files a/public/media/avatar/medium/007-6.png and /dev/null differ diff --git a/public/media/avatar/medium/007-7.png b/public/media/avatar/medium/007-7.png deleted file mode 100755 index d0e8af588..000000000 Binary files a/public/media/avatar/medium/007-7.png and /dev/null differ diff --git a/public/media/avatar/medium/007-8.png b/public/media/avatar/medium/007-8.png deleted file mode 100644 index 54e63afc5..000000000 Binary files a/public/media/avatar/medium/007-8.png and /dev/null differ diff --git a/public/media/avatar/medium/007-9.png b/public/media/avatar/medium/007-9.png deleted file mode 100644 index 6529e59b8..000000000 Binary files a/public/media/avatar/medium/007-9.png and /dev/null differ diff --git a/public/media/avatar/medium/008-1.png b/public/media/avatar/medium/008-1.png deleted file mode 100755 index a282fb802..000000000 Binary files a/public/media/avatar/medium/008-1.png and /dev/null differ diff --git a/public/media/avatar/medium/008-10.png b/public/media/avatar/medium/008-10.png deleted file mode 100644 index 2fbd2245d..000000000 Binary files a/public/media/avatar/medium/008-10.png and /dev/null differ diff --git a/public/media/avatar/medium/008-11.png b/public/media/avatar/medium/008-11.png deleted file mode 100644 index 73204d972..000000000 Binary files a/public/media/avatar/medium/008-11.png and /dev/null differ diff --git a/public/media/avatar/medium/008-12.png b/public/media/avatar/medium/008-12.png deleted file mode 100644 index fe6071cbc..000000000 Binary files a/public/media/avatar/medium/008-12.png and /dev/null differ diff --git a/public/media/avatar/medium/008-2.png b/public/media/avatar/medium/008-2.png deleted file mode 100755 index 17c49a49c..000000000 Binary files a/public/media/avatar/medium/008-2.png and /dev/null differ diff --git a/public/media/avatar/medium/008-3.png b/public/media/avatar/medium/008-3.png deleted file mode 100755 index fe6071cbc..000000000 Binary files a/public/media/avatar/medium/008-3.png and /dev/null differ diff --git a/public/media/avatar/medium/008-4.png b/public/media/avatar/medium/008-4.png deleted file mode 100755 index f6d973712..000000000 Binary files a/public/media/avatar/medium/008-4.png and /dev/null differ diff --git a/public/media/avatar/medium/008-5.png b/public/media/avatar/medium/008-5.png deleted file mode 100755 index 69efe3b13..000000000 Binary files a/public/media/avatar/medium/008-5.png and /dev/null differ diff --git a/public/media/avatar/medium/008-6.png b/public/media/avatar/medium/008-6.png deleted file mode 100755 index 6f3d0434b..000000000 Binary files a/public/media/avatar/medium/008-6.png and /dev/null differ diff --git a/public/media/avatar/medium/008-7.png b/public/media/avatar/medium/008-7.png deleted file mode 100755 index 6a8bd4200..000000000 Binary files a/public/media/avatar/medium/008-7.png and /dev/null differ diff --git a/public/media/avatar/medium/008-8.png b/public/media/avatar/medium/008-8.png deleted file mode 100644 index bd3c11383..000000000 Binary files a/public/media/avatar/medium/008-8.png and /dev/null differ diff --git a/public/media/avatar/medium/008-9.png b/public/media/avatar/medium/008-9.png deleted file mode 100644 index 69efe3b13..000000000 Binary files a/public/media/avatar/medium/008-9.png and /dev/null differ diff --git a/public/media/avatar/medium/009-1.png b/public/media/avatar/medium/009-1.png deleted file mode 100755 index f30235c26..000000000 Binary files a/public/media/avatar/medium/009-1.png and /dev/null differ diff --git a/public/media/avatar/medium/009-10.png b/public/media/avatar/medium/009-10.png deleted file mode 100644 index 6401213e1..000000000 Binary files a/public/media/avatar/medium/009-10.png and /dev/null differ diff --git a/public/media/avatar/medium/009-11.png b/public/media/avatar/medium/009-11.png deleted file mode 100644 index fa4abbf20..000000000 Binary files a/public/media/avatar/medium/009-11.png and /dev/null differ diff --git a/public/media/avatar/medium/009-12.png b/public/media/avatar/medium/009-12.png deleted file mode 100644 index 0f2b124fc..000000000 Binary files a/public/media/avatar/medium/009-12.png and /dev/null differ diff --git a/public/media/avatar/medium/009-2.png b/public/media/avatar/medium/009-2.png deleted file mode 100755 index 6be1dd75d..000000000 Binary files a/public/media/avatar/medium/009-2.png and /dev/null differ diff --git a/public/media/avatar/medium/009-3.png b/public/media/avatar/medium/009-3.png deleted file mode 100755 index 0f2b124fc..000000000 Binary files a/public/media/avatar/medium/009-3.png and /dev/null differ diff --git a/public/media/avatar/medium/009-4.png b/public/media/avatar/medium/009-4.png deleted file mode 100755 index 3c9990c5b..000000000 Binary files a/public/media/avatar/medium/009-4.png and /dev/null differ diff --git a/public/media/avatar/medium/009-5.png b/public/media/avatar/medium/009-5.png deleted file mode 100755 index c5e32d149..000000000 Binary files a/public/media/avatar/medium/009-5.png and /dev/null differ diff --git a/public/media/avatar/medium/009-6.png b/public/media/avatar/medium/009-6.png deleted file mode 100755 index b4ca7f557..000000000 Binary files a/public/media/avatar/medium/009-6.png and /dev/null differ diff --git a/public/media/avatar/medium/009-7.png b/public/media/avatar/medium/009-7.png deleted file mode 100755 index ff8f66475..000000000 Binary files a/public/media/avatar/medium/009-7.png and /dev/null differ diff --git a/public/media/avatar/medium/009-8.png b/public/media/avatar/medium/009-8.png deleted file mode 100644 index 8daacd4f1..000000000 Binary files a/public/media/avatar/medium/009-8.png and /dev/null differ diff --git a/public/media/avatar/medium/009-9.png b/public/media/avatar/medium/009-9.png deleted file mode 100644 index c5e32d149..000000000 Binary files a/public/media/avatar/medium/009-9.png and /dev/null differ diff --git a/public/media/avatar/medium/010-1.png b/public/media/avatar/medium/010-1.png deleted file mode 100755 index 6f662c674..000000000 Binary files a/public/media/avatar/medium/010-1.png and /dev/null differ diff --git a/public/media/avatar/medium/010-10.png b/public/media/avatar/medium/010-10.png deleted file mode 100644 index 5d5671f87..000000000 Binary files a/public/media/avatar/medium/010-10.png and /dev/null differ diff --git a/public/media/avatar/medium/010-11.png b/public/media/avatar/medium/010-11.png deleted file mode 100644 index 06581f6ae..000000000 Binary files a/public/media/avatar/medium/010-11.png and /dev/null differ diff --git a/public/media/avatar/medium/010-12.png b/public/media/avatar/medium/010-12.png deleted file mode 100644 index d9fba5757..000000000 Binary files a/public/media/avatar/medium/010-12.png and /dev/null differ diff --git a/public/media/avatar/medium/010-2.png b/public/media/avatar/medium/010-2.png deleted file mode 100755 index e9b59b904..000000000 Binary files a/public/media/avatar/medium/010-2.png and /dev/null differ diff --git a/public/media/avatar/medium/010-3.png b/public/media/avatar/medium/010-3.png deleted file mode 100755 index d9fba5757..000000000 Binary files a/public/media/avatar/medium/010-3.png and /dev/null differ diff --git a/public/media/avatar/medium/010-4.png b/public/media/avatar/medium/010-4.png deleted file mode 100755 index 21c1e9a05..000000000 Binary files a/public/media/avatar/medium/010-4.png and /dev/null differ diff --git a/public/media/avatar/medium/010-5.png b/public/media/avatar/medium/010-5.png deleted file mode 100755 index 3ded296ca..000000000 Binary files a/public/media/avatar/medium/010-5.png and /dev/null differ diff --git a/public/media/avatar/medium/010-6.png b/public/media/avatar/medium/010-6.png deleted file mode 100755 index 49ac9163e..000000000 Binary files a/public/media/avatar/medium/010-6.png and /dev/null differ diff --git a/public/media/avatar/medium/010-7.png b/public/media/avatar/medium/010-7.png deleted file mode 100755 index bea0f9e89..000000000 Binary files a/public/media/avatar/medium/010-7.png and /dev/null differ diff --git a/public/media/avatar/medium/010-8.png b/public/media/avatar/medium/010-8.png deleted file mode 100644 index b6885d2e1..000000000 Binary files a/public/media/avatar/medium/010-8.png and /dev/null differ diff --git a/public/media/avatar/medium/010-9.png b/public/media/avatar/medium/010-9.png deleted file mode 100644 index 3ded296ca..000000000 Binary files a/public/media/avatar/medium/010-9.png and /dev/null differ diff --git a/public/media/avatar/medium/011-1.png b/public/media/avatar/medium/011-1.png deleted file mode 100755 index 4df86c635..000000000 Binary files a/public/media/avatar/medium/011-1.png and /dev/null differ diff --git a/public/media/avatar/medium/011-10.png b/public/media/avatar/medium/011-10.png deleted file mode 100644 index abc8d9f78..000000000 Binary files a/public/media/avatar/medium/011-10.png and /dev/null differ diff --git a/public/media/avatar/medium/011-11.png b/public/media/avatar/medium/011-11.png deleted file mode 100644 index 23aa7345f..000000000 Binary files a/public/media/avatar/medium/011-11.png and /dev/null differ diff --git a/public/media/avatar/medium/011-12.png b/public/media/avatar/medium/011-12.png deleted file mode 100644 index f810a7210..000000000 Binary files a/public/media/avatar/medium/011-12.png and /dev/null differ diff --git a/public/media/avatar/medium/011-2.png b/public/media/avatar/medium/011-2.png deleted file mode 100755 index c7945b157..000000000 Binary files a/public/media/avatar/medium/011-2.png and /dev/null differ diff --git a/public/media/avatar/medium/011-3.png b/public/media/avatar/medium/011-3.png deleted file mode 100755 index f810a7210..000000000 Binary files a/public/media/avatar/medium/011-3.png and /dev/null differ diff --git a/public/media/avatar/medium/011-4.png b/public/media/avatar/medium/011-4.png deleted file mode 100755 index 67bb1dc41..000000000 Binary files a/public/media/avatar/medium/011-4.png and /dev/null differ diff --git a/public/media/avatar/medium/011-5.png b/public/media/avatar/medium/011-5.png deleted file mode 100755 index ec0f9fa63..000000000 Binary files a/public/media/avatar/medium/011-5.png and /dev/null differ diff --git a/public/media/avatar/medium/011-6.png b/public/media/avatar/medium/011-6.png deleted file mode 100755 index 932fd7ff3..000000000 Binary files a/public/media/avatar/medium/011-6.png and /dev/null differ diff --git a/public/media/avatar/medium/011-7.png b/public/media/avatar/medium/011-7.png deleted file mode 100755 index ce75f667e..000000000 Binary files a/public/media/avatar/medium/011-7.png and /dev/null differ diff --git a/public/media/avatar/medium/011-8.png b/public/media/avatar/medium/011-8.png deleted file mode 100644 index 511b9f7b7..000000000 Binary files a/public/media/avatar/medium/011-8.png and /dev/null differ diff --git a/public/media/avatar/medium/011-9.png b/public/media/avatar/medium/011-9.png deleted file mode 100644 index ec0f9fa63..000000000 Binary files a/public/media/avatar/medium/011-9.png and /dev/null differ diff --git a/public/media/avatar/medium/012-1.png b/public/media/avatar/medium/012-1.png deleted file mode 100755 index c3d5bc1b9..000000000 Binary files a/public/media/avatar/medium/012-1.png and /dev/null differ diff --git a/public/media/avatar/medium/012-10.png b/public/media/avatar/medium/012-10.png deleted file mode 100644 index 0e35e02a1..000000000 Binary files a/public/media/avatar/medium/012-10.png and /dev/null differ diff --git a/public/media/avatar/medium/012-11.png b/public/media/avatar/medium/012-11.png deleted file mode 100644 index d75ddd323..000000000 Binary files a/public/media/avatar/medium/012-11.png and /dev/null differ diff --git a/public/media/avatar/medium/012-12.png b/public/media/avatar/medium/012-12.png deleted file mode 100644 index fcd88f3b4..000000000 Binary files a/public/media/avatar/medium/012-12.png and /dev/null differ diff --git a/public/media/avatar/medium/012-2.png b/public/media/avatar/medium/012-2.png deleted file mode 100755 index 7cc5f2915..000000000 Binary files a/public/media/avatar/medium/012-2.png and /dev/null differ diff --git a/public/media/avatar/medium/012-3.png b/public/media/avatar/medium/012-3.png deleted file mode 100755 index fcd88f3b4..000000000 Binary files a/public/media/avatar/medium/012-3.png and /dev/null differ diff --git a/public/media/avatar/medium/012-4.png b/public/media/avatar/medium/012-4.png deleted file mode 100755 index 1fa344798..000000000 Binary files a/public/media/avatar/medium/012-4.png and /dev/null differ diff --git a/public/media/avatar/medium/012-5.png b/public/media/avatar/medium/012-5.png deleted file mode 100755 index 0f0f067e3..000000000 Binary files a/public/media/avatar/medium/012-5.png and /dev/null differ diff --git a/public/media/avatar/medium/012-6.png b/public/media/avatar/medium/012-6.png deleted file mode 100755 index cb5d580a5..000000000 Binary files a/public/media/avatar/medium/012-6.png and /dev/null differ diff --git a/public/media/avatar/medium/012-7.png b/public/media/avatar/medium/012-7.png deleted file mode 100755 index 6dbc01053..000000000 Binary files a/public/media/avatar/medium/012-7.png and /dev/null differ diff --git a/public/media/avatar/medium/012-8.png b/public/media/avatar/medium/012-8.png deleted file mode 100644 index 999c1fe6b..000000000 Binary files a/public/media/avatar/medium/012-8.png and /dev/null differ diff --git a/public/media/avatar/medium/012-9.png b/public/media/avatar/medium/012-9.png deleted file mode 100644 index 0f0f067e3..000000000 Binary files a/public/media/avatar/medium/012-9.png and /dev/null differ diff --git a/public/media/avatar/medium/013-1.png b/public/media/avatar/medium/013-1.png deleted file mode 100755 index d243a0f51..000000000 Binary files a/public/media/avatar/medium/013-1.png and /dev/null differ diff --git a/public/media/avatar/medium/013-10.png b/public/media/avatar/medium/013-10.png deleted file mode 100644 index e9646e1ea..000000000 Binary files a/public/media/avatar/medium/013-10.png and /dev/null differ diff --git a/public/media/avatar/medium/013-11.png b/public/media/avatar/medium/013-11.png deleted file mode 100644 index 12a6d35a5..000000000 Binary files a/public/media/avatar/medium/013-11.png and /dev/null differ diff --git a/public/media/avatar/medium/013-12.png b/public/media/avatar/medium/013-12.png deleted file mode 100644 index e5290909b..000000000 Binary files a/public/media/avatar/medium/013-12.png and /dev/null differ diff --git a/public/media/avatar/medium/013-2.png b/public/media/avatar/medium/013-2.png deleted file mode 100755 index ad49e6331..000000000 Binary files a/public/media/avatar/medium/013-2.png and /dev/null differ diff --git a/public/media/avatar/medium/013-3.png b/public/media/avatar/medium/013-3.png deleted file mode 100755 index cc0020877..000000000 Binary files a/public/media/avatar/medium/013-3.png and /dev/null differ diff --git a/public/media/avatar/medium/013-4.png b/public/media/avatar/medium/013-4.png deleted file mode 100755 index ef3d863eb..000000000 Binary files a/public/media/avatar/medium/013-4.png and /dev/null differ diff --git a/public/media/avatar/medium/013-5.png b/public/media/avatar/medium/013-5.png deleted file mode 100755 index 2b1d2ca78..000000000 Binary files a/public/media/avatar/medium/013-5.png and /dev/null differ diff --git a/public/media/avatar/medium/013-6.png b/public/media/avatar/medium/013-6.png deleted file mode 100755 index 276186584..000000000 Binary files a/public/media/avatar/medium/013-6.png and /dev/null differ diff --git a/public/media/avatar/medium/013-7.png b/public/media/avatar/medium/013-7.png deleted file mode 100755 index 45e7d5a8e..000000000 Binary files a/public/media/avatar/medium/013-7.png and /dev/null differ diff --git a/public/media/avatar/medium/013-8.png b/public/media/avatar/medium/013-8.png deleted file mode 100644 index 9eb9b1590..000000000 Binary files a/public/media/avatar/medium/013-8.png and /dev/null differ diff --git a/public/media/avatar/medium/013-9.png b/public/media/avatar/medium/013-9.png deleted file mode 100644 index 2b1d2ca78..000000000 Binary files a/public/media/avatar/medium/013-9.png and /dev/null differ diff --git a/public/media/avatar/medium/014-1.png b/public/media/avatar/medium/014-1.png deleted file mode 100755 index d9454da0b..000000000 Binary files a/public/media/avatar/medium/014-1.png and /dev/null differ diff --git a/public/media/avatar/medium/014-10.png b/public/media/avatar/medium/014-10.png deleted file mode 100644 index abc5f1933..000000000 Binary files a/public/media/avatar/medium/014-10.png and /dev/null differ diff --git a/public/media/avatar/medium/014-11.png b/public/media/avatar/medium/014-11.png deleted file mode 100644 index f7ab7bda6..000000000 Binary files a/public/media/avatar/medium/014-11.png and /dev/null differ diff --git a/public/media/avatar/medium/014-12.png b/public/media/avatar/medium/014-12.png deleted file mode 100644 index b33e4c70a..000000000 Binary files a/public/media/avatar/medium/014-12.png and /dev/null differ diff --git a/public/media/avatar/medium/014-2.png b/public/media/avatar/medium/014-2.png deleted file mode 100755 index 141455903..000000000 Binary files a/public/media/avatar/medium/014-2.png and /dev/null differ diff --git a/public/media/avatar/medium/014-3.png b/public/media/avatar/medium/014-3.png deleted file mode 100755 index b33e4c70a..000000000 Binary files a/public/media/avatar/medium/014-3.png and /dev/null differ diff --git a/public/media/avatar/medium/014-4.png b/public/media/avatar/medium/014-4.png deleted file mode 100755 index bda401f94..000000000 Binary files a/public/media/avatar/medium/014-4.png and /dev/null differ diff --git a/public/media/avatar/medium/014-5.png b/public/media/avatar/medium/014-5.png deleted file mode 100755 index 256bec430..000000000 Binary files a/public/media/avatar/medium/014-5.png and /dev/null differ diff --git a/public/media/avatar/medium/014-6.png b/public/media/avatar/medium/014-6.png deleted file mode 100755 index 741fd009d..000000000 Binary files a/public/media/avatar/medium/014-6.png and /dev/null differ diff --git a/public/media/avatar/medium/014-7.png b/public/media/avatar/medium/014-7.png deleted file mode 100755 index dc7628560..000000000 Binary files a/public/media/avatar/medium/014-7.png and /dev/null differ diff --git a/public/media/avatar/medium/014-8.png b/public/media/avatar/medium/014-8.png deleted file mode 100644 index bae972383..000000000 Binary files a/public/media/avatar/medium/014-8.png and /dev/null differ diff --git a/public/media/avatar/medium/014-9.png b/public/media/avatar/medium/014-9.png deleted file mode 100644 index 256bec430..000000000 Binary files a/public/media/avatar/medium/014-9.png and /dev/null differ diff --git a/public/media/avatar/medium/015-1.png b/public/media/avatar/medium/015-1.png deleted file mode 100755 index ae9298681..000000000 Binary files a/public/media/avatar/medium/015-1.png and /dev/null differ diff --git a/public/media/avatar/medium/015-10.png b/public/media/avatar/medium/015-10.png deleted file mode 100644 index 4b9983b6f..000000000 Binary files a/public/media/avatar/medium/015-10.png and /dev/null differ diff --git a/public/media/avatar/medium/015-11.png b/public/media/avatar/medium/015-11.png deleted file mode 100644 index 87bceafb1..000000000 Binary files a/public/media/avatar/medium/015-11.png and /dev/null differ diff --git a/public/media/avatar/medium/015-12.png b/public/media/avatar/medium/015-12.png deleted file mode 100644 index 1fb70d69e..000000000 Binary files a/public/media/avatar/medium/015-12.png and /dev/null differ diff --git a/public/media/avatar/medium/015-2.png b/public/media/avatar/medium/015-2.png deleted file mode 100755 index 154abf1a7..000000000 Binary files a/public/media/avatar/medium/015-2.png and /dev/null differ diff --git a/public/media/avatar/medium/015-3.png b/public/media/avatar/medium/015-3.png deleted file mode 100755 index 1fb70d69e..000000000 Binary files a/public/media/avatar/medium/015-3.png and /dev/null differ diff --git a/public/media/avatar/medium/015-4.png b/public/media/avatar/medium/015-4.png deleted file mode 100755 index 8f425e9b6..000000000 Binary files a/public/media/avatar/medium/015-4.png and /dev/null differ diff --git a/public/media/avatar/medium/015-5.png b/public/media/avatar/medium/015-5.png deleted file mode 100755 index 492439a06..000000000 Binary files a/public/media/avatar/medium/015-5.png and /dev/null differ diff --git a/public/media/avatar/medium/015-6.png b/public/media/avatar/medium/015-6.png deleted file mode 100755 index b02298bb8..000000000 Binary files a/public/media/avatar/medium/015-6.png and /dev/null differ diff --git a/public/media/avatar/medium/015-7.png b/public/media/avatar/medium/015-7.png deleted file mode 100755 index 974f71cf1..000000000 Binary files a/public/media/avatar/medium/015-7.png and /dev/null differ diff --git a/public/media/avatar/medium/015-8.png b/public/media/avatar/medium/015-8.png deleted file mode 100644 index 7470a668f..000000000 Binary files a/public/media/avatar/medium/015-8.png and /dev/null differ diff --git a/public/media/avatar/medium/015-9.png b/public/media/avatar/medium/015-9.png deleted file mode 100644 index 492439a06..000000000 Binary files a/public/media/avatar/medium/015-9.png and /dev/null differ diff --git a/public/media/avatar/medium/016-1.png b/public/media/avatar/medium/016-1.png deleted file mode 100755 index 4c70d4f50..000000000 Binary files a/public/media/avatar/medium/016-1.png and /dev/null differ diff --git a/public/media/avatar/medium/016-10.png b/public/media/avatar/medium/016-10.png deleted file mode 100644 index 563ad993d..000000000 Binary files a/public/media/avatar/medium/016-10.png and /dev/null differ diff --git a/public/media/avatar/medium/016-11.png b/public/media/avatar/medium/016-11.png deleted file mode 100644 index 0401dfbb8..000000000 Binary files a/public/media/avatar/medium/016-11.png and /dev/null differ diff --git a/public/media/avatar/medium/016-12.png b/public/media/avatar/medium/016-12.png deleted file mode 100644 index ec04e1469..000000000 Binary files a/public/media/avatar/medium/016-12.png and /dev/null differ diff --git a/public/media/avatar/medium/016-2.png b/public/media/avatar/medium/016-2.png deleted file mode 100755 index 120f49a1b..000000000 Binary files a/public/media/avatar/medium/016-2.png and /dev/null differ diff --git a/public/media/avatar/medium/016-3.png b/public/media/avatar/medium/016-3.png deleted file mode 100755 index ec04e1469..000000000 Binary files a/public/media/avatar/medium/016-3.png and /dev/null differ diff --git a/public/media/avatar/medium/016-4.png b/public/media/avatar/medium/016-4.png deleted file mode 100755 index 08a96e8d4..000000000 Binary files a/public/media/avatar/medium/016-4.png and /dev/null differ diff --git a/public/media/avatar/medium/016-5.png b/public/media/avatar/medium/016-5.png deleted file mode 100755 index 19125fecf..000000000 Binary files a/public/media/avatar/medium/016-5.png and /dev/null differ diff --git a/public/media/avatar/medium/016-6.png b/public/media/avatar/medium/016-6.png deleted file mode 100755 index 86bf6341b..000000000 Binary files a/public/media/avatar/medium/016-6.png and /dev/null differ diff --git a/public/media/avatar/medium/016-7.png b/public/media/avatar/medium/016-7.png deleted file mode 100755 index bd41247d1..000000000 Binary files a/public/media/avatar/medium/016-7.png and /dev/null differ diff --git a/public/media/avatar/medium/016-8.png b/public/media/avatar/medium/016-8.png deleted file mode 100644 index 28d2bc308..000000000 Binary files a/public/media/avatar/medium/016-8.png and /dev/null differ diff --git a/public/media/avatar/medium/016-9.png b/public/media/avatar/medium/016-9.png deleted file mode 100644 index 19125fecf..000000000 Binary files a/public/media/avatar/medium/016-9.png and /dev/null differ diff --git a/public/media/avatar/medium/017-1.png b/public/media/avatar/medium/017-1.png deleted file mode 100755 index 649cc235f..000000000 Binary files a/public/media/avatar/medium/017-1.png and /dev/null differ diff --git a/public/media/avatar/medium/017-10.png b/public/media/avatar/medium/017-10.png deleted file mode 100644 index 575d16fac..000000000 Binary files a/public/media/avatar/medium/017-10.png and /dev/null differ diff --git a/public/media/avatar/medium/017-11.png b/public/media/avatar/medium/017-11.png deleted file mode 100644 index 3f9d2712f..000000000 Binary files a/public/media/avatar/medium/017-11.png and /dev/null differ diff --git a/public/media/avatar/medium/017-12.png b/public/media/avatar/medium/017-12.png deleted file mode 100644 index 6015589ad..000000000 Binary files a/public/media/avatar/medium/017-12.png and /dev/null differ diff --git a/public/media/avatar/medium/017-2.png b/public/media/avatar/medium/017-2.png deleted file mode 100755 index 392b6709d..000000000 Binary files a/public/media/avatar/medium/017-2.png and /dev/null differ diff --git a/public/media/avatar/medium/017-3.png b/public/media/avatar/medium/017-3.png deleted file mode 100755 index 117154b66..000000000 Binary files a/public/media/avatar/medium/017-3.png and /dev/null differ diff --git a/public/media/avatar/medium/017-4.png b/public/media/avatar/medium/017-4.png deleted file mode 100755 index 938827942..000000000 Binary files a/public/media/avatar/medium/017-4.png and /dev/null differ diff --git a/public/media/avatar/medium/017-5.png b/public/media/avatar/medium/017-5.png deleted file mode 100755 index afa540025..000000000 Binary files a/public/media/avatar/medium/017-5.png and /dev/null differ diff --git a/public/media/avatar/medium/017-6.png b/public/media/avatar/medium/017-6.png deleted file mode 100755 index f624a9e3a..000000000 Binary files a/public/media/avatar/medium/017-6.png and /dev/null differ diff --git a/public/media/avatar/medium/017-7.png b/public/media/avatar/medium/017-7.png deleted file mode 100755 index 59874a471..000000000 Binary files a/public/media/avatar/medium/017-7.png and /dev/null differ diff --git a/public/media/avatar/medium/017-8.png b/public/media/avatar/medium/017-8.png deleted file mode 100644 index 09ddf1f84..000000000 Binary files a/public/media/avatar/medium/017-8.png and /dev/null differ diff --git a/public/media/avatar/medium/017-9.png b/public/media/avatar/medium/017-9.png deleted file mode 100644 index afa540025..000000000 Binary files a/public/media/avatar/medium/017-9.png and /dev/null differ diff --git a/public/media/avatar/medium/018-1.png b/public/media/avatar/medium/018-1.png deleted file mode 100755 index 8dcb5e11d..000000000 Binary files a/public/media/avatar/medium/018-1.png and /dev/null differ diff --git a/public/media/avatar/medium/018-10.png b/public/media/avatar/medium/018-10.png deleted file mode 100644 index c3bf1a341..000000000 Binary files a/public/media/avatar/medium/018-10.png and /dev/null differ diff --git a/public/media/avatar/medium/018-11.png b/public/media/avatar/medium/018-11.png deleted file mode 100644 index 256f517e5..000000000 Binary files a/public/media/avatar/medium/018-11.png and /dev/null differ diff --git a/public/media/avatar/medium/018-12.png b/public/media/avatar/medium/018-12.png deleted file mode 100644 index 74a6e29bd..000000000 Binary files a/public/media/avatar/medium/018-12.png and /dev/null differ diff --git a/public/media/avatar/medium/018-2.png b/public/media/avatar/medium/018-2.png deleted file mode 100755 index d6ac7f1d4..000000000 Binary files a/public/media/avatar/medium/018-2.png and /dev/null differ diff --git a/public/media/avatar/medium/018-3.png b/public/media/avatar/medium/018-3.png deleted file mode 100755 index 74a6e29bd..000000000 Binary files a/public/media/avatar/medium/018-3.png and /dev/null differ diff --git a/public/media/avatar/medium/018-4.png b/public/media/avatar/medium/018-4.png deleted file mode 100755 index c3622179b..000000000 Binary files a/public/media/avatar/medium/018-4.png and /dev/null differ diff --git a/public/media/avatar/medium/018-5.png b/public/media/avatar/medium/018-5.png deleted file mode 100755 index 1e736e62c..000000000 Binary files a/public/media/avatar/medium/018-5.png and /dev/null differ diff --git a/public/media/avatar/medium/018-6.png b/public/media/avatar/medium/018-6.png deleted file mode 100755 index 4c6295947..000000000 Binary files a/public/media/avatar/medium/018-6.png and /dev/null differ diff --git a/public/media/avatar/medium/018-7.png b/public/media/avatar/medium/018-7.png deleted file mode 100755 index 4b1465e41..000000000 Binary files a/public/media/avatar/medium/018-7.png and /dev/null differ diff --git a/public/media/avatar/medium/018-8.png b/public/media/avatar/medium/018-8.png deleted file mode 100644 index a2d803bfa..000000000 Binary files a/public/media/avatar/medium/018-8.png and /dev/null differ diff --git a/public/media/avatar/medium/018-9.png b/public/media/avatar/medium/018-9.png deleted file mode 100644 index 1e736e62c..000000000 Binary files a/public/media/avatar/medium/018-9.png and /dev/null differ diff --git a/public/media/avatar/medium/019-1.png b/public/media/avatar/medium/019-1.png deleted file mode 100755 index c59d72c0e..000000000 Binary files a/public/media/avatar/medium/019-1.png and /dev/null differ diff --git a/public/media/avatar/medium/019-10.png b/public/media/avatar/medium/019-10.png deleted file mode 100644 index 698bb764b..000000000 Binary files a/public/media/avatar/medium/019-10.png and /dev/null differ diff --git a/public/media/avatar/medium/019-11.png b/public/media/avatar/medium/019-11.png deleted file mode 100644 index 1282819a6..000000000 Binary files a/public/media/avatar/medium/019-11.png and /dev/null differ diff --git a/public/media/avatar/medium/019-12.png b/public/media/avatar/medium/019-12.png deleted file mode 100644 index 0c24bd468..000000000 Binary files a/public/media/avatar/medium/019-12.png and /dev/null differ diff --git a/public/media/avatar/medium/019-2.png b/public/media/avatar/medium/019-2.png deleted file mode 100755 index deae7375a..000000000 Binary files a/public/media/avatar/medium/019-2.png and /dev/null differ diff --git a/public/media/avatar/medium/019-3.png b/public/media/avatar/medium/019-3.png deleted file mode 100755 index 0c24bd468..000000000 Binary files a/public/media/avatar/medium/019-3.png and /dev/null differ diff --git a/public/media/avatar/medium/019-4.png b/public/media/avatar/medium/019-4.png deleted file mode 100755 index d4c4e8f65..000000000 Binary files a/public/media/avatar/medium/019-4.png and /dev/null differ diff --git a/public/media/avatar/medium/019-5.png b/public/media/avatar/medium/019-5.png deleted file mode 100755 index 7d17b8e06..000000000 Binary files a/public/media/avatar/medium/019-5.png and /dev/null differ diff --git a/public/media/avatar/medium/019-6.png b/public/media/avatar/medium/019-6.png deleted file mode 100755 index 7cfc6284d..000000000 Binary files a/public/media/avatar/medium/019-6.png and /dev/null differ diff --git a/public/media/avatar/medium/019-7.png b/public/media/avatar/medium/019-7.png deleted file mode 100755 index 709e67377..000000000 Binary files a/public/media/avatar/medium/019-7.png and /dev/null differ diff --git a/public/media/avatar/medium/019-8.png b/public/media/avatar/medium/019-8.png deleted file mode 100644 index 8028ed0a5..000000000 Binary files a/public/media/avatar/medium/019-8.png and /dev/null differ diff --git a/public/media/avatar/medium/019-9.png b/public/media/avatar/medium/019-9.png deleted file mode 100644 index 7d17b8e06..000000000 Binary files a/public/media/avatar/medium/019-9.png and /dev/null differ diff --git a/public/media/avatar/medium/020-1.png b/public/media/avatar/medium/020-1.png deleted file mode 100755 index d6a816650..000000000 Binary files a/public/media/avatar/medium/020-1.png and /dev/null differ diff --git a/public/media/avatar/medium/020-10.png b/public/media/avatar/medium/020-10.png deleted file mode 100644 index d54ead7dc..000000000 Binary files a/public/media/avatar/medium/020-10.png and /dev/null differ diff --git a/public/media/avatar/medium/020-11.png b/public/media/avatar/medium/020-11.png deleted file mode 100644 index 2b876768f..000000000 Binary files a/public/media/avatar/medium/020-11.png and /dev/null differ diff --git a/public/media/avatar/medium/020-12.png b/public/media/avatar/medium/020-12.png deleted file mode 100644 index 050e0408d..000000000 Binary files a/public/media/avatar/medium/020-12.png and /dev/null differ diff --git a/public/media/avatar/medium/020-2.png b/public/media/avatar/medium/020-2.png deleted file mode 100755 index 0eacf8edc..000000000 Binary files a/public/media/avatar/medium/020-2.png and /dev/null differ diff --git a/public/media/avatar/medium/020-3.png b/public/media/avatar/medium/020-3.png deleted file mode 100755 index 050e0408d..000000000 Binary files a/public/media/avatar/medium/020-3.png and /dev/null differ diff --git a/public/media/avatar/medium/020-4.png b/public/media/avatar/medium/020-4.png deleted file mode 100755 index 74b8638ef..000000000 Binary files a/public/media/avatar/medium/020-4.png and /dev/null differ diff --git a/public/media/avatar/medium/020-5.png b/public/media/avatar/medium/020-5.png deleted file mode 100755 index 65233c7e2..000000000 Binary files a/public/media/avatar/medium/020-5.png and /dev/null differ diff --git a/public/media/avatar/medium/020-6.png b/public/media/avatar/medium/020-6.png deleted file mode 100755 index d4290fb29..000000000 Binary files a/public/media/avatar/medium/020-6.png and /dev/null differ diff --git a/public/media/avatar/medium/020-7.png b/public/media/avatar/medium/020-7.png deleted file mode 100755 index b2251d743..000000000 Binary files a/public/media/avatar/medium/020-7.png and /dev/null differ diff --git a/public/media/avatar/medium/020-8.png b/public/media/avatar/medium/020-8.png deleted file mode 100644 index 69834486b..000000000 Binary files a/public/media/avatar/medium/020-8.png and /dev/null differ diff --git a/public/media/avatar/medium/020-9.png b/public/media/avatar/medium/020-9.png deleted file mode 100644 index 65233c7e2..000000000 Binary files a/public/media/avatar/medium/020-9.png and /dev/null differ diff --git a/public/media/avatar/medium/021-1.png b/public/media/avatar/medium/021-1.png deleted file mode 100755 index 90bac6387..000000000 Binary files a/public/media/avatar/medium/021-1.png and /dev/null differ diff --git a/public/media/avatar/medium/021-10.png b/public/media/avatar/medium/021-10.png deleted file mode 100644 index c1455289c..000000000 Binary files a/public/media/avatar/medium/021-10.png and /dev/null differ diff --git a/public/media/avatar/medium/021-11.png b/public/media/avatar/medium/021-11.png deleted file mode 100644 index c9475eec1..000000000 Binary files a/public/media/avatar/medium/021-11.png and /dev/null differ diff --git a/public/media/avatar/medium/021-12.png b/public/media/avatar/medium/021-12.png deleted file mode 100644 index 3aad90222..000000000 Binary files a/public/media/avatar/medium/021-12.png and /dev/null differ diff --git a/public/media/avatar/medium/021-2.png b/public/media/avatar/medium/021-2.png deleted file mode 100755 index a0675531d..000000000 Binary files a/public/media/avatar/medium/021-2.png and /dev/null differ diff --git a/public/media/avatar/medium/021-3.png b/public/media/avatar/medium/021-3.png deleted file mode 100755 index 3aad90222..000000000 Binary files a/public/media/avatar/medium/021-3.png and /dev/null differ diff --git a/public/media/avatar/medium/021-4.png b/public/media/avatar/medium/021-4.png deleted file mode 100755 index 3ad659faf..000000000 Binary files a/public/media/avatar/medium/021-4.png and /dev/null differ diff --git a/public/media/avatar/medium/021-5.png b/public/media/avatar/medium/021-5.png deleted file mode 100755 index 85b5711dd..000000000 Binary files a/public/media/avatar/medium/021-5.png and /dev/null differ diff --git a/public/media/avatar/medium/021-6.png b/public/media/avatar/medium/021-6.png deleted file mode 100755 index 96edef9e3..000000000 Binary files a/public/media/avatar/medium/021-6.png and /dev/null differ diff --git a/public/media/avatar/medium/021-7.png b/public/media/avatar/medium/021-7.png deleted file mode 100755 index e6ec67fbf..000000000 Binary files a/public/media/avatar/medium/021-7.png and /dev/null differ diff --git a/public/media/avatar/medium/021-8.png b/public/media/avatar/medium/021-8.png deleted file mode 100644 index dd3e63491..000000000 Binary files a/public/media/avatar/medium/021-8.png and /dev/null differ diff --git a/public/media/avatar/medium/021-9.png b/public/media/avatar/medium/021-9.png deleted file mode 100644 index 85b5711dd..000000000 Binary files a/public/media/avatar/medium/021-9.png and /dev/null differ diff --git a/public/media/avatar/medium/022-1.png b/public/media/avatar/medium/022-1.png deleted file mode 100755 index 6d32aebfa..000000000 Binary files a/public/media/avatar/medium/022-1.png and /dev/null differ diff --git a/public/media/avatar/medium/022-10.png b/public/media/avatar/medium/022-10.png deleted file mode 100644 index b44fcb800..000000000 Binary files a/public/media/avatar/medium/022-10.png and /dev/null differ diff --git a/public/media/avatar/medium/022-11.png b/public/media/avatar/medium/022-11.png deleted file mode 100644 index 34add25f2..000000000 Binary files a/public/media/avatar/medium/022-11.png and /dev/null differ diff --git a/public/media/avatar/medium/022-12.png b/public/media/avatar/medium/022-12.png deleted file mode 100644 index 492a3452c..000000000 Binary files a/public/media/avatar/medium/022-12.png and /dev/null differ diff --git a/public/media/avatar/medium/022-2.png b/public/media/avatar/medium/022-2.png deleted file mode 100755 index fd3f914d3..000000000 Binary files a/public/media/avatar/medium/022-2.png and /dev/null differ diff --git a/public/media/avatar/medium/022-3.png b/public/media/avatar/medium/022-3.png deleted file mode 100755 index 492a3452c..000000000 Binary files a/public/media/avatar/medium/022-3.png and /dev/null differ diff --git a/public/media/avatar/medium/022-4.png b/public/media/avatar/medium/022-4.png deleted file mode 100755 index c3f0efb60..000000000 Binary files a/public/media/avatar/medium/022-4.png and /dev/null differ diff --git a/public/media/avatar/medium/022-5.png b/public/media/avatar/medium/022-5.png deleted file mode 100755 index 6a3d60cab..000000000 Binary files a/public/media/avatar/medium/022-5.png and /dev/null differ diff --git a/public/media/avatar/medium/022-6.png b/public/media/avatar/medium/022-6.png deleted file mode 100755 index 7f54b39d5..000000000 Binary files a/public/media/avatar/medium/022-6.png and /dev/null differ diff --git a/public/media/avatar/medium/022-7.png b/public/media/avatar/medium/022-7.png deleted file mode 100755 index 3616f24e7..000000000 Binary files a/public/media/avatar/medium/022-7.png and /dev/null differ diff --git a/public/media/avatar/medium/022-8.png b/public/media/avatar/medium/022-8.png deleted file mode 100644 index 0ad7ab228..000000000 Binary files a/public/media/avatar/medium/022-8.png and /dev/null differ diff --git a/public/media/avatar/medium/022-9.png b/public/media/avatar/medium/022-9.png deleted file mode 100644 index 6a3d60cab..000000000 Binary files a/public/media/avatar/medium/022-9.png and /dev/null differ diff --git a/public/media/avatar/medium/023-1.png b/public/media/avatar/medium/023-1.png deleted file mode 100755 index bf254b594..000000000 Binary files a/public/media/avatar/medium/023-1.png and /dev/null differ diff --git a/public/media/avatar/medium/023-10.png b/public/media/avatar/medium/023-10.png deleted file mode 100644 index 2d46e68a4..000000000 Binary files a/public/media/avatar/medium/023-10.png and /dev/null differ diff --git a/public/media/avatar/medium/023-11.png b/public/media/avatar/medium/023-11.png deleted file mode 100644 index fae4ceca2..000000000 Binary files a/public/media/avatar/medium/023-11.png and /dev/null differ diff --git a/public/media/avatar/medium/023-12.png b/public/media/avatar/medium/023-12.png deleted file mode 100644 index 30b36b706..000000000 Binary files a/public/media/avatar/medium/023-12.png and /dev/null differ diff --git a/public/media/avatar/medium/023-2.png b/public/media/avatar/medium/023-2.png deleted file mode 100755 index a5cc21106..000000000 Binary files a/public/media/avatar/medium/023-2.png and /dev/null differ diff --git a/public/media/avatar/medium/023-3.png b/public/media/avatar/medium/023-3.png deleted file mode 100755 index 30b36b706..000000000 Binary files a/public/media/avatar/medium/023-3.png and /dev/null differ diff --git a/public/media/avatar/medium/023-4.png b/public/media/avatar/medium/023-4.png deleted file mode 100755 index cc00e6c58..000000000 Binary files a/public/media/avatar/medium/023-4.png and /dev/null differ diff --git a/public/media/avatar/medium/023-5.png b/public/media/avatar/medium/023-5.png deleted file mode 100755 index 51a4efa5c..000000000 Binary files a/public/media/avatar/medium/023-5.png and /dev/null differ diff --git a/public/media/avatar/medium/023-6.png b/public/media/avatar/medium/023-6.png deleted file mode 100755 index bbce055f2..000000000 Binary files a/public/media/avatar/medium/023-6.png and /dev/null differ diff --git a/public/media/avatar/medium/023-7.png b/public/media/avatar/medium/023-7.png deleted file mode 100755 index b58b2600a..000000000 Binary files a/public/media/avatar/medium/023-7.png and /dev/null differ diff --git a/public/media/avatar/medium/023-8.png b/public/media/avatar/medium/023-8.png deleted file mode 100644 index 2c3800d98..000000000 Binary files a/public/media/avatar/medium/023-8.png and /dev/null differ diff --git a/public/media/avatar/medium/023-9.png b/public/media/avatar/medium/023-9.png deleted file mode 100644 index 51a4efa5c..000000000 Binary files a/public/media/avatar/medium/023-9.png and /dev/null differ diff --git a/public/media/avatar/medium/024-1.png b/public/media/avatar/medium/024-1.png deleted file mode 100755 index 8e663cb68..000000000 Binary files a/public/media/avatar/medium/024-1.png and /dev/null differ diff --git a/public/media/avatar/medium/024-10.png b/public/media/avatar/medium/024-10.png deleted file mode 100644 index a10b97415..000000000 Binary files a/public/media/avatar/medium/024-10.png and /dev/null differ diff --git a/public/media/avatar/medium/024-11.png b/public/media/avatar/medium/024-11.png deleted file mode 100644 index 83f38f09c..000000000 Binary files a/public/media/avatar/medium/024-11.png and /dev/null differ diff --git a/public/media/avatar/medium/024-12.png b/public/media/avatar/medium/024-12.png deleted file mode 100644 index 6824c39ca..000000000 Binary files a/public/media/avatar/medium/024-12.png and /dev/null differ diff --git a/public/media/avatar/medium/024-2.png b/public/media/avatar/medium/024-2.png deleted file mode 100755 index ef826973b..000000000 Binary files a/public/media/avatar/medium/024-2.png and /dev/null differ diff --git a/public/media/avatar/medium/024-3.png b/public/media/avatar/medium/024-3.png deleted file mode 100755 index a52126298..000000000 Binary files a/public/media/avatar/medium/024-3.png and /dev/null differ diff --git a/public/media/avatar/medium/024-4.png b/public/media/avatar/medium/024-4.png deleted file mode 100755 index 530897c64..000000000 Binary files a/public/media/avatar/medium/024-4.png and /dev/null differ diff --git a/public/media/avatar/medium/024-5.png b/public/media/avatar/medium/024-5.png deleted file mode 100755 index e65a41430..000000000 Binary files a/public/media/avatar/medium/024-5.png and /dev/null differ diff --git a/public/media/avatar/medium/024-6.png b/public/media/avatar/medium/024-6.png deleted file mode 100755 index 7a77ec173..000000000 Binary files a/public/media/avatar/medium/024-6.png and /dev/null differ diff --git a/public/media/avatar/medium/024-7.png b/public/media/avatar/medium/024-7.png deleted file mode 100755 index 7d6e5c5ba..000000000 Binary files a/public/media/avatar/medium/024-7.png and /dev/null differ diff --git a/public/media/avatar/medium/024-8.png b/public/media/avatar/medium/024-8.png deleted file mode 100644 index dbe047024..000000000 Binary files a/public/media/avatar/medium/024-8.png and /dev/null differ diff --git a/public/media/avatar/medium/024-9.png b/public/media/avatar/medium/024-9.png deleted file mode 100644 index e65a41430..000000000 Binary files a/public/media/avatar/medium/024-9.png and /dev/null differ diff --git a/public/media/avatar/medium/025-1.png b/public/media/avatar/medium/025-1.png deleted file mode 100755 index 2d8f1e0e2..000000000 Binary files a/public/media/avatar/medium/025-1.png and /dev/null differ diff --git a/public/media/avatar/medium/025-10.png b/public/media/avatar/medium/025-10.png deleted file mode 100644 index 86389d9c5..000000000 Binary files a/public/media/avatar/medium/025-10.png and /dev/null differ diff --git a/public/media/avatar/medium/025-11.png b/public/media/avatar/medium/025-11.png deleted file mode 100644 index 2672abb55..000000000 Binary files a/public/media/avatar/medium/025-11.png and /dev/null differ diff --git a/public/media/avatar/medium/025-12.png b/public/media/avatar/medium/025-12.png deleted file mode 100644 index 6d9a4d7e4..000000000 Binary files a/public/media/avatar/medium/025-12.png and /dev/null differ diff --git a/public/media/avatar/medium/025-2.png b/public/media/avatar/medium/025-2.png deleted file mode 100755 index af2fbdaee..000000000 Binary files a/public/media/avatar/medium/025-2.png and /dev/null differ diff --git a/public/media/avatar/medium/025-3.png b/public/media/avatar/medium/025-3.png deleted file mode 100755 index 7e0b2e6a8..000000000 Binary files a/public/media/avatar/medium/025-3.png and /dev/null differ diff --git a/public/media/avatar/medium/025-4.png b/public/media/avatar/medium/025-4.png deleted file mode 100755 index 56b9402f0..000000000 Binary files a/public/media/avatar/medium/025-4.png and /dev/null differ diff --git a/public/media/avatar/medium/025-5.png b/public/media/avatar/medium/025-5.png deleted file mode 100755 index 33ac0aaf7..000000000 Binary files a/public/media/avatar/medium/025-5.png and /dev/null differ diff --git a/public/media/avatar/medium/025-6.png b/public/media/avatar/medium/025-6.png deleted file mode 100755 index 3435084d9..000000000 Binary files a/public/media/avatar/medium/025-6.png and /dev/null differ diff --git a/public/media/avatar/medium/025-7.png b/public/media/avatar/medium/025-7.png deleted file mode 100755 index 407d10aa4..000000000 Binary files a/public/media/avatar/medium/025-7.png and /dev/null differ diff --git a/public/media/avatar/medium/025-8.png b/public/media/avatar/medium/025-8.png deleted file mode 100644 index 5feeed572..000000000 Binary files a/public/media/avatar/medium/025-8.png and /dev/null differ diff --git a/public/media/avatar/medium/025-9.png b/public/media/avatar/medium/025-9.png deleted file mode 100644 index 33ac0aaf7..000000000 Binary files a/public/media/avatar/medium/025-9.png and /dev/null differ diff --git a/public/media/avatar/medium/026-1.png b/public/media/avatar/medium/026-1.png deleted file mode 100755 index 0eb4d6469..000000000 Binary files a/public/media/avatar/medium/026-1.png and /dev/null differ diff --git a/public/media/avatar/medium/026-10.png b/public/media/avatar/medium/026-10.png deleted file mode 100644 index 4993323cf..000000000 Binary files a/public/media/avatar/medium/026-10.png and /dev/null differ diff --git a/public/media/avatar/medium/026-11.png b/public/media/avatar/medium/026-11.png deleted file mode 100644 index 78ce9df56..000000000 Binary files a/public/media/avatar/medium/026-11.png and /dev/null differ diff --git a/public/media/avatar/medium/026-12.png b/public/media/avatar/medium/026-12.png deleted file mode 100644 index ccf19e75a..000000000 Binary files a/public/media/avatar/medium/026-12.png and /dev/null differ diff --git a/public/media/avatar/medium/026-2.png b/public/media/avatar/medium/026-2.png deleted file mode 100755 index fc74cf3f0..000000000 Binary files a/public/media/avatar/medium/026-2.png and /dev/null differ diff --git a/public/media/avatar/medium/026-3.png b/public/media/avatar/medium/026-3.png deleted file mode 100755 index bd35a6ebc..000000000 Binary files a/public/media/avatar/medium/026-3.png and /dev/null differ diff --git a/public/media/avatar/medium/026-4.png b/public/media/avatar/medium/026-4.png deleted file mode 100755 index ccd9c7d7a..000000000 Binary files a/public/media/avatar/medium/026-4.png and /dev/null differ diff --git a/public/media/avatar/medium/026-5.png b/public/media/avatar/medium/026-5.png deleted file mode 100755 index 627b2ce4d..000000000 Binary files a/public/media/avatar/medium/026-5.png and /dev/null differ diff --git a/public/media/avatar/medium/026-6.png b/public/media/avatar/medium/026-6.png deleted file mode 100755 index 4ad63f22b..000000000 Binary files a/public/media/avatar/medium/026-6.png and /dev/null differ diff --git a/public/media/avatar/medium/026-7.png b/public/media/avatar/medium/026-7.png deleted file mode 100755 index dc3410487..000000000 Binary files a/public/media/avatar/medium/026-7.png and /dev/null differ diff --git a/public/media/avatar/medium/026-8.png b/public/media/avatar/medium/026-8.png deleted file mode 100644 index 6352e2b7e..000000000 Binary files a/public/media/avatar/medium/026-8.png and /dev/null differ diff --git a/public/media/avatar/medium/026-9.png b/public/media/avatar/medium/026-9.png deleted file mode 100644 index 627b2ce4d..000000000 Binary files a/public/media/avatar/medium/026-9.png and /dev/null differ diff --git a/public/media/avatar/medium/027-1.png b/public/media/avatar/medium/027-1.png deleted file mode 100755 index 83afdd9d1..000000000 Binary files a/public/media/avatar/medium/027-1.png and /dev/null differ diff --git a/public/media/avatar/medium/027-10.png b/public/media/avatar/medium/027-10.png deleted file mode 100644 index 2ca8eb903..000000000 Binary files a/public/media/avatar/medium/027-10.png and /dev/null differ diff --git a/public/media/avatar/medium/027-11.png b/public/media/avatar/medium/027-11.png deleted file mode 100644 index 0b2b817fb..000000000 Binary files a/public/media/avatar/medium/027-11.png and /dev/null differ diff --git a/public/media/avatar/medium/027-12.png b/public/media/avatar/medium/027-12.png deleted file mode 100644 index fda3259b4..000000000 Binary files a/public/media/avatar/medium/027-12.png and /dev/null differ diff --git a/public/media/avatar/medium/027-2.png b/public/media/avatar/medium/027-2.png deleted file mode 100755 index 1ed35f5fd..000000000 Binary files a/public/media/avatar/medium/027-2.png and /dev/null differ diff --git a/public/media/avatar/medium/027-3.png b/public/media/avatar/medium/027-3.png deleted file mode 100755 index fda3259b4..000000000 Binary files a/public/media/avatar/medium/027-3.png and /dev/null differ diff --git a/public/media/avatar/medium/027-4.png b/public/media/avatar/medium/027-4.png deleted file mode 100755 index 1eddcedaa..000000000 Binary files a/public/media/avatar/medium/027-4.png and /dev/null differ diff --git a/public/media/avatar/medium/027-5.png b/public/media/avatar/medium/027-5.png deleted file mode 100755 index bcc8386f9..000000000 Binary files a/public/media/avatar/medium/027-5.png and /dev/null differ diff --git a/public/media/avatar/medium/027-6.png b/public/media/avatar/medium/027-6.png deleted file mode 100755 index 33b03fae7..000000000 Binary files a/public/media/avatar/medium/027-6.png and /dev/null differ diff --git a/public/media/avatar/medium/027-7.png b/public/media/avatar/medium/027-7.png deleted file mode 100755 index b8ebea953..000000000 Binary files a/public/media/avatar/medium/027-7.png and /dev/null differ diff --git a/public/media/avatar/medium/027-8.png b/public/media/avatar/medium/027-8.png deleted file mode 100644 index bad7fb015..000000000 Binary files a/public/media/avatar/medium/027-8.png and /dev/null differ diff --git a/public/media/avatar/medium/027-9.png b/public/media/avatar/medium/027-9.png deleted file mode 100644 index bcc8386f9..000000000 Binary files a/public/media/avatar/medium/027-9.png and /dev/null differ diff --git a/public/media/avatar/medium/028-1.png b/public/media/avatar/medium/028-1.png deleted file mode 100755 index 57614d4df..000000000 Binary files a/public/media/avatar/medium/028-1.png and /dev/null differ diff --git a/public/media/avatar/medium/028-10.png b/public/media/avatar/medium/028-10.png deleted file mode 100644 index fee2f1a1d..000000000 Binary files a/public/media/avatar/medium/028-10.png and /dev/null differ diff --git a/public/media/avatar/medium/028-11.png b/public/media/avatar/medium/028-11.png deleted file mode 100644 index b7efbe629..000000000 Binary files a/public/media/avatar/medium/028-11.png and /dev/null differ diff --git a/public/media/avatar/medium/028-12.png b/public/media/avatar/medium/028-12.png deleted file mode 100644 index b282e1b18..000000000 Binary files a/public/media/avatar/medium/028-12.png and /dev/null differ diff --git a/public/media/avatar/medium/028-2.png b/public/media/avatar/medium/028-2.png deleted file mode 100755 index e3c0d5970..000000000 Binary files a/public/media/avatar/medium/028-2.png and /dev/null differ diff --git a/public/media/avatar/medium/028-3.png b/public/media/avatar/medium/028-3.png deleted file mode 100755 index b282e1b18..000000000 Binary files a/public/media/avatar/medium/028-3.png and /dev/null differ diff --git a/public/media/avatar/medium/028-4.png b/public/media/avatar/medium/028-4.png deleted file mode 100755 index 194853fda..000000000 Binary files a/public/media/avatar/medium/028-4.png and /dev/null differ diff --git a/public/media/avatar/medium/028-5.png b/public/media/avatar/medium/028-5.png deleted file mode 100755 index 06a024405..000000000 Binary files a/public/media/avatar/medium/028-5.png and /dev/null differ diff --git a/public/media/avatar/medium/028-6.png b/public/media/avatar/medium/028-6.png deleted file mode 100755 index 28e27bc60..000000000 Binary files a/public/media/avatar/medium/028-6.png and /dev/null differ diff --git a/public/media/avatar/medium/028-7.png b/public/media/avatar/medium/028-7.png deleted file mode 100755 index 4df07ddca..000000000 Binary files a/public/media/avatar/medium/028-7.png and /dev/null differ diff --git a/public/media/avatar/medium/028-8.png b/public/media/avatar/medium/028-8.png deleted file mode 100644 index 37fea7f71..000000000 Binary files a/public/media/avatar/medium/028-8.png and /dev/null differ diff --git a/public/media/avatar/medium/028-9.png b/public/media/avatar/medium/028-9.png deleted file mode 100644 index 06a024405..000000000 Binary files a/public/media/avatar/medium/028-9.png and /dev/null differ diff --git a/public/media/avatar/medium/029-1.png b/public/media/avatar/medium/029-1.png deleted file mode 100755 index 767f8c159..000000000 Binary files a/public/media/avatar/medium/029-1.png and /dev/null differ diff --git a/public/media/avatar/medium/029-10.png b/public/media/avatar/medium/029-10.png deleted file mode 100644 index 89b2dfea4..000000000 Binary files a/public/media/avatar/medium/029-10.png and /dev/null differ diff --git a/public/media/avatar/medium/029-11.png b/public/media/avatar/medium/029-11.png deleted file mode 100644 index a3832ecbd..000000000 Binary files a/public/media/avatar/medium/029-11.png and /dev/null differ diff --git a/public/media/avatar/medium/029-12.png b/public/media/avatar/medium/029-12.png deleted file mode 100644 index d22bf9505..000000000 Binary files a/public/media/avatar/medium/029-12.png and /dev/null differ diff --git a/public/media/avatar/medium/029-2.png b/public/media/avatar/medium/029-2.png deleted file mode 100755 index 5c877bb7f..000000000 Binary files a/public/media/avatar/medium/029-2.png and /dev/null differ diff --git a/public/media/avatar/medium/029-3.png b/public/media/avatar/medium/029-3.png deleted file mode 100755 index d22bf9505..000000000 Binary files a/public/media/avatar/medium/029-3.png and /dev/null differ diff --git a/public/media/avatar/medium/029-4.png b/public/media/avatar/medium/029-4.png deleted file mode 100755 index c7d25a48c..000000000 Binary files a/public/media/avatar/medium/029-4.png and /dev/null differ diff --git a/public/media/avatar/medium/029-5.png b/public/media/avatar/medium/029-5.png deleted file mode 100755 index efc6620f8..000000000 Binary files a/public/media/avatar/medium/029-5.png and /dev/null differ diff --git a/public/media/avatar/medium/029-6.png b/public/media/avatar/medium/029-6.png deleted file mode 100755 index 6dc0b941f..000000000 Binary files a/public/media/avatar/medium/029-6.png and /dev/null differ diff --git a/public/media/avatar/medium/029-7.png b/public/media/avatar/medium/029-7.png deleted file mode 100755 index c9dbd786b..000000000 Binary files a/public/media/avatar/medium/029-7.png and /dev/null differ diff --git a/public/media/avatar/medium/029-8.png b/public/media/avatar/medium/029-8.png deleted file mode 100644 index 7108225c1..000000000 Binary files a/public/media/avatar/medium/029-8.png and /dev/null differ diff --git a/public/media/avatar/medium/029-9.png b/public/media/avatar/medium/029-9.png deleted file mode 100644 index efc6620f8..000000000 Binary files a/public/media/avatar/medium/029-9.png and /dev/null differ diff --git a/public/media/avatar/medium/030-1.png b/public/media/avatar/medium/030-1.png deleted file mode 100755 index ed003cbe7..000000000 Binary files a/public/media/avatar/medium/030-1.png and /dev/null differ diff --git a/public/media/avatar/medium/030-10.png b/public/media/avatar/medium/030-10.png deleted file mode 100644 index 80517d778..000000000 Binary files a/public/media/avatar/medium/030-10.png and /dev/null differ diff --git a/public/media/avatar/medium/030-11.png b/public/media/avatar/medium/030-11.png deleted file mode 100644 index 49b5f6131..000000000 Binary files a/public/media/avatar/medium/030-11.png and /dev/null differ diff --git a/public/media/avatar/medium/030-12.png b/public/media/avatar/medium/030-12.png deleted file mode 100644 index 1732fae6b..000000000 Binary files a/public/media/avatar/medium/030-12.png and /dev/null differ diff --git a/public/media/avatar/medium/030-2.png b/public/media/avatar/medium/030-2.png deleted file mode 100755 index c72aac95a..000000000 Binary files a/public/media/avatar/medium/030-2.png and /dev/null differ diff --git a/public/media/avatar/medium/030-3.png b/public/media/avatar/medium/030-3.png deleted file mode 100755 index 1732fae6b..000000000 Binary files a/public/media/avatar/medium/030-3.png and /dev/null differ diff --git a/public/media/avatar/medium/030-4.png b/public/media/avatar/medium/030-4.png deleted file mode 100755 index 17ff13d6c..000000000 Binary files a/public/media/avatar/medium/030-4.png and /dev/null differ diff --git a/public/media/avatar/medium/030-5.png b/public/media/avatar/medium/030-5.png deleted file mode 100755 index 74c745a83..000000000 Binary files a/public/media/avatar/medium/030-5.png and /dev/null differ diff --git a/public/media/avatar/medium/030-6.png b/public/media/avatar/medium/030-6.png deleted file mode 100755 index 12e1d37f6..000000000 Binary files a/public/media/avatar/medium/030-6.png and /dev/null differ diff --git a/public/media/avatar/medium/030-7.png b/public/media/avatar/medium/030-7.png deleted file mode 100755 index 42be00bb3..000000000 Binary files a/public/media/avatar/medium/030-7.png and /dev/null differ diff --git a/public/media/avatar/medium/030-8.png b/public/media/avatar/medium/030-8.png deleted file mode 100644 index 02c93a13e..000000000 Binary files a/public/media/avatar/medium/030-8.png and /dev/null differ diff --git a/public/media/avatar/medium/030-9.png b/public/media/avatar/medium/030-9.png deleted file mode 100644 index 74c745a83..000000000 Binary files a/public/media/avatar/medium/030-9.png and /dev/null differ diff --git a/public/media/avatar/medium/031-1.png b/public/media/avatar/medium/031-1.png deleted file mode 100755 index 8ea56cbdf..000000000 Binary files a/public/media/avatar/medium/031-1.png and /dev/null differ diff --git a/public/media/avatar/medium/031-10.png b/public/media/avatar/medium/031-10.png deleted file mode 100644 index 7a46f521c..000000000 Binary files a/public/media/avatar/medium/031-10.png and /dev/null differ diff --git a/public/media/avatar/medium/031-11.png b/public/media/avatar/medium/031-11.png deleted file mode 100644 index 568edbc8f..000000000 Binary files a/public/media/avatar/medium/031-11.png and /dev/null differ diff --git a/public/media/avatar/medium/031-12.png b/public/media/avatar/medium/031-12.png deleted file mode 100644 index 223e943c3..000000000 Binary files a/public/media/avatar/medium/031-12.png and /dev/null differ diff --git a/public/media/avatar/medium/031-2.png b/public/media/avatar/medium/031-2.png deleted file mode 100755 index 4788b0789..000000000 Binary files a/public/media/avatar/medium/031-2.png and /dev/null differ diff --git a/public/media/avatar/medium/031-3.png b/public/media/avatar/medium/031-3.png deleted file mode 100755 index 223e943c3..000000000 Binary files a/public/media/avatar/medium/031-3.png and /dev/null differ diff --git a/public/media/avatar/medium/031-4.png b/public/media/avatar/medium/031-4.png deleted file mode 100755 index eab8666e3..000000000 Binary files a/public/media/avatar/medium/031-4.png and /dev/null differ diff --git a/public/media/avatar/medium/031-5.png b/public/media/avatar/medium/031-5.png deleted file mode 100755 index a6b54c235..000000000 Binary files a/public/media/avatar/medium/031-5.png and /dev/null differ diff --git a/public/media/avatar/medium/031-6.png b/public/media/avatar/medium/031-6.png deleted file mode 100755 index ec644fa1f..000000000 Binary files a/public/media/avatar/medium/031-6.png and /dev/null differ diff --git a/public/media/avatar/medium/031-7.png b/public/media/avatar/medium/031-7.png deleted file mode 100755 index 18356c201..000000000 Binary files a/public/media/avatar/medium/031-7.png and /dev/null differ diff --git a/public/media/avatar/medium/031-8.png b/public/media/avatar/medium/031-8.png deleted file mode 100644 index 9c9ed2e23..000000000 Binary files a/public/media/avatar/medium/031-8.png and /dev/null differ diff --git a/public/media/avatar/medium/031-9.png b/public/media/avatar/medium/031-9.png deleted file mode 100644 index a6b54c235..000000000 Binary files a/public/media/avatar/medium/031-9.png and /dev/null differ diff --git a/public/media/avatar/medium/032-1.png b/public/media/avatar/medium/032-1.png deleted file mode 100755 index 1911a6b5a..000000000 Binary files a/public/media/avatar/medium/032-1.png and /dev/null differ diff --git a/public/media/avatar/medium/032-10.png b/public/media/avatar/medium/032-10.png deleted file mode 100644 index ef4da4355..000000000 Binary files a/public/media/avatar/medium/032-10.png and /dev/null differ diff --git a/public/media/avatar/medium/032-11.png b/public/media/avatar/medium/032-11.png deleted file mode 100644 index 990dcf83f..000000000 Binary files a/public/media/avatar/medium/032-11.png and /dev/null differ diff --git a/public/media/avatar/medium/032-12.png b/public/media/avatar/medium/032-12.png deleted file mode 100644 index 1bd9c8c44..000000000 Binary files a/public/media/avatar/medium/032-12.png and /dev/null differ diff --git a/public/media/avatar/medium/032-2.png b/public/media/avatar/medium/032-2.png deleted file mode 100755 index a5b018234..000000000 Binary files a/public/media/avatar/medium/032-2.png and /dev/null differ diff --git a/public/media/avatar/medium/032-3.png b/public/media/avatar/medium/032-3.png deleted file mode 100755 index 1bd9c8c44..000000000 Binary files a/public/media/avatar/medium/032-3.png and /dev/null differ diff --git a/public/media/avatar/medium/032-4.png b/public/media/avatar/medium/032-4.png deleted file mode 100755 index 475ea304a..000000000 Binary files a/public/media/avatar/medium/032-4.png and /dev/null differ diff --git a/public/media/avatar/medium/032-5.png b/public/media/avatar/medium/032-5.png deleted file mode 100755 index 415c29e2c..000000000 Binary files a/public/media/avatar/medium/032-5.png and /dev/null differ diff --git a/public/media/avatar/medium/032-6.png b/public/media/avatar/medium/032-6.png deleted file mode 100755 index 9977a6c7b..000000000 Binary files a/public/media/avatar/medium/032-6.png and /dev/null differ diff --git a/public/media/avatar/medium/032-7.png b/public/media/avatar/medium/032-7.png deleted file mode 100755 index 0deccc46e..000000000 Binary files a/public/media/avatar/medium/032-7.png and /dev/null differ diff --git a/public/media/avatar/medium/032-8.png b/public/media/avatar/medium/032-8.png deleted file mode 100644 index a5bbda093..000000000 Binary files a/public/media/avatar/medium/032-8.png and /dev/null differ diff --git a/public/media/avatar/medium/032-9.png b/public/media/avatar/medium/032-9.png deleted file mode 100644 index 415c29e2c..000000000 Binary files a/public/media/avatar/medium/032-9.png and /dev/null differ diff --git a/public/media/avatar/medium/033-1.png b/public/media/avatar/medium/033-1.png deleted file mode 100755 index 2ecc5d039..000000000 Binary files a/public/media/avatar/medium/033-1.png and /dev/null differ diff --git a/public/media/avatar/medium/033-10.png b/public/media/avatar/medium/033-10.png deleted file mode 100644 index 4a7d91a21..000000000 Binary files a/public/media/avatar/medium/033-10.png and /dev/null differ diff --git a/public/media/avatar/medium/033-11.png b/public/media/avatar/medium/033-11.png deleted file mode 100644 index cfac8721a..000000000 Binary files a/public/media/avatar/medium/033-11.png and /dev/null differ diff --git a/public/media/avatar/medium/033-12.png b/public/media/avatar/medium/033-12.png deleted file mode 100644 index a1df064f0..000000000 Binary files a/public/media/avatar/medium/033-12.png and /dev/null differ diff --git a/public/media/avatar/medium/033-2.png b/public/media/avatar/medium/033-2.png deleted file mode 100755 index bfe32197c..000000000 Binary files a/public/media/avatar/medium/033-2.png and /dev/null differ diff --git a/public/media/avatar/medium/033-3.png b/public/media/avatar/medium/033-3.png deleted file mode 100755 index a1df064f0..000000000 Binary files a/public/media/avatar/medium/033-3.png and /dev/null differ diff --git a/public/media/avatar/medium/033-4.png b/public/media/avatar/medium/033-4.png deleted file mode 100755 index f9793e73f..000000000 Binary files a/public/media/avatar/medium/033-4.png and /dev/null differ diff --git a/public/media/avatar/medium/033-5.png b/public/media/avatar/medium/033-5.png deleted file mode 100755 index dadaeb760..000000000 Binary files a/public/media/avatar/medium/033-5.png and /dev/null differ diff --git a/public/media/avatar/medium/033-6.png b/public/media/avatar/medium/033-6.png deleted file mode 100755 index da2f31ce2..000000000 Binary files a/public/media/avatar/medium/033-6.png and /dev/null differ diff --git a/public/media/avatar/medium/033-7.png b/public/media/avatar/medium/033-7.png deleted file mode 100755 index 1443e69f9..000000000 Binary files a/public/media/avatar/medium/033-7.png and /dev/null differ diff --git a/public/media/avatar/medium/033-8.png b/public/media/avatar/medium/033-8.png deleted file mode 100644 index cf186d1aa..000000000 Binary files a/public/media/avatar/medium/033-8.png and /dev/null differ diff --git a/public/media/avatar/medium/033-9.png b/public/media/avatar/medium/033-9.png deleted file mode 100644 index dadaeb760..000000000 Binary files a/public/media/avatar/medium/033-9.png and /dev/null differ diff --git a/public/media/avatar/medium/034-1.png b/public/media/avatar/medium/034-1.png deleted file mode 100755 index 12b940a9e..000000000 Binary files a/public/media/avatar/medium/034-1.png and /dev/null differ diff --git a/public/media/avatar/medium/034-10.png b/public/media/avatar/medium/034-10.png deleted file mode 100644 index 3d1d42693..000000000 Binary files a/public/media/avatar/medium/034-10.png and /dev/null differ diff --git a/public/media/avatar/medium/034-11.png b/public/media/avatar/medium/034-11.png deleted file mode 100644 index fba439692..000000000 Binary files a/public/media/avatar/medium/034-11.png and /dev/null differ diff --git a/public/media/avatar/medium/034-12.png b/public/media/avatar/medium/034-12.png deleted file mode 100644 index 3e80d1316..000000000 Binary files a/public/media/avatar/medium/034-12.png and /dev/null differ diff --git a/public/media/avatar/medium/034-2.png b/public/media/avatar/medium/034-2.png deleted file mode 100755 index a6d23b7df..000000000 Binary files a/public/media/avatar/medium/034-2.png and /dev/null differ diff --git a/public/media/avatar/medium/034-3.png b/public/media/avatar/medium/034-3.png deleted file mode 100755 index 3e80d1316..000000000 Binary files a/public/media/avatar/medium/034-3.png and /dev/null differ diff --git a/public/media/avatar/medium/034-4.png b/public/media/avatar/medium/034-4.png deleted file mode 100755 index da4920223..000000000 Binary files a/public/media/avatar/medium/034-4.png and /dev/null differ diff --git a/public/media/avatar/medium/034-5.png b/public/media/avatar/medium/034-5.png deleted file mode 100755 index 7066eb174..000000000 Binary files a/public/media/avatar/medium/034-5.png and /dev/null differ diff --git a/public/media/avatar/medium/034-6.png b/public/media/avatar/medium/034-6.png deleted file mode 100755 index d7fbd4176..000000000 Binary files a/public/media/avatar/medium/034-6.png and /dev/null differ diff --git a/public/media/avatar/medium/034-7.png b/public/media/avatar/medium/034-7.png deleted file mode 100755 index f28975245..000000000 Binary files a/public/media/avatar/medium/034-7.png and /dev/null differ diff --git a/public/media/avatar/medium/034-8.png b/public/media/avatar/medium/034-8.png deleted file mode 100644 index 16b512cae..000000000 Binary files a/public/media/avatar/medium/034-8.png and /dev/null differ diff --git a/public/media/avatar/medium/034-9.png b/public/media/avatar/medium/034-9.png deleted file mode 100644 index 7066eb174..000000000 Binary files a/public/media/avatar/medium/034-9.png and /dev/null differ diff --git a/public/media/avatar/medium/035-1.png b/public/media/avatar/medium/035-1.png deleted file mode 100755 index d23c88927..000000000 Binary files a/public/media/avatar/medium/035-1.png and /dev/null differ diff --git a/public/media/avatar/medium/035-10.png b/public/media/avatar/medium/035-10.png deleted file mode 100644 index 6d853adea..000000000 Binary files a/public/media/avatar/medium/035-10.png and /dev/null differ diff --git a/public/media/avatar/medium/035-11.png b/public/media/avatar/medium/035-11.png deleted file mode 100644 index 2ffe87d75..000000000 Binary files a/public/media/avatar/medium/035-11.png and /dev/null differ diff --git a/public/media/avatar/medium/035-12.png b/public/media/avatar/medium/035-12.png deleted file mode 100644 index 7f0c2cd2d..000000000 Binary files a/public/media/avatar/medium/035-12.png and /dev/null differ diff --git a/public/media/avatar/medium/035-2.png b/public/media/avatar/medium/035-2.png deleted file mode 100755 index b6be4e3f5..000000000 Binary files a/public/media/avatar/medium/035-2.png and /dev/null differ diff --git a/public/media/avatar/medium/035-3.png b/public/media/avatar/medium/035-3.png deleted file mode 100755 index 7f0c2cd2d..000000000 Binary files a/public/media/avatar/medium/035-3.png and /dev/null differ diff --git a/public/media/avatar/medium/035-4.png b/public/media/avatar/medium/035-4.png deleted file mode 100755 index 18ad98a3e..000000000 Binary files a/public/media/avatar/medium/035-4.png and /dev/null differ diff --git a/public/media/avatar/medium/035-5.png b/public/media/avatar/medium/035-5.png deleted file mode 100755 index 5a18d4271..000000000 Binary files a/public/media/avatar/medium/035-5.png and /dev/null differ diff --git a/public/media/avatar/medium/035-6.png b/public/media/avatar/medium/035-6.png deleted file mode 100755 index 59ddfe056..000000000 Binary files a/public/media/avatar/medium/035-6.png and /dev/null differ diff --git a/public/media/avatar/medium/035-7.png b/public/media/avatar/medium/035-7.png deleted file mode 100755 index e90f706e0..000000000 Binary files a/public/media/avatar/medium/035-7.png and /dev/null differ diff --git a/public/media/avatar/medium/035-8.png b/public/media/avatar/medium/035-8.png deleted file mode 100644 index 951bfb5d7..000000000 Binary files a/public/media/avatar/medium/035-8.png and /dev/null differ diff --git a/public/media/avatar/medium/035-9.png b/public/media/avatar/medium/035-9.png deleted file mode 100644 index 5a18d4271..000000000 Binary files a/public/media/avatar/medium/035-9.png and /dev/null differ diff --git a/public/media/avatar/medium/036-1.png b/public/media/avatar/medium/036-1.png deleted file mode 100755 index 88df17618..000000000 Binary files a/public/media/avatar/medium/036-1.png and /dev/null differ diff --git a/public/media/avatar/medium/036-10.png b/public/media/avatar/medium/036-10.png deleted file mode 100644 index 0708ed0cf..000000000 Binary files a/public/media/avatar/medium/036-10.png and /dev/null differ diff --git a/public/media/avatar/medium/036-11.png b/public/media/avatar/medium/036-11.png deleted file mode 100644 index 468ee082e..000000000 Binary files a/public/media/avatar/medium/036-11.png and /dev/null differ diff --git a/public/media/avatar/medium/036-12.png b/public/media/avatar/medium/036-12.png deleted file mode 100644 index 093aa870f..000000000 Binary files a/public/media/avatar/medium/036-12.png and /dev/null differ diff --git a/public/media/avatar/medium/036-2.png b/public/media/avatar/medium/036-2.png deleted file mode 100755 index d5981530c..000000000 Binary files a/public/media/avatar/medium/036-2.png and /dev/null differ diff --git a/public/media/avatar/medium/036-3.png b/public/media/avatar/medium/036-3.png deleted file mode 100755 index 093aa870f..000000000 Binary files a/public/media/avatar/medium/036-3.png and /dev/null differ diff --git a/public/media/avatar/medium/036-4.png b/public/media/avatar/medium/036-4.png deleted file mode 100755 index dad86cfb0..000000000 Binary files a/public/media/avatar/medium/036-4.png and /dev/null differ diff --git a/public/media/avatar/medium/036-5.png b/public/media/avatar/medium/036-5.png deleted file mode 100755 index f9c75c6b5..000000000 Binary files a/public/media/avatar/medium/036-5.png and /dev/null differ diff --git a/public/media/avatar/medium/036-6.png b/public/media/avatar/medium/036-6.png deleted file mode 100755 index 443c8fca9..000000000 Binary files a/public/media/avatar/medium/036-6.png and /dev/null differ diff --git a/public/media/avatar/medium/036-7.png b/public/media/avatar/medium/036-7.png deleted file mode 100755 index d1ee816d8..000000000 Binary files a/public/media/avatar/medium/036-7.png and /dev/null differ diff --git a/public/media/avatar/medium/036-8.png b/public/media/avatar/medium/036-8.png deleted file mode 100644 index 8b37229b7..000000000 Binary files a/public/media/avatar/medium/036-8.png and /dev/null differ diff --git a/public/media/avatar/medium/036-9.png b/public/media/avatar/medium/036-9.png deleted file mode 100644 index f9c75c6b5..000000000 Binary files a/public/media/avatar/medium/036-9.png and /dev/null differ diff --git a/public/media/avatar/medium/037-1.png b/public/media/avatar/medium/037-1.png deleted file mode 100755 index 526d05468..000000000 Binary files a/public/media/avatar/medium/037-1.png and /dev/null differ diff --git a/public/media/avatar/medium/037-10.png b/public/media/avatar/medium/037-10.png deleted file mode 100644 index a0edb0604..000000000 Binary files a/public/media/avatar/medium/037-10.png and /dev/null differ diff --git a/public/media/avatar/medium/037-11.png b/public/media/avatar/medium/037-11.png deleted file mode 100644 index ffcfd9672..000000000 Binary files a/public/media/avatar/medium/037-11.png and /dev/null differ diff --git a/public/media/avatar/medium/037-12.png b/public/media/avatar/medium/037-12.png deleted file mode 100644 index 898647f9c..000000000 Binary files a/public/media/avatar/medium/037-12.png and /dev/null differ diff --git a/public/media/avatar/medium/037-2.png b/public/media/avatar/medium/037-2.png deleted file mode 100755 index b865b5a56..000000000 Binary files a/public/media/avatar/medium/037-2.png and /dev/null differ diff --git a/public/media/avatar/medium/037-3.png b/public/media/avatar/medium/037-3.png deleted file mode 100755 index 898647f9c..000000000 Binary files a/public/media/avatar/medium/037-3.png and /dev/null differ diff --git a/public/media/avatar/medium/037-4.png b/public/media/avatar/medium/037-4.png deleted file mode 100755 index 5cd05afc6..000000000 Binary files a/public/media/avatar/medium/037-4.png and /dev/null differ diff --git a/public/media/avatar/medium/037-5.png b/public/media/avatar/medium/037-5.png deleted file mode 100755 index ce38d9a92..000000000 Binary files a/public/media/avatar/medium/037-5.png and /dev/null differ diff --git a/public/media/avatar/medium/037-6.png b/public/media/avatar/medium/037-6.png deleted file mode 100755 index c5bd7a078..000000000 Binary files a/public/media/avatar/medium/037-6.png and /dev/null differ diff --git a/public/media/avatar/medium/037-7.png b/public/media/avatar/medium/037-7.png deleted file mode 100755 index 7098d302a..000000000 Binary files a/public/media/avatar/medium/037-7.png and /dev/null differ diff --git a/public/media/avatar/medium/037-8.png b/public/media/avatar/medium/037-8.png deleted file mode 100644 index d97018f81..000000000 Binary files a/public/media/avatar/medium/037-8.png and /dev/null differ diff --git a/public/media/avatar/medium/037-9.png b/public/media/avatar/medium/037-9.png deleted file mode 100644 index ce38d9a92..000000000 Binary files a/public/media/avatar/medium/037-9.png and /dev/null differ diff --git a/public/media/avatar/medium/038-1.png b/public/media/avatar/medium/038-1.png deleted file mode 100755 index b2de0011d..000000000 Binary files a/public/media/avatar/medium/038-1.png and /dev/null differ diff --git a/public/media/avatar/medium/038-10.png b/public/media/avatar/medium/038-10.png deleted file mode 100644 index 76f4aaa1f..000000000 Binary files a/public/media/avatar/medium/038-10.png and /dev/null differ diff --git a/public/media/avatar/medium/038-11.png b/public/media/avatar/medium/038-11.png deleted file mode 100644 index 41fac34ae..000000000 Binary files a/public/media/avatar/medium/038-11.png and /dev/null differ diff --git a/public/media/avatar/medium/038-12.png b/public/media/avatar/medium/038-12.png deleted file mode 100644 index 643b038b3..000000000 Binary files a/public/media/avatar/medium/038-12.png and /dev/null differ diff --git a/public/media/avatar/medium/038-2.png b/public/media/avatar/medium/038-2.png deleted file mode 100755 index fd98ab6cf..000000000 Binary files a/public/media/avatar/medium/038-2.png and /dev/null differ diff --git a/public/media/avatar/medium/038-3.png b/public/media/avatar/medium/038-3.png deleted file mode 100755 index 643b038b3..000000000 Binary files a/public/media/avatar/medium/038-3.png and /dev/null differ diff --git a/public/media/avatar/medium/038-4.png b/public/media/avatar/medium/038-4.png deleted file mode 100755 index 460520624..000000000 Binary files a/public/media/avatar/medium/038-4.png and /dev/null differ diff --git a/public/media/avatar/medium/038-5.png b/public/media/avatar/medium/038-5.png deleted file mode 100755 index 1ead292d9..000000000 Binary files a/public/media/avatar/medium/038-5.png and /dev/null differ diff --git a/public/media/avatar/medium/038-6.png b/public/media/avatar/medium/038-6.png deleted file mode 100755 index a3c5831a9..000000000 Binary files a/public/media/avatar/medium/038-6.png and /dev/null differ diff --git a/public/media/avatar/medium/038-7.png b/public/media/avatar/medium/038-7.png deleted file mode 100755 index 6c47dba91..000000000 Binary files a/public/media/avatar/medium/038-7.png and /dev/null differ diff --git a/public/media/avatar/medium/038-8.png b/public/media/avatar/medium/038-8.png deleted file mode 100644 index c541496b3..000000000 Binary files a/public/media/avatar/medium/038-8.png and /dev/null differ diff --git a/public/media/avatar/medium/038-9.png b/public/media/avatar/medium/038-9.png deleted file mode 100644 index 1ead292d9..000000000 Binary files a/public/media/avatar/medium/038-9.png and /dev/null differ diff --git a/public/media/avatar/medium/039-1.png b/public/media/avatar/medium/039-1.png deleted file mode 100755 index dbe241ecb..000000000 Binary files a/public/media/avatar/medium/039-1.png and /dev/null differ diff --git a/public/media/avatar/medium/039-10.png b/public/media/avatar/medium/039-10.png deleted file mode 100644 index 88f585b22..000000000 Binary files a/public/media/avatar/medium/039-10.png and /dev/null differ diff --git a/public/media/avatar/medium/039-11.png b/public/media/avatar/medium/039-11.png deleted file mode 100644 index 508b7a7b1..000000000 Binary files a/public/media/avatar/medium/039-11.png and /dev/null differ diff --git a/public/media/avatar/medium/039-12.png b/public/media/avatar/medium/039-12.png deleted file mode 100644 index 3c342ea87..000000000 Binary files a/public/media/avatar/medium/039-12.png and /dev/null differ diff --git a/public/media/avatar/medium/039-2.png b/public/media/avatar/medium/039-2.png deleted file mode 100755 index 24fa1b7eb..000000000 Binary files a/public/media/avatar/medium/039-2.png and /dev/null differ diff --git a/public/media/avatar/medium/039-3.png b/public/media/avatar/medium/039-3.png deleted file mode 100755 index 3c342ea87..000000000 Binary files a/public/media/avatar/medium/039-3.png and /dev/null differ diff --git a/public/media/avatar/medium/039-4.png b/public/media/avatar/medium/039-4.png deleted file mode 100755 index 706e6c772..000000000 Binary files a/public/media/avatar/medium/039-4.png and /dev/null differ diff --git a/public/media/avatar/medium/039-5.png b/public/media/avatar/medium/039-5.png deleted file mode 100755 index fc0a8e28e..000000000 Binary files a/public/media/avatar/medium/039-5.png and /dev/null differ diff --git a/public/media/avatar/medium/039-6.png b/public/media/avatar/medium/039-6.png deleted file mode 100755 index 5897e66b3..000000000 Binary files a/public/media/avatar/medium/039-6.png and /dev/null differ diff --git a/public/media/avatar/medium/039-7.png b/public/media/avatar/medium/039-7.png deleted file mode 100755 index fcf51138d..000000000 Binary files a/public/media/avatar/medium/039-7.png and /dev/null differ diff --git a/public/media/avatar/medium/039-8.png b/public/media/avatar/medium/039-8.png deleted file mode 100644 index a3fb66e16..000000000 Binary files a/public/media/avatar/medium/039-8.png and /dev/null differ diff --git a/public/media/avatar/medium/039-9.png b/public/media/avatar/medium/039-9.png deleted file mode 100644 index fc0a8e28e..000000000 Binary files a/public/media/avatar/medium/039-9.png and /dev/null differ diff --git a/public/media/avatar/medium/040-1.png b/public/media/avatar/medium/040-1.png deleted file mode 100755 index 43fa1b09c..000000000 Binary files a/public/media/avatar/medium/040-1.png and /dev/null differ diff --git a/public/media/avatar/medium/040-10.png b/public/media/avatar/medium/040-10.png deleted file mode 100644 index cb2673209..000000000 Binary files a/public/media/avatar/medium/040-10.png and /dev/null differ diff --git a/public/media/avatar/medium/040-11.png b/public/media/avatar/medium/040-11.png deleted file mode 100644 index b31a12f92..000000000 Binary files a/public/media/avatar/medium/040-11.png and /dev/null differ diff --git a/public/media/avatar/medium/040-12.png b/public/media/avatar/medium/040-12.png deleted file mode 100644 index d4105c75d..000000000 Binary files a/public/media/avatar/medium/040-12.png and /dev/null differ diff --git a/public/media/avatar/medium/040-2.png b/public/media/avatar/medium/040-2.png deleted file mode 100755 index c80b6bade..000000000 Binary files a/public/media/avatar/medium/040-2.png and /dev/null differ diff --git a/public/media/avatar/medium/040-3.png b/public/media/avatar/medium/040-3.png deleted file mode 100755 index d4105c75d..000000000 Binary files a/public/media/avatar/medium/040-3.png and /dev/null differ diff --git a/public/media/avatar/medium/040-4.png b/public/media/avatar/medium/040-4.png deleted file mode 100755 index 6bce4c83d..000000000 Binary files a/public/media/avatar/medium/040-4.png and /dev/null differ diff --git a/public/media/avatar/medium/040-5.png b/public/media/avatar/medium/040-5.png deleted file mode 100755 index fa32b446d..000000000 Binary files a/public/media/avatar/medium/040-5.png and /dev/null differ diff --git a/public/media/avatar/medium/040-6.png b/public/media/avatar/medium/040-6.png deleted file mode 100755 index b93d85762..000000000 Binary files a/public/media/avatar/medium/040-6.png and /dev/null differ diff --git a/public/media/avatar/medium/040-7.png b/public/media/avatar/medium/040-7.png deleted file mode 100755 index 471c9e9e7..000000000 Binary files a/public/media/avatar/medium/040-7.png and /dev/null differ diff --git a/public/media/avatar/medium/040-8.png b/public/media/avatar/medium/040-8.png deleted file mode 100644 index aa3e7f775..000000000 Binary files a/public/media/avatar/medium/040-8.png and /dev/null differ diff --git a/public/media/avatar/medium/040-9.png b/public/media/avatar/medium/040-9.png deleted file mode 100644 index fa32b446d..000000000 Binary files a/public/media/avatar/medium/040-9.png and /dev/null differ diff --git a/public/media/avatar/medium/041-1.png b/public/media/avatar/medium/041-1.png deleted file mode 100755 index eb481304d..000000000 Binary files a/public/media/avatar/medium/041-1.png and /dev/null differ diff --git a/public/media/avatar/medium/041-10.png b/public/media/avatar/medium/041-10.png deleted file mode 100644 index 859eefd2f..000000000 Binary files a/public/media/avatar/medium/041-10.png and /dev/null differ diff --git a/public/media/avatar/medium/041-11.png b/public/media/avatar/medium/041-11.png deleted file mode 100644 index e7b720c85..000000000 Binary files a/public/media/avatar/medium/041-11.png and /dev/null differ diff --git a/public/media/avatar/medium/041-12.png b/public/media/avatar/medium/041-12.png deleted file mode 100644 index 679032e14..000000000 Binary files a/public/media/avatar/medium/041-12.png and /dev/null differ diff --git a/public/media/avatar/medium/041-2.png b/public/media/avatar/medium/041-2.png deleted file mode 100755 index 03719e1d0..000000000 Binary files a/public/media/avatar/medium/041-2.png and /dev/null differ diff --git a/public/media/avatar/medium/041-3.png b/public/media/avatar/medium/041-3.png deleted file mode 100755 index 18a0057cc..000000000 Binary files a/public/media/avatar/medium/041-3.png and /dev/null differ diff --git a/public/media/avatar/medium/041-4.png b/public/media/avatar/medium/041-4.png deleted file mode 100755 index 2ec0e59a3..000000000 Binary files a/public/media/avatar/medium/041-4.png and /dev/null differ diff --git a/public/media/avatar/medium/041-5.png b/public/media/avatar/medium/041-5.png deleted file mode 100755 index b6fb0493d..000000000 Binary files a/public/media/avatar/medium/041-5.png and /dev/null differ diff --git a/public/media/avatar/medium/041-6.png b/public/media/avatar/medium/041-6.png deleted file mode 100755 index 94cbccfff..000000000 Binary files a/public/media/avatar/medium/041-6.png and /dev/null differ diff --git a/public/media/avatar/medium/041-7.png b/public/media/avatar/medium/041-7.png deleted file mode 100755 index c7d90d666..000000000 Binary files a/public/media/avatar/medium/041-7.png and /dev/null differ diff --git a/public/media/avatar/medium/041-8.png b/public/media/avatar/medium/041-8.png deleted file mode 100644 index ede098271..000000000 Binary files a/public/media/avatar/medium/041-8.png and /dev/null differ diff --git a/public/media/avatar/medium/041-9.png b/public/media/avatar/medium/041-9.png deleted file mode 100644 index b6fb0493d..000000000 Binary files a/public/media/avatar/medium/041-9.png and /dev/null differ diff --git a/public/media/avatar/medium/042-1.png b/public/media/avatar/medium/042-1.png deleted file mode 100755 index b9d046088..000000000 Binary files a/public/media/avatar/medium/042-1.png and /dev/null differ diff --git a/public/media/avatar/medium/042-10.png b/public/media/avatar/medium/042-10.png deleted file mode 100644 index cefd10390..000000000 Binary files a/public/media/avatar/medium/042-10.png and /dev/null differ diff --git a/public/media/avatar/medium/042-11.png b/public/media/avatar/medium/042-11.png deleted file mode 100644 index 7ddd331a5..000000000 Binary files a/public/media/avatar/medium/042-11.png and /dev/null differ diff --git a/public/media/avatar/medium/042-12.png b/public/media/avatar/medium/042-12.png deleted file mode 100644 index d7e390efd..000000000 Binary files a/public/media/avatar/medium/042-12.png and /dev/null differ diff --git a/public/media/avatar/medium/042-2.png b/public/media/avatar/medium/042-2.png deleted file mode 100755 index fbf22720b..000000000 Binary files a/public/media/avatar/medium/042-2.png and /dev/null differ diff --git a/public/media/avatar/medium/042-3.png b/public/media/avatar/medium/042-3.png deleted file mode 100755 index d7e390efd..000000000 Binary files a/public/media/avatar/medium/042-3.png and /dev/null differ diff --git a/public/media/avatar/medium/042-4.png b/public/media/avatar/medium/042-4.png deleted file mode 100755 index d6aff6ed8..000000000 Binary files a/public/media/avatar/medium/042-4.png and /dev/null differ diff --git a/public/media/avatar/medium/042-5.png b/public/media/avatar/medium/042-5.png deleted file mode 100755 index 7d9d89cb1..000000000 Binary files a/public/media/avatar/medium/042-5.png and /dev/null differ diff --git a/public/media/avatar/medium/042-6.png b/public/media/avatar/medium/042-6.png deleted file mode 100755 index f79479c46..000000000 Binary files a/public/media/avatar/medium/042-6.png and /dev/null differ diff --git a/public/media/avatar/medium/042-7.png b/public/media/avatar/medium/042-7.png deleted file mode 100755 index 0f557bb5a..000000000 Binary files a/public/media/avatar/medium/042-7.png and /dev/null differ diff --git a/public/media/avatar/medium/042-8.png b/public/media/avatar/medium/042-8.png deleted file mode 100644 index f8fd0ba77..000000000 Binary files a/public/media/avatar/medium/042-8.png and /dev/null differ diff --git a/public/media/avatar/medium/042-9.png b/public/media/avatar/medium/042-9.png deleted file mode 100644 index 7d9d89cb1..000000000 Binary files a/public/media/avatar/medium/042-9.png and /dev/null differ diff --git a/public/media/avatar/medium/043-1.png b/public/media/avatar/medium/043-1.png deleted file mode 100755 index 1313251f9..000000000 Binary files a/public/media/avatar/medium/043-1.png and /dev/null differ diff --git a/public/media/avatar/medium/043-10.png b/public/media/avatar/medium/043-10.png deleted file mode 100644 index 6822521c9..000000000 Binary files a/public/media/avatar/medium/043-10.png and /dev/null differ diff --git a/public/media/avatar/medium/043-11.png b/public/media/avatar/medium/043-11.png deleted file mode 100644 index ced2ed07c..000000000 Binary files a/public/media/avatar/medium/043-11.png and /dev/null differ diff --git a/public/media/avatar/medium/043-12.png b/public/media/avatar/medium/043-12.png deleted file mode 100644 index a45a80932..000000000 Binary files a/public/media/avatar/medium/043-12.png and /dev/null differ diff --git a/public/media/avatar/medium/043-2.png b/public/media/avatar/medium/043-2.png deleted file mode 100755 index 931da4ad6..000000000 Binary files a/public/media/avatar/medium/043-2.png and /dev/null differ diff --git a/public/media/avatar/medium/043-3.png b/public/media/avatar/medium/043-3.png deleted file mode 100755 index a45a80932..000000000 Binary files a/public/media/avatar/medium/043-3.png and /dev/null differ diff --git a/public/media/avatar/medium/043-4.png b/public/media/avatar/medium/043-4.png deleted file mode 100755 index 3f0f4dc1b..000000000 Binary files a/public/media/avatar/medium/043-4.png and /dev/null differ diff --git a/public/media/avatar/medium/043-5.png b/public/media/avatar/medium/043-5.png deleted file mode 100755 index 0b8d595f2..000000000 Binary files a/public/media/avatar/medium/043-5.png and /dev/null differ diff --git a/public/media/avatar/medium/043-6.png b/public/media/avatar/medium/043-6.png deleted file mode 100755 index b4e72a522..000000000 Binary files a/public/media/avatar/medium/043-6.png and /dev/null differ diff --git a/public/media/avatar/medium/043-7.png b/public/media/avatar/medium/043-7.png deleted file mode 100755 index 16947b7a9..000000000 Binary files a/public/media/avatar/medium/043-7.png and /dev/null differ diff --git a/public/media/avatar/medium/043-8.png b/public/media/avatar/medium/043-8.png deleted file mode 100644 index 8e45ad30a..000000000 Binary files a/public/media/avatar/medium/043-8.png and /dev/null differ diff --git a/public/media/avatar/medium/043-9.png b/public/media/avatar/medium/043-9.png deleted file mode 100644 index 0b8d595f2..000000000 Binary files a/public/media/avatar/medium/043-9.png and /dev/null differ diff --git a/public/media/avatar/medium/044-1.png b/public/media/avatar/medium/044-1.png deleted file mode 100755 index e5e1f6809..000000000 Binary files a/public/media/avatar/medium/044-1.png and /dev/null differ diff --git a/public/media/avatar/medium/044-10.png b/public/media/avatar/medium/044-10.png deleted file mode 100644 index 1058b0d3f..000000000 Binary files a/public/media/avatar/medium/044-10.png and /dev/null differ diff --git a/public/media/avatar/medium/044-11.png b/public/media/avatar/medium/044-11.png deleted file mode 100644 index 50add7e8c..000000000 Binary files a/public/media/avatar/medium/044-11.png and /dev/null differ diff --git a/public/media/avatar/medium/044-12.png b/public/media/avatar/medium/044-12.png deleted file mode 100644 index 90b08ce0a..000000000 Binary files a/public/media/avatar/medium/044-12.png and /dev/null differ diff --git a/public/media/avatar/medium/044-2.png b/public/media/avatar/medium/044-2.png deleted file mode 100755 index c7e702b9f..000000000 Binary files a/public/media/avatar/medium/044-2.png and /dev/null differ diff --git a/public/media/avatar/medium/044-3.png b/public/media/avatar/medium/044-3.png deleted file mode 100755 index 90b08ce0a..000000000 Binary files a/public/media/avatar/medium/044-3.png and /dev/null differ diff --git a/public/media/avatar/medium/044-4.png b/public/media/avatar/medium/044-4.png deleted file mode 100755 index 2a5f156af..000000000 Binary files a/public/media/avatar/medium/044-4.png and /dev/null differ diff --git a/public/media/avatar/medium/044-5.png b/public/media/avatar/medium/044-5.png deleted file mode 100755 index 01e77c99c..000000000 Binary files a/public/media/avatar/medium/044-5.png and /dev/null differ diff --git a/public/media/avatar/medium/044-6.png b/public/media/avatar/medium/044-6.png deleted file mode 100755 index 701f2204d..000000000 Binary files a/public/media/avatar/medium/044-6.png and /dev/null differ diff --git a/public/media/avatar/medium/044-7.png b/public/media/avatar/medium/044-7.png deleted file mode 100755 index d5bf140d0..000000000 Binary files a/public/media/avatar/medium/044-7.png and /dev/null differ diff --git a/public/media/avatar/medium/044-8.png b/public/media/avatar/medium/044-8.png deleted file mode 100644 index 37b159446..000000000 Binary files a/public/media/avatar/medium/044-8.png and /dev/null differ diff --git a/public/media/avatar/medium/044-9.png b/public/media/avatar/medium/044-9.png deleted file mode 100644 index 01e77c99c..000000000 Binary files a/public/media/avatar/medium/044-9.png and /dev/null differ diff --git a/public/media/avatar/medium/045-1.png b/public/media/avatar/medium/045-1.png deleted file mode 100755 index c21a52348..000000000 Binary files a/public/media/avatar/medium/045-1.png and /dev/null differ diff --git a/public/media/avatar/medium/045-10.png b/public/media/avatar/medium/045-10.png deleted file mode 100644 index 435ca8956..000000000 Binary files a/public/media/avatar/medium/045-10.png and /dev/null differ diff --git a/public/media/avatar/medium/045-11.png b/public/media/avatar/medium/045-11.png deleted file mode 100644 index 159322a20..000000000 Binary files a/public/media/avatar/medium/045-11.png and /dev/null differ diff --git a/public/media/avatar/medium/045-12.png b/public/media/avatar/medium/045-12.png deleted file mode 100644 index 037a938e8..000000000 Binary files a/public/media/avatar/medium/045-12.png and /dev/null differ diff --git a/public/media/avatar/medium/045-2.png b/public/media/avatar/medium/045-2.png deleted file mode 100755 index 1a5a4180f..000000000 Binary files a/public/media/avatar/medium/045-2.png and /dev/null differ diff --git a/public/media/avatar/medium/045-3.png b/public/media/avatar/medium/045-3.png deleted file mode 100755 index 037a938e8..000000000 Binary files a/public/media/avatar/medium/045-3.png and /dev/null differ diff --git a/public/media/avatar/medium/045-4.png b/public/media/avatar/medium/045-4.png deleted file mode 100755 index 65aa2f0c9..000000000 Binary files a/public/media/avatar/medium/045-4.png and /dev/null differ diff --git a/public/media/avatar/medium/045-5.png b/public/media/avatar/medium/045-5.png deleted file mode 100755 index cc99fa723..000000000 Binary files a/public/media/avatar/medium/045-5.png and /dev/null differ diff --git a/public/media/avatar/medium/045-6.png b/public/media/avatar/medium/045-6.png deleted file mode 100755 index a6ea39827..000000000 Binary files a/public/media/avatar/medium/045-6.png and /dev/null differ diff --git a/public/media/avatar/medium/045-7.png b/public/media/avatar/medium/045-7.png deleted file mode 100755 index 146d9078b..000000000 Binary files a/public/media/avatar/medium/045-7.png and /dev/null differ diff --git a/public/media/avatar/medium/045-8.png b/public/media/avatar/medium/045-8.png deleted file mode 100644 index 83c5b991f..000000000 Binary files a/public/media/avatar/medium/045-8.png and /dev/null differ diff --git a/public/media/avatar/medium/045-9.png b/public/media/avatar/medium/045-9.png deleted file mode 100644 index cc99fa723..000000000 Binary files a/public/media/avatar/medium/045-9.png and /dev/null differ diff --git a/public/media/avatar/medium/046-1.png b/public/media/avatar/medium/046-1.png deleted file mode 100755 index 6f1f93872..000000000 Binary files a/public/media/avatar/medium/046-1.png and /dev/null differ diff --git a/public/media/avatar/medium/046-10.png b/public/media/avatar/medium/046-10.png deleted file mode 100644 index de5b75684..000000000 Binary files a/public/media/avatar/medium/046-10.png and /dev/null differ diff --git a/public/media/avatar/medium/046-11.png b/public/media/avatar/medium/046-11.png deleted file mode 100644 index b7ab74219..000000000 Binary files a/public/media/avatar/medium/046-11.png and /dev/null differ diff --git a/public/media/avatar/medium/046-12.png b/public/media/avatar/medium/046-12.png deleted file mode 100644 index 16e86bcb6..000000000 Binary files a/public/media/avatar/medium/046-12.png and /dev/null differ diff --git a/public/media/avatar/medium/046-2.png b/public/media/avatar/medium/046-2.png deleted file mode 100755 index 3eb8580a6..000000000 Binary files a/public/media/avatar/medium/046-2.png and /dev/null differ diff --git a/public/media/avatar/medium/046-3.png b/public/media/avatar/medium/046-3.png deleted file mode 100755 index 16e86bcb6..000000000 Binary files a/public/media/avatar/medium/046-3.png and /dev/null differ diff --git a/public/media/avatar/medium/046-4.png b/public/media/avatar/medium/046-4.png deleted file mode 100755 index ef486dff5..000000000 Binary files a/public/media/avatar/medium/046-4.png and /dev/null differ diff --git a/public/media/avatar/medium/046-5.png b/public/media/avatar/medium/046-5.png deleted file mode 100755 index 5d46fb1f2..000000000 Binary files a/public/media/avatar/medium/046-5.png and /dev/null differ diff --git a/public/media/avatar/medium/046-6.png b/public/media/avatar/medium/046-6.png deleted file mode 100755 index 54454f126..000000000 Binary files a/public/media/avatar/medium/046-6.png and /dev/null differ diff --git a/public/media/avatar/medium/046-7.png b/public/media/avatar/medium/046-7.png deleted file mode 100755 index 26f41df6b..000000000 Binary files a/public/media/avatar/medium/046-7.png and /dev/null differ diff --git a/public/media/avatar/medium/046-8.png b/public/media/avatar/medium/046-8.png deleted file mode 100644 index 6beb8a8e9..000000000 Binary files a/public/media/avatar/medium/046-8.png and /dev/null differ diff --git a/public/media/avatar/medium/046-9.png b/public/media/avatar/medium/046-9.png deleted file mode 100644 index 5d46fb1f2..000000000 Binary files a/public/media/avatar/medium/046-9.png and /dev/null differ diff --git a/public/media/avatar/medium/047-1.png b/public/media/avatar/medium/047-1.png deleted file mode 100755 index 1094b624b..000000000 Binary files a/public/media/avatar/medium/047-1.png and /dev/null differ diff --git a/public/media/avatar/medium/047-10.png b/public/media/avatar/medium/047-10.png deleted file mode 100644 index be7f47e9b..000000000 Binary files a/public/media/avatar/medium/047-10.png and /dev/null differ diff --git a/public/media/avatar/medium/047-11.png b/public/media/avatar/medium/047-11.png deleted file mode 100644 index 1bb03373f..000000000 Binary files a/public/media/avatar/medium/047-11.png and /dev/null differ diff --git a/public/media/avatar/medium/047-12.png b/public/media/avatar/medium/047-12.png deleted file mode 100644 index a9ab6ec9d..000000000 Binary files a/public/media/avatar/medium/047-12.png and /dev/null differ diff --git a/public/media/avatar/medium/047-2.png b/public/media/avatar/medium/047-2.png deleted file mode 100755 index de37e97ad..000000000 Binary files a/public/media/avatar/medium/047-2.png and /dev/null differ diff --git a/public/media/avatar/medium/047-3.png b/public/media/avatar/medium/047-3.png deleted file mode 100755 index a347fc9a6..000000000 Binary files a/public/media/avatar/medium/047-3.png and /dev/null differ diff --git a/public/media/avatar/medium/047-4.png b/public/media/avatar/medium/047-4.png deleted file mode 100755 index ef4dd9a7b..000000000 Binary files a/public/media/avatar/medium/047-4.png and /dev/null differ diff --git a/public/media/avatar/medium/047-5.png b/public/media/avatar/medium/047-5.png deleted file mode 100755 index 6f6fdc38b..000000000 Binary files a/public/media/avatar/medium/047-5.png and /dev/null differ diff --git a/public/media/avatar/medium/047-6.png b/public/media/avatar/medium/047-6.png deleted file mode 100755 index b07376d19..000000000 Binary files a/public/media/avatar/medium/047-6.png and /dev/null differ diff --git a/public/media/avatar/medium/047-7.png b/public/media/avatar/medium/047-7.png deleted file mode 100755 index e7b29668b..000000000 Binary files a/public/media/avatar/medium/047-7.png and /dev/null differ diff --git a/public/media/avatar/medium/047-8.png b/public/media/avatar/medium/047-8.png deleted file mode 100644 index c23e7b853..000000000 Binary files a/public/media/avatar/medium/047-8.png and /dev/null differ diff --git a/public/media/avatar/medium/047-9.png b/public/media/avatar/medium/047-9.png deleted file mode 100644 index 6f6fdc38b..000000000 Binary files a/public/media/avatar/medium/047-9.png and /dev/null differ diff --git a/public/media/avatar/medium/048-1.png b/public/media/avatar/medium/048-1.png deleted file mode 100755 index 4745da12a..000000000 Binary files a/public/media/avatar/medium/048-1.png and /dev/null differ diff --git a/public/media/avatar/medium/048-10.png b/public/media/avatar/medium/048-10.png deleted file mode 100644 index 29b8f7581..000000000 Binary files a/public/media/avatar/medium/048-10.png and /dev/null differ diff --git a/public/media/avatar/medium/048-11.png b/public/media/avatar/medium/048-11.png deleted file mode 100644 index 31fcf3383..000000000 Binary files a/public/media/avatar/medium/048-11.png and /dev/null differ diff --git a/public/media/avatar/medium/048-12.png b/public/media/avatar/medium/048-12.png deleted file mode 100644 index 35cc3b182..000000000 Binary files a/public/media/avatar/medium/048-12.png and /dev/null differ diff --git a/public/media/avatar/medium/048-2.png b/public/media/avatar/medium/048-2.png deleted file mode 100755 index 858af99a3..000000000 Binary files a/public/media/avatar/medium/048-2.png and /dev/null differ diff --git a/public/media/avatar/medium/048-3.png b/public/media/avatar/medium/048-3.png deleted file mode 100755 index 35cc3b182..000000000 Binary files a/public/media/avatar/medium/048-3.png and /dev/null differ diff --git a/public/media/avatar/medium/048-4.png b/public/media/avatar/medium/048-4.png deleted file mode 100755 index 3f1c334fc..000000000 Binary files a/public/media/avatar/medium/048-4.png and /dev/null differ diff --git a/public/media/avatar/medium/048-5.png b/public/media/avatar/medium/048-5.png deleted file mode 100755 index 8d22e1b14..000000000 Binary files a/public/media/avatar/medium/048-5.png and /dev/null differ diff --git a/public/media/avatar/medium/048-6.png b/public/media/avatar/medium/048-6.png deleted file mode 100755 index 868a0d01b..000000000 Binary files a/public/media/avatar/medium/048-6.png and /dev/null differ diff --git a/public/media/avatar/medium/048-7.png b/public/media/avatar/medium/048-7.png deleted file mode 100755 index bb7fd874f..000000000 Binary files a/public/media/avatar/medium/048-7.png and /dev/null differ diff --git a/public/media/avatar/medium/048-8.png b/public/media/avatar/medium/048-8.png deleted file mode 100644 index 12010b4aa..000000000 Binary files a/public/media/avatar/medium/048-8.png and /dev/null differ diff --git a/public/media/avatar/medium/048-9.png b/public/media/avatar/medium/048-9.png deleted file mode 100644 index 8d22e1b14..000000000 Binary files a/public/media/avatar/medium/048-9.png and /dev/null differ diff --git a/public/media/avatar/medium/049-1.png b/public/media/avatar/medium/049-1.png deleted file mode 100755 index 95ffcc298..000000000 Binary files a/public/media/avatar/medium/049-1.png and /dev/null differ diff --git a/public/media/avatar/medium/049-10.png b/public/media/avatar/medium/049-10.png deleted file mode 100644 index 54bba0ca3..000000000 Binary files a/public/media/avatar/medium/049-10.png and /dev/null differ diff --git a/public/media/avatar/medium/049-11.png b/public/media/avatar/medium/049-11.png deleted file mode 100644 index a9dc336d6..000000000 Binary files a/public/media/avatar/medium/049-11.png and /dev/null differ diff --git a/public/media/avatar/medium/049-12.png b/public/media/avatar/medium/049-12.png deleted file mode 100644 index 19539949f..000000000 Binary files a/public/media/avatar/medium/049-12.png and /dev/null differ diff --git a/public/media/avatar/medium/049-2.png b/public/media/avatar/medium/049-2.png deleted file mode 100755 index 2f9ed6293..000000000 Binary files a/public/media/avatar/medium/049-2.png and /dev/null differ diff --git a/public/media/avatar/medium/049-3.png b/public/media/avatar/medium/049-3.png deleted file mode 100755 index 19539949f..000000000 Binary files a/public/media/avatar/medium/049-3.png and /dev/null differ diff --git a/public/media/avatar/medium/049-4.png b/public/media/avatar/medium/049-4.png deleted file mode 100755 index 2f6031200..000000000 Binary files a/public/media/avatar/medium/049-4.png and /dev/null differ diff --git a/public/media/avatar/medium/049-5.png b/public/media/avatar/medium/049-5.png deleted file mode 100755 index bd0d526b8..000000000 Binary files a/public/media/avatar/medium/049-5.png and /dev/null differ diff --git a/public/media/avatar/medium/049-6.png b/public/media/avatar/medium/049-6.png deleted file mode 100755 index 65fd3bb14..000000000 Binary files a/public/media/avatar/medium/049-6.png and /dev/null differ diff --git a/public/media/avatar/medium/049-7.png b/public/media/avatar/medium/049-7.png deleted file mode 100755 index 8c9cd33ac..000000000 Binary files a/public/media/avatar/medium/049-7.png and /dev/null differ diff --git a/public/media/avatar/medium/049-8.png b/public/media/avatar/medium/049-8.png deleted file mode 100644 index bd536a552..000000000 Binary files a/public/media/avatar/medium/049-8.png and /dev/null differ diff --git a/public/media/avatar/medium/049-9.png b/public/media/avatar/medium/049-9.png deleted file mode 100644 index bd0d526b8..000000000 Binary files a/public/media/avatar/medium/049-9.png and /dev/null differ diff --git a/public/media/avatar/medium/050-1.png b/public/media/avatar/medium/050-1.png deleted file mode 100755 index 998646a15..000000000 Binary files a/public/media/avatar/medium/050-1.png and /dev/null differ diff --git a/public/media/avatar/medium/050-10.png b/public/media/avatar/medium/050-10.png deleted file mode 100644 index 8f941b8ea..000000000 Binary files a/public/media/avatar/medium/050-10.png and /dev/null differ diff --git a/public/media/avatar/medium/050-11.png b/public/media/avatar/medium/050-11.png deleted file mode 100644 index 5158577e3..000000000 Binary files a/public/media/avatar/medium/050-11.png and /dev/null differ diff --git a/public/media/avatar/medium/050-12.png b/public/media/avatar/medium/050-12.png deleted file mode 100644 index 390b7ebb3..000000000 Binary files a/public/media/avatar/medium/050-12.png and /dev/null differ diff --git a/public/media/avatar/medium/050-2.png b/public/media/avatar/medium/050-2.png deleted file mode 100755 index 88ecd12cb..000000000 Binary files a/public/media/avatar/medium/050-2.png and /dev/null differ diff --git a/public/media/avatar/medium/050-3.png b/public/media/avatar/medium/050-3.png deleted file mode 100755 index 390b7ebb3..000000000 Binary files a/public/media/avatar/medium/050-3.png and /dev/null differ diff --git a/public/media/avatar/medium/050-4.png b/public/media/avatar/medium/050-4.png deleted file mode 100755 index 05529f7a2..000000000 Binary files a/public/media/avatar/medium/050-4.png and /dev/null differ diff --git a/public/media/avatar/medium/050-5.png b/public/media/avatar/medium/050-5.png deleted file mode 100755 index d42635dee..000000000 Binary files a/public/media/avatar/medium/050-5.png and /dev/null differ diff --git a/public/media/avatar/medium/050-6.png b/public/media/avatar/medium/050-6.png deleted file mode 100755 index 7b1c51540..000000000 Binary files a/public/media/avatar/medium/050-6.png and /dev/null differ diff --git a/public/media/avatar/medium/050-7.png b/public/media/avatar/medium/050-7.png deleted file mode 100755 index 38341ba6e..000000000 Binary files a/public/media/avatar/medium/050-7.png and /dev/null differ diff --git a/public/media/avatar/medium/050-8.png b/public/media/avatar/medium/050-8.png deleted file mode 100644 index 0565ee10f..000000000 Binary files a/public/media/avatar/medium/050-8.png and /dev/null differ diff --git a/public/media/avatar/medium/050-9.png b/public/media/avatar/medium/050-9.png deleted file mode 100644 index d42635dee..000000000 Binary files a/public/media/avatar/medium/050-9.png and /dev/null differ diff --git a/public/media/avatar/medium/051-1.png b/public/media/avatar/medium/051-1.png deleted file mode 100755 index 2c9a21fd4..000000000 Binary files a/public/media/avatar/medium/051-1.png and /dev/null differ diff --git a/public/media/avatar/medium/051-10.png b/public/media/avatar/medium/051-10.png deleted file mode 100644 index 080fb6339..000000000 Binary files a/public/media/avatar/medium/051-10.png and /dev/null differ diff --git a/public/media/avatar/medium/051-11.png b/public/media/avatar/medium/051-11.png deleted file mode 100644 index 5e25dad5f..000000000 Binary files a/public/media/avatar/medium/051-11.png and /dev/null differ diff --git a/public/media/avatar/medium/051-12.png b/public/media/avatar/medium/051-12.png deleted file mode 100644 index 9281f3a0f..000000000 Binary files a/public/media/avatar/medium/051-12.png and /dev/null differ diff --git a/public/media/avatar/medium/051-2.png b/public/media/avatar/medium/051-2.png deleted file mode 100755 index c9aef0bcf..000000000 Binary files a/public/media/avatar/medium/051-2.png and /dev/null differ diff --git a/public/media/avatar/medium/051-3.png b/public/media/avatar/medium/051-3.png deleted file mode 100755 index 9281f3a0f..000000000 Binary files a/public/media/avatar/medium/051-3.png and /dev/null differ diff --git a/public/media/avatar/medium/051-4.png b/public/media/avatar/medium/051-4.png deleted file mode 100755 index 4ddc56807..000000000 Binary files a/public/media/avatar/medium/051-4.png and /dev/null differ diff --git a/public/media/avatar/medium/051-5.png b/public/media/avatar/medium/051-5.png deleted file mode 100755 index bd60e6710..000000000 Binary files a/public/media/avatar/medium/051-5.png and /dev/null differ diff --git a/public/media/avatar/medium/051-6.png b/public/media/avatar/medium/051-6.png deleted file mode 100755 index 85b790d03..000000000 Binary files a/public/media/avatar/medium/051-6.png and /dev/null differ diff --git a/public/media/avatar/medium/051-7.png b/public/media/avatar/medium/051-7.png deleted file mode 100755 index 049a5df7c..000000000 Binary files a/public/media/avatar/medium/051-7.png and /dev/null differ diff --git a/public/media/avatar/medium/051-8.png b/public/media/avatar/medium/051-8.png deleted file mode 100644 index 7257ec0ba..000000000 Binary files a/public/media/avatar/medium/051-8.png and /dev/null differ diff --git a/public/media/avatar/medium/051-9.png b/public/media/avatar/medium/051-9.png deleted file mode 100644 index bd60e6710..000000000 Binary files a/public/media/avatar/medium/051-9.png and /dev/null differ diff --git a/public/media/avatar/medium/052-1.png b/public/media/avatar/medium/052-1.png deleted file mode 100755 index 8a0f710e8..000000000 Binary files a/public/media/avatar/medium/052-1.png and /dev/null differ diff --git a/public/media/avatar/medium/052-10.png b/public/media/avatar/medium/052-10.png deleted file mode 100644 index 77a8aa1b0..000000000 Binary files a/public/media/avatar/medium/052-10.png and /dev/null differ diff --git a/public/media/avatar/medium/052-11.png b/public/media/avatar/medium/052-11.png deleted file mode 100644 index af92676e5..000000000 Binary files a/public/media/avatar/medium/052-11.png and /dev/null differ diff --git a/public/media/avatar/medium/052-12.png b/public/media/avatar/medium/052-12.png deleted file mode 100644 index 9356dde4f..000000000 Binary files a/public/media/avatar/medium/052-12.png and /dev/null differ diff --git a/public/media/avatar/medium/052-2.png b/public/media/avatar/medium/052-2.png deleted file mode 100755 index 4852cde89..000000000 Binary files a/public/media/avatar/medium/052-2.png and /dev/null differ diff --git a/public/media/avatar/medium/052-3.png b/public/media/avatar/medium/052-3.png deleted file mode 100755 index 9356dde4f..000000000 Binary files a/public/media/avatar/medium/052-3.png and /dev/null differ diff --git a/public/media/avatar/medium/052-4.png b/public/media/avatar/medium/052-4.png deleted file mode 100755 index 06245daaa..000000000 Binary files a/public/media/avatar/medium/052-4.png and /dev/null differ diff --git a/public/media/avatar/medium/052-5.png b/public/media/avatar/medium/052-5.png deleted file mode 100755 index e85506309..000000000 Binary files a/public/media/avatar/medium/052-5.png and /dev/null differ diff --git a/public/media/avatar/medium/052-6.png b/public/media/avatar/medium/052-6.png deleted file mode 100755 index e433966fd..000000000 Binary files a/public/media/avatar/medium/052-6.png and /dev/null differ diff --git a/public/media/avatar/medium/052-7.png b/public/media/avatar/medium/052-7.png deleted file mode 100755 index d8dd59a6c..000000000 Binary files a/public/media/avatar/medium/052-7.png and /dev/null differ diff --git a/public/media/avatar/medium/052-8.png b/public/media/avatar/medium/052-8.png deleted file mode 100644 index 9a8b1330d..000000000 Binary files a/public/media/avatar/medium/052-8.png and /dev/null differ diff --git a/public/media/avatar/medium/052-9.png b/public/media/avatar/medium/052-9.png deleted file mode 100644 index e85506309..000000000 Binary files a/public/media/avatar/medium/052-9.png and /dev/null differ diff --git a/public/media/avatar/medium/053-1.png b/public/media/avatar/medium/053-1.png deleted file mode 100755 index ffbd9137a..000000000 Binary files a/public/media/avatar/medium/053-1.png and /dev/null differ diff --git a/public/media/avatar/medium/053-10.png b/public/media/avatar/medium/053-10.png deleted file mode 100644 index e3c00023d..000000000 Binary files a/public/media/avatar/medium/053-10.png and /dev/null differ diff --git a/public/media/avatar/medium/053-11.png b/public/media/avatar/medium/053-11.png deleted file mode 100644 index a8af182bb..000000000 Binary files a/public/media/avatar/medium/053-11.png and /dev/null differ diff --git a/public/media/avatar/medium/053-12.png b/public/media/avatar/medium/053-12.png deleted file mode 100644 index 805efac53..000000000 Binary files a/public/media/avatar/medium/053-12.png and /dev/null differ diff --git a/public/media/avatar/medium/053-2.png b/public/media/avatar/medium/053-2.png deleted file mode 100755 index 405a9b8d4..000000000 Binary files a/public/media/avatar/medium/053-2.png and /dev/null differ diff --git a/public/media/avatar/medium/053-3.png b/public/media/avatar/medium/053-3.png deleted file mode 100755 index 805efac53..000000000 Binary files a/public/media/avatar/medium/053-3.png and /dev/null differ diff --git a/public/media/avatar/medium/053-4.png b/public/media/avatar/medium/053-4.png deleted file mode 100755 index cf562cee2..000000000 Binary files a/public/media/avatar/medium/053-4.png and /dev/null differ diff --git a/public/media/avatar/medium/053-5.png b/public/media/avatar/medium/053-5.png deleted file mode 100755 index 82dc1ecb1..000000000 Binary files a/public/media/avatar/medium/053-5.png and /dev/null differ diff --git a/public/media/avatar/medium/053-6.png b/public/media/avatar/medium/053-6.png deleted file mode 100755 index 7286f582c..000000000 Binary files a/public/media/avatar/medium/053-6.png and /dev/null differ diff --git a/public/media/avatar/medium/053-7.png b/public/media/avatar/medium/053-7.png deleted file mode 100755 index 619a82048..000000000 Binary files a/public/media/avatar/medium/053-7.png and /dev/null differ diff --git a/public/media/avatar/medium/053-8.png b/public/media/avatar/medium/053-8.png deleted file mode 100644 index 957a0d119..000000000 Binary files a/public/media/avatar/medium/053-8.png and /dev/null differ diff --git a/public/media/avatar/medium/053-9.png b/public/media/avatar/medium/053-9.png deleted file mode 100644 index 82dc1ecb1..000000000 Binary files a/public/media/avatar/medium/053-9.png and /dev/null differ diff --git a/public/media/avatar/medium/054-1.png b/public/media/avatar/medium/054-1.png deleted file mode 100755 index 6c5eb724b..000000000 Binary files a/public/media/avatar/medium/054-1.png and /dev/null differ diff --git a/public/media/avatar/medium/054-10.png b/public/media/avatar/medium/054-10.png deleted file mode 100644 index 6ee84c002..000000000 Binary files a/public/media/avatar/medium/054-10.png and /dev/null differ diff --git a/public/media/avatar/medium/054-11.png b/public/media/avatar/medium/054-11.png deleted file mode 100644 index 4e01594ce..000000000 Binary files a/public/media/avatar/medium/054-11.png and /dev/null differ diff --git a/public/media/avatar/medium/054-12.png b/public/media/avatar/medium/054-12.png deleted file mode 100644 index b0b2318bb..000000000 Binary files a/public/media/avatar/medium/054-12.png and /dev/null differ diff --git a/public/media/avatar/medium/054-2.png b/public/media/avatar/medium/054-2.png deleted file mode 100755 index 24bcd1134..000000000 Binary files a/public/media/avatar/medium/054-2.png and /dev/null differ diff --git a/public/media/avatar/medium/054-3.png b/public/media/avatar/medium/054-3.png deleted file mode 100755 index b0b2318bb..000000000 Binary files a/public/media/avatar/medium/054-3.png and /dev/null differ diff --git a/public/media/avatar/medium/054-4.png b/public/media/avatar/medium/054-4.png deleted file mode 100755 index 390bf85b1..000000000 Binary files a/public/media/avatar/medium/054-4.png and /dev/null differ diff --git a/public/media/avatar/medium/054-5.png b/public/media/avatar/medium/054-5.png deleted file mode 100755 index 13f362057..000000000 Binary files a/public/media/avatar/medium/054-5.png and /dev/null differ diff --git a/public/media/avatar/medium/054-6.png b/public/media/avatar/medium/054-6.png deleted file mode 100755 index 8b0b4a3b4..000000000 Binary files a/public/media/avatar/medium/054-6.png and /dev/null differ diff --git a/public/media/avatar/medium/054-7.png b/public/media/avatar/medium/054-7.png deleted file mode 100755 index e5e11ad11..000000000 Binary files a/public/media/avatar/medium/054-7.png and /dev/null differ diff --git a/public/media/avatar/medium/054-8.png b/public/media/avatar/medium/054-8.png deleted file mode 100644 index b78991394..000000000 Binary files a/public/media/avatar/medium/054-8.png and /dev/null differ diff --git a/public/media/avatar/medium/054-9.png b/public/media/avatar/medium/054-9.png deleted file mode 100644 index 13f362057..000000000 Binary files a/public/media/avatar/medium/054-9.png and /dev/null differ diff --git a/public/media/avatar/medium/055-1.png b/public/media/avatar/medium/055-1.png deleted file mode 100755 index 657fb8d1e..000000000 Binary files a/public/media/avatar/medium/055-1.png and /dev/null differ diff --git a/public/media/avatar/medium/055-10.png b/public/media/avatar/medium/055-10.png deleted file mode 100644 index 8fb87abb8..000000000 Binary files a/public/media/avatar/medium/055-10.png and /dev/null differ diff --git a/public/media/avatar/medium/055-11.png b/public/media/avatar/medium/055-11.png deleted file mode 100644 index d72026a9b..000000000 Binary files a/public/media/avatar/medium/055-11.png and /dev/null differ diff --git a/public/media/avatar/medium/055-12.png b/public/media/avatar/medium/055-12.png deleted file mode 100644 index a55dd2ae0..000000000 Binary files a/public/media/avatar/medium/055-12.png and /dev/null differ diff --git a/public/media/avatar/medium/055-2.png b/public/media/avatar/medium/055-2.png deleted file mode 100755 index 167f4fb90..000000000 Binary files a/public/media/avatar/medium/055-2.png and /dev/null differ diff --git a/public/media/avatar/medium/055-3.png b/public/media/avatar/medium/055-3.png deleted file mode 100755 index a8b11c842..000000000 Binary files a/public/media/avatar/medium/055-3.png and /dev/null differ diff --git a/public/media/avatar/medium/055-4.png b/public/media/avatar/medium/055-4.png deleted file mode 100755 index 1f9c7e42f..000000000 Binary files a/public/media/avatar/medium/055-4.png and /dev/null differ diff --git a/public/media/avatar/medium/055-5.png b/public/media/avatar/medium/055-5.png deleted file mode 100755 index 12ac0ec6c..000000000 Binary files a/public/media/avatar/medium/055-5.png and /dev/null differ diff --git a/public/media/avatar/medium/055-6.png b/public/media/avatar/medium/055-6.png deleted file mode 100755 index cbc472016..000000000 Binary files a/public/media/avatar/medium/055-6.png and /dev/null differ diff --git a/public/media/avatar/medium/055-7.png b/public/media/avatar/medium/055-7.png deleted file mode 100755 index 2c31c8402..000000000 Binary files a/public/media/avatar/medium/055-7.png and /dev/null differ diff --git a/public/media/avatar/medium/055-8.png b/public/media/avatar/medium/055-8.png deleted file mode 100644 index 1bde867fd..000000000 Binary files a/public/media/avatar/medium/055-8.png and /dev/null differ diff --git a/public/media/avatar/medium/055-9.png b/public/media/avatar/medium/055-9.png deleted file mode 100644 index 12ac0ec6c..000000000 Binary files a/public/media/avatar/medium/055-9.png and /dev/null differ diff --git a/public/media/avatar/medium/056-1.png b/public/media/avatar/medium/056-1.png deleted file mode 100755 index 7fbd34b96..000000000 Binary files a/public/media/avatar/medium/056-1.png and /dev/null differ diff --git a/public/media/avatar/medium/056-10.png b/public/media/avatar/medium/056-10.png deleted file mode 100644 index d669ddbf6..000000000 Binary files a/public/media/avatar/medium/056-10.png and /dev/null differ diff --git a/public/media/avatar/medium/056-11.png b/public/media/avatar/medium/056-11.png deleted file mode 100644 index dc79779e2..000000000 Binary files a/public/media/avatar/medium/056-11.png and /dev/null differ diff --git a/public/media/avatar/medium/056-12.png b/public/media/avatar/medium/056-12.png deleted file mode 100644 index 972cc2562..000000000 Binary files a/public/media/avatar/medium/056-12.png and /dev/null differ diff --git a/public/media/avatar/medium/056-2.png b/public/media/avatar/medium/056-2.png deleted file mode 100755 index 9f3d856c7..000000000 Binary files a/public/media/avatar/medium/056-2.png and /dev/null differ diff --git a/public/media/avatar/medium/056-3.png b/public/media/avatar/medium/056-3.png deleted file mode 100755 index 972cc2562..000000000 Binary files a/public/media/avatar/medium/056-3.png and /dev/null differ diff --git a/public/media/avatar/medium/056-4.png b/public/media/avatar/medium/056-4.png deleted file mode 100755 index c8d7f9796..000000000 Binary files a/public/media/avatar/medium/056-4.png and /dev/null differ diff --git a/public/media/avatar/medium/056-5.png b/public/media/avatar/medium/056-5.png deleted file mode 100755 index b3cfdd79e..000000000 Binary files a/public/media/avatar/medium/056-5.png and /dev/null differ diff --git a/public/media/avatar/medium/056-6.png b/public/media/avatar/medium/056-6.png deleted file mode 100755 index 6a5754077..000000000 Binary files a/public/media/avatar/medium/056-6.png and /dev/null differ diff --git a/public/media/avatar/medium/056-7.png b/public/media/avatar/medium/056-7.png deleted file mode 100755 index 78ed18270..000000000 Binary files a/public/media/avatar/medium/056-7.png and /dev/null differ diff --git a/public/media/avatar/medium/056-8.png b/public/media/avatar/medium/056-8.png deleted file mode 100644 index 6f0667a03..000000000 Binary files a/public/media/avatar/medium/056-8.png and /dev/null differ diff --git a/public/media/avatar/medium/056-9.png b/public/media/avatar/medium/056-9.png deleted file mode 100644 index b3cfdd79e..000000000 Binary files a/public/media/avatar/medium/056-9.png and /dev/null differ diff --git a/public/media/avatar/medium/057-1.png b/public/media/avatar/medium/057-1.png deleted file mode 100755 index b47c99e21..000000000 Binary files a/public/media/avatar/medium/057-1.png and /dev/null differ diff --git a/public/media/avatar/medium/057-10.png b/public/media/avatar/medium/057-10.png deleted file mode 100644 index ec60b0f06..000000000 Binary files a/public/media/avatar/medium/057-10.png and /dev/null differ diff --git a/public/media/avatar/medium/057-11.png b/public/media/avatar/medium/057-11.png deleted file mode 100644 index e394fe4cf..000000000 Binary files a/public/media/avatar/medium/057-11.png and /dev/null differ diff --git a/public/media/avatar/medium/057-12.png b/public/media/avatar/medium/057-12.png deleted file mode 100644 index 6d567e176..000000000 Binary files a/public/media/avatar/medium/057-12.png and /dev/null differ diff --git a/public/media/avatar/medium/057-2.png b/public/media/avatar/medium/057-2.png deleted file mode 100755 index a7255acfa..000000000 Binary files a/public/media/avatar/medium/057-2.png and /dev/null differ diff --git a/public/media/avatar/medium/057-3.png b/public/media/avatar/medium/057-3.png deleted file mode 100755 index 6d567e176..000000000 Binary files a/public/media/avatar/medium/057-3.png and /dev/null differ diff --git a/public/media/avatar/medium/057-4.png b/public/media/avatar/medium/057-4.png deleted file mode 100755 index c6bc0cf4f..000000000 Binary files a/public/media/avatar/medium/057-4.png and /dev/null differ diff --git a/public/media/avatar/medium/057-5.png b/public/media/avatar/medium/057-5.png deleted file mode 100755 index faa1d6693..000000000 Binary files a/public/media/avatar/medium/057-5.png and /dev/null differ diff --git a/public/media/avatar/medium/057-6.png b/public/media/avatar/medium/057-6.png deleted file mode 100755 index 090f8db62..000000000 Binary files a/public/media/avatar/medium/057-6.png and /dev/null differ diff --git a/public/media/avatar/medium/057-7.png b/public/media/avatar/medium/057-7.png deleted file mode 100755 index 7705d25b3..000000000 Binary files a/public/media/avatar/medium/057-7.png and /dev/null differ diff --git a/public/media/avatar/medium/057-8.png b/public/media/avatar/medium/057-8.png deleted file mode 100644 index 061443615..000000000 Binary files a/public/media/avatar/medium/057-8.png and /dev/null differ diff --git a/public/media/avatar/medium/057-9.png b/public/media/avatar/medium/057-9.png deleted file mode 100644 index faa1d6693..000000000 Binary files a/public/media/avatar/medium/057-9.png and /dev/null differ diff --git a/public/media/avatar/medium/058-1.png b/public/media/avatar/medium/058-1.png deleted file mode 100755 index c84855592..000000000 Binary files a/public/media/avatar/medium/058-1.png and /dev/null differ diff --git a/public/media/avatar/medium/058-10.png b/public/media/avatar/medium/058-10.png deleted file mode 100644 index db37cabef..000000000 Binary files a/public/media/avatar/medium/058-10.png and /dev/null differ diff --git a/public/media/avatar/medium/058-11.png b/public/media/avatar/medium/058-11.png deleted file mode 100644 index eddad1966..000000000 Binary files a/public/media/avatar/medium/058-11.png and /dev/null differ diff --git a/public/media/avatar/medium/058-12.png b/public/media/avatar/medium/058-12.png deleted file mode 100644 index e78bff384..000000000 Binary files a/public/media/avatar/medium/058-12.png and /dev/null differ diff --git a/public/media/avatar/medium/058-2.png b/public/media/avatar/medium/058-2.png deleted file mode 100755 index bb49a8f82..000000000 Binary files a/public/media/avatar/medium/058-2.png and /dev/null differ diff --git a/public/media/avatar/medium/058-3.png b/public/media/avatar/medium/058-3.png deleted file mode 100755 index fbc153fbe..000000000 Binary files a/public/media/avatar/medium/058-3.png and /dev/null differ diff --git a/public/media/avatar/medium/058-4.png b/public/media/avatar/medium/058-4.png deleted file mode 100755 index 0fdb423a9..000000000 Binary files a/public/media/avatar/medium/058-4.png and /dev/null differ diff --git a/public/media/avatar/medium/058-5.png b/public/media/avatar/medium/058-5.png deleted file mode 100755 index b816be8bc..000000000 Binary files a/public/media/avatar/medium/058-5.png and /dev/null differ diff --git a/public/media/avatar/medium/058-6.png b/public/media/avatar/medium/058-6.png deleted file mode 100755 index 8275925f6..000000000 Binary files a/public/media/avatar/medium/058-6.png and /dev/null differ diff --git a/public/media/avatar/medium/058-7.png b/public/media/avatar/medium/058-7.png deleted file mode 100755 index ae96d150b..000000000 Binary files a/public/media/avatar/medium/058-7.png and /dev/null differ diff --git a/public/media/avatar/medium/058-8.png b/public/media/avatar/medium/058-8.png deleted file mode 100644 index f981929c8..000000000 Binary files a/public/media/avatar/medium/058-8.png and /dev/null differ diff --git a/public/media/avatar/medium/058-9.png b/public/media/avatar/medium/058-9.png deleted file mode 100644 index b816be8bc..000000000 Binary files a/public/media/avatar/medium/058-9.png and /dev/null differ diff --git a/public/media/avatar/medium/059-1.png b/public/media/avatar/medium/059-1.png deleted file mode 100755 index e30ad6f7d..000000000 Binary files a/public/media/avatar/medium/059-1.png and /dev/null differ diff --git a/public/media/avatar/medium/059-10.png b/public/media/avatar/medium/059-10.png deleted file mode 100644 index 5f57294e5..000000000 Binary files a/public/media/avatar/medium/059-10.png and /dev/null differ diff --git a/public/media/avatar/medium/059-11.png b/public/media/avatar/medium/059-11.png deleted file mode 100644 index cd54a3d26..000000000 Binary files a/public/media/avatar/medium/059-11.png and /dev/null differ diff --git a/public/media/avatar/medium/059-12.png b/public/media/avatar/medium/059-12.png deleted file mode 100644 index b69f911a5..000000000 Binary files a/public/media/avatar/medium/059-12.png and /dev/null differ diff --git a/public/media/avatar/medium/059-2.png b/public/media/avatar/medium/059-2.png deleted file mode 100755 index 9fd4b5d41..000000000 Binary files a/public/media/avatar/medium/059-2.png and /dev/null differ diff --git a/public/media/avatar/medium/059-3.png b/public/media/avatar/medium/059-3.png deleted file mode 100755 index b69f911a5..000000000 Binary files a/public/media/avatar/medium/059-3.png and /dev/null differ diff --git a/public/media/avatar/medium/059-4.png b/public/media/avatar/medium/059-4.png deleted file mode 100755 index b400f78e3..000000000 Binary files a/public/media/avatar/medium/059-4.png and /dev/null differ diff --git a/public/media/avatar/medium/059-5.png b/public/media/avatar/medium/059-5.png deleted file mode 100755 index bf3f5d65b..000000000 Binary files a/public/media/avatar/medium/059-5.png and /dev/null differ diff --git a/public/media/avatar/medium/059-6.png b/public/media/avatar/medium/059-6.png deleted file mode 100755 index 7015d4dad..000000000 Binary files a/public/media/avatar/medium/059-6.png and /dev/null differ diff --git a/public/media/avatar/medium/059-7.png b/public/media/avatar/medium/059-7.png deleted file mode 100755 index 1c5286904..000000000 Binary files a/public/media/avatar/medium/059-7.png and /dev/null differ diff --git a/public/media/avatar/medium/059-8.png b/public/media/avatar/medium/059-8.png deleted file mode 100644 index 9c0adb30e..000000000 Binary files a/public/media/avatar/medium/059-8.png and /dev/null differ diff --git a/public/media/avatar/medium/059-9.png b/public/media/avatar/medium/059-9.png deleted file mode 100644 index bf3f5d65b..000000000 Binary files a/public/media/avatar/medium/059-9.png and /dev/null differ diff --git a/public/media/avatar/medium/060-1.png b/public/media/avatar/medium/060-1.png deleted file mode 100755 index 9bbb05ec4..000000000 Binary files a/public/media/avatar/medium/060-1.png and /dev/null differ diff --git a/public/media/avatar/medium/060-10.png b/public/media/avatar/medium/060-10.png deleted file mode 100644 index 06a656e90..000000000 Binary files a/public/media/avatar/medium/060-10.png and /dev/null differ diff --git a/public/media/avatar/medium/060-11.png b/public/media/avatar/medium/060-11.png deleted file mode 100644 index 7c98eb7b8..000000000 Binary files a/public/media/avatar/medium/060-11.png and /dev/null differ diff --git a/public/media/avatar/medium/060-12.png b/public/media/avatar/medium/060-12.png deleted file mode 100644 index e7ed4b60f..000000000 Binary files a/public/media/avatar/medium/060-12.png and /dev/null differ diff --git a/public/media/avatar/medium/060-2.png b/public/media/avatar/medium/060-2.png deleted file mode 100755 index b3d1d751a..000000000 Binary files a/public/media/avatar/medium/060-2.png and /dev/null differ diff --git a/public/media/avatar/medium/060-3.png b/public/media/avatar/medium/060-3.png deleted file mode 100755 index e7ed4b60f..000000000 Binary files a/public/media/avatar/medium/060-3.png and /dev/null differ diff --git a/public/media/avatar/medium/060-4.png b/public/media/avatar/medium/060-4.png deleted file mode 100755 index ada50985a..000000000 Binary files a/public/media/avatar/medium/060-4.png and /dev/null differ diff --git a/public/media/avatar/medium/060-5.png b/public/media/avatar/medium/060-5.png deleted file mode 100755 index a5c2b3ad2..000000000 Binary files a/public/media/avatar/medium/060-5.png and /dev/null differ diff --git a/public/media/avatar/medium/060-6.png b/public/media/avatar/medium/060-6.png deleted file mode 100755 index 1edd24e2a..000000000 Binary files a/public/media/avatar/medium/060-6.png and /dev/null differ diff --git a/public/media/avatar/medium/060-7.png b/public/media/avatar/medium/060-7.png deleted file mode 100755 index 3c67ae0b3..000000000 Binary files a/public/media/avatar/medium/060-7.png and /dev/null differ diff --git a/public/media/avatar/medium/060-8.png b/public/media/avatar/medium/060-8.png deleted file mode 100644 index e2e9fb76d..000000000 Binary files a/public/media/avatar/medium/060-8.png and /dev/null differ diff --git a/public/media/avatar/medium/060-9.png b/public/media/avatar/medium/060-9.png deleted file mode 100644 index a5c2b3ad2..000000000 Binary files a/public/media/avatar/medium/060-9.png and /dev/null differ diff --git a/public/media/avatar/medium/061-1.png b/public/media/avatar/medium/061-1.png deleted file mode 100755 index 39ab39e68..000000000 Binary files a/public/media/avatar/medium/061-1.png and /dev/null differ diff --git a/public/media/avatar/medium/061-10.png b/public/media/avatar/medium/061-10.png deleted file mode 100644 index 98a64cf04..000000000 Binary files a/public/media/avatar/medium/061-10.png and /dev/null differ diff --git a/public/media/avatar/medium/061-11.png b/public/media/avatar/medium/061-11.png deleted file mode 100644 index f75ca7e41..000000000 Binary files a/public/media/avatar/medium/061-11.png and /dev/null differ diff --git a/public/media/avatar/medium/061-12.png b/public/media/avatar/medium/061-12.png deleted file mode 100644 index 45b9caebc..000000000 Binary files a/public/media/avatar/medium/061-12.png and /dev/null differ diff --git a/public/media/avatar/medium/061-2.png b/public/media/avatar/medium/061-2.png deleted file mode 100755 index d059114fe..000000000 Binary files a/public/media/avatar/medium/061-2.png and /dev/null differ diff --git a/public/media/avatar/medium/061-3.png b/public/media/avatar/medium/061-3.png deleted file mode 100755 index 45b9caebc..000000000 Binary files a/public/media/avatar/medium/061-3.png and /dev/null differ diff --git a/public/media/avatar/medium/061-4.png b/public/media/avatar/medium/061-4.png deleted file mode 100755 index 87a0b7a60..000000000 Binary files a/public/media/avatar/medium/061-4.png and /dev/null differ diff --git a/public/media/avatar/medium/061-5.png b/public/media/avatar/medium/061-5.png deleted file mode 100755 index 8f5616e17..000000000 Binary files a/public/media/avatar/medium/061-5.png and /dev/null differ diff --git a/public/media/avatar/medium/061-6.png b/public/media/avatar/medium/061-6.png deleted file mode 100755 index 69ec995f4..000000000 Binary files a/public/media/avatar/medium/061-6.png and /dev/null differ diff --git a/public/media/avatar/medium/061-7.png b/public/media/avatar/medium/061-7.png deleted file mode 100755 index 0a27e0033..000000000 Binary files a/public/media/avatar/medium/061-7.png and /dev/null differ diff --git a/public/media/avatar/medium/061-8.png b/public/media/avatar/medium/061-8.png deleted file mode 100644 index 50a58b278..000000000 Binary files a/public/media/avatar/medium/061-8.png and /dev/null differ diff --git a/public/media/avatar/medium/061-9.png b/public/media/avatar/medium/061-9.png deleted file mode 100644 index 8f5616e17..000000000 Binary files a/public/media/avatar/medium/061-9.png and /dev/null differ diff --git a/public/media/avatar/medium/062-1.png b/public/media/avatar/medium/062-1.png deleted file mode 100755 index 274738f8a..000000000 Binary files a/public/media/avatar/medium/062-1.png and /dev/null differ diff --git a/public/media/avatar/medium/062-10.png b/public/media/avatar/medium/062-10.png deleted file mode 100644 index 21a66682a..000000000 Binary files a/public/media/avatar/medium/062-10.png and /dev/null differ diff --git a/public/media/avatar/medium/062-11.png b/public/media/avatar/medium/062-11.png deleted file mode 100644 index f0e4b1d42..000000000 Binary files a/public/media/avatar/medium/062-11.png and /dev/null differ diff --git a/public/media/avatar/medium/062-12.png b/public/media/avatar/medium/062-12.png deleted file mode 100644 index e345caf18..000000000 Binary files a/public/media/avatar/medium/062-12.png and /dev/null differ diff --git a/public/media/avatar/medium/062-2.png b/public/media/avatar/medium/062-2.png deleted file mode 100755 index 3ac828b4b..000000000 Binary files a/public/media/avatar/medium/062-2.png and /dev/null differ diff --git a/public/media/avatar/medium/062-3.png b/public/media/avatar/medium/062-3.png deleted file mode 100755 index e345caf18..000000000 Binary files a/public/media/avatar/medium/062-3.png and /dev/null differ diff --git a/public/media/avatar/medium/062-4.png b/public/media/avatar/medium/062-4.png deleted file mode 100755 index 1ca9a1728..000000000 Binary files a/public/media/avatar/medium/062-4.png and /dev/null differ diff --git a/public/media/avatar/medium/062-5.png b/public/media/avatar/medium/062-5.png deleted file mode 100755 index 276432043..000000000 Binary files a/public/media/avatar/medium/062-5.png and /dev/null differ diff --git a/public/media/avatar/medium/062-6.png b/public/media/avatar/medium/062-6.png deleted file mode 100755 index d2198acde..000000000 Binary files a/public/media/avatar/medium/062-6.png and /dev/null differ diff --git a/public/media/avatar/medium/062-7.png b/public/media/avatar/medium/062-7.png deleted file mode 100755 index 41ab611c8..000000000 Binary files a/public/media/avatar/medium/062-7.png and /dev/null differ diff --git a/public/media/avatar/medium/062-8.png b/public/media/avatar/medium/062-8.png deleted file mode 100644 index cf4e324e0..000000000 Binary files a/public/media/avatar/medium/062-8.png and /dev/null differ diff --git a/public/media/avatar/medium/062-9.png b/public/media/avatar/medium/062-9.png deleted file mode 100644 index 276432043..000000000 Binary files a/public/media/avatar/medium/062-9.png and /dev/null differ diff --git a/public/media/avatar/medium/063-1.png b/public/media/avatar/medium/063-1.png deleted file mode 100755 index 1c71d4255..000000000 Binary files a/public/media/avatar/medium/063-1.png and /dev/null differ diff --git a/public/media/avatar/medium/063-10.png b/public/media/avatar/medium/063-10.png deleted file mode 100644 index 8452799fd..000000000 Binary files a/public/media/avatar/medium/063-10.png and /dev/null differ diff --git a/public/media/avatar/medium/063-11.png b/public/media/avatar/medium/063-11.png deleted file mode 100644 index f11eac0cc..000000000 Binary files a/public/media/avatar/medium/063-11.png and /dev/null differ diff --git a/public/media/avatar/medium/063-12.png b/public/media/avatar/medium/063-12.png deleted file mode 100644 index cd4f5507c..000000000 Binary files a/public/media/avatar/medium/063-12.png and /dev/null differ diff --git a/public/media/avatar/medium/063-2.png b/public/media/avatar/medium/063-2.png deleted file mode 100755 index 3353727e2..000000000 Binary files a/public/media/avatar/medium/063-2.png and /dev/null differ diff --git a/public/media/avatar/medium/063-3.png b/public/media/avatar/medium/063-3.png deleted file mode 100755 index a2a06f7f1..000000000 Binary files a/public/media/avatar/medium/063-3.png and /dev/null differ diff --git a/public/media/avatar/medium/063-4.png b/public/media/avatar/medium/063-4.png deleted file mode 100755 index c2bb7896a..000000000 Binary files a/public/media/avatar/medium/063-4.png and /dev/null differ diff --git a/public/media/avatar/medium/063-5.png b/public/media/avatar/medium/063-5.png deleted file mode 100755 index 6331162cb..000000000 Binary files a/public/media/avatar/medium/063-5.png and /dev/null differ diff --git a/public/media/avatar/medium/063-6.png b/public/media/avatar/medium/063-6.png deleted file mode 100755 index c2cba66db..000000000 Binary files a/public/media/avatar/medium/063-6.png and /dev/null differ diff --git a/public/media/avatar/medium/063-7.png b/public/media/avatar/medium/063-7.png deleted file mode 100755 index b3e50693d..000000000 Binary files a/public/media/avatar/medium/063-7.png and /dev/null differ diff --git a/public/media/avatar/medium/063-8.png b/public/media/avatar/medium/063-8.png deleted file mode 100644 index 59bb07578..000000000 Binary files a/public/media/avatar/medium/063-8.png and /dev/null differ diff --git a/public/media/avatar/medium/063-9.png b/public/media/avatar/medium/063-9.png deleted file mode 100644 index 6331162cb..000000000 Binary files a/public/media/avatar/medium/063-9.png and /dev/null differ diff --git a/public/media/avatar/medium/064-1.png b/public/media/avatar/medium/064-1.png deleted file mode 100755 index f215d99c4..000000000 Binary files a/public/media/avatar/medium/064-1.png and /dev/null differ diff --git a/public/media/avatar/medium/064-10.png b/public/media/avatar/medium/064-10.png deleted file mode 100644 index e21310c25..000000000 Binary files a/public/media/avatar/medium/064-10.png and /dev/null differ diff --git a/public/media/avatar/medium/064-11.png b/public/media/avatar/medium/064-11.png deleted file mode 100644 index 921a37179..000000000 Binary files a/public/media/avatar/medium/064-11.png and /dev/null differ diff --git a/public/media/avatar/medium/064-12.png b/public/media/avatar/medium/064-12.png deleted file mode 100644 index eec41f906..000000000 Binary files a/public/media/avatar/medium/064-12.png and /dev/null differ diff --git a/public/media/avatar/medium/064-2.png b/public/media/avatar/medium/064-2.png deleted file mode 100755 index bf75e0648..000000000 Binary files a/public/media/avatar/medium/064-2.png and /dev/null differ diff --git a/public/media/avatar/medium/064-3.png b/public/media/avatar/medium/064-3.png deleted file mode 100755 index eec41f906..000000000 Binary files a/public/media/avatar/medium/064-3.png and /dev/null differ diff --git a/public/media/avatar/medium/064-4.png b/public/media/avatar/medium/064-4.png deleted file mode 100755 index b5c1206d4..000000000 Binary files a/public/media/avatar/medium/064-4.png and /dev/null differ diff --git a/public/media/avatar/medium/064-5.png b/public/media/avatar/medium/064-5.png deleted file mode 100755 index d879c26f3..000000000 Binary files a/public/media/avatar/medium/064-5.png and /dev/null differ diff --git a/public/media/avatar/medium/064-6.png b/public/media/avatar/medium/064-6.png deleted file mode 100755 index e06d189d8..000000000 Binary files a/public/media/avatar/medium/064-6.png and /dev/null differ diff --git a/public/media/avatar/medium/064-7.png b/public/media/avatar/medium/064-7.png deleted file mode 100755 index 12bf500f6..000000000 Binary files a/public/media/avatar/medium/064-7.png and /dev/null differ diff --git a/public/media/avatar/medium/064-8.png b/public/media/avatar/medium/064-8.png deleted file mode 100644 index 7165b20e2..000000000 Binary files a/public/media/avatar/medium/064-8.png and /dev/null differ diff --git a/public/media/avatar/medium/064-9.png b/public/media/avatar/medium/064-9.png deleted file mode 100644 index d879c26f3..000000000 Binary files a/public/media/avatar/medium/064-9.png and /dev/null differ diff --git a/public/media/avatar/medium/065-1.png b/public/media/avatar/medium/065-1.png deleted file mode 100755 index 760ab4d19..000000000 Binary files a/public/media/avatar/medium/065-1.png and /dev/null differ diff --git a/public/media/avatar/medium/065-10.png b/public/media/avatar/medium/065-10.png deleted file mode 100644 index 1914a66d0..000000000 Binary files a/public/media/avatar/medium/065-10.png and /dev/null differ diff --git a/public/media/avatar/medium/065-11.png b/public/media/avatar/medium/065-11.png deleted file mode 100644 index 07b91e823..000000000 Binary files a/public/media/avatar/medium/065-11.png and /dev/null differ diff --git a/public/media/avatar/medium/065-12.png b/public/media/avatar/medium/065-12.png deleted file mode 100644 index d14ef24c0..000000000 Binary files a/public/media/avatar/medium/065-12.png and /dev/null differ diff --git a/public/media/avatar/medium/065-2.png b/public/media/avatar/medium/065-2.png deleted file mode 100755 index 28bb6a687..000000000 Binary files a/public/media/avatar/medium/065-2.png and /dev/null differ diff --git a/public/media/avatar/medium/065-3.png b/public/media/avatar/medium/065-3.png deleted file mode 100755 index d14ef24c0..000000000 Binary files a/public/media/avatar/medium/065-3.png and /dev/null differ diff --git a/public/media/avatar/medium/065-4.png b/public/media/avatar/medium/065-4.png deleted file mode 100755 index bc82acd88..000000000 Binary files a/public/media/avatar/medium/065-4.png and /dev/null differ diff --git a/public/media/avatar/medium/065-5.png b/public/media/avatar/medium/065-5.png deleted file mode 100755 index 4abe353b4..000000000 Binary files a/public/media/avatar/medium/065-5.png and /dev/null differ diff --git a/public/media/avatar/medium/065-6.png b/public/media/avatar/medium/065-6.png deleted file mode 100755 index 8de7cdcc7..000000000 Binary files a/public/media/avatar/medium/065-6.png and /dev/null differ diff --git a/public/media/avatar/medium/065-7.png b/public/media/avatar/medium/065-7.png deleted file mode 100755 index 0387d9126..000000000 Binary files a/public/media/avatar/medium/065-7.png and /dev/null differ diff --git a/public/media/avatar/medium/065-8.png b/public/media/avatar/medium/065-8.png deleted file mode 100644 index 5d4e73ef4..000000000 Binary files a/public/media/avatar/medium/065-8.png and /dev/null differ diff --git a/public/media/avatar/medium/065-9.png b/public/media/avatar/medium/065-9.png deleted file mode 100644 index 4abe353b4..000000000 Binary files a/public/media/avatar/medium/065-9.png and /dev/null differ diff --git a/public/media/avatar/medium/066-1.png b/public/media/avatar/medium/066-1.png deleted file mode 100755 index 80c988f32..000000000 Binary files a/public/media/avatar/medium/066-1.png and /dev/null differ diff --git a/public/media/avatar/medium/066-10.png b/public/media/avatar/medium/066-10.png deleted file mode 100644 index 8eac6326f..000000000 Binary files a/public/media/avatar/medium/066-10.png and /dev/null differ diff --git a/public/media/avatar/medium/066-11.png b/public/media/avatar/medium/066-11.png deleted file mode 100644 index 730feb003..000000000 Binary files a/public/media/avatar/medium/066-11.png and /dev/null differ diff --git a/public/media/avatar/medium/066-12.png b/public/media/avatar/medium/066-12.png deleted file mode 100644 index 33a553d97..000000000 Binary files a/public/media/avatar/medium/066-12.png and /dev/null differ diff --git a/public/media/avatar/medium/066-2.png b/public/media/avatar/medium/066-2.png deleted file mode 100755 index d94c59843..000000000 Binary files a/public/media/avatar/medium/066-2.png and /dev/null differ diff --git a/public/media/avatar/medium/066-3.png b/public/media/avatar/medium/066-3.png deleted file mode 100755 index 33a553d97..000000000 Binary files a/public/media/avatar/medium/066-3.png and /dev/null differ diff --git a/public/media/avatar/medium/066-4.png b/public/media/avatar/medium/066-4.png deleted file mode 100755 index 8f5f44a8e..000000000 Binary files a/public/media/avatar/medium/066-4.png and /dev/null differ diff --git a/public/media/avatar/medium/066-5.png b/public/media/avatar/medium/066-5.png deleted file mode 100755 index 0812556cd..000000000 Binary files a/public/media/avatar/medium/066-5.png and /dev/null differ diff --git a/public/media/avatar/medium/066-6.png b/public/media/avatar/medium/066-6.png deleted file mode 100755 index 714b3f47e..000000000 Binary files a/public/media/avatar/medium/066-6.png and /dev/null differ diff --git a/public/media/avatar/medium/066-7.png b/public/media/avatar/medium/066-7.png deleted file mode 100755 index 6ad0ebbec..000000000 Binary files a/public/media/avatar/medium/066-7.png and /dev/null differ diff --git a/public/media/avatar/medium/066-8.png b/public/media/avatar/medium/066-8.png deleted file mode 100644 index c5060cf97..000000000 Binary files a/public/media/avatar/medium/066-8.png and /dev/null differ diff --git a/public/media/avatar/medium/066-9.png b/public/media/avatar/medium/066-9.png deleted file mode 100644 index 0812556cd..000000000 Binary files a/public/media/avatar/medium/066-9.png and /dev/null differ diff --git a/public/media/avatar/medium/067-1.png b/public/media/avatar/medium/067-1.png deleted file mode 100755 index 101dd8b1e..000000000 Binary files a/public/media/avatar/medium/067-1.png and /dev/null differ diff --git a/public/media/avatar/medium/067-10.png b/public/media/avatar/medium/067-10.png deleted file mode 100644 index b00f318a1..000000000 Binary files a/public/media/avatar/medium/067-10.png and /dev/null differ diff --git a/public/media/avatar/medium/067-11.png b/public/media/avatar/medium/067-11.png deleted file mode 100644 index 96b59c4c5..000000000 Binary files a/public/media/avatar/medium/067-11.png and /dev/null differ diff --git a/public/media/avatar/medium/067-12.png b/public/media/avatar/medium/067-12.png deleted file mode 100644 index dea287c70..000000000 Binary files a/public/media/avatar/medium/067-12.png and /dev/null differ diff --git a/public/media/avatar/medium/067-2.png b/public/media/avatar/medium/067-2.png deleted file mode 100755 index 6d7bb159f..000000000 Binary files a/public/media/avatar/medium/067-2.png and /dev/null differ diff --git a/public/media/avatar/medium/067-3.png b/public/media/avatar/medium/067-3.png deleted file mode 100755 index dea287c70..000000000 Binary files a/public/media/avatar/medium/067-3.png and /dev/null differ diff --git a/public/media/avatar/medium/067-4.png b/public/media/avatar/medium/067-4.png deleted file mode 100755 index fb792c375..000000000 Binary files a/public/media/avatar/medium/067-4.png and /dev/null differ diff --git a/public/media/avatar/medium/067-5.png b/public/media/avatar/medium/067-5.png deleted file mode 100755 index 4bea45ba4..000000000 Binary files a/public/media/avatar/medium/067-5.png and /dev/null differ diff --git a/public/media/avatar/medium/067-6.png b/public/media/avatar/medium/067-6.png deleted file mode 100755 index df854b566..000000000 Binary files a/public/media/avatar/medium/067-6.png and /dev/null differ diff --git a/public/media/avatar/medium/067-7.png b/public/media/avatar/medium/067-7.png deleted file mode 100755 index 21fb50a62..000000000 Binary files a/public/media/avatar/medium/067-7.png and /dev/null differ diff --git a/public/media/avatar/medium/067-8.png b/public/media/avatar/medium/067-8.png deleted file mode 100644 index 8613ac2bb..000000000 Binary files a/public/media/avatar/medium/067-8.png and /dev/null differ diff --git a/public/media/avatar/medium/067-9.png b/public/media/avatar/medium/067-9.png deleted file mode 100644 index 4bea45ba4..000000000 Binary files a/public/media/avatar/medium/067-9.png and /dev/null differ diff --git a/public/media/avatar/medium/068-1.png b/public/media/avatar/medium/068-1.png deleted file mode 100755 index 2f4d5a747..000000000 Binary files a/public/media/avatar/medium/068-1.png and /dev/null differ diff --git a/public/media/avatar/medium/068-10.png b/public/media/avatar/medium/068-10.png deleted file mode 100644 index 35f19f9e3..000000000 Binary files a/public/media/avatar/medium/068-10.png and /dev/null differ diff --git a/public/media/avatar/medium/068-11.png b/public/media/avatar/medium/068-11.png deleted file mode 100644 index 1609322d0..000000000 Binary files a/public/media/avatar/medium/068-11.png and /dev/null differ diff --git a/public/media/avatar/medium/068-12.png b/public/media/avatar/medium/068-12.png deleted file mode 100644 index 86dd9f6af..000000000 Binary files a/public/media/avatar/medium/068-12.png and /dev/null differ diff --git a/public/media/avatar/medium/068-2.png b/public/media/avatar/medium/068-2.png deleted file mode 100755 index f7c545f4f..000000000 Binary files a/public/media/avatar/medium/068-2.png and /dev/null differ diff --git a/public/media/avatar/medium/068-3.png b/public/media/avatar/medium/068-3.png deleted file mode 100755 index 86dd9f6af..000000000 Binary files a/public/media/avatar/medium/068-3.png and /dev/null differ diff --git a/public/media/avatar/medium/068-4.png b/public/media/avatar/medium/068-4.png deleted file mode 100755 index fc411a3f2..000000000 Binary files a/public/media/avatar/medium/068-4.png and /dev/null differ diff --git a/public/media/avatar/medium/068-5.png b/public/media/avatar/medium/068-5.png deleted file mode 100755 index 169019d4e..000000000 Binary files a/public/media/avatar/medium/068-5.png and /dev/null differ diff --git a/public/media/avatar/medium/068-6.png b/public/media/avatar/medium/068-6.png deleted file mode 100755 index 13662a5e1..000000000 Binary files a/public/media/avatar/medium/068-6.png and /dev/null differ diff --git a/public/media/avatar/medium/068-7.png b/public/media/avatar/medium/068-7.png deleted file mode 100755 index 79ba06832..000000000 Binary files a/public/media/avatar/medium/068-7.png and /dev/null differ diff --git a/public/media/avatar/medium/068-8.png b/public/media/avatar/medium/068-8.png deleted file mode 100644 index ff06dd1ce..000000000 Binary files a/public/media/avatar/medium/068-8.png and /dev/null differ diff --git a/public/media/avatar/medium/068-9.png b/public/media/avatar/medium/068-9.png deleted file mode 100644 index 169019d4e..000000000 Binary files a/public/media/avatar/medium/068-9.png and /dev/null differ diff --git a/public/media/avatar/medium/069-1.png b/public/media/avatar/medium/069-1.png deleted file mode 100755 index 0f68dd597..000000000 Binary files a/public/media/avatar/medium/069-1.png and /dev/null differ diff --git a/public/media/avatar/medium/069-10.png b/public/media/avatar/medium/069-10.png deleted file mode 100644 index e03393e2a..000000000 Binary files a/public/media/avatar/medium/069-10.png and /dev/null differ diff --git a/public/media/avatar/medium/069-11.png b/public/media/avatar/medium/069-11.png deleted file mode 100644 index 1e73ff024..000000000 Binary files a/public/media/avatar/medium/069-11.png and /dev/null differ diff --git a/public/media/avatar/medium/069-12.png b/public/media/avatar/medium/069-12.png deleted file mode 100644 index b00fcfae6..000000000 Binary files a/public/media/avatar/medium/069-12.png and /dev/null differ diff --git a/public/media/avatar/medium/069-2.png b/public/media/avatar/medium/069-2.png deleted file mode 100755 index 8cc84e7a8..000000000 Binary files a/public/media/avatar/medium/069-2.png and /dev/null differ diff --git a/public/media/avatar/medium/069-3.png b/public/media/avatar/medium/069-3.png deleted file mode 100755 index b00fcfae6..000000000 Binary files a/public/media/avatar/medium/069-3.png and /dev/null differ diff --git a/public/media/avatar/medium/069-4.png b/public/media/avatar/medium/069-4.png deleted file mode 100755 index e4f33b1e0..000000000 Binary files a/public/media/avatar/medium/069-4.png and /dev/null differ diff --git a/public/media/avatar/medium/069-5.png b/public/media/avatar/medium/069-5.png deleted file mode 100755 index 085c5d17a..000000000 Binary files a/public/media/avatar/medium/069-5.png and /dev/null differ diff --git a/public/media/avatar/medium/069-6.png b/public/media/avatar/medium/069-6.png deleted file mode 100755 index dd770ed82..000000000 Binary files a/public/media/avatar/medium/069-6.png and /dev/null differ diff --git a/public/media/avatar/medium/069-7.png b/public/media/avatar/medium/069-7.png deleted file mode 100755 index fa3cd03a2..000000000 Binary files a/public/media/avatar/medium/069-7.png and /dev/null differ diff --git a/public/media/avatar/medium/069-8.png b/public/media/avatar/medium/069-8.png deleted file mode 100644 index fa3cd03a2..000000000 Binary files a/public/media/avatar/medium/069-8.png and /dev/null differ diff --git a/public/media/avatar/medium/069-9.png b/public/media/avatar/medium/069-9.png deleted file mode 100644 index 085c5d17a..000000000 Binary files a/public/media/avatar/medium/069-9.png and /dev/null differ diff --git a/public/media/avatar/medium/070-1.png b/public/media/avatar/medium/070-1.png deleted file mode 100755 index 07147467b..000000000 Binary files a/public/media/avatar/medium/070-1.png and /dev/null differ diff --git a/public/media/avatar/medium/070-10.png b/public/media/avatar/medium/070-10.png deleted file mode 100644 index 0b7c830dc..000000000 Binary files a/public/media/avatar/medium/070-10.png and /dev/null differ diff --git a/public/media/avatar/medium/070-11.png b/public/media/avatar/medium/070-11.png deleted file mode 100644 index 63e2e327f..000000000 Binary files a/public/media/avatar/medium/070-11.png and /dev/null differ diff --git a/public/media/avatar/medium/070-12.png b/public/media/avatar/medium/070-12.png deleted file mode 100644 index ebe8549e4..000000000 Binary files a/public/media/avatar/medium/070-12.png and /dev/null differ diff --git a/public/media/avatar/medium/070-2.png b/public/media/avatar/medium/070-2.png deleted file mode 100755 index bccf7b888..000000000 Binary files a/public/media/avatar/medium/070-2.png and /dev/null differ diff --git a/public/media/avatar/medium/070-3.png b/public/media/avatar/medium/070-3.png deleted file mode 100755 index 351fcf156..000000000 Binary files a/public/media/avatar/medium/070-3.png and /dev/null differ diff --git a/public/media/avatar/medium/070-4.png b/public/media/avatar/medium/070-4.png deleted file mode 100755 index b7a7fe8c8..000000000 Binary files a/public/media/avatar/medium/070-4.png and /dev/null differ diff --git a/public/media/avatar/medium/070-5.png b/public/media/avatar/medium/070-5.png deleted file mode 100755 index 4eecaeb77..000000000 Binary files a/public/media/avatar/medium/070-5.png and /dev/null differ diff --git a/public/media/avatar/medium/070-6.png b/public/media/avatar/medium/070-6.png deleted file mode 100755 index 6b2e686b0..000000000 Binary files a/public/media/avatar/medium/070-6.png and /dev/null differ diff --git a/public/media/avatar/medium/070-7.png b/public/media/avatar/medium/070-7.png deleted file mode 100755 index 1e78bb97e..000000000 Binary files a/public/media/avatar/medium/070-7.png and /dev/null differ diff --git a/public/media/avatar/medium/070-8.png b/public/media/avatar/medium/070-8.png deleted file mode 100644 index 1298c93ef..000000000 Binary files a/public/media/avatar/medium/070-8.png and /dev/null differ diff --git a/public/media/avatar/medium/070-9.png b/public/media/avatar/medium/070-9.png deleted file mode 100644 index 4eecaeb77..000000000 Binary files a/public/media/avatar/medium/070-9.png and /dev/null differ diff --git a/public/media/avatar/medium/071-1.png b/public/media/avatar/medium/071-1.png deleted file mode 100755 index 48e3db87a..000000000 Binary files a/public/media/avatar/medium/071-1.png and /dev/null differ diff --git a/public/media/avatar/medium/071-10.png b/public/media/avatar/medium/071-10.png deleted file mode 100644 index 11a31728b..000000000 Binary files a/public/media/avatar/medium/071-10.png and /dev/null differ diff --git a/public/media/avatar/medium/071-11.png b/public/media/avatar/medium/071-11.png deleted file mode 100644 index b535ad626..000000000 Binary files a/public/media/avatar/medium/071-11.png and /dev/null differ diff --git a/public/media/avatar/medium/071-12.png b/public/media/avatar/medium/071-12.png deleted file mode 100644 index 93d0c0679..000000000 Binary files a/public/media/avatar/medium/071-12.png and /dev/null differ diff --git a/public/media/avatar/medium/071-2.png b/public/media/avatar/medium/071-2.png deleted file mode 100755 index 75260bcba..000000000 Binary files a/public/media/avatar/medium/071-2.png and /dev/null differ diff --git a/public/media/avatar/medium/071-3.png b/public/media/avatar/medium/071-3.png deleted file mode 100755 index 93d0c0679..000000000 Binary files a/public/media/avatar/medium/071-3.png and /dev/null differ diff --git a/public/media/avatar/medium/071-4.png b/public/media/avatar/medium/071-4.png deleted file mode 100755 index e24585313..000000000 Binary files a/public/media/avatar/medium/071-4.png and /dev/null differ diff --git a/public/media/avatar/medium/071-5.png b/public/media/avatar/medium/071-5.png deleted file mode 100755 index c4909a9cb..000000000 Binary files a/public/media/avatar/medium/071-5.png and /dev/null differ diff --git a/public/media/avatar/medium/071-6.png b/public/media/avatar/medium/071-6.png deleted file mode 100755 index 377766292..000000000 Binary files a/public/media/avatar/medium/071-6.png and /dev/null differ diff --git a/public/media/avatar/medium/071-7.png b/public/media/avatar/medium/071-7.png deleted file mode 100755 index 6fddddc07..000000000 Binary files a/public/media/avatar/medium/071-7.png and /dev/null differ diff --git a/public/media/avatar/medium/071-8.png b/public/media/avatar/medium/071-8.png deleted file mode 100644 index 6fddddc07..000000000 Binary files a/public/media/avatar/medium/071-8.png and /dev/null differ diff --git a/public/media/avatar/medium/071-9.png b/public/media/avatar/medium/071-9.png deleted file mode 100644 index c4909a9cb..000000000 Binary files a/public/media/avatar/medium/071-9.png and /dev/null differ diff --git a/public/media/avatar/medium/072-1.png b/public/media/avatar/medium/072-1.png deleted file mode 100755 index 759845a63..000000000 Binary files a/public/media/avatar/medium/072-1.png and /dev/null differ diff --git a/public/media/avatar/medium/072-10.png b/public/media/avatar/medium/072-10.png deleted file mode 100644 index 2162429de..000000000 Binary files a/public/media/avatar/medium/072-10.png and /dev/null differ diff --git a/public/media/avatar/medium/072-11.png b/public/media/avatar/medium/072-11.png deleted file mode 100644 index cd599c14b..000000000 Binary files a/public/media/avatar/medium/072-11.png and /dev/null differ diff --git a/public/media/avatar/medium/072-12.png b/public/media/avatar/medium/072-12.png deleted file mode 100644 index bb8a33510..000000000 Binary files a/public/media/avatar/medium/072-12.png and /dev/null differ diff --git a/public/media/avatar/medium/072-2.png b/public/media/avatar/medium/072-2.png deleted file mode 100755 index 5e17fe9b3..000000000 Binary files a/public/media/avatar/medium/072-2.png and /dev/null differ diff --git a/public/media/avatar/medium/072-3.png b/public/media/avatar/medium/072-3.png deleted file mode 100755 index bb8a33510..000000000 Binary files a/public/media/avatar/medium/072-3.png and /dev/null differ diff --git a/public/media/avatar/medium/072-4.png b/public/media/avatar/medium/072-4.png deleted file mode 100755 index c899326b5..000000000 Binary files a/public/media/avatar/medium/072-4.png and /dev/null differ diff --git a/public/media/avatar/medium/072-5.png b/public/media/avatar/medium/072-5.png deleted file mode 100755 index 651af2e40..000000000 Binary files a/public/media/avatar/medium/072-5.png and /dev/null differ diff --git a/public/media/avatar/medium/072-6.png b/public/media/avatar/medium/072-6.png deleted file mode 100755 index 1f1fc2860..000000000 Binary files a/public/media/avatar/medium/072-6.png and /dev/null differ diff --git a/public/media/avatar/medium/072-7.png b/public/media/avatar/medium/072-7.png deleted file mode 100755 index a5fc63a21..000000000 Binary files a/public/media/avatar/medium/072-7.png and /dev/null differ diff --git a/public/media/avatar/medium/072-8.png b/public/media/avatar/medium/072-8.png deleted file mode 100644 index a5fc63a21..000000000 Binary files a/public/media/avatar/medium/072-8.png and /dev/null differ diff --git a/public/media/avatar/medium/072-9.png b/public/media/avatar/medium/072-9.png deleted file mode 100644 index 651af2e40..000000000 Binary files a/public/media/avatar/medium/072-9.png and /dev/null differ diff --git a/public/media/avatar/medium/073-1.png b/public/media/avatar/medium/073-1.png deleted file mode 100755 index d559d91da..000000000 Binary files a/public/media/avatar/medium/073-1.png and /dev/null differ diff --git a/public/media/avatar/medium/073-10.png b/public/media/avatar/medium/073-10.png deleted file mode 100644 index 0c8be7599..000000000 Binary files a/public/media/avatar/medium/073-10.png and /dev/null differ diff --git a/public/media/avatar/medium/073-11.png b/public/media/avatar/medium/073-11.png deleted file mode 100644 index 040acd1c3..000000000 Binary files a/public/media/avatar/medium/073-11.png and /dev/null differ diff --git a/public/media/avatar/medium/073-12.png b/public/media/avatar/medium/073-12.png deleted file mode 100644 index 15b3d9c2d..000000000 Binary files a/public/media/avatar/medium/073-12.png and /dev/null differ diff --git a/public/media/avatar/medium/073-2.png b/public/media/avatar/medium/073-2.png deleted file mode 100755 index b9d706b05..000000000 Binary files a/public/media/avatar/medium/073-2.png and /dev/null differ diff --git a/public/media/avatar/medium/073-3.png b/public/media/avatar/medium/073-3.png deleted file mode 100755 index 15b3d9c2d..000000000 Binary files a/public/media/avatar/medium/073-3.png and /dev/null differ diff --git a/public/media/avatar/medium/073-4.png b/public/media/avatar/medium/073-4.png deleted file mode 100755 index b2519cda8..000000000 Binary files a/public/media/avatar/medium/073-4.png and /dev/null differ diff --git a/public/media/avatar/medium/073-5.png b/public/media/avatar/medium/073-5.png deleted file mode 100755 index 85c127243..000000000 Binary files a/public/media/avatar/medium/073-5.png and /dev/null differ diff --git a/public/media/avatar/medium/073-6.png b/public/media/avatar/medium/073-6.png deleted file mode 100755 index 4a8d0c4c0..000000000 Binary files a/public/media/avatar/medium/073-6.png and /dev/null differ diff --git a/public/media/avatar/medium/073-7.png b/public/media/avatar/medium/073-7.png deleted file mode 100755 index 86d57523d..000000000 Binary files a/public/media/avatar/medium/073-7.png and /dev/null differ diff --git a/public/media/avatar/medium/073-8.png b/public/media/avatar/medium/073-8.png deleted file mode 100644 index b3b4512fc..000000000 Binary files a/public/media/avatar/medium/073-8.png and /dev/null differ diff --git a/public/media/avatar/medium/073-9.png b/public/media/avatar/medium/073-9.png deleted file mode 100644 index 85c127243..000000000 Binary files a/public/media/avatar/medium/073-9.png and /dev/null differ diff --git a/public/media/avatar/medium/074-1.png b/public/media/avatar/medium/074-1.png deleted file mode 100755 index 0648ed735..000000000 Binary files a/public/media/avatar/medium/074-1.png and /dev/null differ diff --git a/public/media/avatar/medium/074-10.png b/public/media/avatar/medium/074-10.png deleted file mode 100644 index d9862dae5..000000000 Binary files a/public/media/avatar/medium/074-10.png and /dev/null differ diff --git a/public/media/avatar/medium/074-11.png b/public/media/avatar/medium/074-11.png deleted file mode 100644 index 7a760d46a..000000000 Binary files a/public/media/avatar/medium/074-11.png and /dev/null differ diff --git a/public/media/avatar/medium/074-12.png b/public/media/avatar/medium/074-12.png deleted file mode 100644 index bffed3513..000000000 Binary files a/public/media/avatar/medium/074-12.png and /dev/null differ diff --git a/public/media/avatar/medium/074-2.png b/public/media/avatar/medium/074-2.png deleted file mode 100755 index 8342140ef..000000000 Binary files a/public/media/avatar/medium/074-2.png and /dev/null differ diff --git a/public/media/avatar/medium/074-3.png b/public/media/avatar/medium/074-3.png deleted file mode 100755 index bffed3513..000000000 Binary files a/public/media/avatar/medium/074-3.png and /dev/null differ diff --git a/public/media/avatar/medium/074-4.png b/public/media/avatar/medium/074-4.png deleted file mode 100755 index 54ea173cf..000000000 Binary files a/public/media/avatar/medium/074-4.png and /dev/null differ diff --git a/public/media/avatar/medium/074-5.png b/public/media/avatar/medium/074-5.png deleted file mode 100755 index afc300d78..000000000 Binary files a/public/media/avatar/medium/074-5.png and /dev/null differ diff --git a/public/media/avatar/medium/074-6.png b/public/media/avatar/medium/074-6.png deleted file mode 100755 index 46f6b8e7e..000000000 Binary files a/public/media/avatar/medium/074-6.png and /dev/null differ diff --git a/public/media/avatar/medium/074-7.png b/public/media/avatar/medium/074-7.png deleted file mode 100755 index 813c8ff65..000000000 Binary files a/public/media/avatar/medium/074-7.png and /dev/null differ diff --git a/public/media/avatar/medium/074-8.png b/public/media/avatar/medium/074-8.png deleted file mode 100644 index 9449aaa91..000000000 Binary files a/public/media/avatar/medium/074-8.png and /dev/null differ diff --git a/public/media/avatar/medium/074-9.png b/public/media/avatar/medium/074-9.png deleted file mode 100644 index afc300d78..000000000 Binary files a/public/media/avatar/medium/074-9.png and /dev/null differ diff --git a/public/media/avatar/medium/075-1.png b/public/media/avatar/medium/075-1.png deleted file mode 100755 index 05176c120..000000000 Binary files a/public/media/avatar/medium/075-1.png and /dev/null differ diff --git a/public/media/avatar/medium/075-10.png b/public/media/avatar/medium/075-10.png deleted file mode 100644 index bb04ef7dd..000000000 Binary files a/public/media/avatar/medium/075-10.png and /dev/null differ diff --git a/public/media/avatar/medium/075-11.png b/public/media/avatar/medium/075-11.png deleted file mode 100644 index 8f33b0dd4..000000000 Binary files a/public/media/avatar/medium/075-11.png and /dev/null differ diff --git a/public/media/avatar/medium/075-12.png b/public/media/avatar/medium/075-12.png deleted file mode 100644 index d6033f227..000000000 Binary files a/public/media/avatar/medium/075-12.png and /dev/null differ diff --git a/public/media/avatar/medium/075-2.png b/public/media/avatar/medium/075-2.png deleted file mode 100755 index 840b25763..000000000 Binary files a/public/media/avatar/medium/075-2.png and /dev/null differ diff --git a/public/media/avatar/medium/075-3.png b/public/media/avatar/medium/075-3.png deleted file mode 100755 index d6033f227..000000000 Binary files a/public/media/avatar/medium/075-3.png and /dev/null differ diff --git a/public/media/avatar/medium/075-4.png b/public/media/avatar/medium/075-4.png deleted file mode 100755 index 065967f48..000000000 Binary files a/public/media/avatar/medium/075-4.png and /dev/null differ diff --git a/public/media/avatar/medium/075-5.png b/public/media/avatar/medium/075-5.png deleted file mode 100755 index ab16b7380..000000000 Binary files a/public/media/avatar/medium/075-5.png and /dev/null differ diff --git a/public/media/avatar/medium/075-6.png b/public/media/avatar/medium/075-6.png deleted file mode 100755 index 2a692e0a2..000000000 Binary files a/public/media/avatar/medium/075-6.png and /dev/null differ diff --git a/public/media/avatar/medium/075-7.png b/public/media/avatar/medium/075-7.png deleted file mode 100755 index e0b6f2b2d..000000000 Binary files a/public/media/avatar/medium/075-7.png and /dev/null differ diff --git a/public/media/avatar/medium/075-8.png b/public/media/avatar/medium/075-8.png deleted file mode 100644 index bc15e9c26..000000000 Binary files a/public/media/avatar/medium/075-8.png and /dev/null differ diff --git a/public/media/avatar/medium/075-9.png b/public/media/avatar/medium/075-9.png deleted file mode 100644 index ab16b7380..000000000 Binary files a/public/media/avatar/medium/075-9.png and /dev/null differ diff --git a/public/media/avatar/medium/076-1.png b/public/media/avatar/medium/076-1.png deleted file mode 100755 index dcb31de75..000000000 Binary files a/public/media/avatar/medium/076-1.png and /dev/null differ diff --git a/public/media/avatar/medium/076-10.png b/public/media/avatar/medium/076-10.png deleted file mode 100644 index 6b4f218e2..000000000 Binary files a/public/media/avatar/medium/076-10.png and /dev/null differ diff --git a/public/media/avatar/medium/076-11.png b/public/media/avatar/medium/076-11.png deleted file mode 100644 index a725e6c50..000000000 Binary files a/public/media/avatar/medium/076-11.png and /dev/null differ diff --git a/public/media/avatar/medium/076-12.png b/public/media/avatar/medium/076-12.png deleted file mode 100644 index de20afcbe..000000000 Binary files a/public/media/avatar/medium/076-12.png and /dev/null differ diff --git a/public/media/avatar/medium/076-2.png b/public/media/avatar/medium/076-2.png deleted file mode 100755 index 935db7b27..000000000 Binary files a/public/media/avatar/medium/076-2.png and /dev/null differ diff --git a/public/media/avatar/medium/076-3.png b/public/media/avatar/medium/076-3.png deleted file mode 100755 index de20afcbe..000000000 Binary files a/public/media/avatar/medium/076-3.png and /dev/null differ diff --git a/public/media/avatar/medium/076-4.png b/public/media/avatar/medium/076-4.png deleted file mode 100755 index 9c5483281..000000000 Binary files a/public/media/avatar/medium/076-4.png and /dev/null differ diff --git a/public/media/avatar/medium/076-5.png b/public/media/avatar/medium/076-5.png deleted file mode 100755 index c5ef1e47e..000000000 Binary files a/public/media/avatar/medium/076-5.png and /dev/null differ diff --git a/public/media/avatar/medium/076-6.png b/public/media/avatar/medium/076-6.png deleted file mode 100755 index ca3382d6e..000000000 Binary files a/public/media/avatar/medium/076-6.png and /dev/null differ diff --git a/public/media/avatar/medium/076-7.png b/public/media/avatar/medium/076-7.png deleted file mode 100755 index b330f65e8..000000000 Binary files a/public/media/avatar/medium/076-7.png and /dev/null differ diff --git a/public/media/avatar/medium/076-8.png b/public/media/avatar/medium/076-8.png deleted file mode 100644 index b330f65e8..000000000 Binary files a/public/media/avatar/medium/076-8.png and /dev/null differ diff --git a/public/media/avatar/medium/076-9.png b/public/media/avatar/medium/076-9.png deleted file mode 100644 index c5ef1e47e..000000000 Binary files a/public/media/avatar/medium/076-9.png and /dev/null differ diff --git a/public/media/avatar/medium/077-1.png b/public/media/avatar/medium/077-1.png deleted file mode 100755 index 135db6768..000000000 Binary files a/public/media/avatar/medium/077-1.png and /dev/null differ diff --git a/public/media/avatar/medium/077-10.png b/public/media/avatar/medium/077-10.png deleted file mode 100644 index 006f47a52..000000000 Binary files a/public/media/avatar/medium/077-10.png and /dev/null differ diff --git a/public/media/avatar/medium/077-11.png b/public/media/avatar/medium/077-11.png deleted file mode 100644 index 4c1ea6133..000000000 Binary files a/public/media/avatar/medium/077-11.png and /dev/null differ diff --git a/public/media/avatar/medium/077-12.png b/public/media/avatar/medium/077-12.png deleted file mode 100644 index 5b35e26af..000000000 Binary files a/public/media/avatar/medium/077-12.png and /dev/null differ diff --git a/public/media/avatar/medium/077-2.png b/public/media/avatar/medium/077-2.png deleted file mode 100755 index 4cf6bc7c8..000000000 Binary files a/public/media/avatar/medium/077-2.png and /dev/null differ diff --git a/public/media/avatar/medium/077-3.png b/public/media/avatar/medium/077-3.png deleted file mode 100755 index 5b35e26af..000000000 Binary files a/public/media/avatar/medium/077-3.png and /dev/null differ diff --git a/public/media/avatar/medium/077-4.png b/public/media/avatar/medium/077-4.png deleted file mode 100755 index 872337580..000000000 Binary files a/public/media/avatar/medium/077-4.png and /dev/null differ diff --git a/public/media/avatar/medium/077-5.png b/public/media/avatar/medium/077-5.png deleted file mode 100755 index 8f2a07941..000000000 Binary files a/public/media/avatar/medium/077-5.png and /dev/null differ diff --git a/public/media/avatar/medium/077-6.png b/public/media/avatar/medium/077-6.png deleted file mode 100755 index 7626507b1..000000000 Binary files a/public/media/avatar/medium/077-6.png and /dev/null differ diff --git a/public/media/avatar/medium/077-7.png b/public/media/avatar/medium/077-7.png deleted file mode 100755 index 617ab5bd3..000000000 Binary files a/public/media/avatar/medium/077-7.png and /dev/null differ diff --git a/public/media/avatar/medium/077-8.png b/public/media/avatar/medium/077-8.png deleted file mode 100644 index 617ab5bd3..000000000 Binary files a/public/media/avatar/medium/077-8.png and /dev/null differ diff --git a/public/media/avatar/medium/077-9.png b/public/media/avatar/medium/077-9.png deleted file mode 100644 index 8f2a07941..000000000 Binary files a/public/media/avatar/medium/077-9.png and /dev/null differ diff --git a/public/media/avatar/medium/078-1.png b/public/media/avatar/medium/078-1.png deleted file mode 100755 index bd0fb2f67..000000000 Binary files a/public/media/avatar/medium/078-1.png and /dev/null differ diff --git a/public/media/avatar/medium/078-10.png b/public/media/avatar/medium/078-10.png deleted file mode 100644 index 35391bc4c..000000000 Binary files a/public/media/avatar/medium/078-10.png and /dev/null differ diff --git a/public/media/avatar/medium/078-11.png b/public/media/avatar/medium/078-11.png deleted file mode 100644 index e9ce8fc0b..000000000 Binary files a/public/media/avatar/medium/078-11.png and /dev/null differ diff --git a/public/media/avatar/medium/078-12.png b/public/media/avatar/medium/078-12.png deleted file mode 100644 index 17e249230..000000000 Binary files a/public/media/avatar/medium/078-12.png and /dev/null differ diff --git a/public/media/avatar/medium/078-2.png b/public/media/avatar/medium/078-2.png deleted file mode 100755 index bb92fa7ff..000000000 Binary files a/public/media/avatar/medium/078-2.png and /dev/null differ diff --git a/public/media/avatar/medium/078-3.png b/public/media/avatar/medium/078-3.png deleted file mode 100755 index 17e249230..000000000 Binary files a/public/media/avatar/medium/078-3.png and /dev/null differ diff --git a/public/media/avatar/medium/078-4.png b/public/media/avatar/medium/078-4.png deleted file mode 100755 index 68ed852c7..000000000 Binary files a/public/media/avatar/medium/078-4.png and /dev/null differ diff --git a/public/media/avatar/medium/078-5.png b/public/media/avatar/medium/078-5.png deleted file mode 100755 index 56c1fa058..000000000 Binary files a/public/media/avatar/medium/078-5.png and /dev/null differ diff --git a/public/media/avatar/medium/078-6.png b/public/media/avatar/medium/078-6.png deleted file mode 100755 index f9efd9fc5..000000000 Binary files a/public/media/avatar/medium/078-6.png and /dev/null differ diff --git a/public/media/avatar/medium/078-7.png b/public/media/avatar/medium/078-7.png deleted file mode 100755 index 7e4ef63a8..000000000 Binary files a/public/media/avatar/medium/078-7.png and /dev/null differ diff --git a/public/media/avatar/medium/078-8.png b/public/media/avatar/medium/078-8.png deleted file mode 100644 index 7e4ef63a8..000000000 Binary files a/public/media/avatar/medium/078-8.png and /dev/null differ diff --git a/public/media/avatar/medium/078-9.png b/public/media/avatar/medium/078-9.png deleted file mode 100644 index 56c1fa058..000000000 Binary files a/public/media/avatar/medium/078-9.png and /dev/null differ diff --git a/public/media/avatar/medium/079-1.png b/public/media/avatar/medium/079-1.png deleted file mode 100755 index 7be81faed..000000000 Binary files a/public/media/avatar/medium/079-1.png and /dev/null differ diff --git a/public/media/avatar/medium/079-10.png b/public/media/avatar/medium/079-10.png deleted file mode 100644 index eef890058..000000000 Binary files a/public/media/avatar/medium/079-10.png and /dev/null differ diff --git a/public/media/avatar/medium/079-11.png b/public/media/avatar/medium/079-11.png deleted file mode 100644 index fc5ac84a2..000000000 Binary files a/public/media/avatar/medium/079-11.png and /dev/null differ diff --git a/public/media/avatar/medium/079-12.png b/public/media/avatar/medium/079-12.png deleted file mode 100644 index 522514404..000000000 Binary files a/public/media/avatar/medium/079-12.png and /dev/null differ diff --git a/public/media/avatar/medium/079-2.png b/public/media/avatar/medium/079-2.png deleted file mode 100755 index eff92ea02..000000000 Binary files a/public/media/avatar/medium/079-2.png and /dev/null differ diff --git a/public/media/avatar/medium/079-3.png b/public/media/avatar/medium/079-3.png deleted file mode 100755 index 522514404..000000000 Binary files a/public/media/avatar/medium/079-3.png and /dev/null differ diff --git a/public/media/avatar/medium/079-4.png b/public/media/avatar/medium/079-4.png deleted file mode 100755 index 521d08ae1..000000000 Binary files a/public/media/avatar/medium/079-4.png and /dev/null differ diff --git a/public/media/avatar/medium/079-5.png b/public/media/avatar/medium/079-5.png deleted file mode 100755 index fc0c36729..000000000 Binary files a/public/media/avatar/medium/079-5.png and /dev/null differ diff --git a/public/media/avatar/medium/079-6.png b/public/media/avatar/medium/079-6.png deleted file mode 100755 index 2cf2805ad..000000000 Binary files a/public/media/avatar/medium/079-6.png and /dev/null differ diff --git a/public/media/avatar/medium/079-7.png b/public/media/avatar/medium/079-7.png deleted file mode 100755 index 7eb516815..000000000 Binary files a/public/media/avatar/medium/079-7.png and /dev/null differ diff --git a/public/media/avatar/medium/079-8.png b/public/media/avatar/medium/079-8.png deleted file mode 100644 index 7eb516815..000000000 Binary files a/public/media/avatar/medium/079-8.png and /dev/null differ diff --git a/public/media/avatar/medium/079-9.png b/public/media/avatar/medium/079-9.png deleted file mode 100644 index fc0c36729..000000000 Binary files a/public/media/avatar/medium/079-9.png and /dev/null differ diff --git a/public/media/avatar/medium/080-1.png b/public/media/avatar/medium/080-1.png deleted file mode 100755 index c89f59c8f..000000000 Binary files a/public/media/avatar/medium/080-1.png and /dev/null differ diff --git a/public/media/avatar/medium/080-10.png b/public/media/avatar/medium/080-10.png deleted file mode 100644 index 0cace294b..000000000 Binary files a/public/media/avatar/medium/080-10.png and /dev/null differ diff --git a/public/media/avatar/medium/080-11.png b/public/media/avatar/medium/080-11.png deleted file mode 100644 index df691e77b..000000000 Binary files a/public/media/avatar/medium/080-11.png and /dev/null differ diff --git a/public/media/avatar/medium/080-12.png b/public/media/avatar/medium/080-12.png deleted file mode 100644 index 3e309d110..000000000 Binary files a/public/media/avatar/medium/080-12.png and /dev/null differ diff --git a/public/media/avatar/medium/080-2.png b/public/media/avatar/medium/080-2.png deleted file mode 100755 index 15013da55..000000000 Binary files a/public/media/avatar/medium/080-2.png and /dev/null differ diff --git a/public/media/avatar/medium/080-3.png b/public/media/avatar/medium/080-3.png deleted file mode 100755 index 3e309d110..000000000 Binary files a/public/media/avatar/medium/080-3.png and /dev/null differ diff --git a/public/media/avatar/medium/080-4.png b/public/media/avatar/medium/080-4.png deleted file mode 100755 index 2b178ce97..000000000 Binary files a/public/media/avatar/medium/080-4.png and /dev/null differ diff --git a/public/media/avatar/medium/080-5.png b/public/media/avatar/medium/080-5.png deleted file mode 100755 index fb86f217b..000000000 Binary files a/public/media/avatar/medium/080-5.png and /dev/null differ diff --git a/public/media/avatar/medium/080-6.png b/public/media/avatar/medium/080-6.png deleted file mode 100755 index 070b3d141..000000000 Binary files a/public/media/avatar/medium/080-6.png and /dev/null differ diff --git a/public/media/avatar/medium/080-7.png b/public/media/avatar/medium/080-7.png deleted file mode 100755 index a5f41adbb..000000000 Binary files a/public/media/avatar/medium/080-7.png and /dev/null differ diff --git a/public/media/avatar/medium/080-8.png b/public/media/avatar/medium/080-8.png deleted file mode 100644 index a5f41adbb..000000000 Binary files a/public/media/avatar/medium/080-8.png and /dev/null differ diff --git a/public/media/avatar/medium/080-9.png b/public/media/avatar/medium/080-9.png deleted file mode 100644 index fb86f217b..000000000 Binary files a/public/media/avatar/medium/080-9.png and /dev/null differ diff --git a/public/media/avatar/medium/900-1.png b/public/media/avatar/medium/900-1.png deleted file mode 100644 index 8ecf8d80d..000000000 Binary files a/public/media/avatar/medium/900-1.png and /dev/null differ diff --git a/public/media/avatar/medium/900-10.png b/public/media/avatar/medium/900-10.png deleted file mode 100644 index 7afd77c55..000000000 Binary files a/public/media/avatar/medium/900-10.png and /dev/null differ diff --git a/public/media/avatar/medium/900-11.png b/public/media/avatar/medium/900-11.png deleted file mode 100644 index b63b2bef6..000000000 Binary files a/public/media/avatar/medium/900-11.png and /dev/null differ diff --git a/public/media/avatar/medium/900-12.png b/public/media/avatar/medium/900-12.png deleted file mode 100644 index 3e43893de..000000000 Binary files a/public/media/avatar/medium/900-12.png and /dev/null differ diff --git a/public/media/avatar/medium/900-2.png b/public/media/avatar/medium/900-2.png deleted file mode 100644 index d51c61997..000000000 Binary files a/public/media/avatar/medium/900-2.png and /dev/null differ diff --git a/public/media/avatar/medium/900-3.png b/public/media/avatar/medium/900-3.png deleted file mode 100644 index 3e43893de..000000000 Binary files a/public/media/avatar/medium/900-3.png and /dev/null differ diff --git a/public/media/avatar/medium/900-4.png b/public/media/avatar/medium/900-4.png deleted file mode 100644 index 60f8bf7fa..000000000 Binary files a/public/media/avatar/medium/900-4.png and /dev/null differ diff --git a/public/media/avatar/medium/900-5.png b/public/media/avatar/medium/900-5.png deleted file mode 100644 index 965f05563..000000000 Binary files a/public/media/avatar/medium/900-5.png and /dev/null differ diff --git a/public/media/avatar/medium/900-6.png b/public/media/avatar/medium/900-6.png deleted file mode 100644 index 32f5c7371..000000000 Binary files a/public/media/avatar/medium/900-6.png and /dev/null differ diff --git a/public/media/avatar/medium/900-7.png b/public/media/avatar/medium/900-7.png deleted file mode 100644 index a5b856d04..000000000 Binary files a/public/media/avatar/medium/900-7.png and /dev/null differ diff --git a/public/media/avatar/medium/900-8.png b/public/media/avatar/medium/900-8.png deleted file mode 100644 index 0c60b262d..000000000 Binary files a/public/media/avatar/medium/900-8.png and /dev/null differ diff --git a/public/media/avatar/medium/900-9.png b/public/media/avatar/medium/900-9.png deleted file mode 100644 index 965f05563..000000000 Binary files a/public/media/avatar/medium/900-9.png and /dev/null differ diff --git a/public/media/avatar/medium/901-1.png b/public/media/avatar/medium/901-1.png deleted file mode 100644 index 83b88080e..000000000 Binary files a/public/media/avatar/medium/901-1.png and /dev/null differ diff --git a/public/media/avatar/medium/901-10.png b/public/media/avatar/medium/901-10.png deleted file mode 100644 index 6080f5c44..000000000 Binary files a/public/media/avatar/medium/901-10.png and /dev/null differ diff --git a/public/media/avatar/medium/901-11.png b/public/media/avatar/medium/901-11.png deleted file mode 100644 index 640f91999..000000000 Binary files a/public/media/avatar/medium/901-11.png and /dev/null differ diff --git a/public/media/avatar/medium/901-12.png b/public/media/avatar/medium/901-12.png deleted file mode 100644 index fb958ce47..000000000 Binary files a/public/media/avatar/medium/901-12.png and /dev/null differ diff --git a/public/media/avatar/medium/901-2.png b/public/media/avatar/medium/901-2.png deleted file mode 100644 index ea8633cbd..000000000 Binary files a/public/media/avatar/medium/901-2.png and /dev/null differ diff --git a/public/media/avatar/medium/901-3.png b/public/media/avatar/medium/901-3.png deleted file mode 100644 index fb958ce47..000000000 Binary files a/public/media/avatar/medium/901-3.png and /dev/null differ diff --git a/public/media/avatar/medium/901-4.png b/public/media/avatar/medium/901-4.png deleted file mode 100644 index 14d108baf..000000000 Binary files a/public/media/avatar/medium/901-4.png and /dev/null differ diff --git a/public/media/avatar/medium/901-5.png b/public/media/avatar/medium/901-5.png deleted file mode 100644 index db330fc71..000000000 Binary files a/public/media/avatar/medium/901-5.png and /dev/null differ diff --git a/public/media/avatar/medium/901-6.png b/public/media/avatar/medium/901-6.png deleted file mode 100644 index a253cb29c..000000000 Binary files a/public/media/avatar/medium/901-6.png and /dev/null differ diff --git a/public/media/avatar/medium/901-7.png b/public/media/avatar/medium/901-7.png deleted file mode 100644 index b6f586d6d..000000000 Binary files a/public/media/avatar/medium/901-7.png and /dev/null differ diff --git a/public/media/avatar/medium/901-8.png b/public/media/avatar/medium/901-8.png deleted file mode 100644 index 573504603..000000000 Binary files a/public/media/avatar/medium/901-8.png and /dev/null differ diff --git a/public/media/avatar/medium/901-9.png b/public/media/avatar/medium/901-9.png deleted file mode 100644 index db330fc71..000000000 Binary files a/public/media/avatar/medium/901-9.png and /dev/null differ diff --git a/public/media/avatar/medium/902-1.png b/public/media/avatar/medium/902-1.png deleted file mode 100644 index 2182290c9..000000000 Binary files a/public/media/avatar/medium/902-1.png and /dev/null differ diff --git a/public/media/avatar/medium/902-10.png b/public/media/avatar/medium/902-10.png deleted file mode 100644 index 8dd2a366d..000000000 Binary files a/public/media/avatar/medium/902-10.png and /dev/null differ diff --git a/public/media/avatar/medium/902-11.png b/public/media/avatar/medium/902-11.png deleted file mode 100644 index f9fe15676..000000000 Binary files a/public/media/avatar/medium/902-11.png and /dev/null differ diff --git a/public/media/avatar/medium/902-12.png b/public/media/avatar/medium/902-12.png deleted file mode 100644 index dca8b4535..000000000 Binary files a/public/media/avatar/medium/902-12.png and /dev/null differ diff --git a/public/media/avatar/medium/902-2.png b/public/media/avatar/medium/902-2.png deleted file mode 100644 index 560d2cd29..000000000 Binary files a/public/media/avatar/medium/902-2.png and /dev/null differ diff --git a/public/media/avatar/medium/902-3.png b/public/media/avatar/medium/902-3.png deleted file mode 100644 index 2936b799d..000000000 Binary files a/public/media/avatar/medium/902-3.png and /dev/null differ diff --git a/public/media/avatar/medium/902-4.png b/public/media/avatar/medium/902-4.png deleted file mode 100644 index c7a8d6615..000000000 Binary files a/public/media/avatar/medium/902-4.png and /dev/null differ diff --git a/public/media/avatar/medium/902-5.png b/public/media/avatar/medium/902-5.png deleted file mode 100644 index 81887aea8..000000000 Binary files a/public/media/avatar/medium/902-5.png and /dev/null differ diff --git a/public/media/avatar/medium/902-6.png b/public/media/avatar/medium/902-6.png deleted file mode 100644 index ea51827bd..000000000 Binary files a/public/media/avatar/medium/902-6.png and /dev/null differ diff --git a/public/media/avatar/medium/902-7.png b/public/media/avatar/medium/902-7.png deleted file mode 100644 index f67980e00..000000000 Binary files a/public/media/avatar/medium/902-7.png and /dev/null differ diff --git a/public/media/avatar/medium/902-8.png b/public/media/avatar/medium/902-8.png deleted file mode 100644 index 81b19c7d8..000000000 Binary files a/public/media/avatar/medium/902-8.png and /dev/null differ diff --git a/public/media/avatar/medium/902-9.png b/public/media/avatar/medium/902-9.png deleted file mode 100644 index 81887aea8..000000000 Binary files a/public/media/avatar/medium/902-9.png and /dev/null differ diff --git a/public/media/avatar/medium/903-1.png b/public/media/avatar/medium/903-1.png deleted file mode 100644 index 98a674197..000000000 Binary files a/public/media/avatar/medium/903-1.png and /dev/null differ diff --git a/public/media/avatar/medium/903-10.png b/public/media/avatar/medium/903-10.png deleted file mode 100644 index 80433e642..000000000 Binary files a/public/media/avatar/medium/903-10.png and /dev/null differ diff --git a/public/media/avatar/medium/903-11.png b/public/media/avatar/medium/903-11.png deleted file mode 100644 index f718c18de..000000000 Binary files a/public/media/avatar/medium/903-11.png and /dev/null differ diff --git a/public/media/avatar/medium/903-12.png b/public/media/avatar/medium/903-12.png deleted file mode 100644 index a401fc2cb..000000000 Binary files a/public/media/avatar/medium/903-12.png and /dev/null differ diff --git a/public/media/avatar/medium/903-2.png b/public/media/avatar/medium/903-2.png deleted file mode 100644 index 3205b2ee9..000000000 Binary files a/public/media/avatar/medium/903-2.png and /dev/null differ diff --git a/public/media/avatar/medium/903-3.png b/public/media/avatar/medium/903-3.png deleted file mode 100644 index a401fc2cb..000000000 Binary files a/public/media/avatar/medium/903-3.png and /dev/null differ diff --git a/public/media/avatar/medium/903-4.png b/public/media/avatar/medium/903-4.png deleted file mode 100644 index e3c8301c4..000000000 Binary files a/public/media/avatar/medium/903-4.png and /dev/null differ diff --git a/public/media/avatar/medium/903-5.png b/public/media/avatar/medium/903-5.png deleted file mode 100644 index 2a6c81fcf..000000000 Binary files a/public/media/avatar/medium/903-5.png and /dev/null differ diff --git a/public/media/avatar/medium/903-6.png b/public/media/avatar/medium/903-6.png deleted file mode 100644 index f26872699..000000000 Binary files a/public/media/avatar/medium/903-6.png and /dev/null differ diff --git a/public/media/avatar/medium/903-7.png b/public/media/avatar/medium/903-7.png deleted file mode 100644 index 3cb08fabd..000000000 Binary files a/public/media/avatar/medium/903-7.png and /dev/null differ diff --git a/public/media/avatar/medium/903-8.png b/public/media/avatar/medium/903-8.png deleted file mode 100644 index 74a8a472c..000000000 Binary files a/public/media/avatar/medium/903-8.png and /dev/null differ diff --git a/public/media/avatar/medium/903-9.png b/public/media/avatar/medium/903-9.png deleted file mode 100644 index 2a6c81fcf..000000000 Binary files a/public/media/avatar/medium/903-9.png and /dev/null differ diff --git a/public/media/avatar/medium/904-1.png b/public/media/avatar/medium/904-1.png deleted file mode 100644 index 3e19555ad..000000000 Binary files a/public/media/avatar/medium/904-1.png and /dev/null differ diff --git a/public/media/avatar/medium/904-10.png b/public/media/avatar/medium/904-10.png deleted file mode 100644 index eeffa70e4..000000000 Binary files a/public/media/avatar/medium/904-10.png and /dev/null differ diff --git a/public/media/avatar/medium/904-11.png b/public/media/avatar/medium/904-11.png deleted file mode 100644 index a2d5daf86..000000000 Binary files a/public/media/avatar/medium/904-11.png and /dev/null differ diff --git a/public/media/avatar/medium/904-12.png b/public/media/avatar/medium/904-12.png deleted file mode 100644 index cda14c43e..000000000 Binary files a/public/media/avatar/medium/904-12.png and /dev/null differ diff --git a/public/media/avatar/medium/904-2.png b/public/media/avatar/medium/904-2.png deleted file mode 100644 index 8624a0343..000000000 Binary files a/public/media/avatar/medium/904-2.png and /dev/null differ diff --git a/public/media/avatar/medium/904-3.png b/public/media/avatar/medium/904-3.png deleted file mode 100644 index cda14c43e..000000000 Binary files a/public/media/avatar/medium/904-3.png and /dev/null differ diff --git a/public/media/avatar/medium/904-4.png b/public/media/avatar/medium/904-4.png deleted file mode 100644 index d219379eb..000000000 Binary files a/public/media/avatar/medium/904-4.png and /dev/null differ diff --git a/public/media/avatar/medium/904-5.png b/public/media/avatar/medium/904-5.png deleted file mode 100644 index 5897a2a48..000000000 Binary files a/public/media/avatar/medium/904-5.png and /dev/null differ diff --git a/public/media/avatar/medium/904-6.png b/public/media/avatar/medium/904-6.png deleted file mode 100644 index c280b8b75..000000000 Binary files a/public/media/avatar/medium/904-6.png and /dev/null differ diff --git a/public/media/avatar/medium/904-7.png b/public/media/avatar/medium/904-7.png deleted file mode 100644 index e26efe5b5..000000000 Binary files a/public/media/avatar/medium/904-7.png and /dev/null differ diff --git a/public/media/avatar/medium/904-8.png b/public/media/avatar/medium/904-8.png deleted file mode 100644 index 26d0a42fa..000000000 Binary files a/public/media/avatar/medium/904-8.png and /dev/null differ diff --git a/public/media/avatar/medium/904-9.png b/public/media/avatar/medium/904-9.png deleted file mode 100644 index 5897a2a48..000000000 Binary files a/public/media/avatar/medium/904-9.png and /dev/null differ diff --git a/public/media/avatar/medium/905-1.png b/public/media/avatar/medium/905-1.png deleted file mode 100644 index 279f2688e..000000000 Binary files a/public/media/avatar/medium/905-1.png and /dev/null differ diff --git a/public/media/avatar/medium/905-10.png b/public/media/avatar/medium/905-10.png deleted file mode 100644 index 77673547f..000000000 Binary files a/public/media/avatar/medium/905-10.png and /dev/null differ diff --git a/public/media/avatar/medium/905-11.png b/public/media/avatar/medium/905-11.png deleted file mode 100644 index e21e7d7b2..000000000 Binary files a/public/media/avatar/medium/905-11.png and /dev/null differ diff --git a/public/media/avatar/medium/905-12.png b/public/media/avatar/medium/905-12.png deleted file mode 100644 index dca044786..000000000 Binary files a/public/media/avatar/medium/905-12.png and /dev/null differ diff --git a/public/media/avatar/medium/905-2.png b/public/media/avatar/medium/905-2.png deleted file mode 100644 index ad6055dc5..000000000 Binary files a/public/media/avatar/medium/905-2.png and /dev/null differ diff --git a/public/media/avatar/medium/905-3.png b/public/media/avatar/medium/905-3.png deleted file mode 100644 index 760901ff8..000000000 Binary files a/public/media/avatar/medium/905-3.png and /dev/null differ diff --git a/public/media/avatar/medium/905-4.png b/public/media/avatar/medium/905-4.png deleted file mode 100644 index 57b62873c..000000000 Binary files a/public/media/avatar/medium/905-4.png and /dev/null differ diff --git a/public/media/avatar/medium/905-5.png b/public/media/avatar/medium/905-5.png deleted file mode 100644 index a7b4aeddb..000000000 Binary files a/public/media/avatar/medium/905-5.png and /dev/null differ diff --git a/public/media/avatar/medium/905-6.png b/public/media/avatar/medium/905-6.png deleted file mode 100644 index 92a8ffa94..000000000 Binary files a/public/media/avatar/medium/905-6.png and /dev/null differ diff --git a/public/media/avatar/medium/905-7.png b/public/media/avatar/medium/905-7.png deleted file mode 100644 index a6f40f006..000000000 Binary files a/public/media/avatar/medium/905-7.png and /dev/null differ diff --git a/public/media/avatar/medium/905-8.png b/public/media/avatar/medium/905-8.png deleted file mode 100644 index 1c5654d2b..000000000 Binary files a/public/media/avatar/medium/905-8.png and /dev/null differ diff --git a/public/media/avatar/medium/905-9.png b/public/media/avatar/medium/905-9.png deleted file mode 100644 index a7b4aeddb..000000000 Binary files a/public/media/avatar/medium/905-9.png and /dev/null differ diff --git a/public/media/avatar/medium/color-1.png b/public/media/avatar/medium/color-1.png deleted file mode 100755 index d9bc851af..000000000 Binary files a/public/media/avatar/medium/color-1.png and /dev/null differ diff --git a/public/media/avatar/medium/color-10.png b/public/media/avatar/medium/color-10.png deleted file mode 100644 index 6cef26de1..000000000 Binary files a/public/media/avatar/medium/color-10.png and /dev/null differ diff --git a/public/media/avatar/medium/color-11.png b/public/media/avatar/medium/color-11.png deleted file mode 100644 index ff2802cc0..000000000 Binary files a/public/media/avatar/medium/color-11.png and /dev/null differ diff --git a/public/media/avatar/medium/color-12.png b/public/media/avatar/medium/color-12.png deleted file mode 100644 index 671afc025..000000000 Binary files a/public/media/avatar/medium/color-12.png and /dev/null differ diff --git a/public/media/avatar/medium/color-2.png b/public/media/avatar/medium/color-2.png deleted file mode 100755 index 2b790a9c8..000000000 Binary files a/public/media/avatar/medium/color-2.png and /dev/null differ diff --git a/public/media/avatar/medium/color-3.png b/public/media/avatar/medium/color-3.png deleted file mode 100755 index 935e529eb..000000000 Binary files a/public/media/avatar/medium/color-3.png and /dev/null differ diff --git a/public/media/avatar/medium/color-4.png b/public/media/avatar/medium/color-4.png deleted file mode 100755 index 54fff3644..000000000 Binary files a/public/media/avatar/medium/color-4.png and /dev/null differ diff --git a/public/media/avatar/medium/color-5.png b/public/media/avatar/medium/color-5.png deleted file mode 100755 index d73c29ef9..000000000 Binary files a/public/media/avatar/medium/color-5.png and /dev/null differ diff --git a/public/media/avatar/medium/color-6.png b/public/media/avatar/medium/color-6.png deleted file mode 100755 index 062337b25..000000000 Binary files a/public/media/avatar/medium/color-6.png and /dev/null differ diff --git a/public/media/avatar/medium/color-7.png b/public/media/avatar/medium/color-7.png deleted file mode 100755 index f388c3de2..000000000 Binary files a/public/media/avatar/medium/color-7.png and /dev/null differ diff --git a/public/media/avatar/medium/color-8.png b/public/media/avatar/medium/color-8.png deleted file mode 100644 index 1f3c206ff..000000000 Binary files a/public/media/avatar/medium/color-8.png and /dev/null differ diff --git a/public/media/avatar/medium/color-9.png b/public/media/avatar/medium/color-9.png deleted file mode 100644 index 5eeac15f9..000000000 Binary files a/public/media/avatar/medium/color-9.png and /dev/null differ diff --git a/public/media/avatar/medium/empty.png b/public/media/avatar/medium/empty.png deleted file mode 100755 index 45652519e..000000000 Binary files a/public/media/avatar/medium/empty.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-1.png b/public/media/avatar/medium/jm-1.png deleted file mode 100755 index 6b61473c9..000000000 Binary files a/public/media/avatar/medium/jm-1.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-10.png b/public/media/avatar/medium/jm-10.png deleted file mode 100644 index 571aa7c6a..000000000 Binary files a/public/media/avatar/medium/jm-10.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-11.png b/public/media/avatar/medium/jm-11.png deleted file mode 100644 index 5b2efbbc2..000000000 Binary files a/public/media/avatar/medium/jm-11.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-12.png b/public/media/avatar/medium/jm-12.png deleted file mode 100644 index 595dd4e09..000000000 Binary files a/public/media/avatar/medium/jm-12.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-2.png b/public/media/avatar/medium/jm-2.png deleted file mode 100755 index 69ee649ed..000000000 Binary files a/public/media/avatar/medium/jm-2.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-3.png b/public/media/avatar/medium/jm-3.png deleted file mode 100755 index 595dd4e09..000000000 Binary files a/public/media/avatar/medium/jm-3.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-4.png b/public/media/avatar/medium/jm-4.png deleted file mode 100755 index 865b50ef7..000000000 Binary files a/public/media/avatar/medium/jm-4.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-5.png b/public/media/avatar/medium/jm-5.png deleted file mode 100755 index 4c8f718ed..000000000 Binary files a/public/media/avatar/medium/jm-5.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-6.png b/public/media/avatar/medium/jm-6.png deleted file mode 100755 index bfd1be2c5..000000000 Binary files a/public/media/avatar/medium/jm-6.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-7.png b/public/media/avatar/medium/jm-7.png deleted file mode 100755 index 5467ff454..000000000 Binary files a/public/media/avatar/medium/jm-7.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-8.png b/public/media/avatar/medium/jm-8.png deleted file mode 100644 index d6dcd02c0..000000000 Binary files a/public/media/avatar/medium/jm-8.png and /dev/null differ diff --git a/public/media/avatar/medium/jm-9.png b/public/media/avatar/medium/jm-9.png deleted file mode 100644 index 4c8f718ed..000000000 Binary files a/public/media/avatar/medium/jm-9.png and /dev/null differ diff --git a/public/media/avatar/medium/jm.png b/public/media/avatar/medium/jm.png deleted file mode 100755 index 5a141dca5..000000000 Binary files a/public/media/avatar/medium/jm.png and /dev/null differ diff --git a/public/media/avatar/medium/multi.png b/public/media/avatar/medium/multi.png deleted file mode 100644 index 45652519e..000000000 Binary files a/public/media/avatar/medium/multi.png and /dev/null differ diff --git a/public/media/avatar/medium/rebel.png b/public/media/avatar/medium/rebel.png deleted file mode 100755 index 0233a0051..000000000 Binary files a/public/media/avatar/medium/rebel.png and /dev/null differ diff --git a/public/media/avatar/small/001-1.png b/public/media/avatar/small/001-1.png deleted file mode 100755 index 921ec0846..000000000 Binary files a/public/media/avatar/small/001-1.png and /dev/null differ diff --git a/public/media/avatar/small/001-10.png b/public/media/avatar/small/001-10.png deleted file mode 100644 index 356b84a19..000000000 Binary files a/public/media/avatar/small/001-10.png and /dev/null differ diff --git a/public/media/avatar/small/001-11.png b/public/media/avatar/small/001-11.png deleted file mode 100644 index 2960df136..000000000 Binary files a/public/media/avatar/small/001-11.png and /dev/null differ diff --git a/public/media/avatar/small/001-12.png b/public/media/avatar/small/001-12.png deleted file mode 100644 index d0d35781c..000000000 Binary files a/public/media/avatar/small/001-12.png and /dev/null differ diff --git a/public/media/avatar/small/001-2.png b/public/media/avatar/small/001-2.png deleted file mode 100755 index 5e10ea107..000000000 Binary files a/public/media/avatar/small/001-2.png and /dev/null differ diff --git a/public/media/avatar/small/001-3.png b/public/media/avatar/small/001-3.png deleted file mode 100755 index d0d35781c..000000000 Binary files a/public/media/avatar/small/001-3.png and /dev/null differ diff --git a/public/media/avatar/small/001-4.png b/public/media/avatar/small/001-4.png deleted file mode 100755 index 188573e76..000000000 Binary files a/public/media/avatar/small/001-4.png and /dev/null differ diff --git a/public/media/avatar/small/001-5.png b/public/media/avatar/small/001-5.png deleted file mode 100755 index 91f6f4033..000000000 Binary files a/public/media/avatar/small/001-5.png and /dev/null differ diff --git a/public/media/avatar/small/001-6.png b/public/media/avatar/small/001-6.png deleted file mode 100755 index 0435906bd..000000000 Binary files a/public/media/avatar/small/001-6.png and /dev/null differ diff --git a/public/media/avatar/small/001-7.png b/public/media/avatar/small/001-7.png deleted file mode 100755 index 8cfafee4e..000000000 Binary files a/public/media/avatar/small/001-7.png and /dev/null differ diff --git a/public/media/avatar/small/001-8.png b/public/media/avatar/small/001-8.png deleted file mode 100644 index eadf62307..000000000 Binary files a/public/media/avatar/small/001-8.png and /dev/null differ diff --git a/public/media/avatar/small/001-9.png b/public/media/avatar/small/001-9.png deleted file mode 100644 index 91f6f4033..000000000 Binary files a/public/media/avatar/small/001-9.png and /dev/null differ diff --git a/public/media/avatar/small/002-1.png b/public/media/avatar/small/002-1.png deleted file mode 100755 index 8825f53d6..000000000 Binary files a/public/media/avatar/small/002-1.png and /dev/null differ diff --git a/public/media/avatar/small/002-10.png b/public/media/avatar/small/002-10.png deleted file mode 100644 index af5cbe29e..000000000 Binary files a/public/media/avatar/small/002-10.png and /dev/null differ diff --git a/public/media/avatar/small/002-11.png b/public/media/avatar/small/002-11.png deleted file mode 100644 index 58d132acd..000000000 Binary files a/public/media/avatar/small/002-11.png and /dev/null differ diff --git a/public/media/avatar/small/002-12.png b/public/media/avatar/small/002-12.png deleted file mode 100644 index 2edbb6e2e..000000000 Binary files a/public/media/avatar/small/002-12.png and /dev/null differ diff --git a/public/media/avatar/small/002-2.png b/public/media/avatar/small/002-2.png deleted file mode 100755 index ef6a46a5b..000000000 Binary files a/public/media/avatar/small/002-2.png and /dev/null differ diff --git a/public/media/avatar/small/002-3.png b/public/media/avatar/small/002-3.png deleted file mode 100755 index 2edbb6e2e..000000000 Binary files a/public/media/avatar/small/002-3.png and /dev/null differ diff --git a/public/media/avatar/small/002-4.png b/public/media/avatar/small/002-4.png deleted file mode 100755 index 6a9b02496..000000000 Binary files a/public/media/avatar/small/002-4.png and /dev/null differ diff --git a/public/media/avatar/small/002-5.png b/public/media/avatar/small/002-5.png deleted file mode 100755 index 0f81b3ae8..000000000 Binary files a/public/media/avatar/small/002-5.png and /dev/null differ diff --git a/public/media/avatar/small/002-6.png b/public/media/avatar/small/002-6.png deleted file mode 100755 index ff25824c6..000000000 Binary files a/public/media/avatar/small/002-6.png and /dev/null differ diff --git a/public/media/avatar/small/002-7.png b/public/media/avatar/small/002-7.png deleted file mode 100755 index d59d737b9..000000000 Binary files a/public/media/avatar/small/002-7.png and /dev/null differ diff --git a/public/media/avatar/small/002-8.png b/public/media/avatar/small/002-8.png deleted file mode 100644 index cabdc05d8..000000000 Binary files a/public/media/avatar/small/002-8.png and /dev/null differ diff --git a/public/media/avatar/small/002-9.png b/public/media/avatar/small/002-9.png deleted file mode 100644 index 0f81b3ae8..000000000 Binary files a/public/media/avatar/small/002-9.png and /dev/null differ diff --git a/public/media/avatar/small/003-1.png b/public/media/avatar/small/003-1.png deleted file mode 100755 index 81b0e203f..000000000 Binary files a/public/media/avatar/small/003-1.png and /dev/null differ diff --git a/public/media/avatar/small/003-10.png b/public/media/avatar/small/003-10.png deleted file mode 100644 index 77c48d7ef..000000000 Binary files a/public/media/avatar/small/003-10.png and /dev/null differ diff --git a/public/media/avatar/small/003-11.png b/public/media/avatar/small/003-11.png deleted file mode 100644 index 75a62aa7e..000000000 Binary files a/public/media/avatar/small/003-11.png and /dev/null differ diff --git a/public/media/avatar/small/003-12.png b/public/media/avatar/small/003-12.png deleted file mode 100644 index bb97d4ab1..000000000 Binary files a/public/media/avatar/small/003-12.png and /dev/null differ diff --git a/public/media/avatar/small/003-2.png b/public/media/avatar/small/003-2.png deleted file mode 100755 index c5ea46479..000000000 Binary files a/public/media/avatar/small/003-2.png and /dev/null differ diff --git a/public/media/avatar/small/003-3.png b/public/media/avatar/small/003-3.png deleted file mode 100755 index bb97d4ab1..000000000 Binary files a/public/media/avatar/small/003-3.png and /dev/null differ diff --git a/public/media/avatar/small/003-4.png b/public/media/avatar/small/003-4.png deleted file mode 100755 index e98ff749c..000000000 Binary files a/public/media/avatar/small/003-4.png and /dev/null differ diff --git a/public/media/avatar/small/003-5.png b/public/media/avatar/small/003-5.png deleted file mode 100755 index d257e08da..000000000 Binary files a/public/media/avatar/small/003-5.png and /dev/null differ diff --git a/public/media/avatar/small/003-6.png b/public/media/avatar/small/003-6.png deleted file mode 100755 index 355fcb349..000000000 Binary files a/public/media/avatar/small/003-6.png and /dev/null differ diff --git a/public/media/avatar/small/003-7.png b/public/media/avatar/small/003-7.png deleted file mode 100755 index 4be6a2097..000000000 Binary files a/public/media/avatar/small/003-7.png and /dev/null differ diff --git a/public/media/avatar/small/003-8.png b/public/media/avatar/small/003-8.png deleted file mode 100644 index a90f6ae5b..000000000 Binary files a/public/media/avatar/small/003-8.png and /dev/null differ diff --git a/public/media/avatar/small/003-9.png b/public/media/avatar/small/003-9.png deleted file mode 100644 index d257e08da..000000000 Binary files a/public/media/avatar/small/003-9.png and /dev/null differ diff --git a/public/media/avatar/small/004-1.png b/public/media/avatar/small/004-1.png deleted file mode 100755 index ed42549d8..000000000 Binary files a/public/media/avatar/small/004-1.png and /dev/null differ diff --git a/public/media/avatar/small/004-10.png b/public/media/avatar/small/004-10.png deleted file mode 100644 index b3ec68d00..000000000 Binary files a/public/media/avatar/small/004-10.png and /dev/null differ diff --git a/public/media/avatar/small/004-11.png b/public/media/avatar/small/004-11.png deleted file mode 100644 index 0443ced35..000000000 Binary files a/public/media/avatar/small/004-11.png and /dev/null differ diff --git a/public/media/avatar/small/004-12.png b/public/media/avatar/small/004-12.png deleted file mode 100644 index dc057378d..000000000 Binary files a/public/media/avatar/small/004-12.png and /dev/null differ diff --git a/public/media/avatar/small/004-2.png b/public/media/avatar/small/004-2.png deleted file mode 100755 index 82e92a9f5..000000000 Binary files a/public/media/avatar/small/004-2.png and /dev/null differ diff --git a/public/media/avatar/small/004-3.png b/public/media/avatar/small/004-3.png deleted file mode 100755 index dc057378d..000000000 Binary files a/public/media/avatar/small/004-3.png and /dev/null differ diff --git a/public/media/avatar/small/004-4.png b/public/media/avatar/small/004-4.png deleted file mode 100755 index 274efcb19..000000000 Binary files a/public/media/avatar/small/004-4.png and /dev/null differ diff --git a/public/media/avatar/small/004-5.png b/public/media/avatar/small/004-5.png deleted file mode 100755 index a942eb3f6..000000000 Binary files a/public/media/avatar/small/004-5.png and /dev/null differ diff --git a/public/media/avatar/small/004-6.png b/public/media/avatar/small/004-6.png deleted file mode 100755 index eedecc5c9..000000000 Binary files a/public/media/avatar/small/004-6.png and /dev/null differ diff --git a/public/media/avatar/small/004-7.png b/public/media/avatar/small/004-7.png deleted file mode 100755 index 6fe9ee594..000000000 Binary files a/public/media/avatar/small/004-7.png and /dev/null differ diff --git a/public/media/avatar/small/004-8.png b/public/media/avatar/small/004-8.png deleted file mode 100644 index 701ac022e..000000000 Binary files a/public/media/avatar/small/004-8.png and /dev/null differ diff --git a/public/media/avatar/small/004-9.png b/public/media/avatar/small/004-9.png deleted file mode 100644 index a942eb3f6..000000000 Binary files a/public/media/avatar/small/004-9.png and /dev/null differ diff --git a/public/media/avatar/small/005-1.png b/public/media/avatar/small/005-1.png deleted file mode 100755 index b5892c757..000000000 Binary files a/public/media/avatar/small/005-1.png and /dev/null differ diff --git a/public/media/avatar/small/005-10.png b/public/media/avatar/small/005-10.png deleted file mode 100644 index fdfcaa256..000000000 Binary files a/public/media/avatar/small/005-10.png and /dev/null differ diff --git a/public/media/avatar/small/005-11.png b/public/media/avatar/small/005-11.png deleted file mode 100644 index 5925e6c79..000000000 Binary files a/public/media/avatar/small/005-11.png and /dev/null differ diff --git a/public/media/avatar/small/005-12.png b/public/media/avatar/small/005-12.png deleted file mode 100644 index 93b917312..000000000 Binary files a/public/media/avatar/small/005-12.png and /dev/null differ diff --git a/public/media/avatar/small/005-2.png b/public/media/avatar/small/005-2.png deleted file mode 100755 index c4003d3e4..000000000 Binary files a/public/media/avatar/small/005-2.png and /dev/null differ diff --git a/public/media/avatar/small/005-3.png b/public/media/avatar/small/005-3.png deleted file mode 100755 index 93b917312..000000000 Binary files a/public/media/avatar/small/005-3.png and /dev/null differ diff --git a/public/media/avatar/small/005-4.png b/public/media/avatar/small/005-4.png deleted file mode 100755 index 8f595c8de..000000000 Binary files a/public/media/avatar/small/005-4.png and /dev/null differ diff --git a/public/media/avatar/small/005-5.png b/public/media/avatar/small/005-5.png deleted file mode 100755 index b0f68c261..000000000 Binary files a/public/media/avatar/small/005-5.png and /dev/null differ diff --git a/public/media/avatar/small/005-6.png b/public/media/avatar/small/005-6.png deleted file mode 100755 index c16866978..000000000 Binary files a/public/media/avatar/small/005-6.png and /dev/null differ diff --git a/public/media/avatar/small/005-7.png b/public/media/avatar/small/005-7.png deleted file mode 100755 index bd0d6caac..000000000 Binary files a/public/media/avatar/small/005-7.png and /dev/null differ diff --git a/public/media/avatar/small/005-8.png b/public/media/avatar/small/005-8.png deleted file mode 100644 index 0afa82b8c..000000000 Binary files a/public/media/avatar/small/005-8.png and /dev/null differ diff --git a/public/media/avatar/small/005-9.png b/public/media/avatar/small/005-9.png deleted file mode 100644 index b0f68c261..000000000 Binary files a/public/media/avatar/small/005-9.png and /dev/null differ diff --git a/public/media/avatar/small/006-1.png b/public/media/avatar/small/006-1.png deleted file mode 100755 index b432d881b..000000000 Binary files a/public/media/avatar/small/006-1.png and /dev/null differ diff --git a/public/media/avatar/small/006-10.png b/public/media/avatar/small/006-10.png deleted file mode 100644 index 0de730af1..000000000 Binary files a/public/media/avatar/small/006-10.png and /dev/null differ diff --git a/public/media/avatar/small/006-11.png b/public/media/avatar/small/006-11.png deleted file mode 100644 index c05ea5ea9..000000000 Binary files a/public/media/avatar/small/006-11.png and /dev/null differ diff --git a/public/media/avatar/small/006-12.png b/public/media/avatar/small/006-12.png deleted file mode 100644 index 8027393f5..000000000 Binary files a/public/media/avatar/small/006-12.png and /dev/null differ diff --git a/public/media/avatar/small/006-2.png b/public/media/avatar/small/006-2.png deleted file mode 100755 index 5c0dac88b..000000000 Binary files a/public/media/avatar/small/006-2.png and /dev/null differ diff --git a/public/media/avatar/small/006-3.png b/public/media/avatar/small/006-3.png deleted file mode 100755 index 8027393f5..000000000 Binary files a/public/media/avatar/small/006-3.png and /dev/null differ diff --git a/public/media/avatar/small/006-4.png b/public/media/avatar/small/006-4.png deleted file mode 100755 index 86adf7030..000000000 Binary files a/public/media/avatar/small/006-4.png and /dev/null differ diff --git a/public/media/avatar/small/006-5.png b/public/media/avatar/small/006-5.png deleted file mode 100755 index d0cd68c73..000000000 Binary files a/public/media/avatar/small/006-5.png and /dev/null differ diff --git a/public/media/avatar/small/006-6.png b/public/media/avatar/small/006-6.png deleted file mode 100755 index 6366e716b..000000000 Binary files a/public/media/avatar/small/006-6.png and /dev/null differ diff --git a/public/media/avatar/small/006-7.png b/public/media/avatar/small/006-7.png deleted file mode 100755 index 4724e289f..000000000 Binary files a/public/media/avatar/small/006-7.png and /dev/null differ diff --git a/public/media/avatar/small/006-8.png b/public/media/avatar/small/006-8.png deleted file mode 100644 index 474922eb8..000000000 Binary files a/public/media/avatar/small/006-8.png and /dev/null differ diff --git a/public/media/avatar/small/006-9.png b/public/media/avatar/small/006-9.png deleted file mode 100644 index d0cd68c73..000000000 Binary files a/public/media/avatar/small/006-9.png and /dev/null differ diff --git a/public/media/avatar/small/007-1.png b/public/media/avatar/small/007-1.png deleted file mode 100755 index a1c250b8b..000000000 Binary files a/public/media/avatar/small/007-1.png and /dev/null differ diff --git a/public/media/avatar/small/007-10.png b/public/media/avatar/small/007-10.png deleted file mode 100644 index fdb275909..000000000 Binary files a/public/media/avatar/small/007-10.png and /dev/null differ diff --git a/public/media/avatar/small/007-11.png b/public/media/avatar/small/007-11.png deleted file mode 100644 index 819dcd7f0..000000000 Binary files a/public/media/avatar/small/007-11.png and /dev/null differ diff --git a/public/media/avatar/small/007-12.png b/public/media/avatar/small/007-12.png deleted file mode 100644 index c47c49ad0..000000000 Binary files a/public/media/avatar/small/007-12.png and /dev/null differ diff --git a/public/media/avatar/small/007-2.png b/public/media/avatar/small/007-2.png deleted file mode 100755 index 2b40417e5..000000000 Binary files a/public/media/avatar/small/007-2.png and /dev/null differ diff --git a/public/media/avatar/small/007-3.png b/public/media/avatar/small/007-3.png deleted file mode 100755 index c47c49ad0..000000000 Binary files a/public/media/avatar/small/007-3.png and /dev/null differ diff --git a/public/media/avatar/small/007-4.png b/public/media/avatar/small/007-4.png deleted file mode 100755 index 257e0b5e9..000000000 Binary files a/public/media/avatar/small/007-4.png and /dev/null differ diff --git a/public/media/avatar/small/007-5.png b/public/media/avatar/small/007-5.png deleted file mode 100755 index 12f81adc0..000000000 Binary files a/public/media/avatar/small/007-5.png and /dev/null differ diff --git a/public/media/avatar/small/007-6.png b/public/media/avatar/small/007-6.png deleted file mode 100755 index 5e2fb6733..000000000 Binary files a/public/media/avatar/small/007-6.png and /dev/null differ diff --git a/public/media/avatar/small/007-7.png b/public/media/avatar/small/007-7.png deleted file mode 100755 index c21595e24..000000000 Binary files a/public/media/avatar/small/007-7.png and /dev/null differ diff --git a/public/media/avatar/small/007-8.png b/public/media/avatar/small/007-8.png deleted file mode 100644 index c3b6ae42d..000000000 Binary files a/public/media/avatar/small/007-8.png and /dev/null differ diff --git a/public/media/avatar/small/007-9.png b/public/media/avatar/small/007-9.png deleted file mode 100644 index 12f81adc0..000000000 Binary files a/public/media/avatar/small/007-9.png and /dev/null differ diff --git a/public/media/avatar/small/008-1.png b/public/media/avatar/small/008-1.png deleted file mode 100755 index 51d95b5b9..000000000 Binary files a/public/media/avatar/small/008-1.png and /dev/null differ diff --git a/public/media/avatar/small/008-10.png b/public/media/avatar/small/008-10.png deleted file mode 100644 index 42f5fb1a4..000000000 Binary files a/public/media/avatar/small/008-10.png and /dev/null differ diff --git a/public/media/avatar/small/008-11.png b/public/media/avatar/small/008-11.png deleted file mode 100644 index e6ccae5df..000000000 Binary files a/public/media/avatar/small/008-11.png and /dev/null differ diff --git a/public/media/avatar/small/008-12.png b/public/media/avatar/small/008-12.png deleted file mode 100644 index a0fcae024..000000000 Binary files a/public/media/avatar/small/008-12.png and /dev/null differ diff --git a/public/media/avatar/small/008-2.png b/public/media/avatar/small/008-2.png deleted file mode 100755 index 68cf4fd5e..000000000 Binary files a/public/media/avatar/small/008-2.png and /dev/null differ diff --git a/public/media/avatar/small/008-3.png b/public/media/avatar/small/008-3.png deleted file mode 100755 index a0fcae024..000000000 Binary files a/public/media/avatar/small/008-3.png and /dev/null differ diff --git a/public/media/avatar/small/008-4.png b/public/media/avatar/small/008-4.png deleted file mode 100755 index 1393ef98a..000000000 Binary files a/public/media/avatar/small/008-4.png and /dev/null differ diff --git a/public/media/avatar/small/008-5.png b/public/media/avatar/small/008-5.png deleted file mode 100755 index 01a6a5fad..000000000 Binary files a/public/media/avatar/small/008-5.png and /dev/null differ diff --git a/public/media/avatar/small/008-6.png b/public/media/avatar/small/008-6.png deleted file mode 100755 index c369f3ded..000000000 Binary files a/public/media/avatar/small/008-6.png and /dev/null differ diff --git a/public/media/avatar/small/008-7.png b/public/media/avatar/small/008-7.png deleted file mode 100755 index a16a51b48..000000000 Binary files a/public/media/avatar/small/008-7.png and /dev/null differ diff --git a/public/media/avatar/small/008-8.png b/public/media/avatar/small/008-8.png deleted file mode 100644 index 7739d5f12..000000000 Binary files a/public/media/avatar/small/008-8.png and /dev/null differ diff --git a/public/media/avatar/small/008-9.png b/public/media/avatar/small/008-9.png deleted file mode 100644 index 01a6a5fad..000000000 Binary files a/public/media/avatar/small/008-9.png and /dev/null differ diff --git a/public/media/avatar/small/009-1.png b/public/media/avatar/small/009-1.png deleted file mode 100755 index d16e9b92b..000000000 Binary files a/public/media/avatar/small/009-1.png and /dev/null differ diff --git a/public/media/avatar/small/009-10.png b/public/media/avatar/small/009-10.png deleted file mode 100644 index 1b2552bc2..000000000 Binary files a/public/media/avatar/small/009-10.png and /dev/null differ diff --git a/public/media/avatar/small/009-11.png b/public/media/avatar/small/009-11.png deleted file mode 100644 index edd332476..000000000 Binary files a/public/media/avatar/small/009-11.png and /dev/null differ diff --git a/public/media/avatar/small/009-12.png b/public/media/avatar/small/009-12.png deleted file mode 100644 index f80cfcb33..000000000 Binary files a/public/media/avatar/small/009-12.png and /dev/null differ diff --git a/public/media/avatar/small/009-2.png b/public/media/avatar/small/009-2.png deleted file mode 100755 index 49f2f0ad9..000000000 Binary files a/public/media/avatar/small/009-2.png and /dev/null differ diff --git a/public/media/avatar/small/009-3.png b/public/media/avatar/small/009-3.png deleted file mode 100755 index f80cfcb33..000000000 Binary files a/public/media/avatar/small/009-3.png and /dev/null differ diff --git a/public/media/avatar/small/009-4.png b/public/media/avatar/small/009-4.png deleted file mode 100755 index 3500cb082..000000000 Binary files a/public/media/avatar/small/009-4.png and /dev/null differ diff --git a/public/media/avatar/small/009-5.png b/public/media/avatar/small/009-5.png deleted file mode 100755 index 07ef9ce0d..000000000 Binary files a/public/media/avatar/small/009-5.png and /dev/null differ diff --git a/public/media/avatar/small/009-6.png b/public/media/avatar/small/009-6.png deleted file mode 100755 index 997592e15..000000000 Binary files a/public/media/avatar/small/009-6.png and /dev/null differ diff --git a/public/media/avatar/small/009-7.png b/public/media/avatar/small/009-7.png deleted file mode 100755 index d7f08dd58..000000000 Binary files a/public/media/avatar/small/009-7.png and /dev/null differ diff --git a/public/media/avatar/small/009-8.png b/public/media/avatar/small/009-8.png deleted file mode 100644 index e5e47c4f2..000000000 Binary files a/public/media/avatar/small/009-8.png and /dev/null differ diff --git a/public/media/avatar/small/009-9.png b/public/media/avatar/small/009-9.png deleted file mode 100644 index 07ef9ce0d..000000000 Binary files a/public/media/avatar/small/009-9.png and /dev/null differ diff --git a/public/media/avatar/small/010-1.png b/public/media/avatar/small/010-1.png deleted file mode 100755 index 6e6fad8dd..000000000 Binary files a/public/media/avatar/small/010-1.png and /dev/null differ diff --git a/public/media/avatar/small/010-10.png b/public/media/avatar/small/010-10.png deleted file mode 100644 index 0a0cc02d8..000000000 Binary files a/public/media/avatar/small/010-10.png and /dev/null differ diff --git a/public/media/avatar/small/010-11.png b/public/media/avatar/small/010-11.png deleted file mode 100644 index 4c7c7ca79..000000000 Binary files a/public/media/avatar/small/010-11.png and /dev/null differ diff --git a/public/media/avatar/small/010-12.png b/public/media/avatar/small/010-12.png deleted file mode 100644 index 22371bab8..000000000 Binary files a/public/media/avatar/small/010-12.png and /dev/null differ diff --git a/public/media/avatar/small/010-2.png b/public/media/avatar/small/010-2.png deleted file mode 100755 index 0e425b6ef..000000000 Binary files a/public/media/avatar/small/010-2.png and /dev/null differ diff --git a/public/media/avatar/small/010-3.png b/public/media/avatar/small/010-3.png deleted file mode 100755 index 22371bab8..000000000 Binary files a/public/media/avatar/small/010-3.png and /dev/null differ diff --git a/public/media/avatar/small/010-4.png b/public/media/avatar/small/010-4.png deleted file mode 100755 index 70901bffc..000000000 Binary files a/public/media/avatar/small/010-4.png and /dev/null differ diff --git a/public/media/avatar/small/010-5.png b/public/media/avatar/small/010-5.png deleted file mode 100755 index 49a395ea5..000000000 Binary files a/public/media/avatar/small/010-5.png and /dev/null differ diff --git a/public/media/avatar/small/010-6.png b/public/media/avatar/small/010-6.png deleted file mode 100755 index 7dd9ad874..000000000 Binary files a/public/media/avatar/small/010-6.png and /dev/null differ diff --git a/public/media/avatar/small/010-7.png b/public/media/avatar/small/010-7.png deleted file mode 100755 index 66fcc19b7..000000000 Binary files a/public/media/avatar/small/010-7.png and /dev/null differ diff --git a/public/media/avatar/small/010-8.png b/public/media/avatar/small/010-8.png deleted file mode 100644 index adc328dfa..000000000 Binary files a/public/media/avatar/small/010-8.png and /dev/null differ diff --git a/public/media/avatar/small/010-9.png b/public/media/avatar/small/010-9.png deleted file mode 100644 index 49a395ea5..000000000 Binary files a/public/media/avatar/small/010-9.png and /dev/null differ diff --git a/public/media/avatar/small/011-1.png b/public/media/avatar/small/011-1.png deleted file mode 100755 index 38a366b5f..000000000 Binary files a/public/media/avatar/small/011-1.png and /dev/null differ diff --git a/public/media/avatar/small/011-10.png b/public/media/avatar/small/011-10.png deleted file mode 100644 index ef59797da..000000000 Binary files a/public/media/avatar/small/011-10.png and /dev/null differ diff --git a/public/media/avatar/small/011-11.png b/public/media/avatar/small/011-11.png deleted file mode 100644 index ca0682669..000000000 Binary files a/public/media/avatar/small/011-11.png and /dev/null differ diff --git a/public/media/avatar/small/011-12.png b/public/media/avatar/small/011-12.png deleted file mode 100644 index c2771fbb9..000000000 Binary files a/public/media/avatar/small/011-12.png and /dev/null differ diff --git a/public/media/avatar/small/011-2.png b/public/media/avatar/small/011-2.png deleted file mode 100755 index ee6e0cf1f..000000000 Binary files a/public/media/avatar/small/011-2.png and /dev/null differ diff --git a/public/media/avatar/small/011-3.png b/public/media/avatar/small/011-3.png deleted file mode 100755 index c2771fbb9..000000000 Binary files a/public/media/avatar/small/011-3.png and /dev/null differ diff --git a/public/media/avatar/small/011-4.png b/public/media/avatar/small/011-4.png deleted file mode 100755 index 01b3ac0ea..000000000 Binary files a/public/media/avatar/small/011-4.png and /dev/null differ diff --git a/public/media/avatar/small/011-5.png b/public/media/avatar/small/011-5.png deleted file mode 100755 index fefd790ee..000000000 Binary files a/public/media/avatar/small/011-5.png and /dev/null differ diff --git a/public/media/avatar/small/011-6.png b/public/media/avatar/small/011-6.png deleted file mode 100755 index 17f5dea62..000000000 Binary files a/public/media/avatar/small/011-6.png and /dev/null differ diff --git a/public/media/avatar/small/011-7.png b/public/media/avatar/small/011-7.png deleted file mode 100755 index 9f2e55352..000000000 Binary files a/public/media/avatar/small/011-7.png and /dev/null differ diff --git a/public/media/avatar/small/011-8.png b/public/media/avatar/small/011-8.png deleted file mode 100644 index a4ed65c14..000000000 Binary files a/public/media/avatar/small/011-8.png and /dev/null differ diff --git a/public/media/avatar/small/011-9.png b/public/media/avatar/small/011-9.png deleted file mode 100644 index fefd790ee..000000000 Binary files a/public/media/avatar/small/011-9.png and /dev/null differ diff --git a/public/media/avatar/small/012-1.png b/public/media/avatar/small/012-1.png deleted file mode 100755 index 6d302103e..000000000 Binary files a/public/media/avatar/small/012-1.png and /dev/null differ diff --git a/public/media/avatar/small/012-10.png b/public/media/avatar/small/012-10.png deleted file mode 100644 index b885458b0..000000000 Binary files a/public/media/avatar/small/012-10.png and /dev/null differ diff --git a/public/media/avatar/small/012-11.png b/public/media/avatar/small/012-11.png deleted file mode 100644 index e915840f6..000000000 Binary files a/public/media/avatar/small/012-11.png and /dev/null differ diff --git a/public/media/avatar/small/012-12.png b/public/media/avatar/small/012-12.png deleted file mode 100644 index eef03e682..000000000 Binary files a/public/media/avatar/small/012-12.png and /dev/null differ diff --git a/public/media/avatar/small/012-2.png b/public/media/avatar/small/012-2.png deleted file mode 100755 index b16704329..000000000 Binary files a/public/media/avatar/small/012-2.png and /dev/null differ diff --git a/public/media/avatar/small/012-3.png b/public/media/avatar/small/012-3.png deleted file mode 100755 index eef03e682..000000000 Binary files a/public/media/avatar/small/012-3.png and /dev/null differ diff --git a/public/media/avatar/small/012-4.png b/public/media/avatar/small/012-4.png deleted file mode 100755 index 00f6cf809..000000000 Binary files a/public/media/avatar/small/012-4.png and /dev/null differ diff --git a/public/media/avatar/small/012-5.png b/public/media/avatar/small/012-5.png deleted file mode 100755 index 0c87cb650..000000000 Binary files a/public/media/avatar/small/012-5.png and /dev/null differ diff --git a/public/media/avatar/small/012-6.png b/public/media/avatar/small/012-6.png deleted file mode 100755 index cada8490d..000000000 Binary files a/public/media/avatar/small/012-6.png and /dev/null differ diff --git a/public/media/avatar/small/012-7.png b/public/media/avatar/small/012-7.png deleted file mode 100755 index 2089c6963..000000000 Binary files a/public/media/avatar/small/012-7.png and /dev/null differ diff --git a/public/media/avatar/small/012-8.png b/public/media/avatar/small/012-8.png deleted file mode 100644 index bc80e9007..000000000 Binary files a/public/media/avatar/small/012-8.png and /dev/null differ diff --git a/public/media/avatar/small/012-9.png b/public/media/avatar/small/012-9.png deleted file mode 100644 index 0c87cb650..000000000 Binary files a/public/media/avatar/small/012-9.png and /dev/null differ diff --git a/public/media/avatar/small/013-1.png b/public/media/avatar/small/013-1.png deleted file mode 100755 index c5cdec269..000000000 Binary files a/public/media/avatar/small/013-1.png and /dev/null differ diff --git a/public/media/avatar/small/013-10.png b/public/media/avatar/small/013-10.png deleted file mode 100644 index 8bb09c41a..000000000 Binary files a/public/media/avatar/small/013-10.png and /dev/null differ diff --git a/public/media/avatar/small/013-11.png b/public/media/avatar/small/013-11.png deleted file mode 100644 index ed8f614f3..000000000 Binary files a/public/media/avatar/small/013-11.png and /dev/null differ diff --git a/public/media/avatar/small/013-12.png b/public/media/avatar/small/013-12.png deleted file mode 100644 index 641d560e7..000000000 Binary files a/public/media/avatar/small/013-12.png and /dev/null differ diff --git a/public/media/avatar/small/013-2.png b/public/media/avatar/small/013-2.png deleted file mode 100755 index 98c71b55c..000000000 Binary files a/public/media/avatar/small/013-2.png and /dev/null differ diff --git a/public/media/avatar/small/013-3.png b/public/media/avatar/small/013-3.png deleted file mode 100755 index 641d560e7..000000000 Binary files a/public/media/avatar/small/013-3.png and /dev/null differ diff --git a/public/media/avatar/small/013-4.png b/public/media/avatar/small/013-4.png deleted file mode 100755 index 920a79535..000000000 Binary files a/public/media/avatar/small/013-4.png and /dev/null differ diff --git a/public/media/avatar/small/013-5.png b/public/media/avatar/small/013-5.png deleted file mode 100755 index 1679dcf47..000000000 Binary files a/public/media/avatar/small/013-5.png and /dev/null differ diff --git a/public/media/avatar/small/013-6.png b/public/media/avatar/small/013-6.png deleted file mode 100755 index 6b5845d7d..000000000 Binary files a/public/media/avatar/small/013-6.png and /dev/null differ diff --git a/public/media/avatar/small/013-7.png b/public/media/avatar/small/013-7.png deleted file mode 100755 index 11a65810e..000000000 Binary files a/public/media/avatar/small/013-7.png and /dev/null differ diff --git a/public/media/avatar/small/013-8.png b/public/media/avatar/small/013-8.png deleted file mode 100644 index ec3d8d063..000000000 Binary files a/public/media/avatar/small/013-8.png and /dev/null differ diff --git a/public/media/avatar/small/013-9.png b/public/media/avatar/small/013-9.png deleted file mode 100644 index 1679dcf47..000000000 Binary files a/public/media/avatar/small/013-9.png and /dev/null differ diff --git a/public/media/avatar/small/014-1.png b/public/media/avatar/small/014-1.png deleted file mode 100755 index 758998d4a..000000000 Binary files a/public/media/avatar/small/014-1.png and /dev/null differ diff --git a/public/media/avatar/small/014-10.png b/public/media/avatar/small/014-10.png deleted file mode 100644 index 3250abecb..000000000 Binary files a/public/media/avatar/small/014-10.png and /dev/null differ diff --git a/public/media/avatar/small/014-11.png b/public/media/avatar/small/014-11.png deleted file mode 100644 index a4181ec2a..000000000 Binary files a/public/media/avatar/small/014-11.png and /dev/null differ diff --git a/public/media/avatar/small/014-12.png b/public/media/avatar/small/014-12.png deleted file mode 100644 index ce22c3a0f..000000000 Binary files a/public/media/avatar/small/014-12.png and /dev/null differ diff --git a/public/media/avatar/small/014-2.png b/public/media/avatar/small/014-2.png deleted file mode 100755 index bf21245a9..000000000 Binary files a/public/media/avatar/small/014-2.png and /dev/null differ diff --git a/public/media/avatar/small/014-3.png b/public/media/avatar/small/014-3.png deleted file mode 100755 index ce22c3a0f..000000000 Binary files a/public/media/avatar/small/014-3.png and /dev/null differ diff --git a/public/media/avatar/small/014-4.png b/public/media/avatar/small/014-4.png deleted file mode 100755 index d1ff85c4b..000000000 Binary files a/public/media/avatar/small/014-4.png and /dev/null differ diff --git a/public/media/avatar/small/014-5.png b/public/media/avatar/small/014-5.png deleted file mode 100755 index e4aa2bcea..000000000 Binary files a/public/media/avatar/small/014-5.png and /dev/null differ diff --git a/public/media/avatar/small/014-6.png b/public/media/avatar/small/014-6.png deleted file mode 100755 index 48a61964a..000000000 Binary files a/public/media/avatar/small/014-6.png and /dev/null differ diff --git a/public/media/avatar/small/014-7.png b/public/media/avatar/small/014-7.png deleted file mode 100755 index 08046e00a..000000000 Binary files a/public/media/avatar/small/014-7.png and /dev/null differ diff --git a/public/media/avatar/small/014-8.png b/public/media/avatar/small/014-8.png deleted file mode 100644 index a0650dc8e..000000000 Binary files a/public/media/avatar/small/014-8.png and /dev/null differ diff --git a/public/media/avatar/small/014-9.png b/public/media/avatar/small/014-9.png deleted file mode 100644 index e4aa2bcea..000000000 Binary files a/public/media/avatar/small/014-9.png and /dev/null differ diff --git a/public/media/avatar/small/015-1.png b/public/media/avatar/small/015-1.png deleted file mode 100755 index ca5423b2c..000000000 Binary files a/public/media/avatar/small/015-1.png and /dev/null differ diff --git a/public/media/avatar/small/015-10.png b/public/media/avatar/small/015-10.png deleted file mode 100644 index 9424245b3..000000000 Binary files a/public/media/avatar/small/015-10.png and /dev/null differ diff --git a/public/media/avatar/small/015-11.png b/public/media/avatar/small/015-11.png deleted file mode 100644 index dea81cd0d..000000000 Binary files a/public/media/avatar/small/015-11.png and /dev/null differ diff --git a/public/media/avatar/small/015-12.png b/public/media/avatar/small/015-12.png deleted file mode 100644 index f1e2c70a5..000000000 Binary files a/public/media/avatar/small/015-12.png and /dev/null differ diff --git a/public/media/avatar/small/015-2.png b/public/media/avatar/small/015-2.png deleted file mode 100755 index 325e0d595..000000000 Binary files a/public/media/avatar/small/015-2.png and /dev/null differ diff --git a/public/media/avatar/small/015-3.png b/public/media/avatar/small/015-3.png deleted file mode 100755 index f1e2c70a5..000000000 Binary files a/public/media/avatar/small/015-3.png and /dev/null differ diff --git a/public/media/avatar/small/015-4.png b/public/media/avatar/small/015-4.png deleted file mode 100755 index 4ce6343a3..000000000 Binary files a/public/media/avatar/small/015-4.png and /dev/null differ diff --git a/public/media/avatar/small/015-5.png b/public/media/avatar/small/015-5.png deleted file mode 100755 index 8bcb613ec..000000000 Binary files a/public/media/avatar/small/015-5.png and /dev/null differ diff --git a/public/media/avatar/small/015-6.png b/public/media/avatar/small/015-6.png deleted file mode 100755 index ed06da4e8..000000000 Binary files a/public/media/avatar/small/015-6.png and /dev/null differ diff --git a/public/media/avatar/small/015-7.png b/public/media/avatar/small/015-7.png deleted file mode 100755 index f81e54791..000000000 Binary files a/public/media/avatar/small/015-7.png and /dev/null differ diff --git a/public/media/avatar/small/015-8.png b/public/media/avatar/small/015-8.png deleted file mode 100644 index 20c96652b..000000000 Binary files a/public/media/avatar/small/015-8.png and /dev/null differ diff --git a/public/media/avatar/small/015-9.png b/public/media/avatar/small/015-9.png deleted file mode 100644 index 8bcb613ec..000000000 Binary files a/public/media/avatar/small/015-9.png and /dev/null differ diff --git a/public/media/avatar/small/016-1.png b/public/media/avatar/small/016-1.png deleted file mode 100755 index 0fa4585ec..000000000 Binary files a/public/media/avatar/small/016-1.png and /dev/null differ diff --git a/public/media/avatar/small/016-10.png b/public/media/avatar/small/016-10.png deleted file mode 100644 index d9c6c63ab..000000000 Binary files a/public/media/avatar/small/016-10.png and /dev/null differ diff --git a/public/media/avatar/small/016-11.png b/public/media/avatar/small/016-11.png deleted file mode 100644 index 7c34b9052..000000000 Binary files a/public/media/avatar/small/016-11.png and /dev/null differ diff --git a/public/media/avatar/small/016-12.png b/public/media/avatar/small/016-12.png deleted file mode 100644 index 26f8a27be..000000000 Binary files a/public/media/avatar/small/016-12.png and /dev/null differ diff --git a/public/media/avatar/small/016-2.png b/public/media/avatar/small/016-2.png deleted file mode 100755 index e3409fa08..000000000 Binary files a/public/media/avatar/small/016-2.png and /dev/null differ diff --git a/public/media/avatar/small/016-3.png b/public/media/avatar/small/016-3.png deleted file mode 100755 index 26f8a27be..000000000 Binary files a/public/media/avatar/small/016-3.png and /dev/null differ diff --git a/public/media/avatar/small/016-4.png b/public/media/avatar/small/016-4.png deleted file mode 100755 index f56ae6892..000000000 Binary files a/public/media/avatar/small/016-4.png and /dev/null differ diff --git a/public/media/avatar/small/016-5.png b/public/media/avatar/small/016-5.png deleted file mode 100755 index 6f3f87fbc..000000000 Binary files a/public/media/avatar/small/016-5.png and /dev/null differ diff --git a/public/media/avatar/small/016-6.png b/public/media/avatar/small/016-6.png deleted file mode 100755 index 4a7fd237e..000000000 Binary files a/public/media/avatar/small/016-6.png and /dev/null differ diff --git a/public/media/avatar/small/016-7.png b/public/media/avatar/small/016-7.png deleted file mode 100755 index 2d265132a..000000000 Binary files a/public/media/avatar/small/016-7.png and /dev/null differ diff --git a/public/media/avatar/small/016-8.png b/public/media/avatar/small/016-8.png deleted file mode 100644 index 83df7b652..000000000 Binary files a/public/media/avatar/small/016-8.png and /dev/null differ diff --git a/public/media/avatar/small/016-9.png b/public/media/avatar/small/016-9.png deleted file mode 100644 index 6f3f87fbc..000000000 Binary files a/public/media/avatar/small/016-9.png and /dev/null differ diff --git a/public/media/avatar/small/017-1.png b/public/media/avatar/small/017-1.png deleted file mode 100755 index be8f4e767..000000000 Binary files a/public/media/avatar/small/017-1.png and /dev/null differ diff --git a/public/media/avatar/small/017-10.png b/public/media/avatar/small/017-10.png deleted file mode 100644 index 5df99907e..000000000 Binary files a/public/media/avatar/small/017-10.png and /dev/null differ diff --git a/public/media/avatar/small/017-11.png b/public/media/avatar/small/017-11.png deleted file mode 100644 index 07d61afe0..000000000 Binary files a/public/media/avatar/small/017-11.png and /dev/null differ diff --git a/public/media/avatar/small/017-12.png b/public/media/avatar/small/017-12.png deleted file mode 100644 index 38a2b06ed..000000000 Binary files a/public/media/avatar/small/017-12.png and /dev/null differ diff --git a/public/media/avatar/small/017-2.png b/public/media/avatar/small/017-2.png deleted file mode 100755 index 146eca348..000000000 Binary files a/public/media/avatar/small/017-2.png and /dev/null differ diff --git a/public/media/avatar/small/017-3.png b/public/media/avatar/small/017-3.png deleted file mode 100755 index 38a2b06ed..000000000 Binary files a/public/media/avatar/small/017-3.png and /dev/null differ diff --git a/public/media/avatar/small/017-4.png b/public/media/avatar/small/017-4.png deleted file mode 100755 index c5d513454..000000000 Binary files a/public/media/avatar/small/017-4.png and /dev/null differ diff --git a/public/media/avatar/small/017-5.png b/public/media/avatar/small/017-5.png deleted file mode 100755 index 2bc92f7a0..000000000 Binary files a/public/media/avatar/small/017-5.png and /dev/null differ diff --git a/public/media/avatar/small/017-6.png b/public/media/avatar/small/017-6.png deleted file mode 100755 index 3874ac9c4..000000000 Binary files a/public/media/avatar/small/017-6.png and /dev/null differ diff --git a/public/media/avatar/small/017-7.png b/public/media/avatar/small/017-7.png deleted file mode 100755 index a7819809e..000000000 Binary files a/public/media/avatar/small/017-7.png and /dev/null differ diff --git a/public/media/avatar/small/017-8.png b/public/media/avatar/small/017-8.png deleted file mode 100644 index 1a3c85ea7..000000000 Binary files a/public/media/avatar/small/017-8.png and /dev/null differ diff --git a/public/media/avatar/small/017-9.png b/public/media/avatar/small/017-9.png deleted file mode 100644 index 2bc92f7a0..000000000 Binary files a/public/media/avatar/small/017-9.png and /dev/null differ diff --git a/public/media/avatar/small/018-1.png b/public/media/avatar/small/018-1.png deleted file mode 100755 index 692a4bdd7..000000000 Binary files a/public/media/avatar/small/018-1.png and /dev/null differ diff --git a/public/media/avatar/small/018-10.png b/public/media/avatar/small/018-10.png deleted file mode 100644 index b93bc0088..000000000 Binary files a/public/media/avatar/small/018-10.png and /dev/null differ diff --git a/public/media/avatar/small/018-11.png b/public/media/avatar/small/018-11.png deleted file mode 100644 index a87d492df..000000000 Binary files a/public/media/avatar/small/018-11.png and /dev/null differ diff --git a/public/media/avatar/small/018-12.png b/public/media/avatar/small/018-12.png deleted file mode 100644 index 26026f101..000000000 Binary files a/public/media/avatar/small/018-12.png and /dev/null differ diff --git a/public/media/avatar/small/018-2.png b/public/media/avatar/small/018-2.png deleted file mode 100755 index e7bbf52e3..000000000 Binary files a/public/media/avatar/small/018-2.png and /dev/null differ diff --git a/public/media/avatar/small/018-3.png b/public/media/avatar/small/018-3.png deleted file mode 100755 index 26026f101..000000000 Binary files a/public/media/avatar/small/018-3.png and /dev/null differ diff --git a/public/media/avatar/small/018-4.png b/public/media/avatar/small/018-4.png deleted file mode 100755 index ddbbbadf0..000000000 Binary files a/public/media/avatar/small/018-4.png and /dev/null differ diff --git a/public/media/avatar/small/018-5.png b/public/media/avatar/small/018-5.png deleted file mode 100755 index f8f7ec801..000000000 Binary files a/public/media/avatar/small/018-5.png and /dev/null differ diff --git a/public/media/avatar/small/018-6.png b/public/media/avatar/small/018-6.png deleted file mode 100755 index 1e83c405d..000000000 Binary files a/public/media/avatar/small/018-6.png and /dev/null differ diff --git a/public/media/avatar/small/018-7.png b/public/media/avatar/small/018-7.png deleted file mode 100755 index cdbf12440..000000000 Binary files a/public/media/avatar/small/018-7.png and /dev/null differ diff --git a/public/media/avatar/small/018-8.png b/public/media/avatar/small/018-8.png deleted file mode 100644 index 9fe7b70e2..000000000 Binary files a/public/media/avatar/small/018-8.png and /dev/null differ diff --git a/public/media/avatar/small/018-9.png b/public/media/avatar/small/018-9.png deleted file mode 100644 index f8f7ec801..000000000 Binary files a/public/media/avatar/small/018-9.png and /dev/null differ diff --git a/public/media/avatar/small/019-1.png b/public/media/avatar/small/019-1.png deleted file mode 100755 index 785acc7b5..000000000 Binary files a/public/media/avatar/small/019-1.png and /dev/null differ diff --git a/public/media/avatar/small/019-10.png b/public/media/avatar/small/019-10.png deleted file mode 100644 index 663023046..000000000 Binary files a/public/media/avatar/small/019-10.png and /dev/null differ diff --git a/public/media/avatar/small/019-11.png b/public/media/avatar/small/019-11.png deleted file mode 100644 index dcfc24dd9..000000000 Binary files a/public/media/avatar/small/019-11.png and /dev/null differ diff --git a/public/media/avatar/small/019-12.png b/public/media/avatar/small/019-12.png deleted file mode 100644 index 7b8e58c46..000000000 Binary files a/public/media/avatar/small/019-12.png and /dev/null differ diff --git a/public/media/avatar/small/019-2.png b/public/media/avatar/small/019-2.png deleted file mode 100755 index b0523615a..000000000 Binary files a/public/media/avatar/small/019-2.png and /dev/null differ diff --git a/public/media/avatar/small/019-3.png b/public/media/avatar/small/019-3.png deleted file mode 100755 index 7b8e58c46..000000000 Binary files a/public/media/avatar/small/019-3.png and /dev/null differ diff --git a/public/media/avatar/small/019-4.png b/public/media/avatar/small/019-4.png deleted file mode 100755 index e1b7d67e9..000000000 Binary files a/public/media/avatar/small/019-4.png and /dev/null differ diff --git a/public/media/avatar/small/019-5.png b/public/media/avatar/small/019-5.png deleted file mode 100755 index 206e2acd4..000000000 Binary files a/public/media/avatar/small/019-5.png and /dev/null differ diff --git a/public/media/avatar/small/019-6.png b/public/media/avatar/small/019-6.png deleted file mode 100755 index e787b078e..000000000 Binary files a/public/media/avatar/small/019-6.png and /dev/null differ diff --git a/public/media/avatar/small/019-7.png b/public/media/avatar/small/019-7.png deleted file mode 100755 index 88965d7e5..000000000 Binary files a/public/media/avatar/small/019-7.png and /dev/null differ diff --git a/public/media/avatar/small/019-8.png b/public/media/avatar/small/019-8.png deleted file mode 100644 index aaee7563c..000000000 Binary files a/public/media/avatar/small/019-8.png and /dev/null differ diff --git a/public/media/avatar/small/019-9.png b/public/media/avatar/small/019-9.png deleted file mode 100644 index 206e2acd4..000000000 Binary files a/public/media/avatar/small/019-9.png and /dev/null differ diff --git a/public/media/avatar/small/020-1.png b/public/media/avatar/small/020-1.png deleted file mode 100755 index 2d2faafa6..000000000 Binary files a/public/media/avatar/small/020-1.png and /dev/null differ diff --git a/public/media/avatar/small/020-10.png b/public/media/avatar/small/020-10.png deleted file mode 100644 index c208efdbc..000000000 Binary files a/public/media/avatar/small/020-10.png and /dev/null differ diff --git a/public/media/avatar/small/020-11.png b/public/media/avatar/small/020-11.png deleted file mode 100644 index 2c8f753e9..000000000 Binary files a/public/media/avatar/small/020-11.png and /dev/null differ diff --git a/public/media/avatar/small/020-12.png b/public/media/avatar/small/020-12.png deleted file mode 100644 index 1e1789629..000000000 Binary files a/public/media/avatar/small/020-12.png and /dev/null differ diff --git a/public/media/avatar/small/020-2.png b/public/media/avatar/small/020-2.png deleted file mode 100755 index 5a253cf9f..000000000 Binary files a/public/media/avatar/small/020-2.png and /dev/null differ diff --git a/public/media/avatar/small/020-3.png b/public/media/avatar/small/020-3.png deleted file mode 100755 index 1e1789629..000000000 Binary files a/public/media/avatar/small/020-3.png and /dev/null differ diff --git a/public/media/avatar/small/020-4.png b/public/media/avatar/small/020-4.png deleted file mode 100755 index e2083b0b8..000000000 Binary files a/public/media/avatar/small/020-4.png and /dev/null differ diff --git a/public/media/avatar/small/020-5.png b/public/media/avatar/small/020-5.png deleted file mode 100755 index 00c6fb7fd..000000000 Binary files a/public/media/avatar/small/020-5.png and /dev/null differ diff --git a/public/media/avatar/small/020-6.png b/public/media/avatar/small/020-6.png deleted file mode 100755 index 110b1a9eb..000000000 Binary files a/public/media/avatar/small/020-6.png and /dev/null differ diff --git a/public/media/avatar/small/020-7.png b/public/media/avatar/small/020-7.png deleted file mode 100755 index b8a49f1ed..000000000 Binary files a/public/media/avatar/small/020-7.png and /dev/null differ diff --git a/public/media/avatar/small/020-8.png b/public/media/avatar/small/020-8.png deleted file mode 100644 index a300b8bf9..000000000 Binary files a/public/media/avatar/small/020-8.png and /dev/null differ diff --git a/public/media/avatar/small/020-9.png b/public/media/avatar/small/020-9.png deleted file mode 100644 index 00c6fb7fd..000000000 Binary files a/public/media/avatar/small/020-9.png and /dev/null differ diff --git a/public/media/avatar/small/021-1.png b/public/media/avatar/small/021-1.png deleted file mode 100755 index 16e90ef08..000000000 Binary files a/public/media/avatar/small/021-1.png and /dev/null differ diff --git a/public/media/avatar/small/021-10.png b/public/media/avatar/small/021-10.png deleted file mode 100644 index a0b75ddec..000000000 Binary files a/public/media/avatar/small/021-10.png and /dev/null differ diff --git a/public/media/avatar/small/021-11.png b/public/media/avatar/small/021-11.png deleted file mode 100644 index f5733455b..000000000 Binary files a/public/media/avatar/small/021-11.png and /dev/null differ diff --git a/public/media/avatar/small/021-12.png b/public/media/avatar/small/021-12.png deleted file mode 100644 index ad41a0bb2..000000000 Binary files a/public/media/avatar/small/021-12.png and /dev/null differ diff --git a/public/media/avatar/small/021-2.png b/public/media/avatar/small/021-2.png deleted file mode 100755 index 502c857b9..000000000 Binary files a/public/media/avatar/small/021-2.png and /dev/null differ diff --git a/public/media/avatar/small/021-3.png b/public/media/avatar/small/021-3.png deleted file mode 100755 index ad41a0bb2..000000000 Binary files a/public/media/avatar/small/021-3.png and /dev/null differ diff --git a/public/media/avatar/small/021-4.png b/public/media/avatar/small/021-4.png deleted file mode 100755 index d05de90d8..000000000 Binary files a/public/media/avatar/small/021-4.png and /dev/null differ diff --git a/public/media/avatar/small/021-5.png b/public/media/avatar/small/021-5.png deleted file mode 100755 index d946b831b..000000000 Binary files a/public/media/avatar/small/021-5.png and /dev/null differ diff --git a/public/media/avatar/small/021-6.png b/public/media/avatar/small/021-6.png deleted file mode 100755 index 966d37018..000000000 Binary files a/public/media/avatar/small/021-6.png and /dev/null differ diff --git a/public/media/avatar/small/021-7.png b/public/media/avatar/small/021-7.png deleted file mode 100755 index b3a1a3be0..000000000 Binary files a/public/media/avatar/small/021-7.png and /dev/null differ diff --git a/public/media/avatar/small/021-8.png b/public/media/avatar/small/021-8.png deleted file mode 100644 index 920f7efc2..000000000 Binary files a/public/media/avatar/small/021-8.png and /dev/null differ diff --git a/public/media/avatar/small/021-9.png b/public/media/avatar/small/021-9.png deleted file mode 100644 index d946b831b..000000000 Binary files a/public/media/avatar/small/021-9.png and /dev/null differ diff --git a/public/media/avatar/small/022-1.png b/public/media/avatar/small/022-1.png deleted file mode 100755 index 83149718d..000000000 Binary files a/public/media/avatar/small/022-1.png and /dev/null differ diff --git a/public/media/avatar/small/022-10.png b/public/media/avatar/small/022-10.png deleted file mode 100644 index 923065fd6..000000000 Binary files a/public/media/avatar/small/022-10.png and /dev/null differ diff --git a/public/media/avatar/small/022-11.png b/public/media/avatar/small/022-11.png deleted file mode 100644 index 02f4deddc..000000000 Binary files a/public/media/avatar/small/022-11.png and /dev/null differ diff --git a/public/media/avatar/small/022-12.png b/public/media/avatar/small/022-12.png deleted file mode 100644 index 155812bc7..000000000 Binary files a/public/media/avatar/small/022-12.png and /dev/null differ diff --git a/public/media/avatar/small/022-2.png b/public/media/avatar/small/022-2.png deleted file mode 100755 index 7c954dd4a..000000000 Binary files a/public/media/avatar/small/022-2.png and /dev/null differ diff --git a/public/media/avatar/small/022-3.png b/public/media/avatar/small/022-3.png deleted file mode 100755 index 155812bc7..000000000 Binary files a/public/media/avatar/small/022-3.png and /dev/null differ diff --git a/public/media/avatar/small/022-4.png b/public/media/avatar/small/022-4.png deleted file mode 100755 index 0581838ca..000000000 Binary files a/public/media/avatar/small/022-4.png and /dev/null differ diff --git a/public/media/avatar/small/022-5.png b/public/media/avatar/small/022-5.png deleted file mode 100755 index 560663ae9..000000000 Binary files a/public/media/avatar/small/022-5.png and /dev/null differ diff --git a/public/media/avatar/small/022-6.png b/public/media/avatar/small/022-6.png deleted file mode 100755 index a8976a70f..000000000 Binary files a/public/media/avatar/small/022-6.png and /dev/null differ diff --git a/public/media/avatar/small/022-7.png b/public/media/avatar/small/022-7.png deleted file mode 100755 index 6376110f9..000000000 Binary files a/public/media/avatar/small/022-7.png and /dev/null differ diff --git a/public/media/avatar/small/022-8.png b/public/media/avatar/small/022-8.png deleted file mode 100644 index 3c410f94d..000000000 Binary files a/public/media/avatar/small/022-8.png and /dev/null differ diff --git a/public/media/avatar/small/022-9.png b/public/media/avatar/small/022-9.png deleted file mode 100644 index 560663ae9..000000000 Binary files a/public/media/avatar/small/022-9.png and /dev/null differ diff --git a/public/media/avatar/small/023-1.png b/public/media/avatar/small/023-1.png deleted file mode 100755 index 1f42ba18e..000000000 Binary files a/public/media/avatar/small/023-1.png and /dev/null differ diff --git a/public/media/avatar/small/023-10.png b/public/media/avatar/small/023-10.png deleted file mode 100644 index c13e5c9ba..000000000 Binary files a/public/media/avatar/small/023-10.png and /dev/null differ diff --git a/public/media/avatar/small/023-11.png b/public/media/avatar/small/023-11.png deleted file mode 100644 index d398a21d8..000000000 Binary files a/public/media/avatar/small/023-11.png and /dev/null differ diff --git a/public/media/avatar/small/023-12.png b/public/media/avatar/small/023-12.png deleted file mode 100644 index 82365a237..000000000 Binary files a/public/media/avatar/small/023-12.png and /dev/null differ diff --git a/public/media/avatar/small/023-2.png b/public/media/avatar/small/023-2.png deleted file mode 100755 index 7b44bda68..000000000 Binary files a/public/media/avatar/small/023-2.png and /dev/null differ diff --git a/public/media/avatar/small/023-3.png b/public/media/avatar/small/023-3.png deleted file mode 100755 index 82365a237..000000000 Binary files a/public/media/avatar/small/023-3.png and /dev/null differ diff --git a/public/media/avatar/small/023-4.png b/public/media/avatar/small/023-4.png deleted file mode 100755 index 218ff8bd1..000000000 Binary files a/public/media/avatar/small/023-4.png and /dev/null differ diff --git a/public/media/avatar/small/023-5.png b/public/media/avatar/small/023-5.png deleted file mode 100755 index 4dadf270a..000000000 Binary files a/public/media/avatar/small/023-5.png and /dev/null differ diff --git a/public/media/avatar/small/023-6.png b/public/media/avatar/small/023-6.png deleted file mode 100755 index de744c894..000000000 Binary files a/public/media/avatar/small/023-6.png and /dev/null differ diff --git a/public/media/avatar/small/023-7.png b/public/media/avatar/small/023-7.png deleted file mode 100755 index 84f5c55a1..000000000 Binary files a/public/media/avatar/small/023-7.png and /dev/null differ diff --git a/public/media/avatar/small/023-8.png b/public/media/avatar/small/023-8.png deleted file mode 100644 index f7a81aa6f..000000000 Binary files a/public/media/avatar/small/023-8.png and /dev/null differ diff --git a/public/media/avatar/small/023-9.png b/public/media/avatar/small/023-9.png deleted file mode 100644 index 4dadf270a..000000000 Binary files a/public/media/avatar/small/023-9.png and /dev/null differ diff --git a/public/media/avatar/small/024-1.png b/public/media/avatar/small/024-1.png deleted file mode 100755 index a8145c868..000000000 Binary files a/public/media/avatar/small/024-1.png and /dev/null differ diff --git a/public/media/avatar/small/024-10.png b/public/media/avatar/small/024-10.png deleted file mode 100644 index b59525eea..000000000 Binary files a/public/media/avatar/small/024-10.png and /dev/null differ diff --git a/public/media/avatar/small/024-11.png b/public/media/avatar/small/024-11.png deleted file mode 100644 index 0260be5e1..000000000 Binary files a/public/media/avatar/small/024-11.png and /dev/null differ diff --git a/public/media/avatar/small/024-12.png b/public/media/avatar/small/024-12.png deleted file mode 100644 index 793c96527..000000000 Binary files a/public/media/avatar/small/024-12.png and /dev/null differ diff --git a/public/media/avatar/small/024-2.png b/public/media/avatar/small/024-2.png deleted file mode 100755 index f6a64f2da..000000000 Binary files a/public/media/avatar/small/024-2.png and /dev/null differ diff --git a/public/media/avatar/small/024-3.png b/public/media/avatar/small/024-3.png deleted file mode 100755 index 793c96527..000000000 Binary files a/public/media/avatar/small/024-3.png and /dev/null differ diff --git a/public/media/avatar/small/024-4.png b/public/media/avatar/small/024-4.png deleted file mode 100755 index aec1bf7d8..000000000 Binary files a/public/media/avatar/small/024-4.png and /dev/null differ diff --git a/public/media/avatar/small/024-5.png b/public/media/avatar/small/024-5.png deleted file mode 100755 index ee360bcdd..000000000 Binary files a/public/media/avatar/small/024-5.png and /dev/null differ diff --git a/public/media/avatar/small/024-6.png b/public/media/avatar/small/024-6.png deleted file mode 100755 index 9b5e18a1e..000000000 Binary files a/public/media/avatar/small/024-6.png and /dev/null differ diff --git a/public/media/avatar/small/024-7.png b/public/media/avatar/small/024-7.png deleted file mode 100755 index 27825965c..000000000 Binary files a/public/media/avatar/small/024-7.png and /dev/null differ diff --git a/public/media/avatar/small/024-8.png b/public/media/avatar/small/024-8.png deleted file mode 100644 index a320e44c9..000000000 Binary files a/public/media/avatar/small/024-8.png and /dev/null differ diff --git a/public/media/avatar/small/024-9.png b/public/media/avatar/small/024-9.png deleted file mode 100644 index ee360bcdd..000000000 Binary files a/public/media/avatar/small/024-9.png and /dev/null differ diff --git a/public/media/avatar/small/025-1.png b/public/media/avatar/small/025-1.png deleted file mode 100755 index 08045a3f8..000000000 Binary files a/public/media/avatar/small/025-1.png and /dev/null differ diff --git a/public/media/avatar/small/025-10.png b/public/media/avatar/small/025-10.png deleted file mode 100644 index 84b5915e2..000000000 Binary files a/public/media/avatar/small/025-10.png and /dev/null differ diff --git a/public/media/avatar/small/025-11.png b/public/media/avatar/small/025-11.png deleted file mode 100644 index aaf55b8c9..000000000 Binary files a/public/media/avatar/small/025-11.png and /dev/null differ diff --git a/public/media/avatar/small/025-12.png b/public/media/avatar/small/025-12.png deleted file mode 100644 index e41f2af05..000000000 Binary files a/public/media/avatar/small/025-12.png and /dev/null differ diff --git a/public/media/avatar/small/025-2.png b/public/media/avatar/small/025-2.png deleted file mode 100755 index fe23ef647..000000000 Binary files a/public/media/avatar/small/025-2.png and /dev/null differ diff --git a/public/media/avatar/small/025-3.png b/public/media/avatar/small/025-3.png deleted file mode 100755 index e41f2af05..000000000 Binary files a/public/media/avatar/small/025-3.png and /dev/null differ diff --git a/public/media/avatar/small/025-4.png b/public/media/avatar/small/025-4.png deleted file mode 100755 index 0532a77d4..000000000 Binary files a/public/media/avatar/small/025-4.png and /dev/null differ diff --git a/public/media/avatar/small/025-5.png b/public/media/avatar/small/025-5.png deleted file mode 100755 index e9d25143c..000000000 Binary files a/public/media/avatar/small/025-5.png and /dev/null differ diff --git a/public/media/avatar/small/025-6.png b/public/media/avatar/small/025-6.png deleted file mode 100755 index 5b510f2eb..000000000 Binary files a/public/media/avatar/small/025-6.png and /dev/null differ diff --git a/public/media/avatar/small/025-7.png b/public/media/avatar/small/025-7.png deleted file mode 100755 index 2662d177d..000000000 Binary files a/public/media/avatar/small/025-7.png and /dev/null differ diff --git a/public/media/avatar/small/025-8.png b/public/media/avatar/small/025-8.png deleted file mode 100644 index 74f6bc46f..000000000 Binary files a/public/media/avatar/small/025-8.png and /dev/null differ diff --git a/public/media/avatar/small/025-9.png b/public/media/avatar/small/025-9.png deleted file mode 100644 index e9d25143c..000000000 Binary files a/public/media/avatar/small/025-9.png and /dev/null differ diff --git a/public/media/avatar/small/026-1.png b/public/media/avatar/small/026-1.png deleted file mode 100755 index f56f52f26..000000000 Binary files a/public/media/avatar/small/026-1.png and /dev/null differ diff --git a/public/media/avatar/small/026-10.png b/public/media/avatar/small/026-10.png deleted file mode 100644 index 4864346d0..000000000 Binary files a/public/media/avatar/small/026-10.png and /dev/null differ diff --git a/public/media/avatar/small/026-11.png b/public/media/avatar/small/026-11.png deleted file mode 100644 index 08dcb6a33..000000000 Binary files a/public/media/avatar/small/026-11.png and /dev/null differ diff --git a/public/media/avatar/small/026-12.png b/public/media/avatar/small/026-12.png deleted file mode 100644 index 259227727..000000000 Binary files a/public/media/avatar/small/026-12.png and /dev/null differ diff --git a/public/media/avatar/small/026-2.png b/public/media/avatar/small/026-2.png deleted file mode 100755 index 1c99a5afc..000000000 Binary files a/public/media/avatar/small/026-2.png and /dev/null differ diff --git a/public/media/avatar/small/026-3.png b/public/media/avatar/small/026-3.png deleted file mode 100755 index 259227727..000000000 Binary files a/public/media/avatar/small/026-3.png and /dev/null differ diff --git a/public/media/avatar/small/026-4.png b/public/media/avatar/small/026-4.png deleted file mode 100755 index 0151f3e75..000000000 Binary files a/public/media/avatar/small/026-4.png and /dev/null differ diff --git a/public/media/avatar/small/026-5.png b/public/media/avatar/small/026-5.png deleted file mode 100755 index 831e4bb21..000000000 Binary files a/public/media/avatar/small/026-5.png and /dev/null differ diff --git a/public/media/avatar/small/026-6.png b/public/media/avatar/small/026-6.png deleted file mode 100755 index a463129be..000000000 Binary files a/public/media/avatar/small/026-6.png and /dev/null differ diff --git a/public/media/avatar/small/026-7.png b/public/media/avatar/small/026-7.png deleted file mode 100755 index 29118dd4b..000000000 Binary files a/public/media/avatar/small/026-7.png and /dev/null differ diff --git a/public/media/avatar/small/026-8.png b/public/media/avatar/small/026-8.png deleted file mode 100644 index feff5358c..000000000 Binary files a/public/media/avatar/small/026-8.png and /dev/null differ diff --git a/public/media/avatar/small/026-9.png b/public/media/avatar/small/026-9.png deleted file mode 100644 index 831e4bb21..000000000 Binary files a/public/media/avatar/small/026-9.png and /dev/null differ diff --git a/public/media/avatar/small/027-1.png b/public/media/avatar/small/027-1.png deleted file mode 100755 index 19d2faa5e..000000000 Binary files a/public/media/avatar/small/027-1.png and /dev/null differ diff --git a/public/media/avatar/small/027-10.png b/public/media/avatar/small/027-10.png deleted file mode 100644 index 33a69e051..000000000 Binary files a/public/media/avatar/small/027-10.png and /dev/null differ diff --git a/public/media/avatar/small/027-11.png b/public/media/avatar/small/027-11.png deleted file mode 100644 index 35570f098..000000000 Binary files a/public/media/avatar/small/027-11.png and /dev/null differ diff --git a/public/media/avatar/small/027-12.png b/public/media/avatar/small/027-12.png deleted file mode 100644 index 8ce5bf0eb..000000000 Binary files a/public/media/avatar/small/027-12.png and /dev/null differ diff --git a/public/media/avatar/small/027-2.png b/public/media/avatar/small/027-2.png deleted file mode 100755 index 07eccdba5..000000000 Binary files a/public/media/avatar/small/027-2.png and /dev/null differ diff --git a/public/media/avatar/small/027-3.png b/public/media/avatar/small/027-3.png deleted file mode 100755 index 8ce5bf0eb..000000000 Binary files a/public/media/avatar/small/027-3.png and /dev/null differ diff --git a/public/media/avatar/small/027-4.png b/public/media/avatar/small/027-4.png deleted file mode 100755 index ffc6e1693..000000000 Binary files a/public/media/avatar/small/027-4.png and /dev/null differ diff --git a/public/media/avatar/small/027-5.png b/public/media/avatar/small/027-5.png deleted file mode 100755 index 2f18affc4..000000000 Binary files a/public/media/avatar/small/027-5.png and /dev/null differ diff --git a/public/media/avatar/small/027-6.png b/public/media/avatar/small/027-6.png deleted file mode 100755 index 00ebfb283..000000000 Binary files a/public/media/avatar/small/027-6.png and /dev/null differ diff --git a/public/media/avatar/small/027-7.png b/public/media/avatar/small/027-7.png deleted file mode 100755 index 81497b438..000000000 Binary files a/public/media/avatar/small/027-7.png and /dev/null differ diff --git a/public/media/avatar/small/027-8.png b/public/media/avatar/small/027-8.png deleted file mode 100644 index 68acc9d4c..000000000 Binary files a/public/media/avatar/small/027-8.png and /dev/null differ diff --git a/public/media/avatar/small/027-9.png b/public/media/avatar/small/027-9.png deleted file mode 100644 index 2f18affc4..000000000 Binary files a/public/media/avatar/small/027-9.png and /dev/null differ diff --git a/public/media/avatar/small/028-1.png b/public/media/avatar/small/028-1.png deleted file mode 100755 index 41d903b68..000000000 Binary files a/public/media/avatar/small/028-1.png and /dev/null differ diff --git a/public/media/avatar/small/028-10.png b/public/media/avatar/small/028-10.png deleted file mode 100644 index be386bb67..000000000 Binary files a/public/media/avatar/small/028-10.png and /dev/null differ diff --git a/public/media/avatar/small/028-11.png b/public/media/avatar/small/028-11.png deleted file mode 100644 index 5309f12f8..000000000 Binary files a/public/media/avatar/small/028-11.png and /dev/null differ diff --git a/public/media/avatar/small/028-12.png b/public/media/avatar/small/028-12.png deleted file mode 100644 index 08506d3c5..000000000 Binary files a/public/media/avatar/small/028-12.png and /dev/null differ diff --git a/public/media/avatar/small/028-2.png b/public/media/avatar/small/028-2.png deleted file mode 100755 index 92246efaa..000000000 Binary files a/public/media/avatar/small/028-2.png and /dev/null differ diff --git a/public/media/avatar/small/028-3.png b/public/media/avatar/small/028-3.png deleted file mode 100755 index 08506d3c5..000000000 Binary files a/public/media/avatar/small/028-3.png and /dev/null differ diff --git a/public/media/avatar/small/028-4.png b/public/media/avatar/small/028-4.png deleted file mode 100755 index 0ef703a25..000000000 Binary files a/public/media/avatar/small/028-4.png and /dev/null differ diff --git a/public/media/avatar/small/028-5.png b/public/media/avatar/small/028-5.png deleted file mode 100755 index 4df858cb0..000000000 Binary files a/public/media/avatar/small/028-5.png and /dev/null differ diff --git a/public/media/avatar/small/028-6.png b/public/media/avatar/small/028-6.png deleted file mode 100755 index 8418b973f..000000000 Binary files a/public/media/avatar/small/028-6.png and /dev/null differ diff --git a/public/media/avatar/small/028-7.png b/public/media/avatar/small/028-7.png deleted file mode 100755 index 2867e1eaf..000000000 Binary files a/public/media/avatar/small/028-7.png and /dev/null differ diff --git a/public/media/avatar/small/028-8.png b/public/media/avatar/small/028-8.png deleted file mode 100644 index 57be19085..000000000 Binary files a/public/media/avatar/small/028-8.png and /dev/null differ diff --git a/public/media/avatar/small/028-9.png b/public/media/avatar/small/028-9.png deleted file mode 100644 index 4df858cb0..000000000 Binary files a/public/media/avatar/small/028-9.png and /dev/null differ diff --git a/public/media/avatar/small/029-1.png b/public/media/avatar/small/029-1.png deleted file mode 100755 index 663f5f2e3..000000000 Binary files a/public/media/avatar/small/029-1.png and /dev/null differ diff --git a/public/media/avatar/small/029-10.png b/public/media/avatar/small/029-10.png deleted file mode 100644 index b33e500e6..000000000 Binary files a/public/media/avatar/small/029-10.png and /dev/null differ diff --git a/public/media/avatar/small/029-11.png b/public/media/avatar/small/029-11.png deleted file mode 100644 index c05a1d140..000000000 Binary files a/public/media/avatar/small/029-11.png and /dev/null differ diff --git a/public/media/avatar/small/029-12.png b/public/media/avatar/small/029-12.png deleted file mode 100644 index e544ad0f8..000000000 Binary files a/public/media/avatar/small/029-12.png and /dev/null differ diff --git a/public/media/avatar/small/029-2.png b/public/media/avatar/small/029-2.png deleted file mode 100755 index 1b228ed41..000000000 Binary files a/public/media/avatar/small/029-2.png and /dev/null differ diff --git a/public/media/avatar/small/029-3.png b/public/media/avatar/small/029-3.png deleted file mode 100755 index e544ad0f8..000000000 Binary files a/public/media/avatar/small/029-3.png and /dev/null differ diff --git a/public/media/avatar/small/029-4.png b/public/media/avatar/small/029-4.png deleted file mode 100755 index f386b932e..000000000 Binary files a/public/media/avatar/small/029-4.png and /dev/null differ diff --git a/public/media/avatar/small/029-5.png b/public/media/avatar/small/029-5.png deleted file mode 100755 index 4e85e5364..000000000 Binary files a/public/media/avatar/small/029-5.png and /dev/null differ diff --git a/public/media/avatar/small/029-6.png b/public/media/avatar/small/029-6.png deleted file mode 100755 index 83ea8f59d..000000000 Binary files a/public/media/avatar/small/029-6.png and /dev/null differ diff --git a/public/media/avatar/small/029-7.png b/public/media/avatar/small/029-7.png deleted file mode 100755 index b7927261c..000000000 Binary files a/public/media/avatar/small/029-7.png and /dev/null differ diff --git a/public/media/avatar/small/029-8.png b/public/media/avatar/small/029-8.png deleted file mode 100644 index a7b7ca58b..000000000 Binary files a/public/media/avatar/small/029-8.png and /dev/null differ diff --git a/public/media/avatar/small/029-9.png b/public/media/avatar/small/029-9.png deleted file mode 100644 index 4e85e5364..000000000 Binary files a/public/media/avatar/small/029-9.png and /dev/null differ diff --git a/public/media/avatar/small/030-1.png b/public/media/avatar/small/030-1.png deleted file mode 100755 index 14b9dbf09..000000000 Binary files a/public/media/avatar/small/030-1.png and /dev/null differ diff --git a/public/media/avatar/small/030-10.png b/public/media/avatar/small/030-10.png deleted file mode 100644 index 00bcd4b2b..000000000 Binary files a/public/media/avatar/small/030-10.png and /dev/null differ diff --git a/public/media/avatar/small/030-11.png b/public/media/avatar/small/030-11.png deleted file mode 100644 index 6efae411c..000000000 Binary files a/public/media/avatar/small/030-11.png and /dev/null differ diff --git a/public/media/avatar/small/030-12.png b/public/media/avatar/small/030-12.png deleted file mode 100644 index 2549e5c7f..000000000 Binary files a/public/media/avatar/small/030-12.png and /dev/null differ diff --git a/public/media/avatar/small/030-2.png b/public/media/avatar/small/030-2.png deleted file mode 100755 index 6bfe99e85..000000000 Binary files a/public/media/avatar/small/030-2.png and /dev/null differ diff --git a/public/media/avatar/small/030-3.png b/public/media/avatar/small/030-3.png deleted file mode 100755 index 2549e5c7f..000000000 Binary files a/public/media/avatar/small/030-3.png and /dev/null differ diff --git a/public/media/avatar/small/030-4.png b/public/media/avatar/small/030-4.png deleted file mode 100755 index d9771906c..000000000 Binary files a/public/media/avatar/small/030-4.png and /dev/null differ diff --git a/public/media/avatar/small/030-5.png b/public/media/avatar/small/030-5.png deleted file mode 100755 index 0b09dd7ae..000000000 Binary files a/public/media/avatar/small/030-5.png and /dev/null differ diff --git a/public/media/avatar/small/030-6.png b/public/media/avatar/small/030-6.png deleted file mode 100755 index 139c5f30b..000000000 Binary files a/public/media/avatar/small/030-6.png and /dev/null differ diff --git a/public/media/avatar/small/030-7.png b/public/media/avatar/small/030-7.png deleted file mode 100755 index b65e38115..000000000 Binary files a/public/media/avatar/small/030-7.png and /dev/null differ diff --git a/public/media/avatar/small/030-8.png b/public/media/avatar/small/030-8.png deleted file mode 100644 index 7a40404ef..000000000 Binary files a/public/media/avatar/small/030-8.png and /dev/null differ diff --git a/public/media/avatar/small/030-9.png b/public/media/avatar/small/030-9.png deleted file mode 100644 index 0b09dd7ae..000000000 Binary files a/public/media/avatar/small/030-9.png and /dev/null differ diff --git a/public/media/avatar/small/031-1.png b/public/media/avatar/small/031-1.png deleted file mode 100755 index 9c4199629..000000000 Binary files a/public/media/avatar/small/031-1.png and /dev/null differ diff --git a/public/media/avatar/small/031-10.png b/public/media/avatar/small/031-10.png deleted file mode 100644 index 0943d6737..000000000 Binary files a/public/media/avatar/small/031-10.png and /dev/null differ diff --git a/public/media/avatar/small/031-11.png b/public/media/avatar/small/031-11.png deleted file mode 100644 index a3ddf29eb..000000000 Binary files a/public/media/avatar/small/031-11.png and /dev/null differ diff --git a/public/media/avatar/small/031-12.png b/public/media/avatar/small/031-12.png deleted file mode 100644 index c60efffda..000000000 Binary files a/public/media/avatar/small/031-12.png and /dev/null differ diff --git a/public/media/avatar/small/031-2.png b/public/media/avatar/small/031-2.png deleted file mode 100755 index 1aff0bf72..000000000 Binary files a/public/media/avatar/small/031-2.png and /dev/null differ diff --git a/public/media/avatar/small/031-3.png b/public/media/avatar/small/031-3.png deleted file mode 100755 index c60efffda..000000000 Binary files a/public/media/avatar/small/031-3.png and /dev/null differ diff --git a/public/media/avatar/small/031-4.png b/public/media/avatar/small/031-4.png deleted file mode 100755 index 2e9c2f4a8..000000000 Binary files a/public/media/avatar/small/031-4.png and /dev/null differ diff --git a/public/media/avatar/small/031-5.png b/public/media/avatar/small/031-5.png deleted file mode 100755 index b302341ac..000000000 Binary files a/public/media/avatar/small/031-5.png and /dev/null differ diff --git a/public/media/avatar/small/031-6.png b/public/media/avatar/small/031-6.png deleted file mode 100755 index cc2ebf396..000000000 Binary files a/public/media/avatar/small/031-6.png and /dev/null differ diff --git a/public/media/avatar/small/031-7.png b/public/media/avatar/small/031-7.png deleted file mode 100755 index 5b0796395..000000000 Binary files a/public/media/avatar/small/031-7.png and /dev/null differ diff --git a/public/media/avatar/small/031-8.png b/public/media/avatar/small/031-8.png deleted file mode 100644 index d89e84bd0..000000000 Binary files a/public/media/avatar/small/031-8.png and /dev/null differ diff --git a/public/media/avatar/small/031-9.png b/public/media/avatar/small/031-9.png deleted file mode 100644 index b302341ac..000000000 Binary files a/public/media/avatar/small/031-9.png and /dev/null differ diff --git a/public/media/avatar/small/032-1.png b/public/media/avatar/small/032-1.png deleted file mode 100755 index ab4151503..000000000 Binary files a/public/media/avatar/small/032-1.png and /dev/null differ diff --git a/public/media/avatar/small/032-10.png b/public/media/avatar/small/032-10.png deleted file mode 100644 index 55e701b05..000000000 Binary files a/public/media/avatar/small/032-10.png and /dev/null differ diff --git a/public/media/avatar/small/032-11.png b/public/media/avatar/small/032-11.png deleted file mode 100644 index 6b5a813b3..000000000 Binary files a/public/media/avatar/small/032-11.png and /dev/null differ diff --git a/public/media/avatar/small/032-12.png b/public/media/avatar/small/032-12.png deleted file mode 100644 index 4e6efb5c9..000000000 Binary files a/public/media/avatar/small/032-12.png and /dev/null differ diff --git a/public/media/avatar/small/032-2.png b/public/media/avatar/small/032-2.png deleted file mode 100755 index 6491d4614..000000000 Binary files a/public/media/avatar/small/032-2.png and /dev/null differ diff --git a/public/media/avatar/small/032-3.png b/public/media/avatar/small/032-3.png deleted file mode 100755 index 4e6efb5c9..000000000 Binary files a/public/media/avatar/small/032-3.png and /dev/null differ diff --git a/public/media/avatar/small/032-4.png b/public/media/avatar/small/032-4.png deleted file mode 100755 index d8e2f5df1..000000000 Binary files a/public/media/avatar/small/032-4.png and /dev/null differ diff --git a/public/media/avatar/small/032-5.png b/public/media/avatar/small/032-5.png deleted file mode 100755 index a80706dc9..000000000 Binary files a/public/media/avatar/small/032-5.png and /dev/null differ diff --git a/public/media/avatar/small/032-6.png b/public/media/avatar/small/032-6.png deleted file mode 100755 index 5c4ed0f7e..000000000 Binary files a/public/media/avatar/small/032-6.png and /dev/null differ diff --git a/public/media/avatar/small/032-7.png b/public/media/avatar/small/032-7.png deleted file mode 100755 index 16b449b2a..000000000 Binary files a/public/media/avatar/small/032-7.png and /dev/null differ diff --git a/public/media/avatar/small/032-8.png b/public/media/avatar/small/032-8.png deleted file mode 100644 index cf9fb2f08..000000000 Binary files a/public/media/avatar/small/032-8.png and /dev/null differ diff --git a/public/media/avatar/small/032-9.png b/public/media/avatar/small/032-9.png deleted file mode 100644 index a80706dc9..000000000 Binary files a/public/media/avatar/small/032-9.png and /dev/null differ diff --git a/public/media/avatar/small/033-1.png b/public/media/avatar/small/033-1.png deleted file mode 100755 index 22e043250..000000000 Binary files a/public/media/avatar/small/033-1.png and /dev/null differ diff --git a/public/media/avatar/small/033-10.png b/public/media/avatar/small/033-10.png deleted file mode 100644 index 8ddcee1d9..000000000 Binary files a/public/media/avatar/small/033-10.png and /dev/null differ diff --git a/public/media/avatar/small/033-11.png b/public/media/avatar/small/033-11.png deleted file mode 100644 index 53f4b23fb..000000000 Binary files a/public/media/avatar/small/033-11.png and /dev/null differ diff --git a/public/media/avatar/small/033-12.png b/public/media/avatar/small/033-12.png deleted file mode 100644 index 748ae044b..000000000 Binary files a/public/media/avatar/small/033-12.png and /dev/null differ diff --git a/public/media/avatar/small/033-2.png b/public/media/avatar/small/033-2.png deleted file mode 100755 index 362599700..000000000 Binary files a/public/media/avatar/small/033-2.png and /dev/null differ diff --git a/public/media/avatar/small/033-3.png b/public/media/avatar/small/033-3.png deleted file mode 100755 index 748ae044b..000000000 Binary files a/public/media/avatar/small/033-3.png and /dev/null differ diff --git a/public/media/avatar/small/033-4.png b/public/media/avatar/small/033-4.png deleted file mode 100755 index d2be3de4b..000000000 Binary files a/public/media/avatar/small/033-4.png and /dev/null differ diff --git a/public/media/avatar/small/033-5.png b/public/media/avatar/small/033-5.png deleted file mode 100755 index c007ac2b2..000000000 Binary files a/public/media/avatar/small/033-5.png and /dev/null differ diff --git a/public/media/avatar/small/033-6.png b/public/media/avatar/small/033-6.png deleted file mode 100755 index 76ece6305..000000000 Binary files a/public/media/avatar/small/033-6.png and /dev/null differ diff --git a/public/media/avatar/small/033-7.png b/public/media/avatar/small/033-7.png deleted file mode 100755 index 5bd130bb0..000000000 Binary files a/public/media/avatar/small/033-7.png and /dev/null differ diff --git a/public/media/avatar/small/033-8.png b/public/media/avatar/small/033-8.png deleted file mode 100644 index 2225b0851..000000000 Binary files a/public/media/avatar/small/033-8.png and /dev/null differ diff --git a/public/media/avatar/small/033-9.png b/public/media/avatar/small/033-9.png deleted file mode 100644 index c007ac2b2..000000000 Binary files a/public/media/avatar/small/033-9.png and /dev/null differ diff --git a/public/media/avatar/small/034-1.png b/public/media/avatar/small/034-1.png deleted file mode 100755 index 261838f2c..000000000 Binary files a/public/media/avatar/small/034-1.png and /dev/null differ diff --git a/public/media/avatar/small/034-10.png b/public/media/avatar/small/034-10.png deleted file mode 100644 index c1afc322c..000000000 Binary files a/public/media/avatar/small/034-10.png and /dev/null differ diff --git a/public/media/avatar/small/034-11.png b/public/media/avatar/small/034-11.png deleted file mode 100644 index adb40b1d9..000000000 Binary files a/public/media/avatar/small/034-11.png and /dev/null differ diff --git a/public/media/avatar/small/034-12.png b/public/media/avatar/small/034-12.png deleted file mode 100644 index 76a7f46d9..000000000 Binary files a/public/media/avatar/small/034-12.png and /dev/null differ diff --git a/public/media/avatar/small/034-2.png b/public/media/avatar/small/034-2.png deleted file mode 100755 index e9d016686..000000000 Binary files a/public/media/avatar/small/034-2.png and /dev/null differ diff --git a/public/media/avatar/small/034-3.png b/public/media/avatar/small/034-3.png deleted file mode 100755 index 76a7f46d9..000000000 Binary files a/public/media/avatar/small/034-3.png and /dev/null differ diff --git a/public/media/avatar/small/034-4.png b/public/media/avatar/small/034-4.png deleted file mode 100755 index 0c61bb4cb..000000000 Binary files a/public/media/avatar/small/034-4.png and /dev/null differ diff --git a/public/media/avatar/small/034-5.png b/public/media/avatar/small/034-5.png deleted file mode 100755 index 87461c24c..000000000 Binary files a/public/media/avatar/small/034-5.png and /dev/null differ diff --git a/public/media/avatar/small/034-6.png b/public/media/avatar/small/034-6.png deleted file mode 100755 index cd77fecf5..000000000 Binary files a/public/media/avatar/small/034-6.png and /dev/null differ diff --git a/public/media/avatar/small/034-7.png b/public/media/avatar/small/034-7.png deleted file mode 100755 index 83f1ac1ce..000000000 Binary files a/public/media/avatar/small/034-7.png and /dev/null differ diff --git a/public/media/avatar/small/034-8.png b/public/media/avatar/small/034-8.png deleted file mode 100644 index b68ab00a3..000000000 Binary files a/public/media/avatar/small/034-8.png and /dev/null differ diff --git a/public/media/avatar/small/034-9.png b/public/media/avatar/small/034-9.png deleted file mode 100644 index 87461c24c..000000000 Binary files a/public/media/avatar/small/034-9.png and /dev/null differ diff --git a/public/media/avatar/small/035-1.png b/public/media/avatar/small/035-1.png deleted file mode 100755 index b7654da15..000000000 Binary files a/public/media/avatar/small/035-1.png and /dev/null differ diff --git a/public/media/avatar/small/035-10.png b/public/media/avatar/small/035-10.png deleted file mode 100644 index ccba21a9c..000000000 Binary files a/public/media/avatar/small/035-10.png and /dev/null differ diff --git a/public/media/avatar/small/035-11.png b/public/media/avatar/small/035-11.png deleted file mode 100644 index 8611785f8..000000000 Binary files a/public/media/avatar/small/035-11.png and /dev/null differ diff --git a/public/media/avatar/small/035-12.png b/public/media/avatar/small/035-12.png deleted file mode 100644 index 5bea7d787..000000000 Binary files a/public/media/avatar/small/035-12.png and /dev/null differ diff --git a/public/media/avatar/small/035-2.png b/public/media/avatar/small/035-2.png deleted file mode 100755 index 704a735b9..000000000 Binary files a/public/media/avatar/small/035-2.png and /dev/null differ diff --git a/public/media/avatar/small/035-3.png b/public/media/avatar/small/035-3.png deleted file mode 100755 index 5bea7d787..000000000 Binary files a/public/media/avatar/small/035-3.png and /dev/null differ diff --git a/public/media/avatar/small/035-4.png b/public/media/avatar/small/035-4.png deleted file mode 100755 index bd6d1aafb..000000000 Binary files a/public/media/avatar/small/035-4.png and /dev/null differ diff --git a/public/media/avatar/small/035-5.png b/public/media/avatar/small/035-5.png deleted file mode 100755 index 6dbbdca8c..000000000 Binary files a/public/media/avatar/small/035-5.png and /dev/null differ diff --git a/public/media/avatar/small/035-6.png b/public/media/avatar/small/035-6.png deleted file mode 100755 index 489e1502c..000000000 Binary files a/public/media/avatar/small/035-6.png and /dev/null differ diff --git a/public/media/avatar/small/035-7.png b/public/media/avatar/small/035-7.png deleted file mode 100755 index a61759055..000000000 Binary files a/public/media/avatar/small/035-7.png and /dev/null differ diff --git a/public/media/avatar/small/035-8.png b/public/media/avatar/small/035-8.png deleted file mode 100644 index 21ab2feb4..000000000 Binary files a/public/media/avatar/small/035-8.png and /dev/null differ diff --git a/public/media/avatar/small/035-9.png b/public/media/avatar/small/035-9.png deleted file mode 100644 index 6dbbdca8c..000000000 Binary files a/public/media/avatar/small/035-9.png and /dev/null differ diff --git a/public/media/avatar/small/036-1.png b/public/media/avatar/small/036-1.png deleted file mode 100755 index 640309899..000000000 Binary files a/public/media/avatar/small/036-1.png and /dev/null differ diff --git a/public/media/avatar/small/036-10.png b/public/media/avatar/small/036-10.png deleted file mode 100644 index f634810bd..000000000 Binary files a/public/media/avatar/small/036-10.png and /dev/null differ diff --git a/public/media/avatar/small/036-11.png b/public/media/avatar/small/036-11.png deleted file mode 100644 index c7d2e30d8..000000000 Binary files a/public/media/avatar/small/036-11.png and /dev/null differ diff --git a/public/media/avatar/small/036-12.png b/public/media/avatar/small/036-12.png deleted file mode 100644 index 00be6a29f..000000000 Binary files a/public/media/avatar/small/036-12.png and /dev/null differ diff --git a/public/media/avatar/small/036-2.png b/public/media/avatar/small/036-2.png deleted file mode 100755 index 4b164293e..000000000 Binary files a/public/media/avatar/small/036-2.png and /dev/null differ diff --git a/public/media/avatar/small/036-3.png b/public/media/avatar/small/036-3.png deleted file mode 100755 index 00be6a29f..000000000 Binary files a/public/media/avatar/small/036-3.png and /dev/null differ diff --git a/public/media/avatar/small/036-4.png b/public/media/avatar/small/036-4.png deleted file mode 100755 index b535c5e60..000000000 Binary files a/public/media/avatar/small/036-4.png and /dev/null differ diff --git a/public/media/avatar/small/036-5.png b/public/media/avatar/small/036-5.png deleted file mode 100755 index 57b7f9d02..000000000 Binary files a/public/media/avatar/small/036-5.png and /dev/null differ diff --git a/public/media/avatar/small/036-6.png b/public/media/avatar/small/036-6.png deleted file mode 100755 index 80af25b1f..000000000 Binary files a/public/media/avatar/small/036-6.png and /dev/null differ diff --git a/public/media/avatar/small/036-7.png b/public/media/avatar/small/036-7.png deleted file mode 100755 index bf02ca75f..000000000 Binary files a/public/media/avatar/small/036-7.png and /dev/null differ diff --git a/public/media/avatar/small/036-8.png b/public/media/avatar/small/036-8.png deleted file mode 100644 index c18b11423..000000000 Binary files a/public/media/avatar/small/036-8.png and /dev/null differ diff --git a/public/media/avatar/small/036-9.png b/public/media/avatar/small/036-9.png deleted file mode 100644 index 57b7f9d02..000000000 Binary files a/public/media/avatar/small/036-9.png and /dev/null differ diff --git a/public/media/avatar/small/037-1.png b/public/media/avatar/small/037-1.png deleted file mode 100755 index 3cbb651dc..000000000 Binary files a/public/media/avatar/small/037-1.png and /dev/null differ diff --git a/public/media/avatar/small/037-10.png b/public/media/avatar/small/037-10.png deleted file mode 100644 index b46a8a4a7..000000000 Binary files a/public/media/avatar/small/037-10.png and /dev/null differ diff --git a/public/media/avatar/small/037-11.png b/public/media/avatar/small/037-11.png deleted file mode 100644 index 1a075dcd7..000000000 Binary files a/public/media/avatar/small/037-11.png and /dev/null differ diff --git a/public/media/avatar/small/037-12.png b/public/media/avatar/small/037-12.png deleted file mode 100644 index b1660b085..000000000 Binary files a/public/media/avatar/small/037-12.png and /dev/null differ diff --git a/public/media/avatar/small/037-2.png b/public/media/avatar/small/037-2.png deleted file mode 100755 index f21478623..000000000 Binary files a/public/media/avatar/small/037-2.png and /dev/null differ diff --git a/public/media/avatar/small/037-3.png b/public/media/avatar/small/037-3.png deleted file mode 100755 index b1660b085..000000000 Binary files a/public/media/avatar/small/037-3.png and /dev/null differ diff --git a/public/media/avatar/small/037-4.png b/public/media/avatar/small/037-4.png deleted file mode 100755 index 54eae5a5d..000000000 Binary files a/public/media/avatar/small/037-4.png and /dev/null differ diff --git a/public/media/avatar/small/037-5.png b/public/media/avatar/small/037-5.png deleted file mode 100755 index 168ae4be8..000000000 Binary files a/public/media/avatar/small/037-5.png and /dev/null differ diff --git a/public/media/avatar/small/037-6.png b/public/media/avatar/small/037-6.png deleted file mode 100755 index ef05ed687..000000000 Binary files a/public/media/avatar/small/037-6.png and /dev/null differ diff --git a/public/media/avatar/small/037-7.png b/public/media/avatar/small/037-7.png deleted file mode 100755 index 05791ac30..000000000 Binary files a/public/media/avatar/small/037-7.png and /dev/null differ diff --git a/public/media/avatar/small/037-8.png b/public/media/avatar/small/037-8.png deleted file mode 100644 index 0c577314e..000000000 Binary files a/public/media/avatar/small/037-8.png and /dev/null differ diff --git a/public/media/avatar/small/037-9.png b/public/media/avatar/small/037-9.png deleted file mode 100644 index 168ae4be8..000000000 Binary files a/public/media/avatar/small/037-9.png and /dev/null differ diff --git a/public/media/avatar/small/038-1.png b/public/media/avatar/small/038-1.png deleted file mode 100755 index d273583d3..000000000 Binary files a/public/media/avatar/small/038-1.png and /dev/null differ diff --git a/public/media/avatar/small/038-10.png b/public/media/avatar/small/038-10.png deleted file mode 100644 index 70b3c5331..000000000 Binary files a/public/media/avatar/small/038-10.png and /dev/null differ diff --git a/public/media/avatar/small/038-11.png b/public/media/avatar/small/038-11.png deleted file mode 100644 index eec8cbc59..000000000 Binary files a/public/media/avatar/small/038-11.png and /dev/null differ diff --git a/public/media/avatar/small/038-12.png b/public/media/avatar/small/038-12.png deleted file mode 100644 index b7b6d38d8..000000000 Binary files a/public/media/avatar/small/038-12.png and /dev/null differ diff --git a/public/media/avatar/small/038-2.png b/public/media/avatar/small/038-2.png deleted file mode 100755 index c02c55992..000000000 Binary files a/public/media/avatar/small/038-2.png and /dev/null differ diff --git a/public/media/avatar/small/038-3.png b/public/media/avatar/small/038-3.png deleted file mode 100755 index b7b6d38d8..000000000 Binary files a/public/media/avatar/small/038-3.png and /dev/null differ diff --git a/public/media/avatar/small/038-4.png b/public/media/avatar/small/038-4.png deleted file mode 100755 index baa25fa5b..000000000 Binary files a/public/media/avatar/small/038-4.png and /dev/null differ diff --git a/public/media/avatar/small/038-5.png b/public/media/avatar/small/038-5.png deleted file mode 100755 index 95b9ebbeb..000000000 Binary files a/public/media/avatar/small/038-5.png and /dev/null differ diff --git a/public/media/avatar/small/038-6.png b/public/media/avatar/small/038-6.png deleted file mode 100755 index 5c23927be..000000000 Binary files a/public/media/avatar/small/038-6.png and /dev/null differ diff --git a/public/media/avatar/small/038-7.png b/public/media/avatar/small/038-7.png deleted file mode 100755 index 2fb37de0e..000000000 Binary files a/public/media/avatar/small/038-7.png and /dev/null differ diff --git a/public/media/avatar/small/038-8.png b/public/media/avatar/small/038-8.png deleted file mode 100644 index 4c10848e6..000000000 Binary files a/public/media/avatar/small/038-8.png and /dev/null differ diff --git a/public/media/avatar/small/038-9.png b/public/media/avatar/small/038-9.png deleted file mode 100644 index 95b9ebbeb..000000000 Binary files a/public/media/avatar/small/038-9.png and /dev/null differ diff --git a/public/media/avatar/small/039-1.png b/public/media/avatar/small/039-1.png deleted file mode 100755 index 0566c42eb..000000000 Binary files a/public/media/avatar/small/039-1.png and /dev/null differ diff --git a/public/media/avatar/small/039-10.png b/public/media/avatar/small/039-10.png deleted file mode 100644 index be8a1ada4..000000000 Binary files a/public/media/avatar/small/039-10.png and /dev/null differ diff --git a/public/media/avatar/small/039-11.png b/public/media/avatar/small/039-11.png deleted file mode 100644 index 5799a8b4f..000000000 Binary files a/public/media/avatar/small/039-11.png and /dev/null differ diff --git a/public/media/avatar/small/039-12.png b/public/media/avatar/small/039-12.png deleted file mode 100644 index 0688e40ca..000000000 Binary files a/public/media/avatar/small/039-12.png and /dev/null differ diff --git a/public/media/avatar/small/039-2.png b/public/media/avatar/small/039-2.png deleted file mode 100755 index 795a60943..000000000 Binary files a/public/media/avatar/small/039-2.png and /dev/null differ diff --git a/public/media/avatar/small/039-3.png b/public/media/avatar/small/039-3.png deleted file mode 100755 index 0688e40ca..000000000 Binary files a/public/media/avatar/small/039-3.png and /dev/null differ diff --git a/public/media/avatar/small/039-4.png b/public/media/avatar/small/039-4.png deleted file mode 100755 index 87344963d..000000000 Binary files a/public/media/avatar/small/039-4.png and /dev/null differ diff --git a/public/media/avatar/small/039-5.png b/public/media/avatar/small/039-5.png deleted file mode 100755 index b08376c3f..000000000 Binary files a/public/media/avatar/small/039-5.png and /dev/null differ diff --git a/public/media/avatar/small/039-6.png b/public/media/avatar/small/039-6.png deleted file mode 100755 index 9dd530a45..000000000 Binary files a/public/media/avatar/small/039-6.png and /dev/null differ diff --git a/public/media/avatar/small/039-7.png b/public/media/avatar/small/039-7.png deleted file mode 100755 index f7c9bf035..000000000 Binary files a/public/media/avatar/small/039-7.png and /dev/null differ diff --git a/public/media/avatar/small/039-8.png b/public/media/avatar/small/039-8.png deleted file mode 100644 index 17f256620..000000000 Binary files a/public/media/avatar/small/039-8.png and /dev/null differ diff --git a/public/media/avatar/small/039-9.png b/public/media/avatar/small/039-9.png deleted file mode 100644 index b08376c3f..000000000 Binary files a/public/media/avatar/small/039-9.png and /dev/null differ diff --git a/public/media/avatar/small/040-1.png b/public/media/avatar/small/040-1.png deleted file mode 100755 index 6ed12856c..000000000 Binary files a/public/media/avatar/small/040-1.png and /dev/null differ diff --git a/public/media/avatar/small/040-10.png b/public/media/avatar/small/040-10.png deleted file mode 100644 index d0dcf93f7..000000000 Binary files a/public/media/avatar/small/040-10.png and /dev/null differ diff --git a/public/media/avatar/small/040-11.png b/public/media/avatar/small/040-11.png deleted file mode 100644 index d099bff35..000000000 Binary files a/public/media/avatar/small/040-11.png and /dev/null differ diff --git a/public/media/avatar/small/040-12.png b/public/media/avatar/small/040-12.png deleted file mode 100644 index d1bab508f..000000000 Binary files a/public/media/avatar/small/040-12.png and /dev/null differ diff --git a/public/media/avatar/small/040-2.png b/public/media/avatar/small/040-2.png deleted file mode 100755 index 730771179..000000000 Binary files a/public/media/avatar/small/040-2.png and /dev/null differ diff --git a/public/media/avatar/small/040-3.png b/public/media/avatar/small/040-3.png deleted file mode 100755 index d1bab508f..000000000 Binary files a/public/media/avatar/small/040-3.png and /dev/null differ diff --git a/public/media/avatar/small/040-4.png b/public/media/avatar/small/040-4.png deleted file mode 100755 index e8aa4bcd5..000000000 Binary files a/public/media/avatar/small/040-4.png and /dev/null differ diff --git a/public/media/avatar/small/040-5.png b/public/media/avatar/small/040-5.png deleted file mode 100755 index 96d2b47f5..000000000 Binary files a/public/media/avatar/small/040-5.png and /dev/null differ diff --git a/public/media/avatar/small/040-6.png b/public/media/avatar/small/040-6.png deleted file mode 100755 index 717e1e0a0..000000000 Binary files a/public/media/avatar/small/040-6.png and /dev/null differ diff --git a/public/media/avatar/small/040-7.png b/public/media/avatar/small/040-7.png deleted file mode 100755 index 9ae3812f8..000000000 Binary files a/public/media/avatar/small/040-7.png and /dev/null differ diff --git a/public/media/avatar/small/040-8.png b/public/media/avatar/small/040-8.png deleted file mode 100644 index 906451950..000000000 Binary files a/public/media/avatar/small/040-8.png and /dev/null differ diff --git a/public/media/avatar/small/040-9.png b/public/media/avatar/small/040-9.png deleted file mode 100644 index 96d2b47f5..000000000 Binary files a/public/media/avatar/small/040-9.png and /dev/null differ diff --git a/public/media/avatar/small/041-1.png b/public/media/avatar/small/041-1.png deleted file mode 100755 index d6c22a3b6..000000000 Binary files a/public/media/avatar/small/041-1.png and /dev/null differ diff --git a/public/media/avatar/small/041-10.png b/public/media/avatar/small/041-10.png deleted file mode 100644 index eb4b693a6..000000000 Binary files a/public/media/avatar/small/041-10.png and /dev/null differ diff --git a/public/media/avatar/small/041-11.png b/public/media/avatar/small/041-11.png deleted file mode 100644 index 3e2f5de42..000000000 Binary files a/public/media/avatar/small/041-11.png and /dev/null differ diff --git a/public/media/avatar/small/041-12.png b/public/media/avatar/small/041-12.png deleted file mode 100644 index db29b182e..000000000 Binary files a/public/media/avatar/small/041-12.png and /dev/null differ diff --git a/public/media/avatar/small/041-2.png b/public/media/avatar/small/041-2.png deleted file mode 100755 index 3289e8c2f..000000000 Binary files a/public/media/avatar/small/041-2.png and /dev/null differ diff --git a/public/media/avatar/small/041-3.png b/public/media/avatar/small/041-3.png deleted file mode 100755 index db29b182e..000000000 Binary files a/public/media/avatar/small/041-3.png and /dev/null differ diff --git a/public/media/avatar/small/041-4.png b/public/media/avatar/small/041-4.png deleted file mode 100755 index 8fdb92adc..000000000 Binary files a/public/media/avatar/small/041-4.png and /dev/null differ diff --git a/public/media/avatar/small/041-5.png b/public/media/avatar/small/041-5.png deleted file mode 100755 index d60ca7278..000000000 Binary files a/public/media/avatar/small/041-5.png and /dev/null differ diff --git a/public/media/avatar/small/041-6.png b/public/media/avatar/small/041-6.png deleted file mode 100755 index 04e88531f..000000000 Binary files a/public/media/avatar/small/041-6.png and /dev/null differ diff --git a/public/media/avatar/small/041-7.png b/public/media/avatar/small/041-7.png deleted file mode 100755 index 1c6e4c267..000000000 Binary files a/public/media/avatar/small/041-7.png and /dev/null differ diff --git a/public/media/avatar/small/041-8.png b/public/media/avatar/small/041-8.png deleted file mode 100644 index b2a460aac..000000000 Binary files a/public/media/avatar/small/041-8.png and /dev/null differ diff --git a/public/media/avatar/small/041-9.png b/public/media/avatar/small/041-9.png deleted file mode 100644 index d60ca7278..000000000 Binary files a/public/media/avatar/small/041-9.png and /dev/null differ diff --git a/public/media/avatar/small/042-1.png b/public/media/avatar/small/042-1.png deleted file mode 100755 index c05ac9068..000000000 Binary files a/public/media/avatar/small/042-1.png and /dev/null differ diff --git a/public/media/avatar/small/042-10.png b/public/media/avatar/small/042-10.png deleted file mode 100644 index e4bd1e4e3..000000000 Binary files a/public/media/avatar/small/042-10.png and /dev/null differ diff --git a/public/media/avatar/small/042-11.png b/public/media/avatar/small/042-11.png deleted file mode 100644 index 1a3ced6ea..000000000 Binary files a/public/media/avatar/small/042-11.png and /dev/null differ diff --git a/public/media/avatar/small/042-12.png b/public/media/avatar/small/042-12.png deleted file mode 100644 index 1326156c9..000000000 Binary files a/public/media/avatar/small/042-12.png and /dev/null differ diff --git a/public/media/avatar/small/042-2.png b/public/media/avatar/small/042-2.png deleted file mode 100755 index ed8e96c76..000000000 Binary files a/public/media/avatar/small/042-2.png and /dev/null differ diff --git a/public/media/avatar/small/042-3.png b/public/media/avatar/small/042-3.png deleted file mode 100755 index 1326156c9..000000000 Binary files a/public/media/avatar/small/042-3.png and /dev/null differ diff --git a/public/media/avatar/small/042-4.png b/public/media/avatar/small/042-4.png deleted file mode 100755 index 183e53c51..000000000 Binary files a/public/media/avatar/small/042-4.png and /dev/null differ diff --git a/public/media/avatar/small/042-5.png b/public/media/avatar/small/042-5.png deleted file mode 100755 index 95edda3cc..000000000 Binary files a/public/media/avatar/small/042-5.png and /dev/null differ diff --git a/public/media/avatar/small/042-6.png b/public/media/avatar/small/042-6.png deleted file mode 100755 index 6e7be4395..000000000 Binary files a/public/media/avatar/small/042-6.png and /dev/null differ diff --git a/public/media/avatar/small/042-7.png b/public/media/avatar/small/042-7.png deleted file mode 100755 index b3a073980..000000000 Binary files a/public/media/avatar/small/042-7.png and /dev/null differ diff --git a/public/media/avatar/small/042-8.png b/public/media/avatar/small/042-8.png deleted file mode 100644 index ac4a93048..000000000 Binary files a/public/media/avatar/small/042-8.png and /dev/null differ diff --git a/public/media/avatar/small/042-9.png b/public/media/avatar/small/042-9.png deleted file mode 100644 index 95edda3cc..000000000 Binary files a/public/media/avatar/small/042-9.png and /dev/null differ diff --git a/public/media/avatar/small/043-1.png b/public/media/avatar/small/043-1.png deleted file mode 100755 index d19d6adcd..000000000 Binary files a/public/media/avatar/small/043-1.png and /dev/null differ diff --git a/public/media/avatar/small/043-10.png b/public/media/avatar/small/043-10.png deleted file mode 100644 index 05642b519..000000000 Binary files a/public/media/avatar/small/043-10.png and /dev/null differ diff --git a/public/media/avatar/small/043-11.png b/public/media/avatar/small/043-11.png deleted file mode 100644 index 2bf58b300..000000000 Binary files a/public/media/avatar/small/043-11.png and /dev/null differ diff --git a/public/media/avatar/small/043-12.png b/public/media/avatar/small/043-12.png deleted file mode 100644 index 094650548..000000000 Binary files a/public/media/avatar/small/043-12.png and /dev/null differ diff --git a/public/media/avatar/small/043-2.png b/public/media/avatar/small/043-2.png deleted file mode 100755 index c9ee3a8ea..000000000 Binary files a/public/media/avatar/small/043-2.png and /dev/null differ diff --git a/public/media/avatar/small/043-3.png b/public/media/avatar/small/043-3.png deleted file mode 100755 index 094650548..000000000 Binary files a/public/media/avatar/small/043-3.png and /dev/null differ diff --git a/public/media/avatar/small/043-4.png b/public/media/avatar/small/043-4.png deleted file mode 100755 index f2f53c979..000000000 Binary files a/public/media/avatar/small/043-4.png and /dev/null differ diff --git a/public/media/avatar/small/043-5.png b/public/media/avatar/small/043-5.png deleted file mode 100755 index 903f03d2b..000000000 Binary files a/public/media/avatar/small/043-5.png and /dev/null differ diff --git a/public/media/avatar/small/043-6.png b/public/media/avatar/small/043-6.png deleted file mode 100755 index 13dd1fd86..000000000 Binary files a/public/media/avatar/small/043-6.png and /dev/null differ diff --git a/public/media/avatar/small/043-7.png b/public/media/avatar/small/043-7.png deleted file mode 100755 index cb9caff8f..000000000 Binary files a/public/media/avatar/small/043-7.png and /dev/null differ diff --git a/public/media/avatar/small/043-8.png b/public/media/avatar/small/043-8.png deleted file mode 100644 index 6785f89f1..000000000 Binary files a/public/media/avatar/small/043-8.png and /dev/null differ diff --git a/public/media/avatar/small/043-9.png b/public/media/avatar/small/043-9.png deleted file mode 100644 index 903f03d2b..000000000 Binary files a/public/media/avatar/small/043-9.png and /dev/null differ diff --git a/public/media/avatar/small/044-1.png b/public/media/avatar/small/044-1.png deleted file mode 100755 index 991e2c613..000000000 Binary files a/public/media/avatar/small/044-1.png and /dev/null differ diff --git a/public/media/avatar/small/044-10.png b/public/media/avatar/small/044-10.png deleted file mode 100644 index 90c2a5480..000000000 Binary files a/public/media/avatar/small/044-10.png and /dev/null differ diff --git a/public/media/avatar/small/044-11.png b/public/media/avatar/small/044-11.png deleted file mode 100644 index 5f9c08f60..000000000 Binary files a/public/media/avatar/small/044-11.png and /dev/null differ diff --git a/public/media/avatar/small/044-12.png b/public/media/avatar/small/044-12.png deleted file mode 100644 index d5960732e..000000000 Binary files a/public/media/avatar/small/044-12.png and /dev/null differ diff --git a/public/media/avatar/small/044-2.png b/public/media/avatar/small/044-2.png deleted file mode 100755 index 402b40f66..000000000 Binary files a/public/media/avatar/small/044-2.png and /dev/null differ diff --git a/public/media/avatar/small/044-3.png b/public/media/avatar/small/044-3.png deleted file mode 100755 index d5960732e..000000000 Binary files a/public/media/avatar/small/044-3.png and /dev/null differ diff --git a/public/media/avatar/small/044-4.png b/public/media/avatar/small/044-4.png deleted file mode 100755 index 4afb05b20..000000000 Binary files a/public/media/avatar/small/044-4.png and /dev/null differ diff --git a/public/media/avatar/small/044-5.png b/public/media/avatar/small/044-5.png deleted file mode 100755 index 119b34be9..000000000 Binary files a/public/media/avatar/small/044-5.png and /dev/null differ diff --git a/public/media/avatar/small/044-6.png b/public/media/avatar/small/044-6.png deleted file mode 100755 index 60420433e..000000000 Binary files a/public/media/avatar/small/044-6.png and /dev/null differ diff --git a/public/media/avatar/small/044-7.png b/public/media/avatar/small/044-7.png deleted file mode 100755 index 6e65dc442..000000000 Binary files a/public/media/avatar/small/044-7.png and /dev/null differ diff --git a/public/media/avatar/small/044-8.png b/public/media/avatar/small/044-8.png deleted file mode 100644 index 141f9e156..000000000 Binary files a/public/media/avatar/small/044-8.png and /dev/null differ diff --git a/public/media/avatar/small/044-9.png b/public/media/avatar/small/044-9.png deleted file mode 100644 index 119b34be9..000000000 Binary files a/public/media/avatar/small/044-9.png and /dev/null differ diff --git a/public/media/avatar/small/045-1.png b/public/media/avatar/small/045-1.png deleted file mode 100755 index c5e88f172..000000000 Binary files a/public/media/avatar/small/045-1.png and /dev/null differ diff --git a/public/media/avatar/small/045-10.png b/public/media/avatar/small/045-10.png deleted file mode 100644 index 65e51a50a..000000000 Binary files a/public/media/avatar/small/045-10.png and /dev/null differ diff --git a/public/media/avatar/small/045-11.png b/public/media/avatar/small/045-11.png deleted file mode 100644 index b0b34ed46..000000000 Binary files a/public/media/avatar/small/045-11.png and /dev/null differ diff --git a/public/media/avatar/small/045-12.png b/public/media/avatar/small/045-12.png deleted file mode 100644 index ddce8f7d1..000000000 Binary files a/public/media/avatar/small/045-12.png and /dev/null differ diff --git a/public/media/avatar/small/045-2.png b/public/media/avatar/small/045-2.png deleted file mode 100755 index 96c7ceadc..000000000 Binary files a/public/media/avatar/small/045-2.png and /dev/null differ diff --git a/public/media/avatar/small/045-3.png b/public/media/avatar/small/045-3.png deleted file mode 100755 index ddce8f7d1..000000000 Binary files a/public/media/avatar/small/045-3.png and /dev/null differ diff --git a/public/media/avatar/small/045-4.png b/public/media/avatar/small/045-4.png deleted file mode 100755 index 3ac815058..000000000 Binary files a/public/media/avatar/small/045-4.png and /dev/null differ diff --git a/public/media/avatar/small/045-5.png b/public/media/avatar/small/045-5.png deleted file mode 100755 index 7141caae4..000000000 Binary files a/public/media/avatar/small/045-5.png and /dev/null differ diff --git a/public/media/avatar/small/045-6.png b/public/media/avatar/small/045-6.png deleted file mode 100755 index c8c3cc509..000000000 Binary files a/public/media/avatar/small/045-6.png and /dev/null differ diff --git a/public/media/avatar/small/045-7.png b/public/media/avatar/small/045-7.png deleted file mode 100755 index 31b02c320..000000000 Binary files a/public/media/avatar/small/045-7.png and /dev/null differ diff --git a/public/media/avatar/small/045-8.png b/public/media/avatar/small/045-8.png deleted file mode 100644 index aebe71399..000000000 Binary files a/public/media/avatar/small/045-8.png and /dev/null differ diff --git a/public/media/avatar/small/045-9.png b/public/media/avatar/small/045-9.png deleted file mode 100644 index 7141caae4..000000000 Binary files a/public/media/avatar/small/045-9.png and /dev/null differ diff --git a/public/media/avatar/small/046-1.png b/public/media/avatar/small/046-1.png deleted file mode 100755 index c5cb4f856..000000000 Binary files a/public/media/avatar/small/046-1.png and /dev/null differ diff --git a/public/media/avatar/small/046-10.png b/public/media/avatar/small/046-10.png deleted file mode 100644 index a7b2a333f..000000000 Binary files a/public/media/avatar/small/046-10.png and /dev/null differ diff --git a/public/media/avatar/small/046-11.png b/public/media/avatar/small/046-11.png deleted file mode 100644 index 1c52b6456..000000000 Binary files a/public/media/avatar/small/046-11.png and /dev/null differ diff --git a/public/media/avatar/small/046-12.png b/public/media/avatar/small/046-12.png deleted file mode 100644 index dbfa5cd2f..000000000 Binary files a/public/media/avatar/small/046-12.png and /dev/null differ diff --git a/public/media/avatar/small/046-2.png b/public/media/avatar/small/046-2.png deleted file mode 100755 index 962b030ad..000000000 Binary files a/public/media/avatar/small/046-2.png and /dev/null differ diff --git a/public/media/avatar/small/046-3.png b/public/media/avatar/small/046-3.png deleted file mode 100755 index dbfa5cd2f..000000000 Binary files a/public/media/avatar/small/046-3.png and /dev/null differ diff --git a/public/media/avatar/small/046-4.png b/public/media/avatar/small/046-4.png deleted file mode 100755 index 5bd7e61fb..000000000 Binary files a/public/media/avatar/small/046-4.png and /dev/null differ diff --git a/public/media/avatar/small/046-5.png b/public/media/avatar/small/046-5.png deleted file mode 100755 index 7234cb4a5..000000000 Binary files a/public/media/avatar/small/046-5.png and /dev/null differ diff --git a/public/media/avatar/small/046-6.png b/public/media/avatar/small/046-6.png deleted file mode 100755 index fb8d6de30..000000000 Binary files a/public/media/avatar/small/046-6.png and /dev/null differ diff --git a/public/media/avatar/small/046-7.png b/public/media/avatar/small/046-7.png deleted file mode 100755 index b20b5c30b..000000000 Binary files a/public/media/avatar/small/046-7.png and /dev/null differ diff --git a/public/media/avatar/small/046-8.png b/public/media/avatar/small/046-8.png deleted file mode 100644 index 3e1764ac9..000000000 Binary files a/public/media/avatar/small/046-8.png and /dev/null differ diff --git a/public/media/avatar/small/046-9.png b/public/media/avatar/small/046-9.png deleted file mode 100644 index 7234cb4a5..000000000 Binary files a/public/media/avatar/small/046-9.png and /dev/null differ diff --git a/public/media/avatar/small/047-1.png b/public/media/avatar/small/047-1.png deleted file mode 100755 index 4f349ceed..000000000 Binary files a/public/media/avatar/small/047-1.png and /dev/null differ diff --git a/public/media/avatar/small/047-10.png b/public/media/avatar/small/047-10.png deleted file mode 100644 index de8b2f709..000000000 Binary files a/public/media/avatar/small/047-10.png and /dev/null differ diff --git a/public/media/avatar/small/047-11.png b/public/media/avatar/small/047-11.png deleted file mode 100644 index 7c5fd541f..000000000 Binary files a/public/media/avatar/small/047-11.png and /dev/null differ diff --git a/public/media/avatar/small/047-12.png b/public/media/avatar/small/047-12.png deleted file mode 100644 index 103a2ba79..000000000 Binary files a/public/media/avatar/small/047-12.png and /dev/null differ diff --git a/public/media/avatar/small/047-2.png b/public/media/avatar/small/047-2.png deleted file mode 100755 index 2951ffc38..000000000 Binary files a/public/media/avatar/small/047-2.png and /dev/null differ diff --git a/public/media/avatar/small/047-3.png b/public/media/avatar/small/047-3.png deleted file mode 100755 index 103a2ba79..000000000 Binary files a/public/media/avatar/small/047-3.png and /dev/null differ diff --git a/public/media/avatar/small/047-4.png b/public/media/avatar/small/047-4.png deleted file mode 100755 index ebe56de5b..000000000 Binary files a/public/media/avatar/small/047-4.png and /dev/null differ diff --git a/public/media/avatar/small/047-5.png b/public/media/avatar/small/047-5.png deleted file mode 100755 index 8651d0e2c..000000000 Binary files a/public/media/avatar/small/047-5.png and /dev/null differ diff --git a/public/media/avatar/small/047-6.png b/public/media/avatar/small/047-6.png deleted file mode 100755 index b40318a5d..000000000 Binary files a/public/media/avatar/small/047-6.png and /dev/null differ diff --git a/public/media/avatar/small/047-7.png b/public/media/avatar/small/047-7.png deleted file mode 100755 index 5863c69a8..000000000 Binary files a/public/media/avatar/small/047-7.png and /dev/null differ diff --git a/public/media/avatar/small/047-8.png b/public/media/avatar/small/047-8.png deleted file mode 100644 index adec82d79..000000000 Binary files a/public/media/avatar/small/047-8.png and /dev/null differ diff --git a/public/media/avatar/small/047-9.png b/public/media/avatar/small/047-9.png deleted file mode 100644 index 8651d0e2c..000000000 Binary files a/public/media/avatar/small/047-9.png and /dev/null differ diff --git a/public/media/avatar/small/048-1.png b/public/media/avatar/small/048-1.png deleted file mode 100755 index ebfbdadbe..000000000 Binary files a/public/media/avatar/small/048-1.png and /dev/null differ diff --git a/public/media/avatar/small/048-10.png b/public/media/avatar/small/048-10.png deleted file mode 100644 index 791c826a6..000000000 Binary files a/public/media/avatar/small/048-10.png and /dev/null differ diff --git a/public/media/avatar/small/048-11.png b/public/media/avatar/small/048-11.png deleted file mode 100644 index 4eae33b7f..000000000 Binary files a/public/media/avatar/small/048-11.png and /dev/null differ diff --git a/public/media/avatar/small/048-12.png b/public/media/avatar/small/048-12.png deleted file mode 100644 index a705c496f..000000000 Binary files a/public/media/avatar/small/048-12.png and /dev/null differ diff --git a/public/media/avatar/small/048-2.png b/public/media/avatar/small/048-2.png deleted file mode 100755 index 89637e856..000000000 Binary files a/public/media/avatar/small/048-2.png and /dev/null differ diff --git a/public/media/avatar/small/048-3.png b/public/media/avatar/small/048-3.png deleted file mode 100755 index a705c496f..000000000 Binary files a/public/media/avatar/small/048-3.png and /dev/null differ diff --git a/public/media/avatar/small/048-4.png b/public/media/avatar/small/048-4.png deleted file mode 100755 index 53aacba3f..000000000 Binary files a/public/media/avatar/small/048-4.png and /dev/null differ diff --git a/public/media/avatar/small/048-5.png b/public/media/avatar/small/048-5.png deleted file mode 100755 index 41a2c2bdb..000000000 Binary files a/public/media/avatar/small/048-5.png and /dev/null differ diff --git a/public/media/avatar/small/048-6.png b/public/media/avatar/small/048-6.png deleted file mode 100755 index e16b70dc2..000000000 Binary files a/public/media/avatar/small/048-6.png and /dev/null differ diff --git a/public/media/avatar/small/048-7.png b/public/media/avatar/small/048-7.png deleted file mode 100755 index a6df2984c..000000000 Binary files a/public/media/avatar/small/048-7.png and /dev/null differ diff --git a/public/media/avatar/small/048-8.png b/public/media/avatar/small/048-8.png deleted file mode 100644 index 3db5bd3d9..000000000 Binary files a/public/media/avatar/small/048-8.png and /dev/null differ diff --git a/public/media/avatar/small/048-9.png b/public/media/avatar/small/048-9.png deleted file mode 100644 index 41a2c2bdb..000000000 Binary files a/public/media/avatar/small/048-9.png and /dev/null differ diff --git a/public/media/avatar/small/049-1.png b/public/media/avatar/small/049-1.png deleted file mode 100755 index 7fd278dae..000000000 Binary files a/public/media/avatar/small/049-1.png and /dev/null differ diff --git a/public/media/avatar/small/049-10.png b/public/media/avatar/small/049-10.png deleted file mode 100644 index cbf1f25b6..000000000 Binary files a/public/media/avatar/small/049-10.png and /dev/null differ diff --git a/public/media/avatar/small/049-11.png b/public/media/avatar/small/049-11.png deleted file mode 100644 index eb2cf5e33..000000000 Binary files a/public/media/avatar/small/049-11.png and /dev/null differ diff --git a/public/media/avatar/small/049-12.png b/public/media/avatar/small/049-12.png deleted file mode 100644 index 001dafa43..000000000 Binary files a/public/media/avatar/small/049-12.png and /dev/null differ diff --git a/public/media/avatar/small/049-2.png b/public/media/avatar/small/049-2.png deleted file mode 100755 index 1330d3dc2..000000000 Binary files a/public/media/avatar/small/049-2.png and /dev/null differ diff --git a/public/media/avatar/small/049-3.png b/public/media/avatar/small/049-3.png deleted file mode 100755 index 001dafa43..000000000 Binary files a/public/media/avatar/small/049-3.png and /dev/null differ diff --git a/public/media/avatar/small/049-4.png b/public/media/avatar/small/049-4.png deleted file mode 100755 index 1d4136739..000000000 Binary files a/public/media/avatar/small/049-4.png and /dev/null differ diff --git a/public/media/avatar/small/049-5.png b/public/media/avatar/small/049-5.png deleted file mode 100755 index ae29e1fce..000000000 Binary files a/public/media/avatar/small/049-5.png and /dev/null differ diff --git a/public/media/avatar/small/049-6.png b/public/media/avatar/small/049-6.png deleted file mode 100755 index b436c967b..000000000 Binary files a/public/media/avatar/small/049-6.png and /dev/null differ diff --git a/public/media/avatar/small/049-7.png b/public/media/avatar/small/049-7.png deleted file mode 100755 index cb4bde303..000000000 Binary files a/public/media/avatar/small/049-7.png and /dev/null differ diff --git a/public/media/avatar/small/049-8.png b/public/media/avatar/small/049-8.png deleted file mode 100644 index f8a3348b8..000000000 Binary files a/public/media/avatar/small/049-8.png and /dev/null differ diff --git a/public/media/avatar/small/049-9.png b/public/media/avatar/small/049-9.png deleted file mode 100644 index ae29e1fce..000000000 Binary files a/public/media/avatar/small/049-9.png and /dev/null differ diff --git a/public/media/avatar/small/050-1.png b/public/media/avatar/small/050-1.png deleted file mode 100755 index 3be70f79f..000000000 Binary files a/public/media/avatar/small/050-1.png and /dev/null differ diff --git a/public/media/avatar/small/050-10.png b/public/media/avatar/small/050-10.png deleted file mode 100644 index e55b8d035..000000000 Binary files a/public/media/avatar/small/050-10.png and /dev/null differ diff --git a/public/media/avatar/small/050-11.png b/public/media/avatar/small/050-11.png deleted file mode 100644 index c30213b03..000000000 Binary files a/public/media/avatar/small/050-11.png and /dev/null differ diff --git a/public/media/avatar/small/050-12.png b/public/media/avatar/small/050-12.png deleted file mode 100644 index ee84221bc..000000000 Binary files a/public/media/avatar/small/050-12.png and /dev/null differ diff --git a/public/media/avatar/small/050-2.png b/public/media/avatar/small/050-2.png deleted file mode 100755 index 6dcf1bf96..000000000 Binary files a/public/media/avatar/small/050-2.png and /dev/null differ diff --git a/public/media/avatar/small/050-3.png b/public/media/avatar/small/050-3.png deleted file mode 100755 index ee84221bc..000000000 Binary files a/public/media/avatar/small/050-3.png and /dev/null differ diff --git a/public/media/avatar/small/050-4.png b/public/media/avatar/small/050-4.png deleted file mode 100755 index d82726792..000000000 Binary files a/public/media/avatar/small/050-4.png and /dev/null differ diff --git a/public/media/avatar/small/050-5.png b/public/media/avatar/small/050-5.png deleted file mode 100755 index cd40b4027..000000000 Binary files a/public/media/avatar/small/050-5.png and /dev/null differ diff --git a/public/media/avatar/small/050-6.png b/public/media/avatar/small/050-6.png deleted file mode 100755 index d25148fc6..000000000 Binary files a/public/media/avatar/small/050-6.png and /dev/null differ diff --git a/public/media/avatar/small/050-7.png b/public/media/avatar/small/050-7.png deleted file mode 100755 index 8790b1c87..000000000 Binary files a/public/media/avatar/small/050-7.png and /dev/null differ diff --git a/public/media/avatar/small/050-8.png b/public/media/avatar/small/050-8.png deleted file mode 100644 index 6eb90525d..000000000 Binary files a/public/media/avatar/small/050-8.png and /dev/null differ diff --git a/public/media/avatar/small/050-9.png b/public/media/avatar/small/050-9.png deleted file mode 100644 index cd40b4027..000000000 Binary files a/public/media/avatar/small/050-9.png and /dev/null differ diff --git a/public/media/avatar/small/051-1.png b/public/media/avatar/small/051-1.png deleted file mode 100755 index d5757b987..000000000 Binary files a/public/media/avatar/small/051-1.png and /dev/null differ diff --git a/public/media/avatar/small/051-10.png b/public/media/avatar/small/051-10.png deleted file mode 100644 index 7e6aaa7c4..000000000 Binary files a/public/media/avatar/small/051-10.png and /dev/null differ diff --git a/public/media/avatar/small/051-11.png b/public/media/avatar/small/051-11.png deleted file mode 100644 index cbbb90375..000000000 Binary files a/public/media/avatar/small/051-11.png and /dev/null differ diff --git a/public/media/avatar/small/051-12.png b/public/media/avatar/small/051-12.png deleted file mode 100644 index dc35e9eb6..000000000 Binary files a/public/media/avatar/small/051-12.png and /dev/null differ diff --git a/public/media/avatar/small/051-2.png b/public/media/avatar/small/051-2.png deleted file mode 100755 index 7c742cf49..000000000 Binary files a/public/media/avatar/small/051-2.png and /dev/null differ diff --git a/public/media/avatar/small/051-3.png b/public/media/avatar/small/051-3.png deleted file mode 100755 index dc35e9eb6..000000000 Binary files a/public/media/avatar/small/051-3.png and /dev/null differ diff --git a/public/media/avatar/small/051-4.png b/public/media/avatar/small/051-4.png deleted file mode 100755 index 36fe1d310..000000000 Binary files a/public/media/avatar/small/051-4.png and /dev/null differ diff --git a/public/media/avatar/small/051-5.png b/public/media/avatar/small/051-5.png deleted file mode 100755 index 6d620f2db..000000000 Binary files a/public/media/avatar/small/051-5.png and /dev/null differ diff --git a/public/media/avatar/small/051-6.png b/public/media/avatar/small/051-6.png deleted file mode 100755 index 73b0ce2a0..000000000 Binary files a/public/media/avatar/small/051-6.png and /dev/null differ diff --git a/public/media/avatar/small/051-7.png b/public/media/avatar/small/051-7.png deleted file mode 100755 index 5061ab4dd..000000000 Binary files a/public/media/avatar/small/051-7.png and /dev/null differ diff --git a/public/media/avatar/small/051-8.png b/public/media/avatar/small/051-8.png deleted file mode 100644 index bda5396cd..000000000 Binary files a/public/media/avatar/small/051-8.png and /dev/null differ diff --git a/public/media/avatar/small/051-9.png b/public/media/avatar/small/051-9.png deleted file mode 100644 index 6d620f2db..000000000 Binary files a/public/media/avatar/small/051-9.png and /dev/null differ diff --git a/public/media/avatar/small/052-1.png b/public/media/avatar/small/052-1.png deleted file mode 100755 index 564b9090f..000000000 Binary files a/public/media/avatar/small/052-1.png and /dev/null differ diff --git a/public/media/avatar/small/052-10.png b/public/media/avatar/small/052-10.png deleted file mode 100644 index 19e912031..000000000 Binary files a/public/media/avatar/small/052-10.png and /dev/null differ diff --git a/public/media/avatar/small/052-11.png b/public/media/avatar/small/052-11.png deleted file mode 100644 index c9b6c3e8f..000000000 Binary files a/public/media/avatar/small/052-11.png and /dev/null differ diff --git a/public/media/avatar/small/052-12.png b/public/media/avatar/small/052-12.png deleted file mode 100644 index 726eabfb0..000000000 Binary files a/public/media/avatar/small/052-12.png and /dev/null differ diff --git a/public/media/avatar/small/052-2.png b/public/media/avatar/small/052-2.png deleted file mode 100755 index 94c346c93..000000000 Binary files a/public/media/avatar/small/052-2.png and /dev/null differ diff --git a/public/media/avatar/small/052-3.png b/public/media/avatar/small/052-3.png deleted file mode 100755 index 726eabfb0..000000000 Binary files a/public/media/avatar/small/052-3.png and /dev/null differ diff --git a/public/media/avatar/small/052-4.png b/public/media/avatar/small/052-4.png deleted file mode 100755 index ebb8e5fa4..000000000 Binary files a/public/media/avatar/small/052-4.png and /dev/null differ diff --git a/public/media/avatar/small/052-5.png b/public/media/avatar/small/052-5.png deleted file mode 100755 index c1f175f2e..000000000 Binary files a/public/media/avatar/small/052-5.png and /dev/null differ diff --git a/public/media/avatar/small/052-6.png b/public/media/avatar/small/052-6.png deleted file mode 100755 index 72a20cbd7..000000000 Binary files a/public/media/avatar/small/052-6.png and /dev/null differ diff --git a/public/media/avatar/small/052-7.png b/public/media/avatar/small/052-7.png deleted file mode 100755 index bff57f0d5..000000000 Binary files a/public/media/avatar/small/052-7.png and /dev/null differ diff --git a/public/media/avatar/small/052-8.png b/public/media/avatar/small/052-8.png deleted file mode 100644 index 5b67af64e..000000000 Binary files a/public/media/avatar/small/052-8.png and /dev/null differ diff --git a/public/media/avatar/small/052-9.png b/public/media/avatar/small/052-9.png deleted file mode 100644 index c1f175f2e..000000000 Binary files a/public/media/avatar/small/052-9.png and /dev/null differ diff --git a/public/media/avatar/small/053-1.png b/public/media/avatar/small/053-1.png deleted file mode 100755 index 29252b138..000000000 Binary files a/public/media/avatar/small/053-1.png and /dev/null differ diff --git a/public/media/avatar/small/053-10.png b/public/media/avatar/small/053-10.png deleted file mode 100644 index a87d5c118..000000000 Binary files a/public/media/avatar/small/053-10.png and /dev/null differ diff --git a/public/media/avatar/small/053-11.png b/public/media/avatar/small/053-11.png deleted file mode 100644 index 377f46eb7..000000000 Binary files a/public/media/avatar/small/053-11.png and /dev/null differ diff --git a/public/media/avatar/small/053-12.png b/public/media/avatar/small/053-12.png deleted file mode 100644 index b77876f3f..000000000 Binary files a/public/media/avatar/small/053-12.png and /dev/null differ diff --git a/public/media/avatar/small/053-2.png b/public/media/avatar/small/053-2.png deleted file mode 100755 index 10953a1a5..000000000 Binary files a/public/media/avatar/small/053-2.png and /dev/null differ diff --git a/public/media/avatar/small/053-3.png b/public/media/avatar/small/053-3.png deleted file mode 100755 index b77876f3f..000000000 Binary files a/public/media/avatar/small/053-3.png and /dev/null differ diff --git a/public/media/avatar/small/053-4.png b/public/media/avatar/small/053-4.png deleted file mode 100755 index b81ac79fd..000000000 Binary files a/public/media/avatar/small/053-4.png and /dev/null differ diff --git a/public/media/avatar/small/053-5.png b/public/media/avatar/small/053-5.png deleted file mode 100755 index ebe2d505a..000000000 Binary files a/public/media/avatar/small/053-5.png and /dev/null differ diff --git a/public/media/avatar/small/053-6.png b/public/media/avatar/small/053-6.png deleted file mode 100755 index a3f27a8bc..000000000 Binary files a/public/media/avatar/small/053-6.png and /dev/null differ diff --git a/public/media/avatar/small/053-7.png b/public/media/avatar/small/053-7.png deleted file mode 100755 index f7243c5d7..000000000 Binary files a/public/media/avatar/small/053-7.png and /dev/null differ diff --git a/public/media/avatar/small/053-8.png b/public/media/avatar/small/053-8.png deleted file mode 100644 index 4b63a5800..000000000 Binary files a/public/media/avatar/small/053-8.png and /dev/null differ diff --git a/public/media/avatar/small/053-9.png b/public/media/avatar/small/053-9.png deleted file mode 100644 index ebe2d505a..000000000 Binary files a/public/media/avatar/small/053-9.png and /dev/null differ diff --git a/public/media/avatar/small/054-1.png b/public/media/avatar/small/054-1.png deleted file mode 100755 index 2921caf1e..000000000 Binary files a/public/media/avatar/small/054-1.png and /dev/null differ diff --git a/public/media/avatar/small/054-10.png b/public/media/avatar/small/054-10.png deleted file mode 100644 index 2c86cd6d6..000000000 Binary files a/public/media/avatar/small/054-10.png and /dev/null differ diff --git a/public/media/avatar/small/054-11.png b/public/media/avatar/small/054-11.png deleted file mode 100644 index 890d016a2..000000000 Binary files a/public/media/avatar/small/054-11.png and /dev/null differ diff --git a/public/media/avatar/small/054-12.png b/public/media/avatar/small/054-12.png deleted file mode 100644 index 50d9d0b6b..000000000 Binary files a/public/media/avatar/small/054-12.png and /dev/null differ diff --git a/public/media/avatar/small/054-2.png b/public/media/avatar/small/054-2.png deleted file mode 100755 index 3e989528d..000000000 Binary files a/public/media/avatar/small/054-2.png and /dev/null differ diff --git a/public/media/avatar/small/054-3.png b/public/media/avatar/small/054-3.png deleted file mode 100755 index 50d9d0b6b..000000000 Binary files a/public/media/avatar/small/054-3.png and /dev/null differ diff --git a/public/media/avatar/small/054-4.png b/public/media/avatar/small/054-4.png deleted file mode 100755 index 469bf1f7a..000000000 Binary files a/public/media/avatar/small/054-4.png and /dev/null differ diff --git a/public/media/avatar/small/054-5.png b/public/media/avatar/small/054-5.png deleted file mode 100755 index b6aab13d5..000000000 Binary files a/public/media/avatar/small/054-5.png and /dev/null differ diff --git a/public/media/avatar/small/054-6.png b/public/media/avatar/small/054-6.png deleted file mode 100755 index bf074aeb3..000000000 Binary files a/public/media/avatar/small/054-6.png and /dev/null differ diff --git a/public/media/avatar/small/054-7.png b/public/media/avatar/small/054-7.png deleted file mode 100755 index 3892f3917..000000000 Binary files a/public/media/avatar/small/054-7.png and /dev/null differ diff --git a/public/media/avatar/small/054-8.png b/public/media/avatar/small/054-8.png deleted file mode 100644 index dfda34608..000000000 Binary files a/public/media/avatar/small/054-8.png and /dev/null differ diff --git a/public/media/avatar/small/054-9.png b/public/media/avatar/small/054-9.png deleted file mode 100644 index b6aab13d5..000000000 Binary files a/public/media/avatar/small/054-9.png and /dev/null differ diff --git a/public/media/avatar/small/055-1.png b/public/media/avatar/small/055-1.png deleted file mode 100755 index 2b30336f9..000000000 Binary files a/public/media/avatar/small/055-1.png and /dev/null differ diff --git a/public/media/avatar/small/055-10.png b/public/media/avatar/small/055-10.png deleted file mode 100644 index 6965b37e6..000000000 Binary files a/public/media/avatar/small/055-10.png and /dev/null differ diff --git a/public/media/avatar/small/055-11.png b/public/media/avatar/small/055-11.png deleted file mode 100644 index c08ac96dd..000000000 Binary files a/public/media/avatar/small/055-11.png and /dev/null differ diff --git a/public/media/avatar/small/055-12.png b/public/media/avatar/small/055-12.png deleted file mode 100644 index a520944fb..000000000 Binary files a/public/media/avatar/small/055-12.png and /dev/null differ diff --git a/public/media/avatar/small/055-2.png b/public/media/avatar/small/055-2.png deleted file mode 100755 index 576812e0a..000000000 Binary files a/public/media/avatar/small/055-2.png and /dev/null differ diff --git a/public/media/avatar/small/055-3.png b/public/media/avatar/small/055-3.png deleted file mode 100755 index a520944fb..000000000 Binary files a/public/media/avatar/small/055-3.png and /dev/null differ diff --git a/public/media/avatar/small/055-4.png b/public/media/avatar/small/055-4.png deleted file mode 100755 index 94059864e..000000000 Binary files a/public/media/avatar/small/055-4.png and /dev/null differ diff --git a/public/media/avatar/small/055-5.png b/public/media/avatar/small/055-5.png deleted file mode 100755 index 0c93c1dad..000000000 Binary files a/public/media/avatar/small/055-5.png and /dev/null differ diff --git a/public/media/avatar/small/055-6.png b/public/media/avatar/small/055-6.png deleted file mode 100755 index 97daf5c60..000000000 Binary files a/public/media/avatar/small/055-6.png and /dev/null differ diff --git a/public/media/avatar/small/055-7.png b/public/media/avatar/small/055-7.png deleted file mode 100755 index 8c45c6614..000000000 Binary files a/public/media/avatar/small/055-7.png and /dev/null differ diff --git a/public/media/avatar/small/055-8.png b/public/media/avatar/small/055-8.png deleted file mode 100644 index b59835c84..000000000 Binary files a/public/media/avatar/small/055-8.png and /dev/null differ diff --git a/public/media/avatar/small/055-9.png b/public/media/avatar/small/055-9.png deleted file mode 100644 index 0c93c1dad..000000000 Binary files a/public/media/avatar/small/055-9.png and /dev/null differ diff --git a/public/media/avatar/small/056-1.png b/public/media/avatar/small/056-1.png deleted file mode 100755 index aaf168db4..000000000 Binary files a/public/media/avatar/small/056-1.png and /dev/null differ diff --git a/public/media/avatar/small/056-10.png b/public/media/avatar/small/056-10.png deleted file mode 100644 index 8d7e0bedc..000000000 Binary files a/public/media/avatar/small/056-10.png and /dev/null differ diff --git a/public/media/avatar/small/056-11.png b/public/media/avatar/small/056-11.png deleted file mode 100644 index c387675bc..000000000 Binary files a/public/media/avatar/small/056-11.png and /dev/null differ diff --git a/public/media/avatar/small/056-12.png b/public/media/avatar/small/056-12.png deleted file mode 100644 index 233a414b5..000000000 Binary files a/public/media/avatar/small/056-12.png and /dev/null differ diff --git a/public/media/avatar/small/056-2.png b/public/media/avatar/small/056-2.png deleted file mode 100755 index 8a8547091..000000000 Binary files a/public/media/avatar/small/056-2.png and /dev/null differ diff --git a/public/media/avatar/small/056-3.png b/public/media/avatar/small/056-3.png deleted file mode 100755 index 233a414b5..000000000 Binary files a/public/media/avatar/small/056-3.png and /dev/null differ diff --git a/public/media/avatar/small/056-4.png b/public/media/avatar/small/056-4.png deleted file mode 100755 index e4ab1d464..000000000 Binary files a/public/media/avatar/small/056-4.png and /dev/null differ diff --git a/public/media/avatar/small/056-5.png b/public/media/avatar/small/056-5.png deleted file mode 100755 index d99919a5e..000000000 Binary files a/public/media/avatar/small/056-5.png and /dev/null differ diff --git a/public/media/avatar/small/056-6.png b/public/media/avatar/small/056-6.png deleted file mode 100755 index b8657f203..000000000 Binary files a/public/media/avatar/small/056-6.png and /dev/null differ diff --git a/public/media/avatar/small/056-7.png b/public/media/avatar/small/056-7.png deleted file mode 100755 index fb6cef0ad..000000000 Binary files a/public/media/avatar/small/056-7.png and /dev/null differ diff --git a/public/media/avatar/small/056-8.png b/public/media/avatar/small/056-8.png deleted file mode 100644 index 93703969e..000000000 Binary files a/public/media/avatar/small/056-8.png and /dev/null differ diff --git a/public/media/avatar/small/056-9.png b/public/media/avatar/small/056-9.png deleted file mode 100644 index d99919a5e..000000000 Binary files a/public/media/avatar/small/056-9.png and /dev/null differ diff --git a/public/media/avatar/small/057-1.png b/public/media/avatar/small/057-1.png deleted file mode 100755 index 7e2d3ea39..000000000 Binary files a/public/media/avatar/small/057-1.png and /dev/null differ diff --git a/public/media/avatar/small/057-10.png b/public/media/avatar/small/057-10.png deleted file mode 100644 index f749a75a2..000000000 Binary files a/public/media/avatar/small/057-10.png and /dev/null differ diff --git a/public/media/avatar/small/057-11.png b/public/media/avatar/small/057-11.png deleted file mode 100644 index c5c1a9c33..000000000 Binary files a/public/media/avatar/small/057-11.png and /dev/null differ diff --git a/public/media/avatar/small/057-12.png b/public/media/avatar/small/057-12.png deleted file mode 100644 index b8b827a26..000000000 Binary files a/public/media/avatar/small/057-12.png and /dev/null differ diff --git a/public/media/avatar/small/057-2.png b/public/media/avatar/small/057-2.png deleted file mode 100755 index 0ba2b6778..000000000 Binary files a/public/media/avatar/small/057-2.png and /dev/null differ diff --git a/public/media/avatar/small/057-3.png b/public/media/avatar/small/057-3.png deleted file mode 100755 index b8b827a26..000000000 Binary files a/public/media/avatar/small/057-3.png and /dev/null differ diff --git a/public/media/avatar/small/057-4.png b/public/media/avatar/small/057-4.png deleted file mode 100755 index 4c4b22074..000000000 Binary files a/public/media/avatar/small/057-4.png and /dev/null differ diff --git a/public/media/avatar/small/057-5.png b/public/media/avatar/small/057-5.png deleted file mode 100755 index b46fc24b3..000000000 Binary files a/public/media/avatar/small/057-5.png and /dev/null differ diff --git a/public/media/avatar/small/057-6.png b/public/media/avatar/small/057-6.png deleted file mode 100755 index 5200b32ab..000000000 Binary files a/public/media/avatar/small/057-6.png and /dev/null differ diff --git a/public/media/avatar/small/057-7.png b/public/media/avatar/small/057-7.png deleted file mode 100755 index 1c6bda093..000000000 Binary files a/public/media/avatar/small/057-7.png and /dev/null differ diff --git a/public/media/avatar/small/057-8.png b/public/media/avatar/small/057-8.png deleted file mode 100644 index 5bfd47771..000000000 Binary files a/public/media/avatar/small/057-8.png and /dev/null differ diff --git a/public/media/avatar/small/057-9.png b/public/media/avatar/small/057-9.png deleted file mode 100644 index b46fc24b3..000000000 Binary files a/public/media/avatar/small/057-9.png and /dev/null differ diff --git a/public/media/avatar/small/058-1.png b/public/media/avatar/small/058-1.png deleted file mode 100755 index 8c14185b5..000000000 Binary files a/public/media/avatar/small/058-1.png and /dev/null differ diff --git a/public/media/avatar/small/058-10.png b/public/media/avatar/small/058-10.png deleted file mode 100644 index 88ac06c0e..000000000 Binary files a/public/media/avatar/small/058-10.png and /dev/null differ diff --git a/public/media/avatar/small/058-11.png b/public/media/avatar/small/058-11.png deleted file mode 100644 index 42e8a7a13..000000000 Binary files a/public/media/avatar/small/058-11.png and /dev/null differ diff --git a/public/media/avatar/small/058-12.png b/public/media/avatar/small/058-12.png deleted file mode 100644 index 231f47433..000000000 Binary files a/public/media/avatar/small/058-12.png and /dev/null differ diff --git a/public/media/avatar/small/058-2.png b/public/media/avatar/small/058-2.png deleted file mode 100755 index c44b7beda..000000000 Binary files a/public/media/avatar/small/058-2.png and /dev/null differ diff --git a/public/media/avatar/small/058-3.png b/public/media/avatar/small/058-3.png deleted file mode 100755 index 231f47433..000000000 Binary files a/public/media/avatar/small/058-3.png and /dev/null differ diff --git a/public/media/avatar/small/058-4.png b/public/media/avatar/small/058-4.png deleted file mode 100755 index 2d896232e..000000000 Binary files a/public/media/avatar/small/058-4.png and /dev/null differ diff --git a/public/media/avatar/small/058-5.png b/public/media/avatar/small/058-5.png deleted file mode 100755 index 759004532..000000000 Binary files a/public/media/avatar/small/058-5.png and /dev/null differ diff --git a/public/media/avatar/small/058-6.png b/public/media/avatar/small/058-6.png deleted file mode 100755 index eff1fd15e..000000000 Binary files a/public/media/avatar/small/058-6.png and /dev/null differ diff --git a/public/media/avatar/small/058-7.png b/public/media/avatar/small/058-7.png deleted file mode 100755 index b91ad2410..000000000 Binary files a/public/media/avatar/small/058-7.png and /dev/null differ diff --git a/public/media/avatar/small/058-8.png b/public/media/avatar/small/058-8.png deleted file mode 100644 index c356288ce..000000000 Binary files a/public/media/avatar/small/058-8.png and /dev/null differ diff --git a/public/media/avatar/small/058-9.png b/public/media/avatar/small/058-9.png deleted file mode 100644 index 759004532..000000000 Binary files a/public/media/avatar/small/058-9.png and /dev/null differ diff --git a/public/media/avatar/small/059-1.png b/public/media/avatar/small/059-1.png deleted file mode 100755 index 60309d672..000000000 Binary files a/public/media/avatar/small/059-1.png and /dev/null differ diff --git a/public/media/avatar/small/059-10.png b/public/media/avatar/small/059-10.png deleted file mode 100644 index 520a307a9..000000000 Binary files a/public/media/avatar/small/059-10.png and /dev/null differ diff --git a/public/media/avatar/small/059-11.png b/public/media/avatar/small/059-11.png deleted file mode 100644 index d03d42aad..000000000 Binary files a/public/media/avatar/small/059-11.png and /dev/null differ diff --git a/public/media/avatar/small/059-12.png b/public/media/avatar/small/059-12.png deleted file mode 100644 index ffba15011..000000000 Binary files a/public/media/avatar/small/059-12.png and /dev/null differ diff --git a/public/media/avatar/small/059-2.png b/public/media/avatar/small/059-2.png deleted file mode 100755 index e885d0edf..000000000 Binary files a/public/media/avatar/small/059-2.png and /dev/null differ diff --git a/public/media/avatar/small/059-3.png b/public/media/avatar/small/059-3.png deleted file mode 100755 index ffba15011..000000000 Binary files a/public/media/avatar/small/059-3.png and /dev/null differ diff --git a/public/media/avatar/small/059-4.png b/public/media/avatar/small/059-4.png deleted file mode 100755 index 66a1b57ed..000000000 Binary files a/public/media/avatar/small/059-4.png and /dev/null differ diff --git a/public/media/avatar/small/059-5.png b/public/media/avatar/small/059-5.png deleted file mode 100755 index 82190edff..000000000 Binary files a/public/media/avatar/small/059-5.png and /dev/null differ diff --git a/public/media/avatar/small/059-6.png b/public/media/avatar/small/059-6.png deleted file mode 100755 index baada5455..000000000 Binary files a/public/media/avatar/small/059-6.png and /dev/null differ diff --git a/public/media/avatar/small/059-7.png b/public/media/avatar/small/059-7.png deleted file mode 100755 index e7a7dd5a3..000000000 Binary files a/public/media/avatar/small/059-7.png and /dev/null differ diff --git a/public/media/avatar/small/059-8.png b/public/media/avatar/small/059-8.png deleted file mode 100644 index 1fdd20799..000000000 Binary files a/public/media/avatar/small/059-8.png and /dev/null differ diff --git a/public/media/avatar/small/059-9.png b/public/media/avatar/small/059-9.png deleted file mode 100644 index 82190edff..000000000 Binary files a/public/media/avatar/small/059-9.png and /dev/null differ diff --git a/public/media/avatar/small/060-1.png b/public/media/avatar/small/060-1.png deleted file mode 100755 index de42d6b55..000000000 Binary files a/public/media/avatar/small/060-1.png and /dev/null differ diff --git a/public/media/avatar/small/060-10.png b/public/media/avatar/small/060-10.png deleted file mode 100644 index 14e9d14ca..000000000 Binary files a/public/media/avatar/small/060-10.png and /dev/null differ diff --git a/public/media/avatar/small/060-11.png b/public/media/avatar/small/060-11.png deleted file mode 100644 index d1f5b70ce..000000000 Binary files a/public/media/avatar/small/060-11.png and /dev/null differ diff --git a/public/media/avatar/small/060-12.png b/public/media/avatar/small/060-12.png deleted file mode 100644 index 94756e024..000000000 Binary files a/public/media/avatar/small/060-12.png and /dev/null differ diff --git a/public/media/avatar/small/060-2.png b/public/media/avatar/small/060-2.png deleted file mode 100755 index a784a7530..000000000 Binary files a/public/media/avatar/small/060-2.png and /dev/null differ diff --git a/public/media/avatar/small/060-3.png b/public/media/avatar/small/060-3.png deleted file mode 100755 index 94756e024..000000000 Binary files a/public/media/avatar/small/060-3.png and /dev/null differ diff --git a/public/media/avatar/small/060-4.png b/public/media/avatar/small/060-4.png deleted file mode 100755 index 0667003ad..000000000 Binary files a/public/media/avatar/small/060-4.png and /dev/null differ diff --git a/public/media/avatar/small/060-5.png b/public/media/avatar/small/060-5.png deleted file mode 100755 index 6cdd12df8..000000000 Binary files a/public/media/avatar/small/060-5.png and /dev/null differ diff --git a/public/media/avatar/small/060-6.png b/public/media/avatar/small/060-6.png deleted file mode 100755 index 741117725..000000000 Binary files a/public/media/avatar/small/060-6.png and /dev/null differ diff --git a/public/media/avatar/small/060-7.png b/public/media/avatar/small/060-7.png deleted file mode 100755 index e6ad0fb27..000000000 Binary files a/public/media/avatar/small/060-7.png and /dev/null differ diff --git a/public/media/avatar/small/060-8.png b/public/media/avatar/small/060-8.png deleted file mode 100644 index 925902a2b..000000000 Binary files a/public/media/avatar/small/060-8.png and /dev/null differ diff --git a/public/media/avatar/small/060-9.png b/public/media/avatar/small/060-9.png deleted file mode 100644 index 6cdd12df8..000000000 Binary files a/public/media/avatar/small/060-9.png and /dev/null differ diff --git a/public/media/avatar/small/061-1.png b/public/media/avatar/small/061-1.png deleted file mode 100755 index 04ae282a4..000000000 Binary files a/public/media/avatar/small/061-1.png and /dev/null differ diff --git a/public/media/avatar/small/061-10.png b/public/media/avatar/small/061-10.png deleted file mode 100644 index f9c902f04..000000000 Binary files a/public/media/avatar/small/061-10.png and /dev/null differ diff --git a/public/media/avatar/small/061-11.png b/public/media/avatar/small/061-11.png deleted file mode 100644 index 6427f7a59..000000000 Binary files a/public/media/avatar/small/061-11.png and /dev/null differ diff --git a/public/media/avatar/small/061-12.png b/public/media/avatar/small/061-12.png deleted file mode 100644 index bfe09d07e..000000000 Binary files a/public/media/avatar/small/061-12.png and /dev/null differ diff --git a/public/media/avatar/small/061-2.png b/public/media/avatar/small/061-2.png deleted file mode 100755 index e14ec114a..000000000 Binary files a/public/media/avatar/small/061-2.png and /dev/null differ diff --git a/public/media/avatar/small/061-3.png b/public/media/avatar/small/061-3.png deleted file mode 100755 index bfe09d07e..000000000 Binary files a/public/media/avatar/small/061-3.png and /dev/null differ diff --git a/public/media/avatar/small/061-4.png b/public/media/avatar/small/061-4.png deleted file mode 100755 index a845bf98d..000000000 Binary files a/public/media/avatar/small/061-4.png and /dev/null differ diff --git a/public/media/avatar/small/061-5.png b/public/media/avatar/small/061-5.png deleted file mode 100755 index 3333b8f40..000000000 Binary files a/public/media/avatar/small/061-5.png and /dev/null differ diff --git a/public/media/avatar/small/061-6.png b/public/media/avatar/small/061-6.png deleted file mode 100755 index b8c92e05c..000000000 Binary files a/public/media/avatar/small/061-6.png and /dev/null differ diff --git a/public/media/avatar/small/061-7.png b/public/media/avatar/small/061-7.png deleted file mode 100755 index 120ab1b2a..000000000 Binary files a/public/media/avatar/small/061-7.png and /dev/null differ diff --git a/public/media/avatar/small/061-8.png b/public/media/avatar/small/061-8.png deleted file mode 100644 index 47b2b0a31..000000000 Binary files a/public/media/avatar/small/061-8.png and /dev/null differ diff --git a/public/media/avatar/small/061-9.png b/public/media/avatar/small/061-9.png deleted file mode 100644 index 3333b8f40..000000000 Binary files a/public/media/avatar/small/061-9.png and /dev/null differ diff --git a/public/media/avatar/small/062-1.png b/public/media/avatar/small/062-1.png deleted file mode 100755 index ae6360667..000000000 Binary files a/public/media/avatar/small/062-1.png and /dev/null differ diff --git a/public/media/avatar/small/062-10.png b/public/media/avatar/small/062-10.png deleted file mode 100644 index d95f8bfb1..000000000 Binary files a/public/media/avatar/small/062-10.png and /dev/null differ diff --git a/public/media/avatar/small/062-11.png b/public/media/avatar/small/062-11.png deleted file mode 100644 index f3ed7b1c2..000000000 Binary files a/public/media/avatar/small/062-11.png and /dev/null differ diff --git a/public/media/avatar/small/062-12.png b/public/media/avatar/small/062-12.png deleted file mode 100644 index 3e08b12bb..000000000 Binary files a/public/media/avatar/small/062-12.png and /dev/null differ diff --git a/public/media/avatar/small/062-2.png b/public/media/avatar/small/062-2.png deleted file mode 100755 index 7c8603309..000000000 Binary files a/public/media/avatar/small/062-2.png and /dev/null differ diff --git a/public/media/avatar/small/062-3.png b/public/media/avatar/small/062-3.png deleted file mode 100755 index 3e08b12bb..000000000 Binary files a/public/media/avatar/small/062-3.png and /dev/null differ diff --git a/public/media/avatar/small/062-4.png b/public/media/avatar/small/062-4.png deleted file mode 100755 index 3ce040e01..000000000 Binary files a/public/media/avatar/small/062-4.png and /dev/null differ diff --git a/public/media/avatar/small/062-5.png b/public/media/avatar/small/062-5.png deleted file mode 100755 index ed28d4fbc..000000000 Binary files a/public/media/avatar/small/062-5.png and /dev/null differ diff --git a/public/media/avatar/small/062-6.png b/public/media/avatar/small/062-6.png deleted file mode 100755 index 5a8540f39..000000000 Binary files a/public/media/avatar/small/062-6.png and /dev/null differ diff --git a/public/media/avatar/small/062-7.png b/public/media/avatar/small/062-7.png deleted file mode 100755 index e7ebe1e35..000000000 Binary files a/public/media/avatar/small/062-7.png and /dev/null differ diff --git a/public/media/avatar/small/062-8.png b/public/media/avatar/small/062-8.png deleted file mode 100644 index cfb8cf379..000000000 Binary files a/public/media/avatar/small/062-8.png and /dev/null differ diff --git a/public/media/avatar/small/062-9.png b/public/media/avatar/small/062-9.png deleted file mode 100644 index ed28d4fbc..000000000 Binary files a/public/media/avatar/small/062-9.png and /dev/null differ diff --git a/public/media/avatar/small/063-1.png b/public/media/avatar/small/063-1.png deleted file mode 100755 index af67d0dc6..000000000 Binary files a/public/media/avatar/small/063-1.png and /dev/null differ diff --git a/public/media/avatar/small/063-10.png b/public/media/avatar/small/063-10.png deleted file mode 100644 index 9f9cc857d..000000000 Binary files a/public/media/avatar/small/063-10.png and /dev/null differ diff --git a/public/media/avatar/small/063-11.png b/public/media/avatar/small/063-11.png deleted file mode 100644 index c63c2736b..000000000 Binary files a/public/media/avatar/small/063-11.png and /dev/null differ diff --git a/public/media/avatar/small/063-12.png b/public/media/avatar/small/063-12.png deleted file mode 100644 index 29db69d8d..000000000 Binary files a/public/media/avatar/small/063-12.png and /dev/null differ diff --git a/public/media/avatar/small/063-2.png b/public/media/avatar/small/063-2.png deleted file mode 100755 index 1b0462e40..000000000 Binary files a/public/media/avatar/small/063-2.png and /dev/null differ diff --git a/public/media/avatar/small/063-3.png b/public/media/avatar/small/063-3.png deleted file mode 100755 index 29db69d8d..000000000 Binary files a/public/media/avatar/small/063-3.png and /dev/null differ diff --git a/public/media/avatar/small/063-4.png b/public/media/avatar/small/063-4.png deleted file mode 100755 index f3e0a159b..000000000 Binary files a/public/media/avatar/small/063-4.png and /dev/null differ diff --git a/public/media/avatar/small/063-5.png b/public/media/avatar/small/063-5.png deleted file mode 100755 index b860528ca..000000000 Binary files a/public/media/avatar/small/063-5.png and /dev/null differ diff --git a/public/media/avatar/small/063-6.png b/public/media/avatar/small/063-6.png deleted file mode 100755 index 8e51f9686..000000000 Binary files a/public/media/avatar/small/063-6.png and /dev/null differ diff --git a/public/media/avatar/small/063-7.png b/public/media/avatar/small/063-7.png deleted file mode 100755 index 7cd083cfc..000000000 Binary files a/public/media/avatar/small/063-7.png and /dev/null differ diff --git a/public/media/avatar/small/063-8.png b/public/media/avatar/small/063-8.png deleted file mode 100644 index 91be8e3ab..000000000 Binary files a/public/media/avatar/small/063-8.png and /dev/null differ diff --git a/public/media/avatar/small/063-9.png b/public/media/avatar/small/063-9.png deleted file mode 100644 index b860528ca..000000000 Binary files a/public/media/avatar/small/063-9.png and /dev/null differ diff --git a/public/media/avatar/small/064-1.png b/public/media/avatar/small/064-1.png deleted file mode 100755 index 298559870..000000000 Binary files a/public/media/avatar/small/064-1.png and /dev/null differ diff --git a/public/media/avatar/small/064-10.png b/public/media/avatar/small/064-10.png deleted file mode 100644 index 91f1e61c5..000000000 Binary files a/public/media/avatar/small/064-10.png and /dev/null differ diff --git a/public/media/avatar/small/064-11.png b/public/media/avatar/small/064-11.png deleted file mode 100644 index ef18a40a7..000000000 Binary files a/public/media/avatar/small/064-11.png and /dev/null differ diff --git a/public/media/avatar/small/064-12.png b/public/media/avatar/small/064-12.png deleted file mode 100644 index e89b7c947..000000000 Binary files a/public/media/avatar/small/064-12.png and /dev/null differ diff --git a/public/media/avatar/small/064-2.png b/public/media/avatar/small/064-2.png deleted file mode 100755 index 9ffc86764..000000000 Binary files a/public/media/avatar/small/064-2.png and /dev/null differ diff --git a/public/media/avatar/small/064-3.png b/public/media/avatar/small/064-3.png deleted file mode 100755 index e89b7c947..000000000 Binary files a/public/media/avatar/small/064-3.png and /dev/null differ diff --git a/public/media/avatar/small/064-4.png b/public/media/avatar/small/064-4.png deleted file mode 100755 index 9e928b61f..000000000 Binary files a/public/media/avatar/small/064-4.png and /dev/null differ diff --git a/public/media/avatar/small/064-5.png b/public/media/avatar/small/064-5.png deleted file mode 100755 index e88a9c3f2..000000000 Binary files a/public/media/avatar/small/064-5.png and /dev/null differ diff --git a/public/media/avatar/small/064-6.png b/public/media/avatar/small/064-6.png deleted file mode 100755 index c7035ced4..000000000 Binary files a/public/media/avatar/small/064-6.png and /dev/null differ diff --git a/public/media/avatar/small/064-7.png b/public/media/avatar/small/064-7.png deleted file mode 100755 index 1bc5f8abc..000000000 Binary files a/public/media/avatar/small/064-7.png and /dev/null differ diff --git a/public/media/avatar/small/064-8.png b/public/media/avatar/small/064-8.png deleted file mode 100644 index dedcb2914..000000000 Binary files a/public/media/avatar/small/064-8.png and /dev/null differ diff --git a/public/media/avatar/small/064-9.png b/public/media/avatar/small/064-9.png deleted file mode 100644 index e88a9c3f2..000000000 Binary files a/public/media/avatar/small/064-9.png and /dev/null differ diff --git a/public/media/avatar/small/065-1.png b/public/media/avatar/small/065-1.png deleted file mode 100755 index b2de9de3e..000000000 Binary files a/public/media/avatar/small/065-1.png and /dev/null differ diff --git a/public/media/avatar/small/065-10.png b/public/media/avatar/small/065-10.png deleted file mode 100644 index dcdaa08bf..000000000 Binary files a/public/media/avatar/small/065-10.png and /dev/null differ diff --git a/public/media/avatar/small/065-11.png b/public/media/avatar/small/065-11.png deleted file mode 100644 index 93633147c..000000000 Binary files a/public/media/avatar/small/065-11.png and /dev/null differ diff --git a/public/media/avatar/small/065-12.png b/public/media/avatar/small/065-12.png deleted file mode 100644 index b12daae84..000000000 Binary files a/public/media/avatar/small/065-12.png and /dev/null differ diff --git a/public/media/avatar/small/065-2.png b/public/media/avatar/small/065-2.png deleted file mode 100755 index 192206892..000000000 Binary files a/public/media/avatar/small/065-2.png and /dev/null differ diff --git a/public/media/avatar/small/065-3.png b/public/media/avatar/small/065-3.png deleted file mode 100755 index b12daae84..000000000 Binary files a/public/media/avatar/small/065-3.png and /dev/null differ diff --git a/public/media/avatar/small/065-4.png b/public/media/avatar/small/065-4.png deleted file mode 100755 index d8968d7e3..000000000 Binary files a/public/media/avatar/small/065-4.png and /dev/null differ diff --git a/public/media/avatar/small/065-5.png b/public/media/avatar/small/065-5.png deleted file mode 100755 index e15850f44..000000000 Binary files a/public/media/avatar/small/065-5.png and /dev/null differ diff --git a/public/media/avatar/small/065-6.png b/public/media/avatar/small/065-6.png deleted file mode 100755 index 4cbd8354c..000000000 Binary files a/public/media/avatar/small/065-6.png and /dev/null differ diff --git a/public/media/avatar/small/065-7.png b/public/media/avatar/small/065-7.png deleted file mode 100755 index 3e8bdbf0e..000000000 Binary files a/public/media/avatar/small/065-7.png and /dev/null differ diff --git a/public/media/avatar/small/065-8.png b/public/media/avatar/small/065-8.png deleted file mode 100644 index 9b09fd57c..000000000 Binary files a/public/media/avatar/small/065-8.png and /dev/null differ diff --git a/public/media/avatar/small/065-9.png b/public/media/avatar/small/065-9.png deleted file mode 100644 index e15850f44..000000000 Binary files a/public/media/avatar/small/065-9.png and /dev/null differ diff --git a/public/media/avatar/small/066-1.png b/public/media/avatar/small/066-1.png deleted file mode 100755 index 0fe8a76f3..000000000 Binary files a/public/media/avatar/small/066-1.png and /dev/null differ diff --git a/public/media/avatar/small/066-10.png b/public/media/avatar/small/066-10.png deleted file mode 100644 index 96d069d72..000000000 Binary files a/public/media/avatar/small/066-10.png and /dev/null differ diff --git a/public/media/avatar/small/066-11.png b/public/media/avatar/small/066-11.png deleted file mode 100644 index 24dd5a4f2..000000000 Binary files a/public/media/avatar/small/066-11.png and /dev/null differ diff --git a/public/media/avatar/small/066-12.png b/public/media/avatar/small/066-12.png deleted file mode 100644 index 6136692d5..000000000 Binary files a/public/media/avatar/small/066-12.png and /dev/null differ diff --git a/public/media/avatar/small/066-2.png b/public/media/avatar/small/066-2.png deleted file mode 100755 index e3b084c7a..000000000 Binary files a/public/media/avatar/small/066-2.png and /dev/null differ diff --git a/public/media/avatar/small/066-3.png b/public/media/avatar/small/066-3.png deleted file mode 100755 index 6136692d5..000000000 Binary files a/public/media/avatar/small/066-3.png and /dev/null differ diff --git a/public/media/avatar/small/066-4.png b/public/media/avatar/small/066-4.png deleted file mode 100755 index f91dddc41..000000000 Binary files a/public/media/avatar/small/066-4.png and /dev/null differ diff --git a/public/media/avatar/small/066-5.png b/public/media/avatar/small/066-5.png deleted file mode 100755 index c38e99e46..000000000 Binary files a/public/media/avatar/small/066-5.png and /dev/null differ diff --git a/public/media/avatar/small/066-6.png b/public/media/avatar/small/066-6.png deleted file mode 100755 index 224fdc5f5..000000000 Binary files a/public/media/avatar/small/066-6.png and /dev/null differ diff --git a/public/media/avatar/small/066-7.png b/public/media/avatar/small/066-7.png deleted file mode 100755 index eaa8685dd..000000000 Binary files a/public/media/avatar/small/066-7.png and /dev/null differ diff --git a/public/media/avatar/small/066-8.png b/public/media/avatar/small/066-8.png deleted file mode 100644 index 7b6d55826..000000000 Binary files a/public/media/avatar/small/066-8.png and /dev/null differ diff --git a/public/media/avatar/small/066-9.png b/public/media/avatar/small/066-9.png deleted file mode 100644 index c38e99e46..000000000 Binary files a/public/media/avatar/small/066-9.png and /dev/null differ diff --git a/public/media/avatar/small/067-1.png b/public/media/avatar/small/067-1.png deleted file mode 100755 index 5febd85e5..000000000 Binary files a/public/media/avatar/small/067-1.png and /dev/null differ diff --git a/public/media/avatar/small/067-10.png b/public/media/avatar/small/067-10.png deleted file mode 100644 index 35baff8fe..000000000 Binary files a/public/media/avatar/small/067-10.png and /dev/null differ diff --git a/public/media/avatar/small/067-11.png b/public/media/avatar/small/067-11.png deleted file mode 100644 index 1a7db2429..000000000 Binary files a/public/media/avatar/small/067-11.png and /dev/null differ diff --git a/public/media/avatar/small/067-12.png b/public/media/avatar/small/067-12.png deleted file mode 100644 index d8a1ea5a8..000000000 Binary files a/public/media/avatar/small/067-12.png and /dev/null differ diff --git a/public/media/avatar/small/067-2.png b/public/media/avatar/small/067-2.png deleted file mode 100755 index 0c7543233..000000000 Binary files a/public/media/avatar/small/067-2.png and /dev/null differ diff --git a/public/media/avatar/small/067-3.png b/public/media/avatar/small/067-3.png deleted file mode 100755 index d8a1ea5a8..000000000 Binary files a/public/media/avatar/small/067-3.png and /dev/null differ diff --git a/public/media/avatar/small/067-4.png b/public/media/avatar/small/067-4.png deleted file mode 100755 index 58e0d4f7e..000000000 Binary files a/public/media/avatar/small/067-4.png and /dev/null differ diff --git a/public/media/avatar/small/067-5.png b/public/media/avatar/small/067-5.png deleted file mode 100755 index 8e0d1917e..000000000 Binary files a/public/media/avatar/small/067-5.png and /dev/null differ diff --git a/public/media/avatar/small/067-6.png b/public/media/avatar/small/067-6.png deleted file mode 100755 index e71c41433..000000000 Binary files a/public/media/avatar/small/067-6.png and /dev/null differ diff --git a/public/media/avatar/small/067-7.png b/public/media/avatar/small/067-7.png deleted file mode 100755 index 11e989cbb..000000000 Binary files a/public/media/avatar/small/067-7.png and /dev/null differ diff --git a/public/media/avatar/small/067-8.png b/public/media/avatar/small/067-8.png deleted file mode 100644 index 117df2217..000000000 Binary files a/public/media/avatar/small/067-8.png and /dev/null differ diff --git a/public/media/avatar/small/067-9.png b/public/media/avatar/small/067-9.png deleted file mode 100644 index 8e0d1917e..000000000 Binary files a/public/media/avatar/small/067-9.png and /dev/null differ diff --git a/public/media/avatar/small/068-1.png b/public/media/avatar/small/068-1.png deleted file mode 100755 index cacca558e..000000000 Binary files a/public/media/avatar/small/068-1.png and /dev/null differ diff --git a/public/media/avatar/small/068-10.png b/public/media/avatar/small/068-10.png deleted file mode 100644 index ab29b7293..000000000 Binary files a/public/media/avatar/small/068-10.png and /dev/null differ diff --git a/public/media/avatar/small/068-11.png b/public/media/avatar/small/068-11.png deleted file mode 100644 index 7c0cf5b43..000000000 Binary files a/public/media/avatar/small/068-11.png and /dev/null differ diff --git a/public/media/avatar/small/068-12.png b/public/media/avatar/small/068-12.png deleted file mode 100644 index a2a006d57..000000000 Binary files a/public/media/avatar/small/068-12.png and /dev/null differ diff --git a/public/media/avatar/small/068-2.png b/public/media/avatar/small/068-2.png deleted file mode 100755 index 364c7dc81..000000000 Binary files a/public/media/avatar/small/068-2.png and /dev/null differ diff --git a/public/media/avatar/small/068-3.png b/public/media/avatar/small/068-3.png deleted file mode 100755 index a2a006d57..000000000 Binary files a/public/media/avatar/small/068-3.png and /dev/null differ diff --git a/public/media/avatar/small/068-4.png b/public/media/avatar/small/068-4.png deleted file mode 100755 index 1b8abc5ca..000000000 Binary files a/public/media/avatar/small/068-4.png and /dev/null differ diff --git a/public/media/avatar/small/068-5.png b/public/media/avatar/small/068-5.png deleted file mode 100755 index 659ac24f0..000000000 Binary files a/public/media/avatar/small/068-5.png and /dev/null differ diff --git a/public/media/avatar/small/068-6.png b/public/media/avatar/small/068-6.png deleted file mode 100755 index 5d0cf8d2c..000000000 Binary files a/public/media/avatar/small/068-6.png and /dev/null differ diff --git a/public/media/avatar/small/068-7.png b/public/media/avatar/small/068-7.png deleted file mode 100755 index 88cd9462f..000000000 Binary files a/public/media/avatar/small/068-7.png and /dev/null differ diff --git a/public/media/avatar/small/068-8.png b/public/media/avatar/small/068-8.png deleted file mode 100644 index 075074402..000000000 Binary files a/public/media/avatar/small/068-8.png and /dev/null differ diff --git a/public/media/avatar/small/068-9.png b/public/media/avatar/small/068-9.png deleted file mode 100644 index 659ac24f0..000000000 Binary files a/public/media/avatar/small/068-9.png and /dev/null differ diff --git a/public/media/avatar/small/069-1.png b/public/media/avatar/small/069-1.png deleted file mode 100755 index 124030d3e..000000000 Binary files a/public/media/avatar/small/069-1.png and /dev/null differ diff --git a/public/media/avatar/small/069-10.png b/public/media/avatar/small/069-10.png deleted file mode 100644 index 25639fd83..000000000 Binary files a/public/media/avatar/small/069-10.png and /dev/null differ diff --git a/public/media/avatar/small/069-11.png b/public/media/avatar/small/069-11.png deleted file mode 100644 index f69d95f8b..000000000 Binary files a/public/media/avatar/small/069-11.png and /dev/null differ diff --git a/public/media/avatar/small/069-12.png b/public/media/avatar/small/069-12.png deleted file mode 100644 index 23f6de42c..000000000 Binary files a/public/media/avatar/small/069-12.png and /dev/null differ diff --git a/public/media/avatar/small/069-2.png b/public/media/avatar/small/069-2.png deleted file mode 100755 index 8fe4fefb9..000000000 Binary files a/public/media/avatar/small/069-2.png and /dev/null differ diff --git a/public/media/avatar/small/069-3.png b/public/media/avatar/small/069-3.png deleted file mode 100755 index 23f6de42c..000000000 Binary files a/public/media/avatar/small/069-3.png and /dev/null differ diff --git a/public/media/avatar/small/069-4.png b/public/media/avatar/small/069-4.png deleted file mode 100755 index 826c6b190..000000000 Binary files a/public/media/avatar/small/069-4.png and /dev/null differ diff --git a/public/media/avatar/small/069-5.png b/public/media/avatar/small/069-5.png deleted file mode 100755 index d3eb81aed..000000000 Binary files a/public/media/avatar/small/069-5.png and /dev/null differ diff --git a/public/media/avatar/small/069-6.png b/public/media/avatar/small/069-6.png deleted file mode 100755 index f550fcd08..000000000 Binary files a/public/media/avatar/small/069-6.png and /dev/null differ diff --git a/public/media/avatar/small/069-7.png b/public/media/avatar/small/069-7.png deleted file mode 100755 index fa0f92e9f..000000000 Binary files a/public/media/avatar/small/069-7.png and /dev/null differ diff --git a/public/media/avatar/small/069-8.png b/public/media/avatar/small/069-8.png deleted file mode 100644 index fa0f92e9f..000000000 Binary files a/public/media/avatar/small/069-8.png and /dev/null differ diff --git a/public/media/avatar/small/069-9.png b/public/media/avatar/small/069-9.png deleted file mode 100644 index d3eb81aed..000000000 Binary files a/public/media/avatar/small/069-9.png and /dev/null differ diff --git a/public/media/avatar/small/070-1.png b/public/media/avatar/small/070-1.png deleted file mode 100755 index f8d8ec178..000000000 Binary files a/public/media/avatar/small/070-1.png and /dev/null differ diff --git a/public/media/avatar/small/070-10.png b/public/media/avatar/small/070-10.png deleted file mode 100644 index 9f405d696..000000000 Binary files a/public/media/avatar/small/070-10.png and /dev/null differ diff --git a/public/media/avatar/small/070-11.png b/public/media/avatar/small/070-11.png deleted file mode 100644 index a45593f35..000000000 Binary files a/public/media/avatar/small/070-11.png and /dev/null differ diff --git a/public/media/avatar/small/070-12.png b/public/media/avatar/small/070-12.png deleted file mode 100644 index 4a82242d4..000000000 Binary files a/public/media/avatar/small/070-12.png and /dev/null differ diff --git a/public/media/avatar/small/070-2.png b/public/media/avatar/small/070-2.png deleted file mode 100755 index 9f6ad00c7..000000000 Binary files a/public/media/avatar/small/070-2.png and /dev/null differ diff --git a/public/media/avatar/small/070-3.png b/public/media/avatar/small/070-3.png deleted file mode 100755 index 4a82242d4..000000000 Binary files a/public/media/avatar/small/070-3.png and /dev/null differ diff --git a/public/media/avatar/small/070-4.png b/public/media/avatar/small/070-4.png deleted file mode 100755 index 184637c7c..000000000 Binary files a/public/media/avatar/small/070-4.png and /dev/null differ diff --git a/public/media/avatar/small/070-5.png b/public/media/avatar/small/070-5.png deleted file mode 100755 index a6006dd1c..000000000 Binary files a/public/media/avatar/small/070-5.png and /dev/null differ diff --git a/public/media/avatar/small/070-6.png b/public/media/avatar/small/070-6.png deleted file mode 100755 index 3492d8d1a..000000000 Binary files a/public/media/avatar/small/070-6.png and /dev/null differ diff --git a/public/media/avatar/small/070-7.png b/public/media/avatar/small/070-7.png deleted file mode 100755 index bbace04a9..000000000 Binary files a/public/media/avatar/small/070-7.png and /dev/null differ diff --git a/public/media/avatar/small/070-8.png b/public/media/avatar/small/070-8.png deleted file mode 100644 index 208b2e4b1..000000000 Binary files a/public/media/avatar/small/070-8.png and /dev/null differ diff --git a/public/media/avatar/small/070-9.png b/public/media/avatar/small/070-9.png deleted file mode 100644 index a6006dd1c..000000000 Binary files a/public/media/avatar/small/070-9.png and /dev/null differ diff --git a/public/media/avatar/small/071-1.png b/public/media/avatar/small/071-1.png deleted file mode 100755 index d7c87cb80..000000000 Binary files a/public/media/avatar/small/071-1.png and /dev/null differ diff --git a/public/media/avatar/small/071-10.png b/public/media/avatar/small/071-10.png deleted file mode 100644 index 6fd1bb517..000000000 Binary files a/public/media/avatar/small/071-10.png and /dev/null differ diff --git a/public/media/avatar/small/071-11.png b/public/media/avatar/small/071-11.png deleted file mode 100644 index ddc27f235..000000000 Binary files a/public/media/avatar/small/071-11.png and /dev/null differ diff --git a/public/media/avatar/small/071-12.png b/public/media/avatar/small/071-12.png deleted file mode 100644 index c9d1b1e96..000000000 Binary files a/public/media/avatar/small/071-12.png and /dev/null differ diff --git a/public/media/avatar/small/071-2.png b/public/media/avatar/small/071-2.png deleted file mode 100755 index 60067b627..000000000 Binary files a/public/media/avatar/small/071-2.png and /dev/null differ diff --git a/public/media/avatar/small/071-3.png b/public/media/avatar/small/071-3.png deleted file mode 100755 index c9d1b1e96..000000000 Binary files a/public/media/avatar/small/071-3.png and /dev/null differ diff --git a/public/media/avatar/small/071-4.png b/public/media/avatar/small/071-4.png deleted file mode 100755 index f0d16ee47..000000000 Binary files a/public/media/avatar/small/071-4.png and /dev/null differ diff --git a/public/media/avatar/small/071-5.png b/public/media/avatar/small/071-5.png deleted file mode 100755 index c29690806..000000000 Binary files a/public/media/avatar/small/071-5.png and /dev/null differ diff --git a/public/media/avatar/small/071-6.png b/public/media/avatar/small/071-6.png deleted file mode 100755 index ea67cb75a..000000000 Binary files a/public/media/avatar/small/071-6.png and /dev/null differ diff --git a/public/media/avatar/small/071-7.png b/public/media/avatar/small/071-7.png deleted file mode 100755 index 4c0fb986b..000000000 Binary files a/public/media/avatar/small/071-7.png and /dev/null differ diff --git a/public/media/avatar/small/071-8.png b/public/media/avatar/small/071-8.png deleted file mode 100644 index 4c0fb986b..000000000 Binary files a/public/media/avatar/small/071-8.png and /dev/null differ diff --git a/public/media/avatar/small/071-9.png b/public/media/avatar/small/071-9.png deleted file mode 100644 index c29690806..000000000 Binary files a/public/media/avatar/small/071-9.png and /dev/null differ diff --git a/public/media/avatar/small/072-1.png b/public/media/avatar/small/072-1.png deleted file mode 100755 index 95a810c68..000000000 Binary files a/public/media/avatar/small/072-1.png and /dev/null differ diff --git a/public/media/avatar/small/072-10.png b/public/media/avatar/small/072-10.png deleted file mode 100644 index 14ed2aa36..000000000 Binary files a/public/media/avatar/small/072-10.png and /dev/null differ diff --git a/public/media/avatar/small/072-11.png b/public/media/avatar/small/072-11.png deleted file mode 100644 index 96015efe8..000000000 Binary files a/public/media/avatar/small/072-11.png and /dev/null differ diff --git a/public/media/avatar/small/072-12.png b/public/media/avatar/small/072-12.png deleted file mode 100644 index 788f15cc4..000000000 Binary files a/public/media/avatar/small/072-12.png and /dev/null differ diff --git a/public/media/avatar/small/072-2.png b/public/media/avatar/small/072-2.png deleted file mode 100755 index 6e8d67ed4..000000000 Binary files a/public/media/avatar/small/072-2.png and /dev/null differ diff --git a/public/media/avatar/small/072-3.png b/public/media/avatar/small/072-3.png deleted file mode 100755 index 788f15cc4..000000000 Binary files a/public/media/avatar/small/072-3.png and /dev/null differ diff --git a/public/media/avatar/small/072-4.png b/public/media/avatar/small/072-4.png deleted file mode 100755 index ce12da84f..000000000 Binary files a/public/media/avatar/small/072-4.png and /dev/null differ diff --git a/public/media/avatar/small/072-5.png b/public/media/avatar/small/072-5.png deleted file mode 100755 index 52e983ba7..000000000 Binary files a/public/media/avatar/small/072-5.png and /dev/null differ diff --git a/public/media/avatar/small/072-6.png b/public/media/avatar/small/072-6.png deleted file mode 100755 index b819b156a..000000000 Binary files a/public/media/avatar/small/072-6.png and /dev/null differ diff --git a/public/media/avatar/small/072-7.png b/public/media/avatar/small/072-7.png deleted file mode 100755 index 542320ed4..000000000 Binary files a/public/media/avatar/small/072-7.png and /dev/null differ diff --git a/public/media/avatar/small/072-8.png b/public/media/avatar/small/072-8.png deleted file mode 100644 index 542320ed4..000000000 Binary files a/public/media/avatar/small/072-8.png and /dev/null differ diff --git a/public/media/avatar/small/072-9.png b/public/media/avatar/small/072-9.png deleted file mode 100644 index 52e983ba7..000000000 Binary files a/public/media/avatar/small/072-9.png and /dev/null differ diff --git a/public/media/avatar/small/073-1.png b/public/media/avatar/small/073-1.png deleted file mode 100755 index e0cbbbe20..000000000 Binary files a/public/media/avatar/small/073-1.png and /dev/null differ diff --git a/public/media/avatar/small/073-10.png b/public/media/avatar/small/073-10.png deleted file mode 100644 index 892e762c2..000000000 Binary files a/public/media/avatar/small/073-10.png and /dev/null differ diff --git a/public/media/avatar/small/073-11.png b/public/media/avatar/small/073-11.png deleted file mode 100644 index 8fe9e8dd9..000000000 Binary files a/public/media/avatar/small/073-11.png and /dev/null differ diff --git a/public/media/avatar/small/073-12.png b/public/media/avatar/small/073-12.png deleted file mode 100644 index 005de1a91..000000000 Binary files a/public/media/avatar/small/073-12.png and /dev/null differ diff --git a/public/media/avatar/small/073-2.png b/public/media/avatar/small/073-2.png deleted file mode 100755 index 6e8217738..000000000 Binary files a/public/media/avatar/small/073-2.png and /dev/null differ diff --git a/public/media/avatar/small/073-3.png b/public/media/avatar/small/073-3.png deleted file mode 100755 index 005de1a91..000000000 Binary files a/public/media/avatar/small/073-3.png and /dev/null differ diff --git a/public/media/avatar/small/073-4.png b/public/media/avatar/small/073-4.png deleted file mode 100755 index 479be2237..000000000 Binary files a/public/media/avatar/small/073-4.png and /dev/null differ diff --git a/public/media/avatar/small/073-5.png b/public/media/avatar/small/073-5.png deleted file mode 100755 index 6cce07e6d..000000000 Binary files a/public/media/avatar/small/073-5.png and /dev/null differ diff --git a/public/media/avatar/small/073-6.png b/public/media/avatar/small/073-6.png deleted file mode 100755 index 30fa3a848..000000000 Binary files a/public/media/avatar/small/073-6.png and /dev/null differ diff --git a/public/media/avatar/small/073-7.png b/public/media/avatar/small/073-7.png deleted file mode 100755 index 3728b9b2d..000000000 Binary files a/public/media/avatar/small/073-7.png and /dev/null differ diff --git a/public/media/avatar/small/073-8.png b/public/media/avatar/small/073-8.png deleted file mode 100644 index 0dfd23236..000000000 Binary files a/public/media/avatar/small/073-8.png and /dev/null differ diff --git a/public/media/avatar/small/073-9.png b/public/media/avatar/small/073-9.png deleted file mode 100644 index 6cce07e6d..000000000 Binary files a/public/media/avatar/small/073-9.png and /dev/null differ diff --git a/public/media/avatar/small/074-1.png b/public/media/avatar/small/074-1.png deleted file mode 100755 index 12096be72..000000000 Binary files a/public/media/avatar/small/074-1.png and /dev/null differ diff --git a/public/media/avatar/small/074-10.png b/public/media/avatar/small/074-10.png deleted file mode 100644 index fda915340..000000000 Binary files a/public/media/avatar/small/074-10.png and /dev/null differ diff --git a/public/media/avatar/small/074-11.png b/public/media/avatar/small/074-11.png deleted file mode 100644 index d63b0f0d8..000000000 Binary files a/public/media/avatar/small/074-11.png and /dev/null differ diff --git a/public/media/avatar/small/074-12.png b/public/media/avatar/small/074-12.png deleted file mode 100644 index d68efa788..000000000 Binary files a/public/media/avatar/small/074-12.png and /dev/null differ diff --git a/public/media/avatar/small/074-2.png b/public/media/avatar/small/074-2.png deleted file mode 100755 index 0b9e9fd8b..000000000 Binary files a/public/media/avatar/small/074-2.png and /dev/null differ diff --git a/public/media/avatar/small/074-3.png b/public/media/avatar/small/074-3.png deleted file mode 100755 index d68efa788..000000000 Binary files a/public/media/avatar/small/074-3.png and /dev/null differ diff --git a/public/media/avatar/small/074-4.png b/public/media/avatar/small/074-4.png deleted file mode 100755 index a9282bb9c..000000000 Binary files a/public/media/avatar/small/074-4.png and /dev/null differ diff --git a/public/media/avatar/small/074-5.png b/public/media/avatar/small/074-5.png deleted file mode 100755 index 06da32b0d..000000000 Binary files a/public/media/avatar/small/074-5.png and /dev/null differ diff --git a/public/media/avatar/small/074-6.png b/public/media/avatar/small/074-6.png deleted file mode 100755 index efbb9b14b..000000000 Binary files a/public/media/avatar/small/074-6.png and /dev/null differ diff --git a/public/media/avatar/small/074-7.png b/public/media/avatar/small/074-7.png deleted file mode 100755 index 78552999e..000000000 Binary files a/public/media/avatar/small/074-7.png and /dev/null differ diff --git a/public/media/avatar/small/074-8.png b/public/media/avatar/small/074-8.png deleted file mode 100644 index ed1c39ee9..000000000 Binary files a/public/media/avatar/small/074-8.png and /dev/null differ diff --git a/public/media/avatar/small/074-9.png b/public/media/avatar/small/074-9.png deleted file mode 100644 index 06da32b0d..000000000 Binary files a/public/media/avatar/small/074-9.png and /dev/null differ diff --git a/public/media/avatar/small/075-1.png b/public/media/avatar/small/075-1.png deleted file mode 100755 index 87d3a1e87..000000000 Binary files a/public/media/avatar/small/075-1.png and /dev/null differ diff --git a/public/media/avatar/small/075-10.png b/public/media/avatar/small/075-10.png deleted file mode 100644 index f4c4f28ff..000000000 Binary files a/public/media/avatar/small/075-10.png and /dev/null differ diff --git a/public/media/avatar/small/075-11.png b/public/media/avatar/small/075-11.png deleted file mode 100644 index 702036b1e..000000000 Binary files a/public/media/avatar/small/075-11.png and /dev/null differ diff --git a/public/media/avatar/small/075-12.png b/public/media/avatar/small/075-12.png deleted file mode 100644 index 8e8ec13d6..000000000 Binary files a/public/media/avatar/small/075-12.png and /dev/null differ diff --git a/public/media/avatar/small/075-2.png b/public/media/avatar/small/075-2.png deleted file mode 100755 index a96dcdf2a..000000000 Binary files a/public/media/avatar/small/075-2.png and /dev/null differ diff --git a/public/media/avatar/small/075-3.png b/public/media/avatar/small/075-3.png deleted file mode 100755 index 8e8ec13d6..000000000 Binary files a/public/media/avatar/small/075-3.png and /dev/null differ diff --git a/public/media/avatar/small/075-4.png b/public/media/avatar/small/075-4.png deleted file mode 100755 index 99760f13a..000000000 Binary files a/public/media/avatar/small/075-4.png and /dev/null differ diff --git a/public/media/avatar/small/075-5.png b/public/media/avatar/small/075-5.png deleted file mode 100755 index a5b79084d..000000000 Binary files a/public/media/avatar/small/075-5.png and /dev/null differ diff --git a/public/media/avatar/small/075-6.png b/public/media/avatar/small/075-6.png deleted file mode 100755 index e6bc08931..000000000 Binary files a/public/media/avatar/small/075-6.png and /dev/null differ diff --git a/public/media/avatar/small/075-7.png b/public/media/avatar/small/075-7.png deleted file mode 100755 index 2c2eb6b6c..000000000 Binary files a/public/media/avatar/small/075-7.png and /dev/null differ diff --git a/public/media/avatar/small/075-8.png b/public/media/avatar/small/075-8.png deleted file mode 100644 index 0c6ad2f98..000000000 Binary files a/public/media/avatar/small/075-8.png and /dev/null differ diff --git a/public/media/avatar/small/075-9.png b/public/media/avatar/small/075-9.png deleted file mode 100644 index a5b79084d..000000000 Binary files a/public/media/avatar/small/075-9.png and /dev/null differ diff --git a/public/media/avatar/small/076-1.png b/public/media/avatar/small/076-1.png deleted file mode 100755 index 2b05dae23..000000000 Binary files a/public/media/avatar/small/076-1.png and /dev/null differ diff --git a/public/media/avatar/small/076-10.png b/public/media/avatar/small/076-10.png deleted file mode 100644 index dda7a4c58..000000000 Binary files a/public/media/avatar/small/076-10.png and /dev/null differ diff --git a/public/media/avatar/small/076-11.png b/public/media/avatar/small/076-11.png deleted file mode 100644 index 262fcb43e..000000000 Binary files a/public/media/avatar/small/076-11.png and /dev/null differ diff --git a/public/media/avatar/small/076-12.png b/public/media/avatar/small/076-12.png deleted file mode 100644 index de738dfef..000000000 Binary files a/public/media/avatar/small/076-12.png and /dev/null differ diff --git a/public/media/avatar/small/076-2.png b/public/media/avatar/small/076-2.png deleted file mode 100755 index 1fd485abd..000000000 Binary files a/public/media/avatar/small/076-2.png and /dev/null differ diff --git a/public/media/avatar/small/076-3.png b/public/media/avatar/small/076-3.png deleted file mode 100755 index de738dfef..000000000 Binary files a/public/media/avatar/small/076-3.png and /dev/null differ diff --git a/public/media/avatar/small/076-4.png b/public/media/avatar/small/076-4.png deleted file mode 100755 index 4a42e9a0c..000000000 Binary files a/public/media/avatar/small/076-4.png and /dev/null differ diff --git a/public/media/avatar/small/076-5.png b/public/media/avatar/small/076-5.png deleted file mode 100755 index 8231465ea..000000000 Binary files a/public/media/avatar/small/076-5.png and /dev/null differ diff --git a/public/media/avatar/small/076-6.png b/public/media/avatar/small/076-6.png deleted file mode 100755 index a5760add6..000000000 Binary files a/public/media/avatar/small/076-6.png and /dev/null differ diff --git a/public/media/avatar/small/076-7.png b/public/media/avatar/small/076-7.png deleted file mode 100755 index daa27f0d7..000000000 Binary files a/public/media/avatar/small/076-7.png and /dev/null differ diff --git a/public/media/avatar/small/076-8.png b/public/media/avatar/small/076-8.png deleted file mode 100644 index daa27f0d7..000000000 Binary files a/public/media/avatar/small/076-8.png and /dev/null differ diff --git a/public/media/avatar/small/076-9.png b/public/media/avatar/small/076-9.png deleted file mode 100644 index 8231465ea..000000000 Binary files a/public/media/avatar/small/076-9.png and /dev/null differ diff --git a/public/media/avatar/small/077-1.png b/public/media/avatar/small/077-1.png deleted file mode 100755 index 3bfa57a1c..000000000 Binary files a/public/media/avatar/small/077-1.png and /dev/null differ diff --git a/public/media/avatar/small/077-10.png b/public/media/avatar/small/077-10.png deleted file mode 100644 index 8f25869c5..000000000 Binary files a/public/media/avatar/small/077-10.png and /dev/null differ diff --git a/public/media/avatar/small/077-11.png b/public/media/avatar/small/077-11.png deleted file mode 100644 index 7af64128c..000000000 Binary files a/public/media/avatar/small/077-11.png and /dev/null differ diff --git a/public/media/avatar/small/077-12.png b/public/media/avatar/small/077-12.png deleted file mode 100644 index 98f2c3f5f..000000000 Binary files a/public/media/avatar/small/077-12.png and /dev/null differ diff --git a/public/media/avatar/small/077-2.png b/public/media/avatar/small/077-2.png deleted file mode 100755 index 3bdcf7302..000000000 Binary files a/public/media/avatar/small/077-2.png and /dev/null differ diff --git a/public/media/avatar/small/077-3.png b/public/media/avatar/small/077-3.png deleted file mode 100755 index 98f2c3f5f..000000000 Binary files a/public/media/avatar/small/077-3.png and /dev/null differ diff --git a/public/media/avatar/small/077-4.png b/public/media/avatar/small/077-4.png deleted file mode 100755 index 333acb5c7..000000000 Binary files a/public/media/avatar/small/077-4.png and /dev/null differ diff --git a/public/media/avatar/small/077-5.png b/public/media/avatar/small/077-5.png deleted file mode 100755 index 86dc1675d..000000000 Binary files a/public/media/avatar/small/077-5.png and /dev/null differ diff --git a/public/media/avatar/small/077-6.png b/public/media/avatar/small/077-6.png deleted file mode 100755 index 04dc3b5be..000000000 Binary files a/public/media/avatar/small/077-6.png and /dev/null differ diff --git a/public/media/avatar/small/077-7.png b/public/media/avatar/small/077-7.png deleted file mode 100755 index b961f39f3..000000000 Binary files a/public/media/avatar/small/077-7.png and /dev/null differ diff --git a/public/media/avatar/small/077-8.png b/public/media/avatar/small/077-8.png deleted file mode 100644 index b961f39f3..000000000 Binary files a/public/media/avatar/small/077-8.png and /dev/null differ diff --git a/public/media/avatar/small/077-9.png b/public/media/avatar/small/077-9.png deleted file mode 100644 index 86dc1675d..000000000 Binary files a/public/media/avatar/small/077-9.png and /dev/null differ diff --git a/public/media/avatar/small/078-1.png b/public/media/avatar/small/078-1.png deleted file mode 100755 index b1d2ee288..000000000 Binary files a/public/media/avatar/small/078-1.png and /dev/null differ diff --git a/public/media/avatar/small/078-10.png b/public/media/avatar/small/078-10.png deleted file mode 100644 index 7c178699d..000000000 Binary files a/public/media/avatar/small/078-10.png and /dev/null differ diff --git a/public/media/avatar/small/078-11.png b/public/media/avatar/small/078-11.png deleted file mode 100644 index 47bb58300..000000000 Binary files a/public/media/avatar/small/078-11.png and /dev/null differ diff --git a/public/media/avatar/small/078-12.png b/public/media/avatar/small/078-12.png deleted file mode 100644 index e617a130d..000000000 Binary files a/public/media/avatar/small/078-12.png and /dev/null differ diff --git a/public/media/avatar/small/078-2.png b/public/media/avatar/small/078-2.png deleted file mode 100755 index c0d9d8eb9..000000000 Binary files a/public/media/avatar/small/078-2.png and /dev/null differ diff --git a/public/media/avatar/small/078-3.png b/public/media/avatar/small/078-3.png deleted file mode 100755 index e617a130d..000000000 Binary files a/public/media/avatar/small/078-3.png and /dev/null differ diff --git a/public/media/avatar/small/078-4.png b/public/media/avatar/small/078-4.png deleted file mode 100755 index 8848fdcd9..000000000 Binary files a/public/media/avatar/small/078-4.png and /dev/null differ diff --git a/public/media/avatar/small/078-5.png b/public/media/avatar/small/078-5.png deleted file mode 100755 index be5c9960c..000000000 Binary files a/public/media/avatar/small/078-5.png and /dev/null differ diff --git a/public/media/avatar/small/078-6.png b/public/media/avatar/small/078-6.png deleted file mode 100755 index 95ea9d5a2..000000000 Binary files a/public/media/avatar/small/078-6.png and /dev/null differ diff --git a/public/media/avatar/small/078-7.png b/public/media/avatar/small/078-7.png deleted file mode 100755 index 8fb17c313..000000000 Binary files a/public/media/avatar/small/078-7.png and /dev/null differ diff --git a/public/media/avatar/small/078-8.png b/public/media/avatar/small/078-8.png deleted file mode 100644 index 8fb17c313..000000000 Binary files a/public/media/avatar/small/078-8.png and /dev/null differ diff --git a/public/media/avatar/small/078-9.png b/public/media/avatar/small/078-9.png deleted file mode 100644 index be5c9960c..000000000 Binary files a/public/media/avatar/small/078-9.png and /dev/null differ diff --git a/public/media/avatar/small/079-1.png b/public/media/avatar/small/079-1.png deleted file mode 100755 index 364f6e01c..000000000 Binary files a/public/media/avatar/small/079-1.png and /dev/null differ diff --git a/public/media/avatar/small/079-10.png b/public/media/avatar/small/079-10.png deleted file mode 100644 index 3fc4dfa93..000000000 Binary files a/public/media/avatar/small/079-10.png and /dev/null differ diff --git a/public/media/avatar/small/079-11.png b/public/media/avatar/small/079-11.png deleted file mode 100644 index b3f1a3b7e..000000000 Binary files a/public/media/avatar/small/079-11.png and /dev/null differ diff --git a/public/media/avatar/small/079-12.png b/public/media/avatar/small/079-12.png deleted file mode 100644 index eda681341..000000000 Binary files a/public/media/avatar/small/079-12.png and /dev/null differ diff --git a/public/media/avatar/small/079-2.png b/public/media/avatar/small/079-2.png deleted file mode 100755 index d222a9541..000000000 Binary files a/public/media/avatar/small/079-2.png and /dev/null differ diff --git a/public/media/avatar/small/079-3.png b/public/media/avatar/small/079-3.png deleted file mode 100755 index eda681341..000000000 Binary files a/public/media/avatar/small/079-3.png and /dev/null differ diff --git a/public/media/avatar/small/079-4.png b/public/media/avatar/small/079-4.png deleted file mode 100755 index 0b99b61f7..000000000 Binary files a/public/media/avatar/small/079-4.png and /dev/null differ diff --git a/public/media/avatar/small/079-5.png b/public/media/avatar/small/079-5.png deleted file mode 100755 index 2cb65c166..000000000 Binary files a/public/media/avatar/small/079-5.png and /dev/null differ diff --git a/public/media/avatar/small/079-6.png b/public/media/avatar/small/079-6.png deleted file mode 100755 index a67ebe836..000000000 Binary files a/public/media/avatar/small/079-6.png and /dev/null differ diff --git a/public/media/avatar/small/079-7.png b/public/media/avatar/small/079-7.png deleted file mode 100755 index ee0fbc44d..000000000 Binary files a/public/media/avatar/small/079-7.png and /dev/null differ diff --git a/public/media/avatar/small/079-8.png b/public/media/avatar/small/079-8.png deleted file mode 100644 index ee0fbc44d..000000000 Binary files a/public/media/avatar/small/079-8.png and /dev/null differ diff --git a/public/media/avatar/small/079-9.png b/public/media/avatar/small/079-9.png deleted file mode 100644 index 2cb65c166..000000000 Binary files a/public/media/avatar/small/079-9.png and /dev/null differ diff --git a/public/media/avatar/small/080-1.png b/public/media/avatar/small/080-1.png deleted file mode 100755 index 96e19b7c8..000000000 Binary files a/public/media/avatar/small/080-1.png and /dev/null differ diff --git a/public/media/avatar/small/080-10.png b/public/media/avatar/small/080-10.png deleted file mode 100644 index b13262b18..000000000 Binary files a/public/media/avatar/small/080-10.png and /dev/null differ diff --git a/public/media/avatar/small/080-11.png b/public/media/avatar/small/080-11.png deleted file mode 100644 index 25376e5da..000000000 Binary files a/public/media/avatar/small/080-11.png and /dev/null differ diff --git a/public/media/avatar/small/080-12.png b/public/media/avatar/small/080-12.png deleted file mode 100644 index 2032a072a..000000000 Binary files a/public/media/avatar/small/080-12.png and /dev/null differ diff --git a/public/media/avatar/small/080-2.png b/public/media/avatar/small/080-2.png deleted file mode 100755 index 743ab3d19..000000000 Binary files a/public/media/avatar/small/080-2.png and /dev/null differ diff --git a/public/media/avatar/small/080-3.png b/public/media/avatar/small/080-3.png deleted file mode 100755 index 2032a072a..000000000 Binary files a/public/media/avatar/small/080-3.png and /dev/null differ diff --git a/public/media/avatar/small/080-4.png b/public/media/avatar/small/080-4.png deleted file mode 100755 index 8bd1e7abf..000000000 Binary files a/public/media/avatar/small/080-4.png and /dev/null differ diff --git a/public/media/avatar/small/080-5.png b/public/media/avatar/small/080-5.png deleted file mode 100755 index 244e98c8c..000000000 Binary files a/public/media/avatar/small/080-5.png and /dev/null differ diff --git a/public/media/avatar/small/080-6.png b/public/media/avatar/small/080-6.png deleted file mode 100755 index 727afeb91..000000000 Binary files a/public/media/avatar/small/080-6.png and /dev/null differ diff --git a/public/media/avatar/small/080-7.png b/public/media/avatar/small/080-7.png deleted file mode 100755 index fe61f08a3..000000000 Binary files a/public/media/avatar/small/080-7.png and /dev/null differ diff --git a/public/media/avatar/small/080-8.png b/public/media/avatar/small/080-8.png deleted file mode 100644 index fe61f08a3..000000000 Binary files a/public/media/avatar/small/080-8.png and /dev/null differ diff --git a/public/media/avatar/small/080-9.png b/public/media/avatar/small/080-9.png deleted file mode 100644 index 244e98c8c..000000000 Binary files a/public/media/avatar/small/080-9.png and /dev/null differ diff --git a/public/media/avatar/small/900-1.png b/public/media/avatar/small/900-1.png deleted file mode 100644 index e5ff9baf8..000000000 Binary files a/public/media/avatar/small/900-1.png and /dev/null differ diff --git a/public/media/avatar/small/900-10.png b/public/media/avatar/small/900-10.png deleted file mode 100644 index 3e20e7290..000000000 Binary files a/public/media/avatar/small/900-10.png and /dev/null differ diff --git a/public/media/avatar/small/900-11.png b/public/media/avatar/small/900-11.png deleted file mode 100644 index ed6d0c43c..000000000 Binary files a/public/media/avatar/small/900-11.png and /dev/null differ diff --git a/public/media/avatar/small/900-12.png b/public/media/avatar/small/900-12.png deleted file mode 100644 index 34cb8d25c..000000000 Binary files a/public/media/avatar/small/900-12.png and /dev/null differ diff --git a/public/media/avatar/small/900-2.png b/public/media/avatar/small/900-2.png deleted file mode 100644 index 650ca7414..000000000 Binary files a/public/media/avatar/small/900-2.png and /dev/null differ diff --git a/public/media/avatar/small/900-3.png b/public/media/avatar/small/900-3.png deleted file mode 100644 index 34cb8d25c..000000000 Binary files a/public/media/avatar/small/900-3.png and /dev/null differ diff --git a/public/media/avatar/small/900-4.png b/public/media/avatar/small/900-4.png deleted file mode 100644 index 0933c7afc..000000000 Binary files a/public/media/avatar/small/900-4.png and /dev/null differ diff --git a/public/media/avatar/small/900-5.png b/public/media/avatar/small/900-5.png deleted file mode 100644 index bc59991b6..000000000 Binary files a/public/media/avatar/small/900-5.png and /dev/null differ diff --git a/public/media/avatar/small/900-6.png b/public/media/avatar/small/900-6.png deleted file mode 100644 index fdb8c4134..000000000 Binary files a/public/media/avatar/small/900-6.png and /dev/null differ diff --git a/public/media/avatar/small/900-7.png b/public/media/avatar/small/900-7.png deleted file mode 100644 index d892558a4..000000000 Binary files a/public/media/avatar/small/900-7.png and /dev/null differ diff --git a/public/media/avatar/small/900-8.png b/public/media/avatar/small/900-8.png deleted file mode 100644 index 8e6fb3dd2..000000000 Binary files a/public/media/avatar/small/900-8.png and /dev/null differ diff --git a/public/media/avatar/small/900-9.png b/public/media/avatar/small/900-9.png deleted file mode 100644 index bc59991b6..000000000 Binary files a/public/media/avatar/small/900-9.png and /dev/null differ diff --git a/public/media/avatar/small/901-1.png b/public/media/avatar/small/901-1.png deleted file mode 100644 index f2c64052b..000000000 Binary files a/public/media/avatar/small/901-1.png and /dev/null differ diff --git a/public/media/avatar/small/901-10.png b/public/media/avatar/small/901-10.png deleted file mode 100644 index 34435e003..000000000 Binary files a/public/media/avatar/small/901-10.png and /dev/null differ diff --git a/public/media/avatar/small/901-11.png b/public/media/avatar/small/901-11.png deleted file mode 100644 index 06cf0a8af..000000000 Binary files a/public/media/avatar/small/901-11.png and /dev/null differ diff --git a/public/media/avatar/small/901-12.png b/public/media/avatar/small/901-12.png deleted file mode 100644 index 0d45e616a..000000000 Binary files a/public/media/avatar/small/901-12.png and /dev/null differ diff --git a/public/media/avatar/small/901-2.png b/public/media/avatar/small/901-2.png deleted file mode 100644 index f441d9318..000000000 Binary files a/public/media/avatar/small/901-2.png and /dev/null differ diff --git a/public/media/avatar/small/901-3.png b/public/media/avatar/small/901-3.png deleted file mode 100644 index 0d45e616a..000000000 Binary files a/public/media/avatar/small/901-3.png and /dev/null differ diff --git a/public/media/avatar/small/901-4.png b/public/media/avatar/small/901-4.png deleted file mode 100644 index 4bee5463f..000000000 Binary files a/public/media/avatar/small/901-4.png and /dev/null differ diff --git a/public/media/avatar/small/901-5.png b/public/media/avatar/small/901-5.png deleted file mode 100644 index 2e2097059..000000000 Binary files a/public/media/avatar/small/901-5.png and /dev/null differ diff --git a/public/media/avatar/small/901-6.png b/public/media/avatar/small/901-6.png deleted file mode 100644 index c5a7b9442..000000000 Binary files a/public/media/avatar/small/901-6.png and /dev/null differ diff --git a/public/media/avatar/small/901-7.png b/public/media/avatar/small/901-7.png deleted file mode 100644 index e759f1323..000000000 Binary files a/public/media/avatar/small/901-7.png and /dev/null differ diff --git a/public/media/avatar/small/901-8.png b/public/media/avatar/small/901-8.png deleted file mode 100644 index 8fa34732c..000000000 Binary files a/public/media/avatar/small/901-8.png and /dev/null differ diff --git a/public/media/avatar/small/901-9.png b/public/media/avatar/small/901-9.png deleted file mode 100644 index 2e2097059..000000000 Binary files a/public/media/avatar/small/901-9.png and /dev/null differ diff --git a/public/media/avatar/small/902-1.png b/public/media/avatar/small/902-1.png deleted file mode 100644 index b8c77adc9..000000000 Binary files a/public/media/avatar/small/902-1.png and /dev/null differ diff --git a/public/media/avatar/small/902-10.png b/public/media/avatar/small/902-10.png deleted file mode 100644 index 37ec71e39..000000000 Binary files a/public/media/avatar/small/902-10.png and /dev/null differ diff --git a/public/media/avatar/small/902-11.png b/public/media/avatar/small/902-11.png deleted file mode 100644 index 24b0d7eaf..000000000 Binary files a/public/media/avatar/small/902-11.png and /dev/null differ diff --git a/public/media/avatar/small/902-12.png b/public/media/avatar/small/902-12.png deleted file mode 100644 index 1e1741717..000000000 Binary files a/public/media/avatar/small/902-12.png and /dev/null differ diff --git a/public/media/avatar/small/902-2.png b/public/media/avatar/small/902-2.png deleted file mode 100644 index 1a62f0442..000000000 Binary files a/public/media/avatar/small/902-2.png and /dev/null differ diff --git a/public/media/avatar/small/902-3.png b/public/media/avatar/small/902-3.png deleted file mode 100644 index 1e1741717..000000000 Binary files a/public/media/avatar/small/902-3.png and /dev/null differ diff --git a/public/media/avatar/small/902-4.png b/public/media/avatar/small/902-4.png deleted file mode 100644 index 104bf8236..000000000 Binary files a/public/media/avatar/small/902-4.png and /dev/null differ diff --git a/public/media/avatar/small/902-5.png b/public/media/avatar/small/902-5.png deleted file mode 100644 index d6b6acdfb..000000000 Binary files a/public/media/avatar/small/902-5.png and /dev/null differ diff --git a/public/media/avatar/small/902-6.png b/public/media/avatar/small/902-6.png deleted file mode 100644 index 0cfc6ff5a..000000000 Binary files a/public/media/avatar/small/902-6.png and /dev/null differ diff --git a/public/media/avatar/small/902-7.png b/public/media/avatar/small/902-7.png deleted file mode 100644 index 3c6f2473d..000000000 Binary files a/public/media/avatar/small/902-7.png and /dev/null differ diff --git a/public/media/avatar/small/902-8.png b/public/media/avatar/small/902-8.png deleted file mode 100644 index e43bcb36e..000000000 Binary files a/public/media/avatar/small/902-8.png and /dev/null differ diff --git a/public/media/avatar/small/902-9.png b/public/media/avatar/small/902-9.png deleted file mode 100644 index d6b6acdfb..000000000 Binary files a/public/media/avatar/small/902-9.png and /dev/null differ diff --git a/public/media/avatar/small/903-1.png b/public/media/avatar/small/903-1.png deleted file mode 100644 index 9ea4a99e5..000000000 Binary files a/public/media/avatar/small/903-1.png and /dev/null differ diff --git a/public/media/avatar/small/903-10.png b/public/media/avatar/small/903-10.png deleted file mode 100644 index 4e162a516..000000000 Binary files a/public/media/avatar/small/903-10.png and /dev/null differ diff --git a/public/media/avatar/small/903-11.png b/public/media/avatar/small/903-11.png deleted file mode 100644 index 4ba4401f5..000000000 Binary files a/public/media/avatar/small/903-11.png and /dev/null differ diff --git a/public/media/avatar/small/903-12.png b/public/media/avatar/small/903-12.png deleted file mode 100644 index 95979f97e..000000000 Binary files a/public/media/avatar/small/903-12.png and /dev/null differ diff --git a/public/media/avatar/small/903-2.png b/public/media/avatar/small/903-2.png deleted file mode 100644 index 1be8cdd14..000000000 Binary files a/public/media/avatar/small/903-2.png and /dev/null differ diff --git a/public/media/avatar/small/903-3.png b/public/media/avatar/small/903-3.png deleted file mode 100644 index 95979f97e..000000000 Binary files a/public/media/avatar/small/903-3.png and /dev/null differ diff --git a/public/media/avatar/small/903-4.png b/public/media/avatar/small/903-4.png deleted file mode 100644 index 33a40346c..000000000 Binary files a/public/media/avatar/small/903-4.png and /dev/null differ diff --git a/public/media/avatar/small/903-5.png b/public/media/avatar/small/903-5.png deleted file mode 100644 index 8d7e69484..000000000 Binary files a/public/media/avatar/small/903-5.png and /dev/null differ diff --git a/public/media/avatar/small/903-6.png b/public/media/avatar/small/903-6.png deleted file mode 100644 index 4a5fe385c..000000000 Binary files a/public/media/avatar/small/903-6.png and /dev/null differ diff --git a/public/media/avatar/small/903-7.png b/public/media/avatar/small/903-7.png deleted file mode 100644 index 60fe5f420..000000000 Binary files a/public/media/avatar/small/903-7.png and /dev/null differ diff --git a/public/media/avatar/small/903-8.png b/public/media/avatar/small/903-8.png deleted file mode 100644 index b94f502c8..000000000 Binary files a/public/media/avatar/small/903-8.png and /dev/null differ diff --git a/public/media/avatar/small/903-9.png b/public/media/avatar/small/903-9.png deleted file mode 100644 index 8d7e69484..000000000 Binary files a/public/media/avatar/small/903-9.png and /dev/null differ diff --git a/public/media/avatar/small/904-1.png b/public/media/avatar/small/904-1.png deleted file mode 100644 index 9b136baea..000000000 Binary files a/public/media/avatar/small/904-1.png and /dev/null differ diff --git a/public/media/avatar/small/904-10.png b/public/media/avatar/small/904-10.png deleted file mode 100644 index 422c3e221..000000000 Binary files a/public/media/avatar/small/904-10.png and /dev/null differ diff --git a/public/media/avatar/small/904-11.png b/public/media/avatar/small/904-11.png deleted file mode 100644 index 963634026..000000000 Binary files a/public/media/avatar/small/904-11.png and /dev/null differ diff --git a/public/media/avatar/small/904-12.png b/public/media/avatar/small/904-12.png deleted file mode 100644 index 389937d4f..000000000 Binary files a/public/media/avatar/small/904-12.png and /dev/null differ diff --git a/public/media/avatar/small/904-2.png b/public/media/avatar/small/904-2.png deleted file mode 100644 index b6542e446..000000000 Binary files a/public/media/avatar/small/904-2.png and /dev/null differ diff --git a/public/media/avatar/small/904-3.png b/public/media/avatar/small/904-3.png deleted file mode 100644 index 389937d4f..000000000 Binary files a/public/media/avatar/small/904-3.png and /dev/null differ diff --git a/public/media/avatar/small/904-4.png b/public/media/avatar/small/904-4.png deleted file mode 100644 index 9828f21d6..000000000 Binary files a/public/media/avatar/small/904-4.png and /dev/null differ diff --git a/public/media/avatar/small/904-5.png b/public/media/avatar/small/904-5.png deleted file mode 100644 index 5847e63ec..000000000 Binary files a/public/media/avatar/small/904-5.png and /dev/null differ diff --git a/public/media/avatar/small/904-6.png b/public/media/avatar/small/904-6.png deleted file mode 100644 index b3eca6027..000000000 Binary files a/public/media/avatar/small/904-6.png and /dev/null differ diff --git a/public/media/avatar/small/904-7.png b/public/media/avatar/small/904-7.png deleted file mode 100644 index 97f610aa5..000000000 Binary files a/public/media/avatar/small/904-7.png and /dev/null differ diff --git a/public/media/avatar/small/904-8.png b/public/media/avatar/small/904-8.png deleted file mode 100644 index 6128b8c2d..000000000 Binary files a/public/media/avatar/small/904-8.png and /dev/null differ diff --git a/public/media/avatar/small/904-9.png b/public/media/avatar/small/904-9.png deleted file mode 100644 index 5847e63ec..000000000 Binary files a/public/media/avatar/small/904-9.png and /dev/null differ diff --git a/public/media/avatar/small/905-1.png b/public/media/avatar/small/905-1.png deleted file mode 100644 index e247911a8..000000000 Binary files a/public/media/avatar/small/905-1.png and /dev/null differ diff --git a/public/media/avatar/small/905-10.png b/public/media/avatar/small/905-10.png deleted file mode 100644 index 49c2f66bd..000000000 Binary files a/public/media/avatar/small/905-10.png and /dev/null differ diff --git a/public/media/avatar/small/905-11.png b/public/media/avatar/small/905-11.png deleted file mode 100644 index 8f912928e..000000000 Binary files a/public/media/avatar/small/905-11.png and /dev/null differ diff --git a/public/media/avatar/small/905-12.png b/public/media/avatar/small/905-12.png deleted file mode 100644 index bf4e603cb..000000000 Binary files a/public/media/avatar/small/905-12.png and /dev/null differ diff --git a/public/media/avatar/small/905-2.png b/public/media/avatar/small/905-2.png deleted file mode 100644 index 4db5193cf..000000000 Binary files a/public/media/avatar/small/905-2.png and /dev/null differ diff --git a/public/media/avatar/small/905-3.png b/public/media/avatar/small/905-3.png deleted file mode 100644 index bf4e603cb..000000000 Binary files a/public/media/avatar/small/905-3.png and /dev/null differ diff --git a/public/media/avatar/small/905-4.png b/public/media/avatar/small/905-4.png deleted file mode 100644 index 49d4670ed..000000000 Binary files a/public/media/avatar/small/905-4.png and /dev/null differ diff --git a/public/media/avatar/small/905-5.png b/public/media/avatar/small/905-5.png deleted file mode 100644 index 45bb313f2..000000000 Binary files a/public/media/avatar/small/905-5.png and /dev/null differ diff --git a/public/media/avatar/small/905-6.png b/public/media/avatar/small/905-6.png deleted file mode 100644 index 20cab4835..000000000 Binary files a/public/media/avatar/small/905-6.png and /dev/null differ diff --git a/public/media/avatar/small/905-7.png b/public/media/avatar/small/905-7.png deleted file mode 100644 index 8a060ab52..000000000 Binary files a/public/media/avatar/small/905-7.png and /dev/null differ diff --git a/public/media/avatar/small/905-8.png b/public/media/avatar/small/905-8.png deleted file mode 100644 index 2a4228b1f..000000000 Binary files a/public/media/avatar/small/905-8.png and /dev/null differ diff --git a/public/media/avatar/small/905-9.png b/public/media/avatar/small/905-9.png deleted file mode 100644 index 45bb313f2..000000000 Binary files a/public/media/avatar/small/905-9.png and /dev/null differ diff --git a/public/media/avatar/small/color-1.png b/public/media/avatar/small/color-1.png deleted file mode 100755 index 4c32f96f6..000000000 Binary files a/public/media/avatar/small/color-1.png and /dev/null differ diff --git a/public/media/avatar/small/color-10.png b/public/media/avatar/small/color-10.png deleted file mode 100644 index 2f4ab95f7..000000000 Binary files a/public/media/avatar/small/color-10.png and /dev/null differ diff --git a/public/media/avatar/small/color-11.png b/public/media/avatar/small/color-11.png deleted file mode 100644 index cfe316619..000000000 Binary files a/public/media/avatar/small/color-11.png and /dev/null differ diff --git a/public/media/avatar/small/color-12.png b/public/media/avatar/small/color-12.png deleted file mode 100644 index 532a43153..000000000 Binary files a/public/media/avatar/small/color-12.png and /dev/null differ diff --git a/public/media/avatar/small/color-2.png b/public/media/avatar/small/color-2.png deleted file mode 100755 index de178c944..000000000 Binary files a/public/media/avatar/small/color-2.png and /dev/null differ diff --git a/public/media/avatar/small/color-3.png b/public/media/avatar/small/color-3.png deleted file mode 100755 index e06aa775c..000000000 Binary files a/public/media/avatar/small/color-3.png and /dev/null differ diff --git a/public/media/avatar/small/color-4.png b/public/media/avatar/small/color-4.png deleted file mode 100755 index dbc685043..000000000 Binary files a/public/media/avatar/small/color-4.png and /dev/null differ diff --git a/public/media/avatar/small/color-5.png b/public/media/avatar/small/color-5.png deleted file mode 100755 index 10c161bcb..000000000 Binary files a/public/media/avatar/small/color-5.png and /dev/null differ diff --git a/public/media/avatar/small/color-6.png b/public/media/avatar/small/color-6.png deleted file mode 100755 index 781c6a90c..000000000 Binary files a/public/media/avatar/small/color-6.png and /dev/null differ diff --git a/public/media/avatar/small/color-7.png b/public/media/avatar/small/color-7.png deleted file mode 100755 index 3e4faf8c3..000000000 Binary files a/public/media/avatar/small/color-7.png and /dev/null differ diff --git a/public/media/avatar/small/color-8.png b/public/media/avatar/small/color-8.png deleted file mode 100644 index 216770713..000000000 Binary files a/public/media/avatar/small/color-8.png and /dev/null differ diff --git a/public/media/avatar/small/color-9.png b/public/media/avatar/small/color-9.png deleted file mode 100644 index b4bc7206c..000000000 Binary files a/public/media/avatar/small/color-9.png and /dev/null differ diff --git a/public/media/avatar/small/empty.png b/public/media/avatar/small/empty.png deleted file mode 100755 index 1fedd5812..000000000 Binary files a/public/media/avatar/small/empty.png and /dev/null differ diff --git a/public/media/avatar/small/jm-1.png b/public/media/avatar/small/jm-1.png deleted file mode 100755 index 02427232b..000000000 Binary files a/public/media/avatar/small/jm-1.png and /dev/null differ diff --git a/public/media/avatar/small/jm-10.png b/public/media/avatar/small/jm-10.png deleted file mode 100644 index e651c88fb..000000000 Binary files a/public/media/avatar/small/jm-10.png and /dev/null differ diff --git a/public/media/avatar/small/jm-11.png b/public/media/avatar/small/jm-11.png deleted file mode 100644 index 679febda7..000000000 Binary files a/public/media/avatar/small/jm-11.png and /dev/null differ diff --git a/public/media/avatar/small/jm-12.png b/public/media/avatar/small/jm-12.png deleted file mode 100644 index 922c7c8ad..000000000 Binary files a/public/media/avatar/small/jm-12.png and /dev/null differ diff --git a/public/media/avatar/small/jm-2.png b/public/media/avatar/small/jm-2.png deleted file mode 100755 index 4821112c0..000000000 Binary files a/public/media/avatar/small/jm-2.png and /dev/null differ diff --git a/public/media/avatar/small/jm-3.png b/public/media/avatar/small/jm-3.png deleted file mode 100755 index 922c7c8ad..000000000 Binary files a/public/media/avatar/small/jm-3.png and /dev/null differ diff --git a/public/media/avatar/small/jm-4.png b/public/media/avatar/small/jm-4.png deleted file mode 100755 index 1f500ae47..000000000 Binary files a/public/media/avatar/small/jm-4.png and /dev/null differ diff --git a/public/media/avatar/small/jm-5.png b/public/media/avatar/small/jm-5.png deleted file mode 100755 index fa50441fc..000000000 Binary files a/public/media/avatar/small/jm-5.png and /dev/null differ diff --git a/public/media/avatar/small/jm-6.png b/public/media/avatar/small/jm-6.png deleted file mode 100755 index 8c52a185a..000000000 Binary files a/public/media/avatar/small/jm-6.png and /dev/null differ diff --git a/public/media/avatar/small/jm-7.png b/public/media/avatar/small/jm-7.png deleted file mode 100755 index 2352b1bfe..000000000 Binary files a/public/media/avatar/small/jm-7.png and /dev/null differ diff --git a/public/media/avatar/small/jm-8.png b/public/media/avatar/small/jm-8.png deleted file mode 100644 index 990ea0a29..000000000 Binary files a/public/media/avatar/small/jm-8.png and /dev/null differ diff --git a/public/media/avatar/small/jm-9.png b/public/media/avatar/small/jm-9.png deleted file mode 100644 index fa50441fc..000000000 Binary files a/public/media/avatar/small/jm-9.png and /dev/null differ diff --git a/public/media/avatar/small/jm.png b/public/media/avatar/small/jm.png deleted file mode 100755 index bfe7218e9..000000000 Binary files a/public/media/avatar/small/jm.png and /dev/null differ diff --git a/public/media/avatar/small/multi.png b/public/media/avatar/small/multi.png deleted file mode 100644 index 1fedd5812..000000000 Binary files a/public/media/avatar/small/multi.png and /dev/null differ diff --git a/public/media/avatar/small/rebel.png b/public/media/avatar/small/rebel.png deleted file mode 100755 index 746480239..000000000 Binary files a/public/media/avatar/small/rebel.png and /dev/null differ diff --git a/public/media/commander/big/t1-c0.png b/public/media/commander/big/t1-c0.png deleted file mode 100755 index 9c65a21ca..000000000 Binary files a/public/media/commander/big/t1-c0.png and /dev/null differ diff --git a/public/media/commander/big/t1-c1.png b/public/media/commander/big/t1-c1.png deleted file mode 100755 index 91860da51..000000000 Binary files a/public/media/commander/big/t1-c1.png and /dev/null differ diff --git a/public/media/commander/big/t1-c10.png b/public/media/commander/big/t1-c10.png deleted file mode 100644 index fdbeb6615..000000000 Binary files a/public/media/commander/big/t1-c10.png and /dev/null differ diff --git a/public/media/commander/big/t1-c11.png b/public/media/commander/big/t1-c11.png deleted file mode 100644 index 127ca0def..000000000 Binary files a/public/media/commander/big/t1-c11.png and /dev/null differ diff --git a/public/media/commander/big/t1-c12.png b/public/media/commander/big/t1-c12.png deleted file mode 100644 index 4693e157b..000000000 Binary files a/public/media/commander/big/t1-c12.png and /dev/null differ diff --git a/public/media/commander/big/t1-c2.png b/public/media/commander/big/t1-c2.png deleted file mode 100755 index 4aab1d3d7..000000000 Binary files a/public/media/commander/big/t1-c2.png and /dev/null differ diff --git a/public/media/commander/big/t1-c3.png b/public/media/commander/big/t1-c3.png deleted file mode 100755 index 2edb410c8..000000000 Binary files a/public/media/commander/big/t1-c3.png and /dev/null differ diff --git a/public/media/commander/big/t1-c4.png b/public/media/commander/big/t1-c4.png deleted file mode 100755 index 6fa3be8e0..000000000 Binary files a/public/media/commander/big/t1-c4.png and /dev/null differ diff --git a/public/media/commander/big/t1-c5.png b/public/media/commander/big/t1-c5.png deleted file mode 100755 index c9a09fcbd..000000000 Binary files a/public/media/commander/big/t1-c5.png and /dev/null differ diff --git a/public/media/commander/big/t1-c6.png b/public/media/commander/big/t1-c6.png deleted file mode 100755 index 67c73a5b4..000000000 Binary files a/public/media/commander/big/t1-c6.png and /dev/null differ diff --git a/public/media/commander/big/t1-c7.png b/public/media/commander/big/t1-c7.png deleted file mode 100755 index e2dd90d4b..000000000 Binary files a/public/media/commander/big/t1-c7.png and /dev/null differ diff --git a/public/media/commander/big/t1-c8.png b/public/media/commander/big/t1-c8.png deleted file mode 100644 index bece08211..000000000 Binary files a/public/media/commander/big/t1-c8.png and /dev/null differ diff --git a/public/media/commander/big/t1-c9.png b/public/media/commander/big/t1-c9.png deleted file mode 100644 index 8669c27ae..000000000 Binary files a/public/media/commander/big/t1-c9.png and /dev/null differ diff --git a/public/media/commander/big/t10-c1.png b/public/media/commander/big/t10-c1.png deleted file mode 100755 index 70fc4d4ec..000000000 Binary files a/public/media/commander/big/t10-c1.png and /dev/null differ diff --git a/public/media/commander/big/t10-c10.png b/public/media/commander/big/t10-c10.png deleted file mode 100644 index 15c7f0871..000000000 Binary files a/public/media/commander/big/t10-c10.png and /dev/null differ diff --git a/public/media/commander/big/t10-c11.png b/public/media/commander/big/t10-c11.png deleted file mode 100644 index 2da296adc..000000000 Binary files a/public/media/commander/big/t10-c11.png and /dev/null differ diff --git a/public/media/commander/big/t10-c12.png b/public/media/commander/big/t10-c12.png deleted file mode 100644 index d3c1b3134..000000000 Binary files a/public/media/commander/big/t10-c12.png and /dev/null differ diff --git a/public/media/commander/big/t10-c2.png b/public/media/commander/big/t10-c2.png deleted file mode 100755 index e33820618..000000000 Binary files a/public/media/commander/big/t10-c2.png and /dev/null differ diff --git a/public/media/commander/big/t10-c3.png b/public/media/commander/big/t10-c3.png deleted file mode 100755 index 4693e157b..000000000 Binary files a/public/media/commander/big/t10-c3.png and /dev/null differ diff --git a/public/media/commander/big/t10-c4.png b/public/media/commander/big/t10-c4.png deleted file mode 100755 index 153c96f77..000000000 Binary files a/public/media/commander/big/t10-c4.png and /dev/null differ diff --git a/public/media/commander/big/t10-c5.png b/public/media/commander/big/t10-c5.png deleted file mode 100755 index 8669c27ae..000000000 Binary files a/public/media/commander/big/t10-c5.png and /dev/null differ diff --git a/public/media/commander/big/t10-c6.png b/public/media/commander/big/t10-c6.png deleted file mode 100755 index 7f071af0d..000000000 Binary files a/public/media/commander/big/t10-c6.png and /dev/null differ diff --git a/public/media/commander/big/t10-c7.png b/public/media/commander/big/t10-c7.png deleted file mode 100755 index 27154093b..000000000 Binary files a/public/media/commander/big/t10-c7.png and /dev/null differ diff --git a/public/media/commander/big/t10-c8.png b/public/media/commander/big/t10-c8.png deleted file mode 100644 index 7d7181ffa..000000000 Binary files a/public/media/commander/big/t10-c8.png and /dev/null differ diff --git a/public/media/commander/big/t10-c9.png b/public/media/commander/big/t10-c9.png deleted file mode 100644 index d0bbf0ebd..000000000 Binary files a/public/media/commander/big/t10-c9.png and /dev/null differ diff --git a/public/media/commander/big/t11-c1.png b/public/media/commander/big/t11-c1.png deleted file mode 100755 index 458a26fd8..000000000 Binary files a/public/media/commander/big/t11-c1.png and /dev/null differ diff --git a/public/media/commander/big/t11-c10.png b/public/media/commander/big/t11-c10.png deleted file mode 100644 index 7e78fbc8e..000000000 Binary files a/public/media/commander/big/t11-c10.png and /dev/null differ diff --git a/public/media/commander/big/t11-c11.png b/public/media/commander/big/t11-c11.png deleted file mode 100644 index 8fd5aedca..000000000 Binary files a/public/media/commander/big/t11-c11.png and /dev/null differ diff --git a/public/media/commander/big/t11-c12.png b/public/media/commander/big/t11-c12.png deleted file mode 100644 index 2edb410c8..000000000 Binary files a/public/media/commander/big/t11-c12.png and /dev/null differ diff --git a/public/media/commander/big/t11-c2.png b/public/media/commander/big/t11-c2.png deleted file mode 100755 index 4b391be45..000000000 Binary files a/public/media/commander/big/t11-c2.png and /dev/null differ diff --git a/public/media/commander/big/t11-c3.png b/public/media/commander/big/t11-c3.png deleted file mode 100755 index b4bac8c87..000000000 Binary files a/public/media/commander/big/t11-c3.png and /dev/null differ diff --git a/public/media/commander/big/t11-c4.png b/public/media/commander/big/t11-c4.png deleted file mode 100755 index a768ba726..000000000 Binary files a/public/media/commander/big/t11-c4.png and /dev/null differ diff --git a/public/media/commander/big/t11-c5.png b/public/media/commander/big/t11-c5.png deleted file mode 100755 index a628d3487..000000000 Binary files a/public/media/commander/big/t11-c5.png and /dev/null differ diff --git a/public/media/commander/big/t11-c6.png b/public/media/commander/big/t11-c6.png deleted file mode 100755 index 3725162be..000000000 Binary files a/public/media/commander/big/t11-c6.png and /dev/null differ diff --git a/public/media/commander/big/t11-c7.png b/public/media/commander/big/t11-c7.png deleted file mode 100755 index 940b50137..000000000 Binary files a/public/media/commander/big/t11-c7.png and /dev/null differ diff --git a/public/media/commander/big/t11-c8.png b/public/media/commander/big/t11-c8.png deleted file mode 100644 index 99e0b47e5..000000000 Binary files a/public/media/commander/big/t11-c8.png and /dev/null differ diff --git a/public/media/commander/big/t11-c9.png b/public/media/commander/big/t11-c9.png deleted file mode 100644 index c9a09fcbd..000000000 Binary files a/public/media/commander/big/t11-c9.png and /dev/null differ diff --git a/public/media/commander/big/t12-c1.png b/public/media/commander/big/t12-c1.png deleted file mode 100755 index 34bc5fbc0..000000000 Binary files a/public/media/commander/big/t12-c1.png and /dev/null differ diff --git a/public/media/commander/big/t12-c10.png b/public/media/commander/big/t12-c10.png deleted file mode 100644 index ec0eab361..000000000 Binary files a/public/media/commander/big/t12-c10.png and /dev/null differ diff --git a/public/media/commander/big/t12-c11.png b/public/media/commander/big/t12-c11.png deleted file mode 100644 index 82b8af087..000000000 Binary files a/public/media/commander/big/t12-c11.png and /dev/null differ diff --git a/public/media/commander/big/t12-c12.png b/public/media/commander/big/t12-c12.png deleted file mode 100644 index 97798c060..000000000 Binary files a/public/media/commander/big/t12-c12.png and /dev/null differ diff --git a/public/media/commander/big/t12-c2.png b/public/media/commander/big/t12-c2.png deleted file mode 100755 index f2fb5a3ab..000000000 Binary files a/public/media/commander/big/t12-c2.png and /dev/null differ diff --git a/public/media/commander/big/t12-c3.png b/public/media/commander/big/t12-c3.png deleted file mode 100755 index bbbb6ef9a..000000000 Binary files a/public/media/commander/big/t12-c3.png and /dev/null differ diff --git a/public/media/commander/big/t12-c4.png b/public/media/commander/big/t12-c4.png deleted file mode 100755 index cc6311cf1..000000000 Binary files a/public/media/commander/big/t12-c4.png and /dev/null differ diff --git a/public/media/commander/big/t12-c5.png b/public/media/commander/big/t12-c5.png deleted file mode 100755 index 3d1177590..000000000 Binary files a/public/media/commander/big/t12-c5.png and /dev/null differ diff --git a/public/media/commander/big/t12-c6.png b/public/media/commander/big/t12-c6.png deleted file mode 100755 index 0fec5384b..000000000 Binary files a/public/media/commander/big/t12-c6.png and /dev/null differ diff --git a/public/media/commander/big/t12-c7.png b/public/media/commander/big/t12-c7.png deleted file mode 100755 index df89086f3..000000000 Binary files a/public/media/commander/big/t12-c7.png and /dev/null differ diff --git a/public/media/commander/big/t12-c8.png b/public/media/commander/big/t12-c8.png deleted file mode 100644 index 9d779d3fe..000000000 Binary files a/public/media/commander/big/t12-c8.png and /dev/null differ diff --git a/public/media/commander/big/t12-c9.png b/public/media/commander/big/t12-c9.png deleted file mode 100644 index 61a76e7fb..000000000 Binary files a/public/media/commander/big/t12-c9.png and /dev/null differ diff --git a/public/media/commander/big/t13-c1.png b/public/media/commander/big/t13-c1.png deleted file mode 100755 index 283b280e1..000000000 Binary files a/public/media/commander/big/t13-c1.png and /dev/null differ diff --git a/public/media/commander/big/t13-c10.png b/public/media/commander/big/t13-c10.png deleted file mode 100644 index 7432c9710..000000000 Binary files a/public/media/commander/big/t13-c10.png and /dev/null differ diff --git a/public/media/commander/big/t13-c11.png b/public/media/commander/big/t13-c11.png deleted file mode 100644 index 0993ac2b2..000000000 Binary files a/public/media/commander/big/t13-c11.png and /dev/null differ diff --git a/public/media/commander/big/t13-c12.png b/public/media/commander/big/t13-c12.png deleted file mode 100644 index 6daca98d9..000000000 Binary files a/public/media/commander/big/t13-c12.png and /dev/null differ diff --git a/public/media/commander/big/t13-c2.png b/public/media/commander/big/t13-c2.png deleted file mode 100755 index 1995521a1..000000000 Binary files a/public/media/commander/big/t13-c2.png and /dev/null differ diff --git a/public/media/commander/big/t13-c3.png b/public/media/commander/big/t13-c3.png deleted file mode 100755 index b96166b28..000000000 Binary files a/public/media/commander/big/t13-c3.png and /dev/null differ diff --git a/public/media/commander/big/t13-c4.png b/public/media/commander/big/t13-c4.png deleted file mode 100755 index b0f675087..000000000 Binary files a/public/media/commander/big/t13-c4.png and /dev/null differ diff --git a/public/media/commander/big/t13-c5.png b/public/media/commander/big/t13-c5.png deleted file mode 100755 index f4ea28abe..000000000 Binary files a/public/media/commander/big/t13-c5.png and /dev/null differ diff --git a/public/media/commander/big/t13-c6.png b/public/media/commander/big/t13-c6.png deleted file mode 100755 index c3d3b9dec..000000000 Binary files a/public/media/commander/big/t13-c6.png and /dev/null differ diff --git a/public/media/commander/big/t13-c7.png b/public/media/commander/big/t13-c7.png deleted file mode 100755 index 1c3eeabca..000000000 Binary files a/public/media/commander/big/t13-c7.png and /dev/null differ diff --git a/public/media/commander/big/t13-c8.png b/public/media/commander/big/t13-c8.png deleted file mode 100644 index 9b7b14856..000000000 Binary files a/public/media/commander/big/t13-c8.png and /dev/null differ diff --git a/public/media/commander/big/t13-c9.png b/public/media/commander/big/t13-c9.png deleted file mode 100644 index 379c7ee40..000000000 Binary files a/public/media/commander/big/t13-c9.png and /dev/null differ diff --git a/public/media/commander/big/t14-c1.png b/public/media/commander/big/t14-c1.png deleted file mode 100755 index 063901282..000000000 Binary files a/public/media/commander/big/t14-c1.png and /dev/null differ diff --git a/public/media/commander/big/t14-c10.png b/public/media/commander/big/t14-c10.png deleted file mode 100644 index c6e9ff74f..000000000 Binary files a/public/media/commander/big/t14-c10.png and /dev/null differ diff --git a/public/media/commander/big/t14-c11.png b/public/media/commander/big/t14-c11.png deleted file mode 100644 index 5c3470f16..000000000 Binary files a/public/media/commander/big/t14-c11.png and /dev/null differ diff --git a/public/media/commander/big/t14-c12.png b/public/media/commander/big/t14-c12.png deleted file mode 100644 index f6585fe8f..000000000 Binary files a/public/media/commander/big/t14-c12.png and /dev/null differ diff --git a/public/media/commander/big/t14-c2.png b/public/media/commander/big/t14-c2.png deleted file mode 100755 index 30f184737..000000000 Binary files a/public/media/commander/big/t14-c2.png and /dev/null differ diff --git a/public/media/commander/big/t14-c3.png b/public/media/commander/big/t14-c3.png deleted file mode 100755 index d0a9492fa..000000000 Binary files a/public/media/commander/big/t14-c3.png and /dev/null differ diff --git a/public/media/commander/big/t14-c4.png b/public/media/commander/big/t14-c4.png deleted file mode 100755 index f3c000c59..000000000 Binary files a/public/media/commander/big/t14-c4.png and /dev/null differ diff --git a/public/media/commander/big/t14-c5.png b/public/media/commander/big/t14-c5.png deleted file mode 100755 index d38b26e61..000000000 Binary files a/public/media/commander/big/t14-c5.png and /dev/null differ diff --git a/public/media/commander/big/t14-c6.png b/public/media/commander/big/t14-c6.png deleted file mode 100755 index 1cdcd67af..000000000 Binary files a/public/media/commander/big/t14-c6.png and /dev/null differ diff --git a/public/media/commander/big/t14-c7.png b/public/media/commander/big/t14-c7.png deleted file mode 100755 index 0d177af4d..000000000 Binary files a/public/media/commander/big/t14-c7.png and /dev/null differ diff --git a/public/media/commander/big/t14-c8.png b/public/media/commander/big/t14-c8.png deleted file mode 100644 index 69a545d60..000000000 Binary files a/public/media/commander/big/t14-c8.png and /dev/null differ diff --git a/public/media/commander/big/t14-c9.png b/public/media/commander/big/t14-c9.png deleted file mode 100644 index 058ec6382..000000000 Binary files a/public/media/commander/big/t14-c9.png and /dev/null differ diff --git a/public/media/commander/big/t15-c1.png b/public/media/commander/big/t15-c1.png deleted file mode 100755 index 24eae8bb8..000000000 Binary files a/public/media/commander/big/t15-c1.png and /dev/null differ diff --git a/public/media/commander/big/t15-c10.png b/public/media/commander/big/t15-c10.png deleted file mode 100644 index 0a83fc92d..000000000 Binary files a/public/media/commander/big/t15-c10.png and /dev/null differ diff --git a/public/media/commander/big/t15-c11.png b/public/media/commander/big/t15-c11.png deleted file mode 100644 index 2d3e3b8df..000000000 Binary files a/public/media/commander/big/t15-c11.png and /dev/null differ diff --git a/public/media/commander/big/t15-c12.png b/public/media/commander/big/t15-c12.png deleted file mode 100644 index a2c0e3e24..000000000 Binary files a/public/media/commander/big/t15-c12.png and /dev/null differ diff --git a/public/media/commander/big/t15-c2.png b/public/media/commander/big/t15-c2.png deleted file mode 100755 index 60371a29a..000000000 Binary files a/public/media/commander/big/t15-c2.png and /dev/null differ diff --git a/public/media/commander/big/t15-c3.png b/public/media/commander/big/t15-c3.png deleted file mode 100755 index c6de3b886..000000000 Binary files a/public/media/commander/big/t15-c3.png and /dev/null differ diff --git a/public/media/commander/big/t15-c4.png b/public/media/commander/big/t15-c4.png deleted file mode 100755 index ae59453ab..000000000 Binary files a/public/media/commander/big/t15-c4.png and /dev/null differ diff --git a/public/media/commander/big/t15-c5.png b/public/media/commander/big/t15-c5.png deleted file mode 100755 index 7c7925ee4..000000000 Binary files a/public/media/commander/big/t15-c5.png and /dev/null differ diff --git a/public/media/commander/big/t15-c6.png b/public/media/commander/big/t15-c6.png deleted file mode 100755 index 71a567f75..000000000 Binary files a/public/media/commander/big/t15-c6.png and /dev/null differ diff --git a/public/media/commander/big/t15-c7.png b/public/media/commander/big/t15-c7.png deleted file mode 100755 index a74f519c3..000000000 Binary files a/public/media/commander/big/t15-c7.png and /dev/null differ diff --git a/public/media/commander/big/t15-c8.png b/public/media/commander/big/t15-c8.png deleted file mode 100644 index d8942f8c1..000000000 Binary files a/public/media/commander/big/t15-c8.png and /dev/null differ diff --git a/public/media/commander/big/t15-c9.png b/public/media/commander/big/t15-c9.png deleted file mode 100644 index 84f91ce0a..000000000 Binary files a/public/media/commander/big/t15-c9.png and /dev/null differ diff --git a/public/media/commander/big/t16-c1.png b/public/media/commander/big/t16-c1.png deleted file mode 100755 index d51aee0d5..000000000 Binary files a/public/media/commander/big/t16-c1.png and /dev/null differ diff --git a/public/media/commander/big/t16-c10.png b/public/media/commander/big/t16-c10.png deleted file mode 100644 index a0a6deb3e..000000000 Binary files a/public/media/commander/big/t16-c10.png and /dev/null differ diff --git a/public/media/commander/big/t16-c11.png b/public/media/commander/big/t16-c11.png deleted file mode 100644 index 93bdb4c62..000000000 Binary files a/public/media/commander/big/t16-c11.png and /dev/null differ diff --git a/public/media/commander/big/t16-c12.png b/public/media/commander/big/t16-c12.png deleted file mode 100644 index 00586f0d9..000000000 Binary files a/public/media/commander/big/t16-c12.png and /dev/null differ diff --git a/public/media/commander/big/t16-c2.png b/public/media/commander/big/t16-c2.png deleted file mode 100755 index 55a5d23fe..000000000 Binary files a/public/media/commander/big/t16-c2.png and /dev/null differ diff --git a/public/media/commander/big/t16-c3.png b/public/media/commander/big/t16-c3.png deleted file mode 100755 index f6f5e91f8..000000000 Binary files a/public/media/commander/big/t16-c3.png and /dev/null differ diff --git a/public/media/commander/big/t16-c4.png b/public/media/commander/big/t16-c4.png deleted file mode 100755 index 17f6ed030..000000000 Binary files a/public/media/commander/big/t16-c4.png and /dev/null differ diff --git a/public/media/commander/big/t16-c5.png b/public/media/commander/big/t16-c5.png deleted file mode 100755 index b004ae078..000000000 Binary files a/public/media/commander/big/t16-c5.png and /dev/null differ diff --git a/public/media/commander/big/t16-c6.png b/public/media/commander/big/t16-c6.png deleted file mode 100755 index 79a5d4b11..000000000 Binary files a/public/media/commander/big/t16-c6.png and /dev/null differ diff --git a/public/media/commander/big/t16-c7.png b/public/media/commander/big/t16-c7.png deleted file mode 100755 index 3a41819c3..000000000 Binary files a/public/media/commander/big/t16-c7.png and /dev/null differ diff --git a/public/media/commander/big/t16-c8.png b/public/media/commander/big/t16-c8.png deleted file mode 100644 index 2bfa27303..000000000 Binary files a/public/media/commander/big/t16-c8.png and /dev/null differ diff --git a/public/media/commander/big/t16-c9.png b/public/media/commander/big/t16-c9.png deleted file mode 100644 index e0b854f62..000000000 Binary files a/public/media/commander/big/t16-c9.png and /dev/null differ diff --git a/public/media/commander/big/t17-c1.png b/public/media/commander/big/t17-c1.png deleted file mode 100755 index 8e48223f4..000000000 Binary files a/public/media/commander/big/t17-c1.png and /dev/null differ diff --git a/public/media/commander/big/t17-c10.png b/public/media/commander/big/t17-c10.png deleted file mode 100644 index f0f8888ee..000000000 Binary files a/public/media/commander/big/t17-c10.png and /dev/null differ diff --git a/public/media/commander/big/t17-c11.png b/public/media/commander/big/t17-c11.png deleted file mode 100644 index 85fbed343..000000000 Binary files a/public/media/commander/big/t17-c11.png and /dev/null differ diff --git a/public/media/commander/big/t17-c12.png b/public/media/commander/big/t17-c12.png deleted file mode 100644 index fd8491e81..000000000 Binary files a/public/media/commander/big/t17-c12.png and /dev/null differ diff --git a/public/media/commander/big/t17-c2.png b/public/media/commander/big/t17-c2.png deleted file mode 100755 index 2f7918e26..000000000 Binary files a/public/media/commander/big/t17-c2.png and /dev/null differ diff --git a/public/media/commander/big/t17-c3.png b/public/media/commander/big/t17-c3.png deleted file mode 100755 index afa3954ce..000000000 Binary files a/public/media/commander/big/t17-c3.png and /dev/null differ diff --git a/public/media/commander/big/t17-c4.png b/public/media/commander/big/t17-c4.png deleted file mode 100755 index d7827d3fb..000000000 Binary files a/public/media/commander/big/t17-c4.png and /dev/null differ diff --git a/public/media/commander/big/t17-c5.png b/public/media/commander/big/t17-c5.png deleted file mode 100755 index aa71d14b9..000000000 Binary files a/public/media/commander/big/t17-c5.png and /dev/null differ diff --git a/public/media/commander/big/t17-c6.png b/public/media/commander/big/t17-c6.png deleted file mode 100755 index caf09c3d6..000000000 Binary files a/public/media/commander/big/t17-c6.png and /dev/null differ diff --git a/public/media/commander/big/t17-c7.png b/public/media/commander/big/t17-c7.png deleted file mode 100755 index 7f10900c1..000000000 Binary files a/public/media/commander/big/t17-c7.png and /dev/null differ diff --git a/public/media/commander/big/t17-c8.png b/public/media/commander/big/t17-c8.png deleted file mode 100644 index 0e1d89c54..000000000 Binary files a/public/media/commander/big/t17-c8.png and /dev/null differ diff --git a/public/media/commander/big/t17-c9.png b/public/media/commander/big/t17-c9.png deleted file mode 100644 index 31dc47564..000000000 Binary files a/public/media/commander/big/t17-c9.png and /dev/null differ diff --git a/public/media/commander/big/t18-c1.png b/public/media/commander/big/t18-c1.png deleted file mode 100755 index 260b40912..000000000 Binary files a/public/media/commander/big/t18-c1.png and /dev/null differ diff --git a/public/media/commander/big/t18-c10.png b/public/media/commander/big/t18-c10.png deleted file mode 100644 index c7ef7d908..000000000 Binary files a/public/media/commander/big/t18-c10.png and /dev/null differ diff --git a/public/media/commander/big/t18-c11.png b/public/media/commander/big/t18-c11.png deleted file mode 100644 index e6e3aef49..000000000 Binary files a/public/media/commander/big/t18-c11.png and /dev/null differ diff --git a/public/media/commander/big/t18-c12.png b/public/media/commander/big/t18-c12.png deleted file mode 100644 index 62267a2e5..000000000 Binary files a/public/media/commander/big/t18-c12.png and /dev/null differ diff --git a/public/media/commander/big/t18-c2.png b/public/media/commander/big/t18-c2.png deleted file mode 100755 index 509a4bd76..000000000 Binary files a/public/media/commander/big/t18-c2.png and /dev/null differ diff --git a/public/media/commander/big/t18-c3.png b/public/media/commander/big/t18-c3.png deleted file mode 100755 index 79f929bfa..000000000 Binary files a/public/media/commander/big/t18-c3.png and /dev/null differ diff --git a/public/media/commander/big/t18-c4.png b/public/media/commander/big/t18-c4.png deleted file mode 100755 index a14585675..000000000 Binary files a/public/media/commander/big/t18-c4.png and /dev/null differ diff --git a/public/media/commander/big/t18-c5.png b/public/media/commander/big/t18-c5.png deleted file mode 100755 index d885c87b6..000000000 Binary files a/public/media/commander/big/t18-c5.png and /dev/null differ diff --git a/public/media/commander/big/t18-c6.png b/public/media/commander/big/t18-c6.png deleted file mode 100755 index a87af5869..000000000 Binary files a/public/media/commander/big/t18-c6.png and /dev/null differ diff --git a/public/media/commander/big/t18-c7.png b/public/media/commander/big/t18-c7.png deleted file mode 100755 index bbc44f577..000000000 Binary files a/public/media/commander/big/t18-c7.png and /dev/null differ diff --git a/public/media/commander/big/t18-c8.png b/public/media/commander/big/t18-c8.png deleted file mode 100644 index 336d3d21d..000000000 Binary files a/public/media/commander/big/t18-c8.png and /dev/null differ diff --git a/public/media/commander/big/t18-c9.png b/public/media/commander/big/t18-c9.png deleted file mode 100644 index cf768daf2..000000000 Binary files a/public/media/commander/big/t18-c9.png and /dev/null differ diff --git a/public/media/commander/big/t19-c1.png b/public/media/commander/big/t19-c1.png deleted file mode 100755 index 430ed6418..000000000 Binary files a/public/media/commander/big/t19-c1.png and /dev/null differ diff --git a/public/media/commander/big/t19-c10.png b/public/media/commander/big/t19-c10.png deleted file mode 100644 index 955e0bab7..000000000 Binary files a/public/media/commander/big/t19-c10.png and /dev/null differ diff --git a/public/media/commander/big/t19-c11.png b/public/media/commander/big/t19-c11.png deleted file mode 100644 index bfab7531a..000000000 Binary files a/public/media/commander/big/t19-c11.png and /dev/null differ diff --git a/public/media/commander/big/t19-c12.png b/public/media/commander/big/t19-c12.png deleted file mode 100644 index 30ccf3e3a..000000000 Binary files a/public/media/commander/big/t19-c12.png and /dev/null differ diff --git a/public/media/commander/big/t19-c2.png b/public/media/commander/big/t19-c2.png deleted file mode 100755 index c32ddc070..000000000 Binary files a/public/media/commander/big/t19-c2.png and /dev/null differ diff --git a/public/media/commander/big/t19-c3.png b/public/media/commander/big/t19-c3.png deleted file mode 100755 index d3c1b3134..000000000 Binary files a/public/media/commander/big/t19-c3.png and /dev/null differ diff --git a/public/media/commander/big/t19-c4.png b/public/media/commander/big/t19-c4.png deleted file mode 100755 index 064e0858b..000000000 Binary files a/public/media/commander/big/t19-c4.png and /dev/null differ diff --git a/public/media/commander/big/t19-c5.png b/public/media/commander/big/t19-c5.png deleted file mode 100755 index d0bbf0ebd..000000000 Binary files a/public/media/commander/big/t19-c5.png and /dev/null differ diff --git a/public/media/commander/big/t19-c6.png b/public/media/commander/big/t19-c6.png deleted file mode 100755 index 792cac9a1..000000000 Binary files a/public/media/commander/big/t19-c6.png and /dev/null differ diff --git a/public/media/commander/big/t19-c7.png b/public/media/commander/big/t19-c7.png deleted file mode 100755 index 07cd06737..000000000 Binary files a/public/media/commander/big/t19-c7.png and /dev/null differ diff --git a/public/media/commander/big/t19-c8.png b/public/media/commander/big/t19-c8.png deleted file mode 100644 index a25d2eb2f..000000000 Binary files a/public/media/commander/big/t19-c8.png and /dev/null differ diff --git a/public/media/commander/big/t19-c9.png b/public/media/commander/big/t19-c9.png deleted file mode 100644 index a981afafb..000000000 Binary files a/public/media/commander/big/t19-c9.png and /dev/null differ diff --git a/public/media/commander/big/t2-c1.png b/public/media/commander/big/t2-c1.png deleted file mode 100755 index 9d6f01483..000000000 Binary files a/public/media/commander/big/t2-c1.png and /dev/null differ diff --git a/public/media/commander/big/t2-c10.png b/public/media/commander/big/t2-c10.png deleted file mode 100644 index 7d91e614e..000000000 Binary files a/public/media/commander/big/t2-c10.png and /dev/null differ diff --git a/public/media/commander/big/t2-c11.png b/public/media/commander/big/t2-c11.png deleted file mode 100644 index 98c1dedfd..000000000 Binary files a/public/media/commander/big/t2-c11.png and /dev/null differ diff --git a/public/media/commander/big/t2-c12.png b/public/media/commander/big/t2-c12.png deleted file mode 100644 index b4bac8c87..000000000 Binary files a/public/media/commander/big/t2-c12.png and /dev/null differ diff --git a/public/media/commander/big/t2-c2.png b/public/media/commander/big/t2-c2.png deleted file mode 100755 index a0b04899b..000000000 Binary files a/public/media/commander/big/t2-c2.png and /dev/null differ diff --git a/public/media/commander/big/t2-c3.png b/public/media/commander/big/t2-c3.png deleted file mode 100755 index f6585fe8f..000000000 Binary files a/public/media/commander/big/t2-c3.png and /dev/null differ diff --git a/public/media/commander/big/t2-c4.png b/public/media/commander/big/t2-c4.png deleted file mode 100755 index a0096fa05..000000000 Binary files a/public/media/commander/big/t2-c4.png and /dev/null differ diff --git a/public/media/commander/big/t2-c5.png b/public/media/commander/big/t2-c5.png deleted file mode 100755 index 058ec6382..000000000 Binary files a/public/media/commander/big/t2-c5.png and /dev/null differ diff --git a/public/media/commander/big/t2-c6.png b/public/media/commander/big/t2-c6.png deleted file mode 100755 index 83d97d66a..000000000 Binary files a/public/media/commander/big/t2-c6.png and /dev/null differ diff --git a/public/media/commander/big/t2-c7.png b/public/media/commander/big/t2-c7.png deleted file mode 100755 index 394dc2859..000000000 Binary files a/public/media/commander/big/t2-c7.png and /dev/null differ diff --git a/public/media/commander/big/t2-c8.png b/public/media/commander/big/t2-c8.png deleted file mode 100644 index 95a9ecfac..000000000 Binary files a/public/media/commander/big/t2-c8.png and /dev/null differ diff --git a/public/media/commander/big/t2-c9.png b/public/media/commander/big/t2-c9.png deleted file mode 100644 index a628d3487..000000000 Binary files a/public/media/commander/big/t2-c9.png and /dev/null differ diff --git a/public/media/commander/big/t20-c1.png b/public/media/commander/big/t20-c1.png deleted file mode 100755 index 3ebee187b..000000000 Binary files a/public/media/commander/big/t20-c1.png and /dev/null differ diff --git a/public/media/commander/big/t20-c10.png b/public/media/commander/big/t20-c10.png deleted file mode 100644 index 93bec9b6e..000000000 Binary files a/public/media/commander/big/t20-c10.png and /dev/null differ diff --git a/public/media/commander/big/t20-c11.png b/public/media/commander/big/t20-c11.png deleted file mode 100644 index a13e02008..000000000 Binary files a/public/media/commander/big/t20-c11.png and /dev/null differ diff --git a/public/media/commander/big/t20-c12.png b/public/media/commander/big/t20-c12.png deleted file mode 100644 index b3cefdf33..000000000 Binary files a/public/media/commander/big/t20-c12.png and /dev/null differ diff --git a/public/media/commander/big/t20-c2.png b/public/media/commander/big/t20-c2.png deleted file mode 100755 index 710df20eb..000000000 Binary files a/public/media/commander/big/t20-c2.png and /dev/null differ diff --git a/public/media/commander/big/t20-c3.png b/public/media/commander/big/t20-c3.png deleted file mode 100755 index 97798c060..000000000 Binary files a/public/media/commander/big/t20-c3.png and /dev/null differ diff --git a/public/media/commander/big/t20-c4.png b/public/media/commander/big/t20-c4.png deleted file mode 100755 index 689dc980a..000000000 Binary files a/public/media/commander/big/t20-c4.png and /dev/null differ diff --git a/public/media/commander/big/t20-c5.png b/public/media/commander/big/t20-c5.png deleted file mode 100755 index 61a76e7fb..000000000 Binary files a/public/media/commander/big/t20-c5.png and /dev/null differ diff --git a/public/media/commander/big/t20-c6.png b/public/media/commander/big/t20-c6.png deleted file mode 100755 index 0133a8c72..000000000 Binary files a/public/media/commander/big/t20-c6.png and /dev/null differ diff --git a/public/media/commander/big/t20-c7.png b/public/media/commander/big/t20-c7.png deleted file mode 100755 index 4a281c78c..000000000 Binary files a/public/media/commander/big/t20-c7.png and /dev/null differ diff --git a/public/media/commander/big/t20-c8.png b/public/media/commander/big/t20-c8.png deleted file mode 100644 index cfbad13de..000000000 Binary files a/public/media/commander/big/t20-c8.png and /dev/null differ diff --git a/public/media/commander/big/t20-c9.png b/public/media/commander/big/t20-c9.png deleted file mode 100644 index a5aa32cde..000000000 Binary files a/public/media/commander/big/t20-c9.png and /dev/null differ diff --git a/public/media/commander/big/t21-c1.png b/public/media/commander/big/t21-c1.png deleted file mode 100755 index 966c2603c..000000000 Binary files a/public/media/commander/big/t21-c1.png and /dev/null differ diff --git a/public/media/commander/big/t21-c10.png b/public/media/commander/big/t21-c10.png deleted file mode 100644 index 34626938a..000000000 Binary files a/public/media/commander/big/t21-c10.png and /dev/null differ diff --git a/public/media/commander/big/t21-c11.png b/public/media/commander/big/t21-c11.png deleted file mode 100644 index 932b14c08..000000000 Binary files a/public/media/commander/big/t21-c11.png and /dev/null differ diff --git a/public/media/commander/big/t21-c12.png b/public/media/commander/big/t21-c12.png deleted file mode 100644 index 30bfc7035..000000000 Binary files a/public/media/commander/big/t21-c12.png and /dev/null differ diff --git a/public/media/commander/big/t21-c2.png b/public/media/commander/big/t21-c2.png deleted file mode 100755 index 2239ecd8d..000000000 Binary files a/public/media/commander/big/t21-c2.png and /dev/null differ diff --git a/public/media/commander/big/t21-c3.png b/public/media/commander/big/t21-c3.png deleted file mode 100755 index 6daca98d9..000000000 Binary files a/public/media/commander/big/t21-c3.png and /dev/null differ diff --git a/public/media/commander/big/t21-c4.png b/public/media/commander/big/t21-c4.png deleted file mode 100755 index b98ff7888..000000000 Binary files a/public/media/commander/big/t21-c4.png and /dev/null differ diff --git a/public/media/commander/big/t21-c5.png b/public/media/commander/big/t21-c5.png deleted file mode 100755 index 379c7ee40..000000000 Binary files a/public/media/commander/big/t21-c5.png and /dev/null differ diff --git a/public/media/commander/big/t21-c6.png b/public/media/commander/big/t21-c6.png deleted file mode 100755 index 759218120..000000000 Binary files a/public/media/commander/big/t21-c6.png and /dev/null differ diff --git a/public/media/commander/big/t21-c7.png b/public/media/commander/big/t21-c7.png deleted file mode 100755 index acf59e5fe..000000000 Binary files a/public/media/commander/big/t21-c7.png and /dev/null differ diff --git a/public/media/commander/big/t21-c8.png b/public/media/commander/big/t21-c8.png deleted file mode 100644 index 590d24b1b..000000000 Binary files a/public/media/commander/big/t21-c8.png and /dev/null differ diff --git a/public/media/commander/big/t21-c9.png b/public/media/commander/big/t21-c9.png deleted file mode 100644 index 35e8ff232..000000000 Binary files a/public/media/commander/big/t21-c9.png and /dev/null differ diff --git a/public/media/commander/big/t3-c1.png b/public/media/commander/big/t3-c1.png deleted file mode 100755 index b6a2df9fd..000000000 Binary files a/public/media/commander/big/t3-c1.png and /dev/null differ diff --git a/public/media/commander/big/t3-c10.png b/public/media/commander/big/t3-c10.png deleted file mode 100644 index d6667d0c7..000000000 Binary files a/public/media/commander/big/t3-c10.png and /dev/null differ diff --git a/public/media/commander/big/t3-c11.png b/public/media/commander/big/t3-c11.png deleted file mode 100644 index 1ccce7fb1..000000000 Binary files a/public/media/commander/big/t3-c11.png and /dev/null differ diff --git a/public/media/commander/big/t3-c12.png b/public/media/commander/big/t3-c12.png deleted file mode 100644 index bbbb6ef9a..000000000 Binary files a/public/media/commander/big/t3-c12.png and /dev/null differ diff --git a/public/media/commander/big/t3-c2.png b/public/media/commander/big/t3-c2.png deleted file mode 100755 index 50ff993c8..000000000 Binary files a/public/media/commander/big/t3-c2.png and /dev/null differ diff --git a/public/media/commander/big/t3-c3.png b/public/media/commander/big/t3-c3.png deleted file mode 100755 index a2c0e3e24..000000000 Binary files a/public/media/commander/big/t3-c3.png and /dev/null differ diff --git a/public/media/commander/big/t3-c4.png b/public/media/commander/big/t3-c4.png deleted file mode 100755 index 2feb24e35..000000000 Binary files a/public/media/commander/big/t3-c4.png and /dev/null differ diff --git a/public/media/commander/big/t3-c5.png b/public/media/commander/big/t3-c5.png deleted file mode 100755 index 84f91ce0a..000000000 Binary files a/public/media/commander/big/t3-c5.png and /dev/null differ diff --git a/public/media/commander/big/t3-c6.png b/public/media/commander/big/t3-c6.png deleted file mode 100755 index efbe547d0..000000000 Binary files a/public/media/commander/big/t3-c6.png and /dev/null differ diff --git a/public/media/commander/big/t3-c7.png b/public/media/commander/big/t3-c7.png deleted file mode 100755 index dd1923112..000000000 Binary files a/public/media/commander/big/t3-c7.png and /dev/null differ diff --git a/public/media/commander/big/t3-c8.png b/public/media/commander/big/t3-c8.png deleted file mode 100644 index a22cef45f..000000000 Binary files a/public/media/commander/big/t3-c8.png and /dev/null differ diff --git a/public/media/commander/big/t3-c9.png b/public/media/commander/big/t3-c9.png deleted file mode 100644 index 3d1177590..000000000 Binary files a/public/media/commander/big/t3-c9.png and /dev/null differ diff --git a/public/media/commander/big/t4-c1.png b/public/media/commander/big/t4-c1.png deleted file mode 100755 index ef9eb01cf..000000000 Binary files a/public/media/commander/big/t4-c1.png and /dev/null differ diff --git a/public/media/commander/big/t4-c10.png b/public/media/commander/big/t4-c10.png deleted file mode 100644 index de1e44ea7..000000000 Binary files a/public/media/commander/big/t4-c10.png and /dev/null differ diff --git a/public/media/commander/big/t4-c11.png b/public/media/commander/big/t4-c11.png deleted file mode 100644 index 8f3594227..000000000 Binary files a/public/media/commander/big/t4-c11.png and /dev/null differ diff --git a/public/media/commander/big/t4-c12.png b/public/media/commander/big/t4-c12.png deleted file mode 100644 index b96166b28..000000000 Binary files a/public/media/commander/big/t4-c12.png and /dev/null differ diff --git a/public/media/commander/big/t4-c2.png b/public/media/commander/big/t4-c2.png deleted file mode 100755 index cc78181a5..000000000 Binary files a/public/media/commander/big/t4-c2.png and /dev/null differ diff --git a/public/media/commander/big/t4-c3.png b/public/media/commander/big/t4-c3.png deleted file mode 100755 index 00586f0d9..000000000 Binary files a/public/media/commander/big/t4-c3.png and /dev/null differ diff --git a/public/media/commander/big/t4-c4.png b/public/media/commander/big/t4-c4.png deleted file mode 100755 index 5d7352fca..000000000 Binary files a/public/media/commander/big/t4-c4.png and /dev/null differ diff --git a/public/media/commander/big/t4-c5.png b/public/media/commander/big/t4-c5.png deleted file mode 100755 index e0b854f62..000000000 Binary files a/public/media/commander/big/t4-c5.png and /dev/null differ diff --git a/public/media/commander/big/t4-c6.png b/public/media/commander/big/t4-c6.png deleted file mode 100755 index 456209d51..000000000 Binary files a/public/media/commander/big/t4-c6.png and /dev/null differ diff --git a/public/media/commander/big/t4-c7.png b/public/media/commander/big/t4-c7.png deleted file mode 100755 index c577dec39..000000000 Binary files a/public/media/commander/big/t4-c7.png and /dev/null differ diff --git a/public/media/commander/big/t4-c8.png b/public/media/commander/big/t4-c8.png deleted file mode 100644 index 2ffad1f6e..000000000 Binary files a/public/media/commander/big/t4-c8.png and /dev/null differ diff --git a/public/media/commander/big/t4-c9.png b/public/media/commander/big/t4-c9.png deleted file mode 100644 index f4ea28abe..000000000 Binary files a/public/media/commander/big/t4-c9.png and /dev/null differ diff --git a/public/media/commander/big/t5-c1.png b/public/media/commander/big/t5-c1.png deleted file mode 100755 index 560025f10..000000000 Binary files a/public/media/commander/big/t5-c1.png and /dev/null differ diff --git a/public/media/commander/big/t5-c10.png b/public/media/commander/big/t5-c10.png deleted file mode 100644 index c481b9ff9..000000000 Binary files a/public/media/commander/big/t5-c10.png and /dev/null differ diff --git a/public/media/commander/big/t5-c11.png b/public/media/commander/big/t5-c11.png deleted file mode 100644 index c12369943..000000000 Binary files a/public/media/commander/big/t5-c11.png and /dev/null differ diff --git a/public/media/commander/big/t5-c12.png b/public/media/commander/big/t5-c12.png deleted file mode 100644 index d0a9492fa..000000000 Binary files a/public/media/commander/big/t5-c12.png and /dev/null differ diff --git a/public/media/commander/big/t5-c2.png b/public/media/commander/big/t5-c2.png deleted file mode 100755 index 3daa2c28f..000000000 Binary files a/public/media/commander/big/t5-c2.png and /dev/null differ diff --git a/public/media/commander/big/t5-c3.png b/public/media/commander/big/t5-c3.png deleted file mode 100755 index fd8491e81..000000000 Binary files a/public/media/commander/big/t5-c3.png and /dev/null differ diff --git a/public/media/commander/big/t5-c4.png b/public/media/commander/big/t5-c4.png deleted file mode 100755 index 205100d7a..000000000 Binary files a/public/media/commander/big/t5-c4.png and /dev/null differ diff --git a/public/media/commander/big/t5-c5.png b/public/media/commander/big/t5-c5.png deleted file mode 100755 index 31dc47564..000000000 Binary files a/public/media/commander/big/t5-c5.png and /dev/null differ diff --git a/public/media/commander/big/t5-c6.png b/public/media/commander/big/t5-c6.png deleted file mode 100755 index 428ab7905..000000000 Binary files a/public/media/commander/big/t5-c6.png and /dev/null differ diff --git a/public/media/commander/big/t5-c7.png b/public/media/commander/big/t5-c7.png deleted file mode 100755 index 814d99b62..000000000 Binary files a/public/media/commander/big/t5-c7.png and /dev/null differ diff --git a/public/media/commander/big/t5-c8.png b/public/media/commander/big/t5-c8.png deleted file mode 100644 index f048efaad..000000000 Binary files a/public/media/commander/big/t5-c8.png and /dev/null differ diff --git a/public/media/commander/big/t5-c9.png b/public/media/commander/big/t5-c9.png deleted file mode 100644 index d38b26e61..000000000 Binary files a/public/media/commander/big/t5-c9.png and /dev/null differ diff --git a/public/media/commander/big/t6-c1.png b/public/media/commander/big/t6-c1.png deleted file mode 100755 index 2a51e9f56..000000000 Binary files a/public/media/commander/big/t6-c1.png and /dev/null differ diff --git a/public/media/commander/big/t6-c10.png b/public/media/commander/big/t6-c10.png deleted file mode 100644 index ada65386f..000000000 Binary files a/public/media/commander/big/t6-c10.png and /dev/null differ diff --git a/public/media/commander/big/t6-c11.png b/public/media/commander/big/t6-c11.png deleted file mode 100644 index 0c373fd7f..000000000 Binary files a/public/media/commander/big/t6-c11.png and /dev/null differ diff --git a/public/media/commander/big/t6-c12.png b/public/media/commander/big/t6-c12.png deleted file mode 100644 index c6de3b886..000000000 Binary files a/public/media/commander/big/t6-c12.png and /dev/null differ diff --git a/public/media/commander/big/t6-c2.png b/public/media/commander/big/t6-c2.png deleted file mode 100755 index 7987b2a01..000000000 Binary files a/public/media/commander/big/t6-c2.png and /dev/null differ diff --git a/public/media/commander/big/t6-c3.png b/public/media/commander/big/t6-c3.png deleted file mode 100755 index 0a5594d6d..000000000 Binary files a/public/media/commander/big/t6-c3.png and /dev/null differ diff --git a/public/media/commander/big/t6-c4.png b/public/media/commander/big/t6-c4.png deleted file mode 100755 index 7f5da1236..000000000 Binary files a/public/media/commander/big/t6-c4.png and /dev/null differ diff --git a/public/media/commander/big/t6-c5.png b/public/media/commander/big/t6-c5.png deleted file mode 100755 index cf768daf2..000000000 Binary files a/public/media/commander/big/t6-c5.png and /dev/null differ diff --git a/public/media/commander/big/t6-c6.png b/public/media/commander/big/t6-c6.png deleted file mode 100755 index a63eb8daf..000000000 Binary files a/public/media/commander/big/t6-c6.png and /dev/null differ diff --git a/public/media/commander/big/t6-c7.png b/public/media/commander/big/t6-c7.png deleted file mode 100755 index 1e474a5db..000000000 Binary files a/public/media/commander/big/t6-c7.png and /dev/null differ diff --git a/public/media/commander/big/t6-c8.png b/public/media/commander/big/t6-c8.png deleted file mode 100644 index 2e7dc5daf..000000000 Binary files a/public/media/commander/big/t6-c8.png and /dev/null differ diff --git a/public/media/commander/big/t6-c9.png b/public/media/commander/big/t6-c9.png deleted file mode 100644 index 7c7925ee4..000000000 Binary files a/public/media/commander/big/t6-c9.png and /dev/null differ diff --git a/public/media/commander/big/t7-c1.png b/public/media/commander/big/t7-c1.png deleted file mode 100755 index ee30dc200..000000000 Binary files a/public/media/commander/big/t7-c1.png and /dev/null differ diff --git a/public/media/commander/big/t7-c10.png b/public/media/commander/big/t7-c10.png deleted file mode 100644 index 5565205c7..000000000 Binary files a/public/media/commander/big/t7-c10.png and /dev/null differ diff --git a/public/media/commander/big/t7-c11.png b/public/media/commander/big/t7-c11.png deleted file mode 100644 index 9b9f3a8a2..000000000 Binary files a/public/media/commander/big/t7-c11.png and /dev/null differ diff --git a/public/media/commander/big/t7-c12.png b/public/media/commander/big/t7-c12.png deleted file mode 100644 index f6f5e91f8..000000000 Binary files a/public/media/commander/big/t7-c12.png and /dev/null differ diff --git a/public/media/commander/big/t7-c2.png b/public/media/commander/big/t7-c2.png deleted file mode 100755 index b7b0a704c..000000000 Binary files a/public/media/commander/big/t7-c2.png and /dev/null differ diff --git a/public/media/commander/big/t7-c3.png b/public/media/commander/big/t7-c3.png deleted file mode 100755 index 30ccf3e3a..000000000 Binary files a/public/media/commander/big/t7-c3.png and /dev/null differ diff --git a/public/media/commander/big/t7-c4.png b/public/media/commander/big/t7-c4.png deleted file mode 100755 index 91724466a..000000000 Binary files a/public/media/commander/big/t7-c4.png and /dev/null differ diff --git a/public/media/commander/big/t7-c5.png b/public/media/commander/big/t7-c5.png deleted file mode 100755 index a981afafb..000000000 Binary files a/public/media/commander/big/t7-c5.png and /dev/null differ diff --git a/public/media/commander/big/t7-c6.png b/public/media/commander/big/t7-c6.png deleted file mode 100755 index 811a5da5f..000000000 Binary files a/public/media/commander/big/t7-c6.png and /dev/null differ diff --git a/public/media/commander/big/t7-c7.png b/public/media/commander/big/t7-c7.png deleted file mode 100755 index 0ca574f72..000000000 Binary files a/public/media/commander/big/t7-c7.png and /dev/null differ diff --git a/public/media/commander/big/t7-c8.png b/public/media/commander/big/t7-c8.png deleted file mode 100644 index af223358f..000000000 Binary files a/public/media/commander/big/t7-c8.png and /dev/null differ diff --git a/public/media/commander/big/t7-c9.png b/public/media/commander/big/t7-c9.png deleted file mode 100644 index b004ae078..000000000 Binary files a/public/media/commander/big/t7-c9.png and /dev/null differ diff --git a/public/media/commander/big/t8-c1.png b/public/media/commander/big/t8-c1.png deleted file mode 100755 index 4614277c5..000000000 Binary files a/public/media/commander/big/t8-c1.png and /dev/null differ diff --git a/public/media/commander/big/t8-c10.png b/public/media/commander/big/t8-c10.png deleted file mode 100644 index 664028da9..000000000 Binary files a/public/media/commander/big/t8-c10.png and /dev/null differ diff --git a/public/media/commander/big/t8-c11.png b/public/media/commander/big/t8-c11.png deleted file mode 100644 index 1c3bb99ce..000000000 Binary files a/public/media/commander/big/t8-c11.png and /dev/null differ diff --git a/public/media/commander/big/t8-c12.png b/public/media/commander/big/t8-c12.png deleted file mode 100644 index afa3954ce..000000000 Binary files a/public/media/commander/big/t8-c12.png and /dev/null differ diff --git a/public/media/commander/big/t8-c2.png b/public/media/commander/big/t8-c2.png deleted file mode 100755 index 745640c77..000000000 Binary files a/public/media/commander/big/t8-c2.png and /dev/null differ diff --git a/public/media/commander/big/t8-c3.png b/public/media/commander/big/t8-c3.png deleted file mode 100755 index b3cefdf33..000000000 Binary files a/public/media/commander/big/t8-c3.png and /dev/null differ diff --git a/public/media/commander/big/t8-c4.png b/public/media/commander/big/t8-c4.png deleted file mode 100755 index 0e6934624..000000000 Binary files a/public/media/commander/big/t8-c4.png and /dev/null differ diff --git a/public/media/commander/big/t8-c5.png b/public/media/commander/big/t8-c5.png deleted file mode 100755 index a5aa32cde..000000000 Binary files a/public/media/commander/big/t8-c5.png and /dev/null differ diff --git a/public/media/commander/big/t8-c6.png b/public/media/commander/big/t8-c6.png deleted file mode 100755 index 4466e40bb..000000000 Binary files a/public/media/commander/big/t8-c6.png and /dev/null differ diff --git a/public/media/commander/big/t8-c7.png b/public/media/commander/big/t8-c7.png deleted file mode 100755 index e87492902..000000000 Binary files a/public/media/commander/big/t8-c7.png and /dev/null differ diff --git a/public/media/commander/big/t8-c8.png b/public/media/commander/big/t8-c8.png deleted file mode 100644 index 242f72a3d..000000000 Binary files a/public/media/commander/big/t8-c8.png and /dev/null differ diff --git a/public/media/commander/big/t8-c9.png b/public/media/commander/big/t8-c9.png deleted file mode 100644 index aa71d14b9..000000000 Binary files a/public/media/commander/big/t8-c9.png and /dev/null differ diff --git a/public/media/commander/big/t9-c1.png b/public/media/commander/big/t9-c1.png deleted file mode 100755 index 06036e58c..000000000 Binary files a/public/media/commander/big/t9-c1.png and /dev/null differ diff --git a/public/media/commander/big/t9-c10.png b/public/media/commander/big/t9-c10.png deleted file mode 100644 index 724bf660e..000000000 Binary files a/public/media/commander/big/t9-c10.png and /dev/null differ diff --git a/public/media/commander/big/t9-c11.png b/public/media/commander/big/t9-c11.png deleted file mode 100644 index 8e200a1ad..000000000 Binary files a/public/media/commander/big/t9-c11.png and /dev/null differ diff --git a/public/media/commander/big/t9-c12.png b/public/media/commander/big/t9-c12.png deleted file mode 100644 index 79f929bfa..000000000 Binary files a/public/media/commander/big/t9-c12.png and /dev/null differ diff --git a/public/media/commander/big/t9-c2.png b/public/media/commander/big/t9-c2.png deleted file mode 100755 index b70e27219..000000000 Binary files a/public/media/commander/big/t9-c2.png and /dev/null differ diff --git a/public/media/commander/big/t9-c3.png b/public/media/commander/big/t9-c3.png deleted file mode 100755 index 30bfc7035..000000000 Binary files a/public/media/commander/big/t9-c3.png and /dev/null differ diff --git a/public/media/commander/big/t9-c4.png b/public/media/commander/big/t9-c4.png deleted file mode 100755 index 6bbe10c8f..000000000 Binary files a/public/media/commander/big/t9-c4.png and /dev/null differ diff --git a/public/media/commander/big/t9-c5.png b/public/media/commander/big/t9-c5.png deleted file mode 100755 index 35e8ff232..000000000 Binary files a/public/media/commander/big/t9-c5.png and /dev/null differ diff --git a/public/media/commander/big/t9-c6.png b/public/media/commander/big/t9-c6.png deleted file mode 100755 index 8aa42e595..000000000 Binary files a/public/media/commander/big/t9-c6.png and /dev/null differ diff --git a/public/media/commander/big/t9-c7.png b/public/media/commander/big/t9-c7.png deleted file mode 100755 index 133a29d71..000000000 Binary files a/public/media/commander/big/t9-c7.png and /dev/null differ diff --git a/public/media/commander/big/t9-c8.png b/public/media/commander/big/t9-c8.png deleted file mode 100644 index 8ff0ad286..000000000 Binary files a/public/media/commander/big/t9-c8.png and /dev/null differ diff --git a/public/media/commander/big/t9-c9.png b/public/media/commander/big/t9-c9.png deleted file mode 100644 index d885c87b6..000000000 Binary files a/public/media/commander/big/t9-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c0.png b/public/media/commander/medium/t1-c0.png deleted file mode 100755 index a5bb6411b..000000000 Binary files a/public/media/commander/medium/t1-c0.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c1.png b/public/media/commander/medium/t1-c1.png deleted file mode 100755 index fef7f6fd9..000000000 Binary files a/public/media/commander/medium/t1-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c10.png b/public/media/commander/medium/t1-c10.png deleted file mode 100644 index 351f3a37a..000000000 Binary files a/public/media/commander/medium/t1-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c11.png b/public/media/commander/medium/t1-c11.png deleted file mode 100644 index 30991cb00..000000000 Binary files a/public/media/commander/medium/t1-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c12.png b/public/media/commander/medium/t1-c12.png deleted file mode 100644 index 374886fa8..000000000 Binary files a/public/media/commander/medium/t1-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c2.png b/public/media/commander/medium/t1-c2.png deleted file mode 100755 index 27c7d59ab..000000000 Binary files a/public/media/commander/medium/t1-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c3.png b/public/media/commander/medium/t1-c3.png deleted file mode 100755 index cd29cb592..000000000 Binary files a/public/media/commander/medium/t1-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c4.png b/public/media/commander/medium/t1-c4.png deleted file mode 100755 index fec54860d..000000000 Binary files a/public/media/commander/medium/t1-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c5.png b/public/media/commander/medium/t1-c5.png deleted file mode 100755 index 6d0c651ce..000000000 Binary files a/public/media/commander/medium/t1-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c6.png b/public/media/commander/medium/t1-c6.png deleted file mode 100755 index 62108f7cb..000000000 Binary files a/public/media/commander/medium/t1-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c7.png b/public/media/commander/medium/t1-c7.png deleted file mode 100755 index 25a487443..000000000 Binary files a/public/media/commander/medium/t1-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c8.png b/public/media/commander/medium/t1-c8.png deleted file mode 100644 index 475f98438..000000000 Binary files a/public/media/commander/medium/t1-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t1-c9.png b/public/media/commander/medium/t1-c9.png deleted file mode 100644 index 9b775e62b..000000000 Binary files a/public/media/commander/medium/t1-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c1.png b/public/media/commander/medium/t10-c1.png deleted file mode 100755 index c1040d668..000000000 Binary files a/public/media/commander/medium/t10-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c10.png b/public/media/commander/medium/t10-c10.png deleted file mode 100644 index 24fc6d14a..000000000 Binary files a/public/media/commander/medium/t10-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c11.png b/public/media/commander/medium/t10-c11.png deleted file mode 100644 index 93ab99cfa..000000000 Binary files a/public/media/commander/medium/t10-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c12.png b/public/media/commander/medium/t10-c12.png deleted file mode 100644 index 5756eb1f6..000000000 Binary files a/public/media/commander/medium/t10-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c2.png b/public/media/commander/medium/t10-c2.png deleted file mode 100755 index d3441932c..000000000 Binary files a/public/media/commander/medium/t10-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c3.png b/public/media/commander/medium/t10-c3.png deleted file mode 100755 index 374886fa8..000000000 Binary files a/public/media/commander/medium/t10-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c4.png b/public/media/commander/medium/t10-c4.png deleted file mode 100755 index 3687056e7..000000000 Binary files a/public/media/commander/medium/t10-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c5.png b/public/media/commander/medium/t10-c5.png deleted file mode 100755 index 9b775e62b..000000000 Binary files a/public/media/commander/medium/t10-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c6.png b/public/media/commander/medium/t10-c6.png deleted file mode 100755 index 50cb120e7..000000000 Binary files a/public/media/commander/medium/t10-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c7.png b/public/media/commander/medium/t10-c7.png deleted file mode 100755 index ad5362b78..000000000 Binary files a/public/media/commander/medium/t10-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c8.png b/public/media/commander/medium/t10-c8.png deleted file mode 100644 index a1851e8f6..000000000 Binary files a/public/media/commander/medium/t10-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t10-c9.png b/public/media/commander/medium/t10-c9.png deleted file mode 100644 index 7986216ab..000000000 Binary files a/public/media/commander/medium/t10-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c1.png b/public/media/commander/medium/t11-c1.png deleted file mode 100755 index 39ff3774b..000000000 Binary files a/public/media/commander/medium/t11-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c10.png b/public/media/commander/medium/t11-c10.png deleted file mode 100644 index 7d3a5ed84..000000000 Binary files a/public/media/commander/medium/t11-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c11.png b/public/media/commander/medium/t11-c11.png deleted file mode 100644 index 60976ff34..000000000 Binary files a/public/media/commander/medium/t11-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c12.png b/public/media/commander/medium/t11-c12.png deleted file mode 100644 index cd29cb592..000000000 Binary files a/public/media/commander/medium/t11-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c2.png b/public/media/commander/medium/t11-c2.png deleted file mode 100755 index bd434b31e..000000000 Binary files a/public/media/commander/medium/t11-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c3.png b/public/media/commander/medium/t11-c3.png deleted file mode 100755 index 3b71ad858..000000000 Binary files a/public/media/commander/medium/t11-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c4.png b/public/media/commander/medium/t11-c4.png deleted file mode 100755 index 63e4ddabd..000000000 Binary files a/public/media/commander/medium/t11-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c5.png b/public/media/commander/medium/t11-c5.png deleted file mode 100755 index 0729be8e5..000000000 Binary files a/public/media/commander/medium/t11-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c6.png b/public/media/commander/medium/t11-c6.png deleted file mode 100755 index 5c572abb7..000000000 Binary files a/public/media/commander/medium/t11-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c7.png b/public/media/commander/medium/t11-c7.png deleted file mode 100755 index c5b6cd32d..000000000 Binary files a/public/media/commander/medium/t11-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c8.png b/public/media/commander/medium/t11-c8.png deleted file mode 100644 index bf31b5a55..000000000 Binary files a/public/media/commander/medium/t11-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t11-c9.png b/public/media/commander/medium/t11-c9.png deleted file mode 100644 index 6d0c651ce..000000000 Binary files a/public/media/commander/medium/t11-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c1.png b/public/media/commander/medium/t12-c1.png deleted file mode 100755 index 54b9b802f..000000000 Binary files a/public/media/commander/medium/t12-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c10.png b/public/media/commander/medium/t12-c10.png deleted file mode 100644 index 0f6e7388b..000000000 Binary files a/public/media/commander/medium/t12-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c11.png b/public/media/commander/medium/t12-c11.png deleted file mode 100644 index 33e6c923d..000000000 Binary files a/public/media/commander/medium/t12-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c12.png b/public/media/commander/medium/t12-c12.png deleted file mode 100644 index e6871151e..000000000 Binary files a/public/media/commander/medium/t12-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c2.png b/public/media/commander/medium/t12-c2.png deleted file mode 100755 index 121127803..000000000 Binary files a/public/media/commander/medium/t12-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c3.png b/public/media/commander/medium/t12-c3.png deleted file mode 100755 index 5dbc7338c..000000000 Binary files a/public/media/commander/medium/t12-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c4.png b/public/media/commander/medium/t12-c4.png deleted file mode 100755 index 0e9cf333d..000000000 Binary files a/public/media/commander/medium/t12-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c5.png b/public/media/commander/medium/t12-c5.png deleted file mode 100755 index a1037c50a..000000000 Binary files a/public/media/commander/medium/t12-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c6.png b/public/media/commander/medium/t12-c6.png deleted file mode 100755 index 9284a48c2..000000000 Binary files a/public/media/commander/medium/t12-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c7.png b/public/media/commander/medium/t12-c7.png deleted file mode 100755 index d9807a761..000000000 Binary files a/public/media/commander/medium/t12-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c8.png b/public/media/commander/medium/t12-c8.png deleted file mode 100644 index b793c1c91..000000000 Binary files a/public/media/commander/medium/t12-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t12-c9.png b/public/media/commander/medium/t12-c9.png deleted file mode 100644 index 9a3da02bd..000000000 Binary files a/public/media/commander/medium/t12-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c1.png b/public/media/commander/medium/t13-c1.png deleted file mode 100755 index 0c1cddbaa..000000000 Binary files a/public/media/commander/medium/t13-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c10.png b/public/media/commander/medium/t13-c10.png deleted file mode 100644 index e62a325ab..000000000 Binary files a/public/media/commander/medium/t13-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c11.png b/public/media/commander/medium/t13-c11.png deleted file mode 100644 index bd3a1c851..000000000 Binary files a/public/media/commander/medium/t13-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c12.png b/public/media/commander/medium/t13-c12.png deleted file mode 100644 index ae5eb99de..000000000 Binary files a/public/media/commander/medium/t13-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c2.png b/public/media/commander/medium/t13-c2.png deleted file mode 100755 index 1905240ba..000000000 Binary files a/public/media/commander/medium/t13-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c3.png b/public/media/commander/medium/t13-c3.png deleted file mode 100755 index b9ca65ce9..000000000 Binary files a/public/media/commander/medium/t13-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c4.png b/public/media/commander/medium/t13-c4.png deleted file mode 100755 index 005f74d04..000000000 Binary files a/public/media/commander/medium/t13-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c5.png b/public/media/commander/medium/t13-c5.png deleted file mode 100755 index d1ec157f6..000000000 Binary files a/public/media/commander/medium/t13-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c6.png b/public/media/commander/medium/t13-c6.png deleted file mode 100755 index d77ba03a0..000000000 Binary files a/public/media/commander/medium/t13-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c7.png b/public/media/commander/medium/t13-c7.png deleted file mode 100755 index 43a508c7d..000000000 Binary files a/public/media/commander/medium/t13-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c8.png b/public/media/commander/medium/t13-c8.png deleted file mode 100644 index 0aadb2e5e..000000000 Binary files a/public/media/commander/medium/t13-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t13-c9.png b/public/media/commander/medium/t13-c9.png deleted file mode 100644 index 700b47f27..000000000 Binary files a/public/media/commander/medium/t13-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c1.png b/public/media/commander/medium/t14-c1.png deleted file mode 100755 index b3a48ba14..000000000 Binary files a/public/media/commander/medium/t14-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c10.png b/public/media/commander/medium/t14-c10.png deleted file mode 100644 index ee33a8dcc..000000000 Binary files a/public/media/commander/medium/t14-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c11.png b/public/media/commander/medium/t14-c11.png deleted file mode 100644 index 56892d7a9..000000000 Binary files a/public/media/commander/medium/t14-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c12.png b/public/media/commander/medium/t14-c12.png deleted file mode 100644 index 6d1b6a8d7..000000000 Binary files a/public/media/commander/medium/t14-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c2.png b/public/media/commander/medium/t14-c2.png deleted file mode 100755 index 2ebf6a90e..000000000 Binary files a/public/media/commander/medium/t14-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c3.png b/public/media/commander/medium/t14-c3.png deleted file mode 100755 index c25b28853..000000000 Binary files a/public/media/commander/medium/t14-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c4.png b/public/media/commander/medium/t14-c4.png deleted file mode 100755 index c2b31ab28..000000000 Binary files a/public/media/commander/medium/t14-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c5.png b/public/media/commander/medium/t14-c5.png deleted file mode 100755 index ab87bb88d..000000000 Binary files a/public/media/commander/medium/t14-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c6.png b/public/media/commander/medium/t14-c6.png deleted file mode 100755 index f2dadf443..000000000 Binary files a/public/media/commander/medium/t14-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c7.png b/public/media/commander/medium/t14-c7.png deleted file mode 100755 index fbce7c36f..000000000 Binary files a/public/media/commander/medium/t14-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c8.png b/public/media/commander/medium/t14-c8.png deleted file mode 100644 index 75ac1df30..000000000 Binary files a/public/media/commander/medium/t14-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t14-c9.png b/public/media/commander/medium/t14-c9.png deleted file mode 100644 index 2d0c34168..000000000 Binary files a/public/media/commander/medium/t14-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c1.png b/public/media/commander/medium/t15-c1.png deleted file mode 100755 index 861eb1c89..000000000 Binary files a/public/media/commander/medium/t15-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c10.png b/public/media/commander/medium/t15-c10.png deleted file mode 100644 index b5f9900b1..000000000 Binary files a/public/media/commander/medium/t15-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c11.png b/public/media/commander/medium/t15-c11.png deleted file mode 100644 index ef1753d70..000000000 Binary files a/public/media/commander/medium/t15-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c12.png b/public/media/commander/medium/t15-c12.png deleted file mode 100644 index d10330432..000000000 Binary files a/public/media/commander/medium/t15-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c2.png b/public/media/commander/medium/t15-c2.png deleted file mode 100755 index 07c41f6c9..000000000 Binary files a/public/media/commander/medium/t15-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c3.png b/public/media/commander/medium/t15-c3.png deleted file mode 100755 index 6ece35b49..000000000 Binary files a/public/media/commander/medium/t15-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c4.png b/public/media/commander/medium/t15-c4.png deleted file mode 100755 index 12ebaa6de..000000000 Binary files a/public/media/commander/medium/t15-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c5.png b/public/media/commander/medium/t15-c5.png deleted file mode 100755 index 4df681041..000000000 Binary files a/public/media/commander/medium/t15-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c6.png b/public/media/commander/medium/t15-c6.png deleted file mode 100755 index 194b01aac..000000000 Binary files a/public/media/commander/medium/t15-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c7.png b/public/media/commander/medium/t15-c7.png deleted file mode 100755 index 9b8b9bcde..000000000 Binary files a/public/media/commander/medium/t15-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c8.png b/public/media/commander/medium/t15-c8.png deleted file mode 100644 index 9cd038c49..000000000 Binary files a/public/media/commander/medium/t15-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t15-c9.png b/public/media/commander/medium/t15-c9.png deleted file mode 100644 index 8fb26838f..000000000 Binary files a/public/media/commander/medium/t15-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c1.png b/public/media/commander/medium/t16-c1.png deleted file mode 100755 index cc70342ad..000000000 Binary files a/public/media/commander/medium/t16-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c10.png b/public/media/commander/medium/t16-c10.png deleted file mode 100644 index ced093591..000000000 Binary files a/public/media/commander/medium/t16-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c11.png b/public/media/commander/medium/t16-c11.png deleted file mode 100644 index 3325a6a75..000000000 Binary files a/public/media/commander/medium/t16-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c12.png b/public/media/commander/medium/t16-c12.png deleted file mode 100644 index 3d3dd61a1..000000000 Binary files a/public/media/commander/medium/t16-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c2.png b/public/media/commander/medium/t16-c2.png deleted file mode 100755 index 217b93c05..000000000 Binary files a/public/media/commander/medium/t16-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c3.png b/public/media/commander/medium/t16-c3.png deleted file mode 100755 index d1b93abd2..000000000 Binary files a/public/media/commander/medium/t16-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c4.png b/public/media/commander/medium/t16-c4.png deleted file mode 100755 index 2af302c5d..000000000 Binary files a/public/media/commander/medium/t16-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c5.png b/public/media/commander/medium/t16-c5.png deleted file mode 100755 index 008c3ce49..000000000 Binary files a/public/media/commander/medium/t16-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c6.png b/public/media/commander/medium/t16-c6.png deleted file mode 100755 index 0fe059b2a..000000000 Binary files a/public/media/commander/medium/t16-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c7.png b/public/media/commander/medium/t16-c7.png deleted file mode 100755 index af43b20ac..000000000 Binary files a/public/media/commander/medium/t16-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c8.png b/public/media/commander/medium/t16-c8.png deleted file mode 100644 index d46f100f5..000000000 Binary files a/public/media/commander/medium/t16-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t16-c9.png b/public/media/commander/medium/t16-c9.png deleted file mode 100644 index a2e111883..000000000 Binary files a/public/media/commander/medium/t16-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c1.png b/public/media/commander/medium/t17-c1.png deleted file mode 100755 index 76fb79e7a..000000000 Binary files a/public/media/commander/medium/t17-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c10.png b/public/media/commander/medium/t17-c10.png deleted file mode 100644 index 668703ffb..000000000 Binary files a/public/media/commander/medium/t17-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c11.png b/public/media/commander/medium/t17-c11.png deleted file mode 100644 index efa99ea0e..000000000 Binary files a/public/media/commander/medium/t17-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c12.png b/public/media/commander/medium/t17-c12.png deleted file mode 100644 index 3bb4cd094..000000000 Binary files a/public/media/commander/medium/t17-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c2.png b/public/media/commander/medium/t17-c2.png deleted file mode 100755 index c0dd94f6d..000000000 Binary files a/public/media/commander/medium/t17-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c3.png b/public/media/commander/medium/t17-c3.png deleted file mode 100755 index e3d68fce9..000000000 Binary files a/public/media/commander/medium/t17-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c4.png b/public/media/commander/medium/t17-c4.png deleted file mode 100755 index 14f794c1c..000000000 Binary files a/public/media/commander/medium/t17-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c5.png b/public/media/commander/medium/t17-c5.png deleted file mode 100755 index e77447917..000000000 Binary files a/public/media/commander/medium/t17-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c6.png b/public/media/commander/medium/t17-c6.png deleted file mode 100755 index 29543005c..000000000 Binary files a/public/media/commander/medium/t17-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c7.png b/public/media/commander/medium/t17-c7.png deleted file mode 100755 index a9f1d4ee4..000000000 Binary files a/public/media/commander/medium/t17-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c8.png b/public/media/commander/medium/t17-c8.png deleted file mode 100644 index bbe0ab824..000000000 Binary files a/public/media/commander/medium/t17-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t17-c9.png b/public/media/commander/medium/t17-c9.png deleted file mode 100644 index 21042e270..000000000 Binary files a/public/media/commander/medium/t17-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c1.png b/public/media/commander/medium/t18-c1.png deleted file mode 100755 index 0b4a2e196..000000000 Binary files a/public/media/commander/medium/t18-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c10.png b/public/media/commander/medium/t18-c10.png deleted file mode 100644 index 359d4c098..000000000 Binary files a/public/media/commander/medium/t18-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c11.png b/public/media/commander/medium/t18-c11.png deleted file mode 100644 index f1dfa97e6..000000000 Binary files a/public/media/commander/medium/t18-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c12.png b/public/media/commander/medium/t18-c12.png deleted file mode 100644 index 5137a57d7..000000000 Binary files a/public/media/commander/medium/t18-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c2.png b/public/media/commander/medium/t18-c2.png deleted file mode 100755 index 7a96168f9..000000000 Binary files a/public/media/commander/medium/t18-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c3.png b/public/media/commander/medium/t18-c3.png deleted file mode 100755 index cc5a21ae5..000000000 Binary files a/public/media/commander/medium/t18-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c4.png b/public/media/commander/medium/t18-c4.png deleted file mode 100755 index 3bb61bff5..000000000 Binary files a/public/media/commander/medium/t18-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c5.png b/public/media/commander/medium/t18-c5.png deleted file mode 100755 index 8c69246bd..000000000 Binary files a/public/media/commander/medium/t18-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c6.png b/public/media/commander/medium/t18-c6.png deleted file mode 100755 index 19d5ff148..000000000 Binary files a/public/media/commander/medium/t18-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c7.png b/public/media/commander/medium/t18-c7.png deleted file mode 100755 index aefb959fd..000000000 Binary files a/public/media/commander/medium/t18-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c8.png b/public/media/commander/medium/t18-c8.png deleted file mode 100644 index 5d7c809fe..000000000 Binary files a/public/media/commander/medium/t18-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t18-c9.png b/public/media/commander/medium/t18-c9.png deleted file mode 100644 index 1a7466256..000000000 Binary files a/public/media/commander/medium/t18-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c1.png b/public/media/commander/medium/t19-c1.png deleted file mode 100755 index 8bfe5c15c..000000000 Binary files a/public/media/commander/medium/t19-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c10.png b/public/media/commander/medium/t19-c10.png deleted file mode 100644 index 6619b933d..000000000 Binary files a/public/media/commander/medium/t19-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c11.png b/public/media/commander/medium/t19-c11.png deleted file mode 100644 index 12d3f15d4..000000000 Binary files a/public/media/commander/medium/t19-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c12.png b/public/media/commander/medium/t19-c12.png deleted file mode 100644 index 0be208aeb..000000000 Binary files a/public/media/commander/medium/t19-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c2.png b/public/media/commander/medium/t19-c2.png deleted file mode 100755 index d516c30a4..000000000 Binary files a/public/media/commander/medium/t19-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c3.png b/public/media/commander/medium/t19-c3.png deleted file mode 100755 index 5756eb1f6..000000000 Binary files a/public/media/commander/medium/t19-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c4.png b/public/media/commander/medium/t19-c4.png deleted file mode 100755 index b7853cd28..000000000 Binary files a/public/media/commander/medium/t19-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c5.png b/public/media/commander/medium/t19-c5.png deleted file mode 100755 index 7986216ab..000000000 Binary files a/public/media/commander/medium/t19-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c6.png b/public/media/commander/medium/t19-c6.png deleted file mode 100755 index c2a538155..000000000 Binary files a/public/media/commander/medium/t19-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c7.png b/public/media/commander/medium/t19-c7.png deleted file mode 100755 index 1b990f73e..000000000 Binary files a/public/media/commander/medium/t19-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c8.png b/public/media/commander/medium/t19-c8.png deleted file mode 100644 index e241ba958..000000000 Binary files a/public/media/commander/medium/t19-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t19-c9.png b/public/media/commander/medium/t19-c9.png deleted file mode 100644 index 11361dfac..000000000 Binary files a/public/media/commander/medium/t19-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c1.png b/public/media/commander/medium/t2-c1.png deleted file mode 100755 index 412d7575a..000000000 Binary files a/public/media/commander/medium/t2-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c10.png b/public/media/commander/medium/t2-c10.png deleted file mode 100644 index 6d96635f7..000000000 Binary files a/public/media/commander/medium/t2-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c11.png b/public/media/commander/medium/t2-c11.png deleted file mode 100644 index afab1b507..000000000 Binary files a/public/media/commander/medium/t2-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c12.png b/public/media/commander/medium/t2-c12.png deleted file mode 100644 index 3b71ad858..000000000 Binary files a/public/media/commander/medium/t2-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c2.png b/public/media/commander/medium/t2-c2.png deleted file mode 100755 index cf32c8fe8..000000000 Binary files a/public/media/commander/medium/t2-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c3.png b/public/media/commander/medium/t2-c3.png deleted file mode 100755 index 6d1b6a8d7..000000000 Binary files a/public/media/commander/medium/t2-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c4.png b/public/media/commander/medium/t2-c4.png deleted file mode 100755 index 9cdc25792..000000000 Binary files a/public/media/commander/medium/t2-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c5.png b/public/media/commander/medium/t2-c5.png deleted file mode 100755 index 2d0c34168..000000000 Binary files a/public/media/commander/medium/t2-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c6.png b/public/media/commander/medium/t2-c6.png deleted file mode 100755 index c0677b441..000000000 Binary files a/public/media/commander/medium/t2-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c7.png b/public/media/commander/medium/t2-c7.png deleted file mode 100755 index c5612ec14..000000000 Binary files a/public/media/commander/medium/t2-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c8.png b/public/media/commander/medium/t2-c8.png deleted file mode 100644 index d12042cc0..000000000 Binary files a/public/media/commander/medium/t2-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t2-c9.png b/public/media/commander/medium/t2-c9.png deleted file mode 100644 index 0729be8e5..000000000 Binary files a/public/media/commander/medium/t2-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c1.png b/public/media/commander/medium/t20-c1.png deleted file mode 100755 index 4deddd6ec..000000000 Binary files a/public/media/commander/medium/t20-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c10.png b/public/media/commander/medium/t20-c10.png deleted file mode 100644 index d35864d12..000000000 Binary files a/public/media/commander/medium/t20-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c11.png b/public/media/commander/medium/t20-c11.png deleted file mode 100644 index 171ea1c28..000000000 Binary files a/public/media/commander/medium/t20-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c12.png b/public/media/commander/medium/t20-c12.png deleted file mode 100644 index 7fbe41625..000000000 Binary files a/public/media/commander/medium/t20-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c2.png b/public/media/commander/medium/t20-c2.png deleted file mode 100755 index 2cddc0468..000000000 Binary files a/public/media/commander/medium/t20-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c3.png b/public/media/commander/medium/t20-c3.png deleted file mode 100755 index e6871151e..000000000 Binary files a/public/media/commander/medium/t20-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c4.png b/public/media/commander/medium/t20-c4.png deleted file mode 100755 index fec8ff8b4..000000000 Binary files a/public/media/commander/medium/t20-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c5.png b/public/media/commander/medium/t20-c5.png deleted file mode 100755 index 9a3da02bd..000000000 Binary files a/public/media/commander/medium/t20-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c6.png b/public/media/commander/medium/t20-c6.png deleted file mode 100755 index b2b85a8ba..000000000 Binary files a/public/media/commander/medium/t20-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c7.png b/public/media/commander/medium/t20-c7.png deleted file mode 100755 index 4231cea73..000000000 Binary files a/public/media/commander/medium/t20-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c8.png b/public/media/commander/medium/t20-c8.png deleted file mode 100644 index a797fc995..000000000 Binary files a/public/media/commander/medium/t20-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t20-c9.png b/public/media/commander/medium/t20-c9.png deleted file mode 100644 index ad3871b89..000000000 Binary files a/public/media/commander/medium/t20-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c1.png b/public/media/commander/medium/t21-c1.png deleted file mode 100755 index 4075749fd..000000000 Binary files a/public/media/commander/medium/t21-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c10.png b/public/media/commander/medium/t21-c10.png deleted file mode 100644 index 3903ba5e7..000000000 Binary files a/public/media/commander/medium/t21-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c11.png b/public/media/commander/medium/t21-c11.png deleted file mode 100644 index 40a1986a4..000000000 Binary files a/public/media/commander/medium/t21-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c12.png b/public/media/commander/medium/t21-c12.png deleted file mode 100644 index e45d3d375..000000000 Binary files a/public/media/commander/medium/t21-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c2.png b/public/media/commander/medium/t21-c2.png deleted file mode 100755 index 8d89e9445..000000000 Binary files a/public/media/commander/medium/t21-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c3.png b/public/media/commander/medium/t21-c3.png deleted file mode 100755 index ae5eb99de..000000000 Binary files a/public/media/commander/medium/t21-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c4.png b/public/media/commander/medium/t21-c4.png deleted file mode 100755 index 85e298a68..000000000 Binary files a/public/media/commander/medium/t21-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c5.png b/public/media/commander/medium/t21-c5.png deleted file mode 100755 index 700b47f27..000000000 Binary files a/public/media/commander/medium/t21-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c6.png b/public/media/commander/medium/t21-c6.png deleted file mode 100755 index beaf472ed..000000000 Binary files a/public/media/commander/medium/t21-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c7.png b/public/media/commander/medium/t21-c7.png deleted file mode 100755 index 192b4fe2e..000000000 Binary files a/public/media/commander/medium/t21-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c8.png b/public/media/commander/medium/t21-c8.png deleted file mode 100644 index d40fbc0c0..000000000 Binary files a/public/media/commander/medium/t21-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t21-c9.png b/public/media/commander/medium/t21-c9.png deleted file mode 100644 index a9530c025..000000000 Binary files a/public/media/commander/medium/t21-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c1.png b/public/media/commander/medium/t3-c1.png deleted file mode 100755 index beb4acac0..000000000 Binary files a/public/media/commander/medium/t3-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c10.png b/public/media/commander/medium/t3-c10.png deleted file mode 100644 index 359a66b8d..000000000 Binary files a/public/media/commander/medium/t3-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c11.png b/public/media/commander/medium/t3-c11.png deleted file mode 100644 index 13757b588..000000000 Binary files a/public/media/commander/medium/t3-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c12.png b/public/media/commander/medium/t3-c12.png deleted file mode 100644 index 5dbc7338c..000000000 Binary files a/public/media/commander/medium/t3-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c2.png b/public/media/commander/medium/t3-c2.png deleted file mode 100755 index 61fc9ed43..000000000 Binary files a/public/media/commander/medium/t3-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c3.png b/public/media/commander/medium/t3-c3.png deleted file mode 100755 index d10330432..000000000 Binary files a/public/media/commander/medium/t3-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c4.png b/public/media/commander/medium/t3-c4.png deleted file mode 100755 index 1719ee174..000000000 Binary files a/public/media/commander/medium/t3-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c5.png b/public/media/commander/medium/t3-c5.png deleted file mode 100755 index 8fb26838f..000000000 Binary files a/public/media/commander/medium/t3-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c6.png b/public/media/commander/medium/t3-c6.png deleted file mode 100755 index 3aa9b7559..000000000 Binary files a/public/media/commander/medium/t3-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c7.png b/public/media/commander/medium/t3-c7.png deleted file mode 100755 index ddd57a3e5..000000000 Binary files a/public/media/commander/medium/t3-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c8.png b/public/media/commander/medium/t3-c8.png deleted file mode 100644 index 242ea934f..000000000 Binary files a/public/media/commander/medium/t3-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t3-c9.png b/public/media/commander/medium/t3-c9.png deleted file mode 100644 index a1037c50a..000000000 Binary files a/public/media/commander/medium/t3-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c1.png b/public/media/commander/medium/t4-c1.png deleted file mode 100755 index 5f1b94c45..000000000 Binary files a/public/media/commander/medium/t4-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c10.png b/public/media/commander/medium/t4-c10.png deleted file mode 100644 index d7e0a8d85..000000000 Binary files a/public/media/commander/medium/t4-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c11.png b/public/media/commander/medium/t4-c11.png deleted file mode 100644 index cd701a60c..000000000 Binary files a/public/media/commander/medium/t4-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c12.png b/public/media/commander/medium/t4-c12.png deleted file mode 100644 index b9ca65ce9..000000000 Binary files a/public/media/commander/medium/t4-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c2.png b/public/media/commander/medium/t4-c2.png deleted file mode 100755 index ff298860d..000000000 Binary files a/public/media/commander/medium/t4-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c3.png b/public/media/commander/medium/t4-c3.png deleted file mode 100755 index 3d3dd61a1..000000000 Binary files a/public/media/commander/medium/t4-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c4.png b/public/media/commander/medium/t4-c4.png deleted file mode 100755 index 2dd07009d..000000000 Binary files a/public/media/commander/medium/t4-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c5.png b/public/media/commander/medium/t4-c5.png deleted file mode 100755 index a2e111883..000000000 Binary files a/public/media/commander/medium/t4-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c6.png b/public/media/commander/medium/t4-c6.png deleted file mode 100755 index f7df8b892..000000000 Binary files a/public/media/commander/medium/t4-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c7.png b/public/media/commander/medium/t4-c7.png deleted file mode 100755 index 4c8a21860..000000000 Binary files a/public/media/commander/medium/t4-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c8.png b/public/media/commander/medium/t4-c8.png deleted file mode 100644 index 45cc602a4..000000000 Binary files a/public/media/commander/medium/t4-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t4-c9.png b/public/media/commander/medium/t4-c9.png deleted file mode 100644 index d1ec157f6..000000000 Binary files a/public/media/commander/medium/t4-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c1.png b/public/media/commander/medium/t5-c1.png deleted file mode 100755 index 329d99410..000000000 Binary files a/public/media/commander/medium/t5-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c10.png b/public/media/commander/medium/t5-c10.png deleted file mode 100644 index 3f0221b1c..000000000 Binary files a/public/media/commander/medium/t5-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c11.png b/public/media/commander/medium/t5-c11.png deleted file mode 100644 index 79b2f30d1..000000000 Binary files a/public/media/commander/medium/t5-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c12.png b/public/media/commander/medium/t5-c12.png deleted file mode 100644 index c25b28853..000000000 Binary files a/public/media/commander/medium/t5-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c2.png b/public/media/commander/medium/t5-c2.png deleted file mode 100755 index 488476fc9..000000000 Binary files a/public/media/commander/medium/t5-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c3.png b/public/media/commander/medium/t5-c3.png deleted file mode 100755 index 12544ea02..000000000 Binary files a/public/media/commander/medium/t5-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c4.png b/public/media/commander/medium/t5-c4.png deleted file mode 100755 index c60c0bff3..000000000 Binary files a/public/media/commander/medium/t5-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c5.png b/public/media/commander/medium/t5-c5.png deleted file mode 100755 index 21042e270..000000000 Binary files a/public/media/commander/medium/t5-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c6.png b/public/media/commander/medium/t5-c6.png deleted file mode 100755 index 551b5f827..000000000 Binary files a/public/media/commander/medium/t5-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c7.png b/public/media/commander/medium/t5-c7.png deleted file mode 100755 index c86a563e0..000000000 Binary files a/public/media/commander/medium/t5-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c8.png b/public/media/commander/medium/t5-c8.png deleted file mode 100644 index 51e90642f..000000000 Binary files a/public/media/commander/medium/t5-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t5-c9.png b/public/media/commander/medium/t5-c9.png deleted file mode 100644 index ab87bb88d..000000000 Binary files a/public/media/commander/medium/t5-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c1.png b/public/media/commander/medium/t6-c1.png deleted file mode 100755 index 8f5e7df8f..000000000 Binary files a/public/media/commander/medium/t6-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c10.png b/public/media/commander/medium/t6-c10.png deleted file mode 100644 index ea41ce60b..000000000 Binary files a/public/media/commander/medium/t6-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c11.png b/public/media/commander/medium/t6-c11.png deleted file mode 100644 index a82b973b0..000000000 Binary files a/public/media/commander/medium/t6-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c12.png b/public/media/commander/medium/t6-c12.png deleted file mode 100644 index 6ece35b49..000000000 Binary files a/public/media/commander/medium/t6-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c2.png b/public/media/commander/medium/t6-c2.png deleted file mode 100755 index 169f1a86f..000000000 Binary files a/public/media/commander/medium/t6-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c3.png b/public/media/commander/medium/t6-c3.png deleted file mode 100755 index 5137a57d7..000000000 Binary files a/public/media/commander/medium/t6-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c4.png b/public/media/commander/medium/t6-c4.png deleted file mode 100755 index 555d6b6ee..000000000 Binary files a/public/media/commander/medium/t6-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c5.png b/public/media/commander/medium/t6-c5.png deleted file mode 100755 index 1a7466256..000000000 Binary files a/public/media/commander/medium/t6-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c6.png b/public/media/commander/medium/t6-c6.png deleted file mode 100755 index a2e74a7f4..000000000 Binary files a/public/media/commander/medium/t6-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c7.png b/public/media/commander/medium/t6-c7.png deleted file mode 100755 index 8731c3ceb..000000000 Binary files a/public/media/commander/medium/t6-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c8.png b/public/media/commander/medium/t6-c8.png deleted file mode 100644 index f90c7fe0e..000000000 Binary files a/public/media/commander/medium/t6-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t6-c9.png b/public/media/commander/medium/t6-c9.png deleted file mode 100644 index 4df681041..000000000 Binary files a/public/media/commander/medium/t6-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c1.png b/public/media/commander/medium/t7-c1.png deleted file mode 100755 index d09d0f7df..000000000 Binary files a/public/media/commander/medium/t7-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c10.png b/public/media/commander/medium/t7-c10.png deleted file mode 100644 index c26de4eb3..000000000 Binary files a/public/media/commander/medium/t7-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c11.png b/public/media/commander/medium/t7-c11.png deleted file mode 100644 index 2cfc6e087..000000000 Binary files a/public/media/commander/medium/t7-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c12.png b/public/media/commander/medium/t7-c12.png deleted file mode 100644 index d1b93abd2..000000000 Binary files a/public/media/commander/medium/t7-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c2.png b/public/media/commander/medium/t7-c2.png deleted file mode 100755 index 49f603d1b..000000000 Binary files a/public/media/commander/medium/t7-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c3.png b/public/media/commander/medium/t7-c3.png deleted file mode 100755 index 0be208aeb..000000000 Binary files a/public/media/commander/medium/t7-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c4.png b/public/media/commander/medium/t7-c4.png deleted file mode 100755 index d036fecfb..000000000 Binary files a/public/media/commander/medium/t7-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c5.png b/public/media/commander/medium/t7-c5.png deleted file mode 100755 index 11361dfac..000000000 Binary files a/public/media/commander/medium/t7-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c6.png b/public/media/commander/medium/t7-c6.png deleted file mode 100755 index d19b862d6..000000000 Binary files a/public/media/commander/medium/t7-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c7.png b/public/media/commander/medium/t7-c7.png deleted file mode 100755 index 6614f5705..000000000 Binary files a/public/media/commander/medium/t7-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c8.png b/public/media/commander/medium/t7-c8.png deleted file mode 100644 index a4b72062c..000000000 Binary files a/public/media/commander/medium/t7-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t7-c9.png b/public/media/commander/medium/t7-c9.png deleted file mode 100644 index 008c3ce49..000000000 Binary files a/public/media/commander/medium/t7-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c1.png b/public/media/commander/medium/t8-c1.png deleted file mode 100755 index c8fda458b..000000000 Binary files a/public/media/commander/medium/t8-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c10.png b/public/media/commander/medium/t8-c10.png deleted file mode 100644 index ff9e52226..000000000 Binary files a/public/media/commander/medium/t8-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c11.png b/public/media/commander/medium/t8-c11.png deleted file mode 100644 index fb1df4592..000000000 Binary files a/public/media/commander/medium/t8-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c12.png b/public/media/commander/medium/t8-c12.png deleted file mode 100644 index e3d68fce9..000000000 Binary files a/public/media/commander/medium/t8-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c2.png b/public/media/commander/medium/t8-c2.png deleted file mode 100755 index 739b7659e..000000000 Binary files a/public/media/commander/medium/t8-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c3.png b/public/media/commander/medium/t8-c3.png deleted file mode 100755 index 7fbe41625..000000000 Binary files a/public/media/commander/medium/t8-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c4.png b/public/media/commander/medium/t8-c4.png deleted file mode 100755 index 2b288038d..000000000 Binary files a/public/media/commander/medium/t8-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c5.png b/public/media/commander/medium/t8-c5.png deleted file mode 100755 index ad3871b89..000000000 Binary files a/public/media/commander/medium/t8-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c6.png b/public/media/commander/medium/t8-c6.png deleted file mode 100755 index 5967b29bb..000000000 Binary files a/public/media/commander/medium/t8-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c7.png b/public/media/commander/medium/t8-c7.png deleted file mode 100755 index 298111b4f..000000000 Binary files a/public/media/commander/medium/t8-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c8.png b/public/media/commander/medium/t8-c8.png deleted file mode 100644 index 1b0cb4098..000000000 Binary files a/public/media/commander/medium/t8-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t8-c9.png b/public/media/commander/medium/t8-c9.png deleted file mode 100644 index e77447917..000000000 Binary files a/public/media/commander/medium/t8-c9.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c1.png b/public/media/commander/medium/t9-c1.png deleted file mode 100755 index fc8fcfc6e..000000000 Binary files a/public/media/commander/medium/t9-c1.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c10.png b/public/media/commander/medium/t9-c10.png deleted file mode 100644 index 6c780a2fa..000000000 Binary files a/public/media/commander/medium/t9-c10.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c11.png b/public/media/commander/medium/t9-c11.png deleted file mode 100644 index d8eab84c0..000000000 Binary files a/public/media/commander/medium/t9-c11.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c12.png b/public/media/commander/medium/t9-c12.png deleted file mode 100644 index cc5a21ae5..000000000 Binary files a/public/media/commander/medium/t9-c12.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c2.png b/public/media/commander/medium/t9-c2.png deleted file mode 100755 index 282ef6e63..000000000 Binary files a/public/media/commander/medium/t9-c2.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c3.png b/public/media/commander/medium/t9-c3.png deleted file mode 100755 index e45d3d375..000000000 Binary files a/public/media/commander/medium/t9-c3.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c4.png b/public/media/commander/medium/t9-c4.png deleted file mode 100755 index fb08d7f9c..000000000 Binary files a/public/media/commander/medium/t9-c4.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c5.png b/public/media/commander/medium/t9-c5.png deleted file mode 100755 index a9530c025..000000000 Binary files a/public/media/commander/medium/t9-c5.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c6.png b/public/media/commander/medium/t9-c6.png deleted file mode 100755 index 14cd92326..000000000 Binary files a/public/media/commander/medium/t9-c6.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c7.png b/public/media/commander/medium/t9-c7.png deleted file mode 100755 index 68e0541c6..000000000 Binary files a/public/media/commander/medium/t9-c7.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c8.png b/public/media/commander/medium/t9-c8.png deleted file mode 100644 index 54196e4bd..000000000 Binary files a/public/media/commander/medium/t9-c8.png and /dev/null differ diff --git a/public/media/commander/medium/t9-c9.png b/public/media/commander/medium/t9-c9.png deleted file mode 100644 index 8c69246bd..000000000 Binary files a/public/media/commander/medium/t9-c9.png and /dev/null differ diff --git a/public/media/commander/small/t1-c0.png b/public/media/commander/small/t1-c0.png deleted file mode 100755 index 746480239..000000000 Binary files a/public/media/commander/small/t1-c0.png and /dev/null differ diff --git a/public/media/commander/small/t1-c1.png b/public/media/commander/small/t1-c1.png deleted file mode 100755 index 729ce1f75..000000000 Binary files a/public/media/commander/small/t1-c1.png and /dev/null differ diff --git a/public/media/commander/small/t1-c10.png b/public/media/commander/small/t1-c10.png deleted file mode 100644 index 125cf159d..000000000 Binary files a/public/media/commander/small/t1-c10.png and /dev/null differ diff --git a/public/media/commander/small/t1-c11.png b/public/media/commander/small/t1-c11.png deleted file mode 100644 index 3dda23ea6..000000000 Binary files a/public/media/commander/small/t1-c11.png and /dev/null differ diff --git a/public/media/commander/small/t1-c12.png b/public/media/commander/small/t1-c12.png deleted file mode 100644 index 92306eecb..000000000 Binary files a/public/media/commander/small/t1-c12.png and /dev/null differ diff --git a/public/media/commander/small/t1-c2.png b/public/media/commander/small/t1-c2.png deleted file mode 100755 index 394d39005..000000000 Binary files a/public/media/commander/small/t1-c2.png and /dev/null differ diff --git a/public/media/commander/small/t1-c3.png b/public/media/commander/small/t1-c3.png deleted file mode 100755 index 45744e205..000000000 Binary files a/public/media/commander/small/t1-c3.png and /dev/null differ diff --git a/public/media/commander/small/t1-c4.png b/public/media/commander/small/t1-c4.png deleted file mode 100755 index 443ad80fe..000000000 Binary files a/public/media/commander/small/t1-c4.png and /dev/null differ diff --git a/public/media/commander/small/t1-c5.png b/public/media/commander/small/t1-c5.png deleted file mode 100755 index 1a40863ae..000000000 Binary files a/public/media/commander/small/t1-c5.png and /dev/null differ diff --git a/public/media/commander/small/t1-c6.png b/public/media/commander/small/t1-c6.png deleted file mode 100755 index 9696171d3..000000000 Binary files a/public/media/commander/small/t1-c6.png and /dev/null differ diff --git a/public/media/commander/small/t1-c7.png b/public/media/commander/small/t1-c7.png deleted file mode 100755 index c6b5265c6..000000000 Binary files a/public/media/commander/small/t1-c7.png and /dev/null differ diff --git a/public/media/commander/small/t1-c8.png b/public/media/commander/small/t1-c8.png deleted file mode 100644 index e2f7b0f7e..000000000 Binary files a/public/media/commander/small/t1-c8.png and /dev/null differ diff --git a/public/media/commander/small/t1-c9.png b/public/media/commander/small/t1-c9.png deleted file mode 100644 index 5782f0b05..000000000 Binary files a/public/media/commander/small/t1-c9.png and /dev/null differ diff --git a/public/media/commander/small/t10-c1.png b/public/media/commander/small/t10-c1.png deleted file mode 100755 index 3a979f230..000000000 Binary files a/public/media/commander/small/t10-c1.png and /dev/null differ diff --git a/public/media/commander/small/t10-c10.png b/public/media/commander/small/t10-c10.png deleted file mode 100644 index 220d01e76..000000000 Binary files a/public/media/commander/small/t10-c10.png and /dev/null differ diff --git a/public/media/commander/small/t10-c11.png b/public/media/commander/small/t10-c11.png deleted file mode 100644 index 01469853d..000000000 Binary files a/public/media/commander/small/t10-c11.png and /dev/null differ diff --git a/public/media/commander/small/t10-c12.png b/public/media/commander/small/t10-c12.png deleted file mode 100644 index f473fd023..000000000 Binary files a/public/media/commander/small/t10-c12.png and /dev/null differ diff --git a/public/media/commander/small/t10-c2.png b/public/media/commander/small/t10-c2.png deleted file mode 100755 index 899eaffe2..000000000 Binary files a/public/media/commander/small/t10-c2.png and /dev/null differ diff --git a/public/media/commander/small/t10-c3.png b/public/media/commander/small/t10-c3.png deleted file mode 100755 index 96262b8b8..000000000 Binary files a/public/media/commander/small/t10-c3.png and /dev/null differ diff --git a/public/media/commander/small/t10-c4.png b/public/media/commander/small/t10-c4.png deleted file mode 100755 index 9ad496ba0..000000000 Binary files a/public/media/commander/small/t10-c4.png and /dev/null differ diff --git a/public/media/commander/small/t10-c5.png b/public/media/commander/small/t10-c5.png deleted file mode 100755 index 5782f0b05..000000000 Binary files a/public/media/commander/small/t10-c5.png and /dev/null differ diff --git a/public/media/commander/small/t10-c6.png b/public/media/commander/small/t10-c6.png deleted file mode 100755 index cb73c017b..000000000 Binary files a/public/media/commander/small/t10-c6.png and /dev/null differ diff --git a/public/media/commander/small/t10-c7.png b/public/media/commander/small/t10-c7.png deleted file mode 100755 index db61fbd8b..000000000 Binary files a/public/media/commander/small/t10-c7.png and /dev/null differ diff --git a/public/media/commander/small/t10-c8.png b/public/media/commander/small/t10-c8.png deleted file mode 100644 index 5737af198..000000000 Binary files a/public/media/commander/small/t10-c8.png and /dev/null differ diff --git a/public/media/commander/small/t10-c9.png b/public/media/commander/small/t10-c9.png deleted file mode 100644 index 34fa59902..000000000 Binary files a/public/media/commander/small/t10-c9.png and /dev/null differ diff --git a/public/media/commander/small/t11-c1.png b/public/media/commander/small/t11-c1.png deleted file mode 100755 index 86785ce0f..000000000 Binary files a/public/media/commander/small/t11-c1.png and /dev/null differ diff --git a/public/media/commander/small/t11-c10.png b/public/media/commander/small/t11-c10.png deleted file mode 100644 index 0ed065784..000000000 Binary files a/public/media/commander/small/t11-c10.png and /dev/null differ diff --git a/public/media/commander/small/t11-c11.png b/public/media/commander/small/t11-c11.png deleted file mode 100644 index 0c5e6c660..000000000 Binary files a/public/media/commander/small/t11-c11.png and /dev/null differ diff --git a/public/media/commander/small/t11-c12.png b/public/media/commander/small/t11-c12.png deleted file mode 100644 index 45744e205..000000000 Binary files a/public/media/commander/small/t11-c12.png and /dev/null differ diff --git a/public/media/commander/small/t11-c2.png b/public/media/commander/small/t11-c2.png deleted file mode 100755 index c1737b941..000000000 Binary files a/public/media/commander/small/t11-c2.png and /dev/null differ diff --git a/public/media/commander/small/t11-c3.png b/public/media/commander/small/t11-c3.png deleted file mode 100755 index ff5520758..000000000 Binary files a/public/media/commander/small/t11-c3.png and /dev/null differ diff --git a/public/media/commander/small/t11-c4.png b/public/media/commander/small/t11-c4.png deleted file mode 100755 index e92c9a933..000000000 Binary files a/public/media/commander/small/t11-c4.png and /dev/null differ diff --git a/public/media/commander/small/t11-c5.png b/public/media/commander/small/t11-c5.png deleted file mode 100755 index 28771aa8f..000000000 Binary files a/public/media/commander/small/t11-c5.png and /dev/null differ diff --git a/public/media/commander/small/t11-c6.png b/public/media/commander/small/t11-c6.png deleted file mode 100755 index c1050a5fd..000000000 Binary files a/public/media/commander/small/t11-c6.png and /dev/null differ diff --git a/public/media/commander/small/t11-c7.png b/public/media/commander/small/t11-c7.png deleted file mode 100755 index d195ce4b7..000000000 Binary files a/public/media/commander/small/t11-c7.png and /dev/null differ diff --git a/public/media/commander/small/t11-c8.png b/public/media/commander/small/t11-c8.png deleted file mode 100644 index f3c9b9728..000000000 Binary files a/public/media/commander/small/t11-c8.png and /dev/null differ diff --git a/public/media/commander/small/t11-c9.png b/public/media/commander/small/t11-c9.png deleted file mode 100644 index 1a40863ae..000000000 Binary files a/public/media/commander/small/t11-c9.png and /dev/null differ diff --git a/public/media/commander/small/t12-c1.png b/public/media/commander/small/t12-c1.png deleted file mode 100755 index 90fae57a0..000000000 Binary files a/public/media/commander/small/t12-c1.png and /dev/null differ diff --git a/public/media/commander/small/t12-c10.png b/public/media/commander/small/t12-c10.png deleted file mode 100644 index 7090d7fde..000000000 Binary files a/public/media/commander/small/t12-c10.png and /dev/null differ diff --git a/public/media/commander/small/t12-c11.png b/public/media/commander/small/t12-c11.png deleted file mode 100644 index d790c6154..000000000 Binary files a/public/media/commander/small/t12-c11.png and /dev/null differ diff --git a/public/media/commander/small/t12-c12.png b/public/media/commander/small/t12-c12.png deleted file mode 100644 index 88c10a741..000000000 Binary files a/public/media/commander/small/t12-c12.png and /dev/null differ diff --git a/public/media/commander/small/t12-c2.png b/public/media/commander/small/t12-c2.png deleted file mode 100755 index 1415aa4ae..000000000 Binary files a/public/media/commander/small/t12-c2.png and /dev/null differ diff --git a/public/media/commander/small/t12-c3.png b/public/media/commander/small/t12-c3.png deleted file mode 100755 index 057b851c1..000000000 Binary files a/public/media/commander/small/t12-c3.png and /dev/null differ diff --git a/public/media/commander/small/t12-c4.png b/public/media/commander/small/t12-c4.png deleted file mode 100755 index a793deffa..000000000 Binary files a/public/media/commander/small/t12-c4.png and /dev/null differ diff --git a/public/media/commander/small/t12-c5.png b/public/media/commander/small/t12-c5.png deleted file mode 100755 index 80de4d165..000000000 Binary files a/public/media/commander/small/t12-c5.png and /dev/null differ diff --git a/public/media/commander/small/t12-c6.png b/public/media/commander/small/t12-c6.png deleted file mode 100755 index 98d16cd30..000000000 Binary files a/public/media/commander/small/t12-c6.png and /dev/null differ diff --git a/public/media/commander/small/t12-c7.png b/public/media/commander/small/t12-c7.png deleted file mode 100755 index f28f4b97b..000000000 Binary files a/public/media/commander/small/t12-c7.png and /dev/null differ diff --git a/public/media/commander/small/t12-c8.png b/public/media/commander/small/t12-c8.png deleted file mode 100644 index c13a4c344..000000000 Binary files a/public/media/commander/small/t12-c8.png and /dev/null differ diff --git a/public/media/commander/small/t12-c9.png b/public/media/commander/small/t12-c9.png deleted file mode 100644 index bf139d780..000000000 Binary files a/public/media/commander/small/t12-c9.png and /dev/null differ diff --git a/public/media/commander/small/t13-c1.png b/public/media/commander/small/t13-c1.png deleted file mode 100755 index 152c072eb..000000000 Binary files a/public/media/commander/small/t13-c1.png and /dev/null differ diff --git a/public/media/commander/small/t13-c10.png b/public/media/commander/small/t13-c10.png deleted file mode 100644 index 7a9c2633f..000000000 Binary files a/public/media/commander/small/t13-c10.png and /dev/null differ diff --git a/public/media/commander/small/t13-c11.png b/public/media/commander/small/t13-c11.png deleted file mode 100644 index 91048eb07..000000000 Binary files a/public/media/commander/small/t13-c11.png and /dev/null differ diff --git a/public/media/commander/small/t13-c12.png b/public/media/commander/small/t13-c12.png deleted file mode 100644 index 166efd544..000000000 Binary files a/public/media/commander/small/t13-c12.png and /dev/null differ diff --git a/public/media/commander/small/t13-c2.png b/public/media/commander/small/t13-c2.png deleted file mode 100755 index 1208ddb7a..000000000 Binary files a/public/media/commander/small/t13-c2.png and /dev/null differ diff --git a/public/media/commander/small/t13-c3.png b/public/media/commander/small/t13-c3.png deleted file mode 100755 index 6ec5f8d58..000000000 Binary files a/public/media/commander/small/t13-c3.png and /dev/null differ diff --git a/public/media/commander/small/t13-c4.png b/public/media/commander/small/t13-c4.png deleted file mode 100755 index 1a0e93458..000000000 Binary files a/public/media/commander/small/t13-c4.png and /dev/null differ diff --git a/public/media/commander/small/t13-c5.png b/public/media/commander/small/t13-c5.png deleted file mode 100755 index dee511142..000000000 Binary files a/public/media/commander/small/t13-c5.png and /dev/null differ diff --git a/public/media/commander/small/t13-c6.png b/public/media/commander/small/t13-c6.png deleted file mode 100755 index 7e5ab5c36..000000000 Binary files a/public/media/commander/small/t13-c6.png and /dev/null differ diff --git a/public/media/commander/small/t13-c7.png b/public/media/commander/small/t13-c7.png deleted file mode 100755 index eb2b56450..000000000 Binary files a/public/media/commander/small/t13-c7.png and /dev/null differ diff --git a/public/media/commander/small/t13-c8.png b/public/media/commander/small/t13-c8.png deleted file mode 100644 index 0eb529d8c..000000000 Binary files a/public/media/commander/small/t13-c8.png and /dev/null differ diff --git a/public/media/commander/small/t13-c9.png b/public/media/commander/small/t13-c9.png deleted file mode 100644 index 7c9d6fd06..000000000 Binary files a/public/media/commander/small/t13-c9.png and /dev/null differ diff --git a/public/media/commander/small/t14-c1.png b/public/media/commander/small/t14-c1.png deleted file mode 100755 index df6365a5c..000000000 Binary files a/public/media/commander/small/t14-c1.png and /dev/null differ diff --git a/public/media/commander/small/t14-c10.png b/public/media/commander/small/t14-c10.png deleted file mode 100644 index 39ccbf576..000000000 Binary files a/public/media/commander/small/t14-c10.png and /dev/null differ diff --git a/public/media/commander/small/t14-c11.png b/public/media/commander/small/t14-c11.png deleted file mode 100644 index 45e23600f..000000000 Binary files a/public/media/commander/small/t14-c11.png and /dev/null differ diff --git a/public/media/commander/small/t14-c12.png b/public/media/commander/small/t14-c12.png deleted file mode 100644 index e22c8cab7..000000000 Binary files a/public/media/commander/small/t14-c12.png and /dev/null differ diff --git a/public/media/commander/small/t14-c2.png b/public/media/commander/small/t14-c2.png deleted file mode 100755 index 71bcb0f35..000000000 Binary files a/public/media/commander/small/t14-c2.png and /dev/null differ diff --git a/public/media/commander/small/t14-c3.png b/public/media/commander/small/t14-c3.png deleted file mode 100755 index 019461720..000000000 Binary files a/public/media/commander/small/t14-c3.png and /dev/null differ diff --git a/public/media/commander/small/t14-c4.png b/public/media/commander/small/t14-c4.png deleted file mode 100755 index e2d413d56..000000000 Binary files a/public/media/commander/small/t14-c4.png and /dev/null differ diff --git a/public/media/commander/small/t14-c5.png b/public/media/commander/small/t14-c5.png deleted file mode 100755 index 5ae439823..000000000 Binary files a/public/media/commander/small/t14-c5.png and /dev/null differ diff --git a/public/media/commander/small/t14-c6.png b/public/media/commander/small/t14-c6.png deleted file mode 100755 index 73528305b..000000000 Binary files a/public/media/commander/small/t14-c6.png and /dev/null differ diff --git a/public/media/commander/small/t14-c7.png b/public/media/commander/small/t14-c7.png deleted file mode 100755 index ef399749f..000000000 Binary files a/public/media/commander/small/t14-c7.png and /dev/null differ diff --git a/public/media/commander/small/t14-c8.png b/public/media/commander/small/t14-c8.png deleted file mode 100644 index 240adfd52..000000000 Binary files a/public/media/commander/small/t14-c8.png and /dev/null differ diff --git a/public/media/commander/small/t14-c9.png b/public/media/commander/small/t14-c9.png deleted file mode 100644 index 51bc601c0..000000000 Binary files a/public/media/commander/small/t14-c9.png and /dev/null differ diff --git a/public/media/commander/small/t15-c1.png b/public/media/commander/small/t15-c1.png deleted file mode 100755 index 6b0b20aff..000000000 Binary files a/public/media/commander/small/t15-c1.png and /dev/null differ diff --git a/public/media/commander/small/t15-c10.png b/public/media/commander/small/t15-c10.png deleted file mode 100644 index 1387b8381..000000000 Binary files a/public/media/commander/small/t15-c10.png and /dev/null differ diff --git a/public/media/commander/small/t15-c11.png b/public/media/commander/small/t15-c11.png deleted file mode 100644 index f6904b669..000000000 Binary files a/public/media/commander/small/t15-c11.png and /dev/null differ diff --git a/public/media/commander/small/t15-c12.png b/public/media/commander/small/t15-c12.png deleted file mode 100644 index 2862439ba..000000000 Binary files a/public/media/commander/small/t15-c12.png and /dev/null differ diff --git a/public/media/commander/small/t15-c2.png b/public/media/commander/small/t15-c2.png deleted file mode 100755 index bb834f537..000000000 Binary files a/public/media/commander/small/t15-c2.png and /dev/null differ diff --git a/public/media/commander/small/t15-c3.png b/public/media/commander/small/t15-c3.png deleted file mode 100755 index 6b1ab7315..000000000 Binary files a/public/media/commander/small/t15-c3.png and /dev/null differ diff --git a/public/media/commander/small/t15-c4.png b/public/media/commander/small/t15-c4.png deleted file mode 100755 index 344f7b792..000000000 Binary files a/public/media/commander/small/t15-c4.png and /dev/null differ diff --git a/public/media/commander/small/t15-c5.png b/public/media/commander/small/t15-c5.png deleted file mode 100755 index 0b5f66e99..000000000 Binary files a/public/media/commander/small/t15-c5.png and /dev/null differ diff --git a/public/media/commander/small/t15-c6.png b/public/media/commander/small/t15-c6.png deleted file mode 100755 index 8d66c3c46..000000000 Binary files a/public/media/commander/small/t15-c6.png and /dev/null differ diff --git a/public/media/commander/small/t15-c7.png b/public/media/commander/small/t15-c7.png deleted file mode 100755 index 2bf8e568a..000000000 Binary files a/public/media/commander/small/t15-c7.png and /dev/null differ diff --git a/public/media/commander/small/t15-c8.png b/public/media/commander/small/t15-c8.png deleted file mode 100644 index e171a111d..000000000 Binary files a/public/media/commander/small/t15-c8.png and /dev/null differ diff --git a/public/media/commander/small/t15-c9.png b/public/media/commander/small/t15-c9.png deleted file mode 100644 index 17ca27a5e..000000000 Binary files a/public/media/commander/small/t15-c9.png and /dev/null differ diff --git a/public/media/commander/small/t16-c1.png b/public/media/commander/small/t16-c1.png deleted file mode 100755 index 4efddf381..000000000 Binary files a/public/media/commander/small/t16-c1.png and /dev/null differ diff --git a/public/media/commander/small/t16-c10.png b/public/media/commander/small/t16-c10.png deleted file mode 100644 index 82f4fdd4c..000000000 Binary files a/public/media/commander/small/t16-c10.png and /dev/null differ diff --git a/public/media/commander/small/t16-c11.png b/public/media/commander/small/t16-c11.png deleted file mode 100644 index ca2f014b7..000000000 Binary files a/public/media/commander/small/t16-c11.png and /dev/null differ diff --git a/public/media/commander/small/t16-c12.png b/public/media/commander/small/t16-c12.png deleted file mode 100644 index 3e9315d22..000000000 Binary files a/public/media/commander/small/t16-c12.png and /dev/null differ diff --git a/public/media/commander/small/t16-c2.png b/public/media/commander/small/t16-c2.png deleted file mode 100755 index d9ba806c8..000000000 Binary files a/public/media/commander/small/t16-c2.png and /dev/null differ diff --git a/public/media/commander/small/t16-c3.png b/public/media/commander/small/t16-c3.png deleted file mode 100755 index 0b0171d9c..000000000 Binary files a/public/media/commander/small/t16-c3.png and /dev/null differ diff --git a/public/media/commander/small/t16-c4.png b/public/media/commander/small/t16-c4.png deleted file mode 100755 index ff11e8256..000000000 Binary files a/public/media/commander/small/t16-c4.png and /dev/null differ diff --git a/public/media/commander/small/t16-c5.png b/public/media/commander/small/t16-c5.png deleted file mode 100755 index dbed7ed24..000000000 Binary files a/public/media/commander/small/t16-c5.png and /dev/null differ diff --git a/public/media/commander/small/t16-c6.png b/public/media/commander/small/t16-c6.png deleted file mode 100755 index 65cc9f2a7..000000000 Binary files a/public/media/commander/small/t16-c6.png and /dev/null differ diff --git a/public/media/commander/small/t16-c7.png b/public/media/commander/small/t16-c7.png deleted file mode 100755 index 2980cfd81..000000000 Binary files a/public/media/commander/small/t16-c7.png and /dev/null differ diff --git a/public/media/commander/small/t16-c8.png b/public/media/commander/small/t16-c8.png deleted file mode 100644 index c4f556f01..000000000 Binary files a/public/media/commander/small/t16-c8.png and /dev/null differ diff --git a/public/media/commander/small/t16-c9.png b/public/media/commander/small/t16-c9.png deleted file mode 100644 index 33ef1bcab..000000000 Binary files a/public/media/commander/small/t16-c9.png and /dev/null differ diff --git a/public/media/commander/small/t17-c1.png b/public/media/commander/small/t17-c1.png deleted file mode 100755 index 5a0ec2e5f..000000000 Binary files a/public/media/commander/small/t17-c1.png and /dev/null differ diff --git a/public/media/commander/small/t17-c10.png b/public/media/commander/small/t17-c10.png deleted file mode 100644 index 5626e1bb8..000000000 Binary files a/public/media/commander/small/t17-c10.png and /dev/null differ diff --git a/public/media/commander/small/t17-c11.png b/public/media/commander/small/t17-c11.png deleted file mode 100644 index 658dfdd52..000000000 Binary files a/public/media/commander/small/t17-c11.png and /dev/null differ diff --git a/public/media/commander/small/t17-c12.png b/public/media/commander/small/t17-c12.png deleted file mode 100644 index b8f7089f0..000000000 Binary files a/public/media/commander/small/t17-c12.png and /dev/null differ diff --git a/public/media/commander/small/t17-c2.png b/public/media/commander/small/t17-c2.png deleted file mode 100755 index 7ff07d7e3..000000000 Binary files a/public/media/commander/small/t17-c2.png and /dev/null differ diff --git a/public/media/commander/small/t17-c3.png b/public/media/commander/small/t17-c3.png deleted file mode 100755 index 1fa64e0c5..000000000 Binary files a/public/media/commander/small/t17-c3.png and /dev/null differ diff --git a/public/media/commander/small/t17-c4.png b/public/media/commander/small/t17-c4.png deleted file mode 100755 index e6f1ffc9e..000000000 Binary files a/public/media/commander/small/t17-c4.png and /dev/null differ diff --git a/public/media/commander/small/t17-c5.png b/public/media/commander/small/t17-c5.png deleted file mode 100755 index a0c4c19b7..000000000 Binary files a/public/media/commander/small/t17-c5.png and /dev/null differ diff --git a/public/media/commander/small/t17-c6.png b/public/media/commander/small/t17-c6.png deleted file mode 100755 index eedbbfbca..000000000 Binary files a/public/media/commander/small/t17-c6.png and /dev/null differ diff --git a/public/media/commander/small/t17-c7.png b/public/media/commander/small/t17-c7.png deleted file mode 100755 index fe91fd823..000000000 Binary files a/public/media/commander/small/t17-c7.png and /dev/null differ diff --git a/public/media/commander/small/t17-c8.png b/public/media/commander/small/t17-c8.png deleted file mode 100644 index 95bdb780c..000000000 Binary files a/public/media/commander/small/t17-c8.png and /dev/null differ diff --git a/public/media/commander/small/t17-c9.png b/public/media/commander/small/t17-c9.png deleted file mode 100644 index 4883ec806..000000000 Binary files a/public/media/commander/small/t17-c9.png and /dev/null differ diff --git a/public/media/commander/small/t18-c1.png b/public/media/commander/small/t18-c1.png deleted file mode 100755 index 4e12016b9..000000000 Binary files a/public/media/commander/small/t18-c1.png and /dev/null differ diff --git a/public/media/commander/small/t18-c10.png b/public/media/commander/small/t18-c10.png deleted file mode 100644 index fd3accfde..000000000 Binary files a/public/media/commander/small/t18-c10.png and /dev/null differ diff --git a/public/media/commander/small/t18-c11.png b/public/media/commander/small/t18-c11.png deleted file mode 100644 index bfdf53849..000000000 Binary files a/public/media/commander/small/t18-c11.png and /dev/null differ diff --git a/public/media/commander/small/t18-c12.png b/public/media/commander/small/t18-c12.png deleted file mode 100644 index 7e0d6d9d5..000000000 Binary files a/public/media/commander/small/t18-c12.png and /dev/null differ diff --git a/public/media/commander/small/t18-c2.png b/public/media/commander/small/t18-c2.png deleted file mode 100755 index 5fac2889d..000000000 Binary files a/public/media/commander/small/t18-c2.png and /dev/null differ diff --git a/public/media/commander/small/t18-c3.png b/public/media/commander/small/t18-c3.png deleted file mode 100755 index 68df76281..000000000 Binary files a/public/media/commander/small/t18-c3.png and /dev/null differ diff --git a/public/media/commander/small/t18-c4.png b/public/media/commander/small/t18-c4.png deleted file mode 100755 index 7c21b2569..000000000 Binary files a/public/media/commander/small/t18-c4.png and /dev/null differ diff --git a/public/media/commander/small/t18-c5.png b/public/media/commander/small/t18-c5.png deleted file mode 100755 index 5fb9aeebe..000000000 Binary files a/public/media/commander/small/t18-c5.png and /dev/null differ diff --git a/public/media/commander/small/t18-c6.png b/public/media/commander/small/t18-c6.png deleted file mode 100755 index ba2c7f1a6..000000000 Binary files a/public/media/commander/small/t18-c6.png and /dev/null differ diff --git a/public/media/commander/small/t18-c7.png b/public/media/commander/small/t18-c7.png deleted file mode 100755 index c1ab160ff..000000000 Binary files a/public/media/commander/small/t18-c7.png and /dev/null differ diff --git a/public/media/commander/small/t18-c8.png b/public/media/commander/small/t18-c8.png deleted file mode 100644 index 0124b97f4..000000000 Binary files a/public/media/commander/small/t18-c8.png and /dev/null differ diff --git a/public/media/commander/small/t18-c9.png b/public/media/commander/small/t18-c9.png deleted file mode 100644 index 5a36f6ab1..000000000 Binary files a/public/media/commander/small/t18-c9.png and /dev/null differ diff --git a/public/media/commander/small/t19-c1.png b/public/media/commander/small/t19-c1.png deleted file mode 100755 index 037df59b6..000000000 Binary files a/public/media/commander/small/t19-c1.png and /dev/null differ diff --git a/public/media/commander/small/t19-c10.png b/public/media/commander/small/t19-c10.png deleted file mode 100644 index 0535b6317..000000000 Binary files a/public/media/commander/small/t19-c10.png and /dev/null differ diff --git a/public/media/commander/small/t19-c11.png b/public/media/commander/small/t19-c11.png deleted file mode 100644 index 807df5b29..000000000 Binary files a/public/media/commander/small/t19-c11.png and /dev/null differ diff --git a/public/media/commander/small/t19-c12.png b/public/media/commander/small/t19-c12.png deleted file mode 100644 index 2c5854a57..000000000 Binary files a/public/media/commander/small/t19-c12.png and /dev/null differ diff --git a/public/media/commander/small/t19-c2.png b/public/media/commander/small/t19-c2.png deleted file mode 100755 index ef2e1d620..000000000 Binary files a/public/media/commander/small/t19-c2.png and /dev/null differ diff --git a/public/media/commander/small/t19-c3.png b/public/media/commander/small/t19-c3.png deleted file mode 100755 index f473fd023..000000000 Binary files a/public/media/commander/small/t19-c3.png and /dev/null differ diff --git a/public/media/commander/small/t19-c4.png b/public/media/commander/small/t19-c4.png deleted file mode 100755 index 6858990e6..000000000 Binary files a/public/media/commander/small/t19-c4.png and /dev/null differ diff --git a/public/media/commander/small/t19-c5.png b/public/media/commander/small/t19-c5.png deleted file mode 100755 index 34fa59902..000000000 Binary files a/public/media/commander/small/t19-c5.png and /dev/null differ diff --git a/public/media/commander/small/t19-c6.png b/public/media/commander/small/t19-c6.png deleted file mode 100755 index 438c92757..000000000 Binary files a/public/media/commander/small/t19-c6.png and /dev/null differ diff --git a/public/media/commander/small/t19-c7.png b/public/media/commander/small/t19-c7.png deleted file mode 100755 index 24a43bf88..000000000 Binary files a/public/media/commander/small/t19-c7.png and /dev/null differ diff --git a/public/media/commander/small/t19-c8.png b/public/media/commander/small/t19-c8.png deleted file mode 100644 index 744f98785..000000000 Binary files a/public/media/commander/small/t19-c8.png and /dev/null differ diff --git a/public/media/commander/small/t19-c9.png b/public/media/commander/small/t19-c9.png deleted file mode 100644 index 8117d754d..000000000 Binary files a/public/media/commander/small/t19-c9.png and /dev/null differ diff --git a/public/media/commander/small/t2-c1.png b/public/media/commander/small/t2-c1.png deleted file mode 100755 index 296b7b7d5..000000000 Binary files a/public/media/commander/small/t2-c1.png and /dev/null differ diff --git a/public/media/commander/small/t2-c10.png b/public/media/commander/small/t2-c10.png deleted file mode 100644 index 5379ae439..000000000 Binary files a/public/media/commander/small/t2-c10.png and /dev/null differ diff --git a/public/media/commander/small/t2-c11.png b/public/media/commander/small/t2-c11.png deleted file mode 100644 index 3987d6d58..000000000 Binary files a/public/media/commander/small/t2-c11.png and /dev/null differ diff --git a/public/media/commander/small/t2-c12.png b/public/media/commander/small/t2-c12.png deleted file mode 100644 index ff5520758..000000000 Binary files a/public/media/commander/small/t2-c12.png and /dev/null differ diff --git a/public/media/commander/small/t2-c2.png b/public/media/commander/small/t2-c2.png deleted file mode 100755 index 8d28819e3..000000000 Binary files a/public/media/commander/small/t2-c2.png and /dev/null differ diff --git a/public/media/commander/small/t2-c3.png b/public/media/commander/small/t2-c3.png deleted file mode 100755 index e22c8cab7..000000000 Binary files a/public/media/commander/small/t2-c3.png and /dev/null differ diff --git a/public/media/commander/small/t2-c4.png b/public/media/commander/small/t2-c4.png deleted file mode 100755 index cc0d58929..000000000 Binary files a/public/media/commander/small/t2-c4.png and /dev/null differ diff --git a/public/media/commander/small/t2-c5.png b/public/media/commander/small/t2-c5.png deleted file mode 100755 index 51bc601c0..000000000 Binary files a/public/media/commander/small/t2-c5.png and /dev/null differ diff --git a/public/media/commander/small/t2-c6.png b/public/media/commander/small/t2-c6.png deleted file mode 100755 index b1e2eee31..000000000 Binary files a/public/media/commander/small/t2-c6.png and /dev/null differ diff --git a/public/media/commander/small/t2-c7.png b/public/media/commander/small/t2-c7.png deleted file mode 100755 index e4124d5e0..000000000 Binary files a/public/media/commander/small/t2-c7.png and /dev/null differ diff --git a/public/media/commander/small/t2-c8.png b/public/media/commander/small/t2-c8.png deleted file mode 100644 index 8109c277a..000000000 Binary files a/public/media/commander/small/t2-c8.png and /dev/null differ diff --git a/public/media/commander/small/t2-c9.png b/public/media/commander/small/t2-c9.png deleted file mode 100644 index 28771aa8f..000000000 Binary files a/public/media/commander/small/t2-c9.png and /dev/null differ diff --git a/public/media/commander/small/t20-c1.png b/public/media/commander/small/t20-c1.png deleted file mode 100755 index b46dbe8c5..000000000 Binary files a/public/media/commander/small/t20-c1.png and /dev/null differ diff --git a/public/media/commander/small/t20-c10.png b/public/media/commander/small/t20-c10.png deleted file mode 100644 index de75f1f69..000000000 Binary files a/public/media/commander/small/t20-c10.png and /dev/null differ diff --git a/public/media/commander/small/t20-c11.png b/public/media/commander/small/t20-c11.png deleted file mode 100644 index cd81ba0a3..000000000 Binary files a/public/media/commander/small/t20-c11.png and /dev/null differ diff --git a/public/media/commander/small/t20-c12.png b/public/media/commander/small/t20-c12.png deleted file mode 100644 index 2069fd668..000000000 Binary files a/public/media/commander/small/t20-c12.png and /dev/null differ diff --git a/public/media/commander/small/t20-c2.png b/public/media/commander/small/t20-c2.png deleted file mode 100755 index 446c57f71..000000000 Binary files a/public/media/commander/small/t20-c2.png and /dev/null differ diff --git a/public/media/commander/small/t20-c3.png b/public/media/commander/small/t20-c3.png deleted file mode 100755 index 88c10a741..000000000 Binary files a/public/media/commander/small/t20-c3.png and /dev/null differ diff --git a/public/media/commander/small/t20-c4.png b/public/media/commander/small/t20-c4.png deleted file mode 100755 index 571e7b71c..000000000 Binary files a/public/media/commander/small/t20-c4.png and /dev/null differ diff --git a/public/media/commander/small/t20-c5.png b/public/media/commander/small/t20-c5.png deleted file mode 100755 index bf139d780..000000000 Binary files a/public/media/commander/small/t20-c5.png and /dev/null differ diff --git a/public/media/commander/small/t20-c6.png b/public/media/commander/small/t20-c6.png deleted file mode 100755 index fd9ae84a5..000000000 Binary files a/public/media/commander/small/t20-c6.png and /dev/null differ diff --git a/public/media/commander/small/t20-c7.png b/public/media/commander/small/t20-c7.png deleted file mode 100755 index 203efee48..000000000 Binary files a/public/media/commander/small/t20-c7.png and /dev/null differ diff --git a/public/media/commander/small/t20-c8.png b/public/media/commander/small/t20-c8.png deleted file mode 100644 index bad62ac52..000000000 Binary files a/public/media/commander/small/t20-c8.png and /dev/null differ diff --git a/public/media/commander/small/t20-c9.png b/public/media/commander/small/t20-c9.png deleted file mode 100644 index 102bd52f7..000000000 Binary files a/public/media/commander/small/t20-c9.png and /dev/null differ diff --git a/public/media/commander/small/t21-c1.png b/public/media/commander/small/t21-c1.png deleted file mode 100755 index aa82c52ff..000000000 Binary files a/public/media/commander/small/t21-c1.png and /dev/null differ diff --git a/public/media/commander/small/t21-c10.png b/public/media/commander/small/t21-c10.png deleted file mode 100644 index 65a548425..000000000 Binary files a/public/media/commander/small/t21-c10.png and /dev/null differ diff --git a/public/media/commander/small/t21-c11.png b/public/media/commander/small/t21-c11.png deleted file mode 100644 index cdc537391..000000000 Binary files a/public/media/commander/small/t21-c11.png and /dev/null differ diff --git a/public/media/commander/small/t21-c12.png b/public/media/commander/small/t21-c12.png deleted file mode 100644 index 73ee85b7e..000000000 Binary files a/public/media/commander/small/t21-c12.png and /dev/null differ diff --git a/public/media/commander/small/t21-c2.png b/public/media/commander/small/t21-c2.png deleted file mode 100755 index 6311f2631..000000000 Binary files a/public/media/commander/small/t21-c2.png and /dev/null differ diff --git a/public/media/commander/small/t21-c3.png b/public/media/commander/small/t21-c3.png deleted file mode 100755 index 166efd544..000000000 Binary files a/public/media/commander/small/t21-c3.png and /dev/null differ diff --git a/public/media/commander/small/t21-c4.png b/public/media/commander/small/t21-c4.png deleted file mode 100755 index 2cf016ee3..000000000 Binary files a/public/media/commander/small/t21-c4.png and /dev/null differ diff --git a/public/media/commander/small/t21-c5.png b/public/media/commander/small/t21-c5.png deleted file mode 100755 index 7c9d6fd06..000000000 Binary files a/public/media/commander/small/t21-c5.png and /dev/null differ diff --git a/public/media/commander/small/t21-c6.png b/public/media/commander/small/t21-c6.png deleted file mode 100755 index fa11a9162..000000000 Binary files a/public/media/commander/small/t21-c6.png and /dev/null differ diff --git a/public/media/commander/small/t21-c7.png b/public/media/commander/small/t21-c7.png deleted file mode 100755 index ea5229a23..000000000 Binary files a/public/media/commander/small/t21-c7.png and /dev/null differ diff --git a/public/media/commander/small/t21-c8.png b/public/media/commander/small/t21-c8.png deleted file mode 100644 index 1d7cbb840..000000000 Binary files a/public/media/commander/small/t21-c8.png and /dev/null differ diff --git a/public/media/commander/small/t21-c9.png b/public/media/commander/small/t21-c9.png deleted file mode 100644 index 551b6dce2..000000000 Binary files a/public/media/commander/small/t21-c9.png and /dev/null differ diff --git a/public/media/commander/small/t3-c1.png b/public/media/commander/small/t3-c1.png deleted file mode 100755 index cd22346ea..000000000 Binary files a/public/media/commander/small/t3-c1.png and /dev/null differ diff --git a/public/media/commander/small/t3-c10.png b/public/media/commander/small/t3-c10.png deleted file mode 100644 index 59c837547..000000000 Binary files a/public/media/commander/small/t3-c10.png and /dev/null differ diff --git a/public/media/commander/small/t3-c11.png b/public/media/commander/small/t3-c11.png deleted file mode 100644 index c949aa9d4..000000000 Binary files a/public/media/commander/small/t3-c11.png and /dev/null differ diff --git a/public/media/commander/small/t3-c12.png b/public/media/commander/small/t3-c12.png deleted file mode 100644 index 057b851c1..000000000 Binary files a/public/media/commander/small/t3-c12.png and /dev/null differ diff --git a/public/media/commander/small/t3-c2.png b/public/media/commander/small/t3-c2.png deleted file mode 100755 index a6b50e36d..000000000 Binary files a/public/media/commander/small/t3-c2.png and /dev/null differ diff --git a/public/media/commander/small/t3-c3.png b/public/media/commander/small/t3-c3.png deleted file mode 100755 index 2862439ba..000000000 Binary files a/public/media/commander/small/t3-c3.png and /dev/null differ diff --git a/public/media/commander/small/t3-c4.png b/public/media/commander/small/t3-c4.png deleted file mode 100755 index f6947a662..000000000 Binary files a/public/media/commander/small/t3-c4.png and /dev/null differ diff --git a/public/media/commander/small/t3-c5.png b/public/media/commander/small/t3-c5.png deleted file mode 100755 index 17ca27a5e..000000000 Binary files a/public/media/commander/small/t3-c5.png and /dev/null differ diff --git a/public/media/commander/small/t3-c6.png b/public/media/commander/small/t3-c6.png deleted file mode 100755 index bbc0dfac8..000000000 Binary files a/public/media/commander/small/t3-c6.png and /dev/null differ diff --git a/public/media/commander/small/t3-c7.png b/public/media/commander/small/t3-c7.png deleted file mode 100755 index 1cbc4083c..000000000 Binary files a/public/media/commander/small/t3-c7.png and /dev/null differ diff --git a/public/media/commander/small/t3-c8.png b/public/media/commander/small/t3-c8.png deleted file mode 100644 index f1a151b7c..000000000 Binary files a/public/media/commander/small/t3-c8.png and /dev/null differ diff --git a/public/media/commander/small/t3-c9.png b/public/media/commander/small/t3-c9.png deleted file mode 100644 index 80de4d165..000000000 Binary files a/public/media/commander/small/t3-c9.png and /dev/null differ diff --git a/public/media/commander/small/t4-c1.png b/public/media/commander/small/t4-c1.png deleted file mode 100755 index d09effd10..000000000 Binary files a/public/media/commander/small/t4-c1.png and /dev/null differ diff --git a/public/media/commander/small/t4-c10.png b/public/media/commander/small/t4-c10.png deleted file mode 100644 index 2ef8a29c3..000000000 Binary files a/public/media/commander/small/t4-c10.png and /dev/null differ diff --git a/public/media/commander/small/t4-c11.png b/public/media/commander/small/t4-c11.png deleted file mode 100644 index 34054ba4b..000000000 Binary files a/public/media/commander/small/t4-c11.png and /dev/null differ diff --git a/public/media/commander/small/t4-c12.png b/public/media/commander/small/t4-c12.png deleted file mode 100644 index 6ec5f8d58..000000000 Binary files a/public/media/commander/small/t4-c12.png and /dev/null differ diff --git a/public/media/commander/small/t4-c2.png b/public/media/commander/small/t4-c2.png deleted file mode 100755 index ef0140316..000000000 Binary files a/public/media/commander/small/t4-c2.png and /dev/null differ diff --git a/public/media/commander/small/t4-c3.png b/public/media/commander/small/t4-c3.png deleted file mode 100755 index 3e9315d22..000000000 Binary files a/public/media/commander/small/t4-c3.png and /dev/null differ diff --git a/public/media/commander/small/t4-c4.png b/public/media/commander/small/t4-c4.png deleted file mode 100755 index 38a28d622..000000000 Binary files a/public/media/commander/small/t4-c4.png and /dev/null differ diff --git a/public/media/commander/small/t4-c5.png b/public/media/commander/small/t4-c5.png deleted file mode 100755 index 33ef1bcab..000000000 Binary files a/public/media/commander/small/t4-c5.png and /dev/null differ diff --git a/public/media/commander/small/t4-c6.png b/public/media/commander/small/t4-c6.png deleted file mode 100755 index 7407e5ef7..000000000 Binary files a/public/media/commander/small/t4-c6.png and /dev/null differ diff --git a/public/media/commander/small/t4-c7.png b/public/media/commander/small/t4-c7.png deleted file mode 100755 index 1b0dae28c..000000000 Binary files a/public/media/commander/small/t4-c7.png and /dev/null differ diff --git a/public/media/commander/small/t4-c8.png b/public/media/commander/small/t4-c8.png deleted file mode 100644 index 73163c74e..000000000 Binary files a/public/media/commander/small/t4-c8.png and /dev/null differ diff --git a/public/media/commander/small/t4-c9.png b/public/media/commander/small/t4-c9.png deleted file mode 100644 index dee511142..000000000 Binary files a/public/media/commander/small/t4-c9.png and /dev/null differ diff --git a/public/media/commander/small/t5-c1.png b/public/media/commander/small/t5-c1.png deleted file mode 100755 index 10e041b5a..000000000 Binary files a/public/media/commander/small/t5-c1.png and /dev/null differ diff --git a/public/media/commander/small/t5-c10.png b/public/media/commander/small/t5-c10.png deleted file mode 100644 index b8864aa29..000000000 Binary files a/public/media/commander/small/t5-c10.png and /dev/null differ diff --git a/public/media/commander/small/t5-c11.png b/public/media/commander/small/t5-c11.png deleted file mode 100644 index 53c0551c6..000000000 Binary files a/public/media/commander/small/t5-c11.png and /dev/null differ diff --git a/public/media/commander/small/t5-c12.png b/public/media/commander/small/t5-c12.png deleted file mode 100644 index 019461720..000000000 Binary files a/public/media/commander/small/t5-c12.png and /dev/null differ diff --git a/public/media/commander/small/t5-c2.png b/public/media/commander/small/t5-c2.png deleted file mode 100755 index 3567363e6..000000000 Binary files a/public/media/commander/small/t5-c2.png and /dev/null differ diff --git a/public/media/commander/small/t5-c3.png b/public/media/commander/small/t5-c3.png deleted file mode 100755 index b8f7089f0..000000000 Binary files a/public/media/commander/small/t5-c3.png and /dev/null differ diff --git a/public/media/commander/small/t5-c4.png b/public/media/commander/small/t5-c4.png deleted file mode 100755 index b41423350..000000000 Binary files a/public/media/commander/small/t5-c4.png and /dev/null differ diff --git a/public/media/commander/small/t5-c5.png b/public/media/commander/small/t5-c5.png deleted file mode 100755 index 4883ec806..000000000 Binary files a/public/media/commander/small/t5-c5.png and /dev/null differ diff --git a/public/media/commander/small/t5-c6.png b/public/media/commander/small/t5-c6.png deleted file mode 100755 index 3ec36efc8..000000000 Binary files a/public/media/commander/small/t5-c6.png and /dev/null differ diff --git a/public/media/commander/small/t5-c7.png b/public/media/commander/small/t5-c7.png deleted file mode 100755 index ca9d281cd..000000000 Binary files a/public/media/commander/small/t5-c7.png and /dev/null differ diff --git a/public/media/commander/small/t5-c8.png b/public/media/commander/small/t5-c8.png deleted file mode 100644 index 990e40276..000000000 Binary files a/public/media/commander/small/t5-c8.png and /dev/null differ diff --git a/public/media/commander/small/t5-c9.png b/public/media/commander/small/t5-c9.png deleted file mode 100644 index 5ae439823..000000000 Binary files a/public/media/commander/small/t5-c9.png and /dev/null differ diff --git a/public/media/commander/small/t6-c1.png b/public/media/commander/small/t6-c1.png deleted file mode 100755 index 52dc3ea14..000000000 Binary files a/public/media/commander/small/t6-c1.png and /dev/null differ diff --git a/public/media/commander/small/t6-c10.png b/public/media/commander/small/t6-c10.png deleted file mode 100644 index bb865b01f..000000000 Binary files a/public/media/commander/small/t6-c10.png and /dev/null differ diff --git a/public/media/commander/small/t6-c11.png b/public/media/commander/small/t6-c11.png deleted file mode 100644 index 5dc76e0b6..000000000 Binary files a/public/media/commander/small/t6-c11.png and /dev/null differ diff --git a/public/media/commander/small/t6-c12.png b/public/media/commander/small/t6-c12.png deleted file mode 100644 index 6b1ab7315..000000000 Binary files a/public/media/commander/small/t6-c12.png and /dev/null differ diff --git a/public/media/commander/small/t6-c2.png b/public/media/commander/small/t6-c2.png deleted file mode 100755 index 79e831a00..000000000 Binary files a/public/media/commander/small/t6-c2.png and /dev/null differ diff --git a/public/media/commander/small/t6-c3.png b/public/media/commander/small/t6-c3.png deleted file mode 100755 index 7e0d6d9d5..000000000 Binary files a/public/media/commander/small/t6-c3.png and /dev/null differ diff --git a/public/media/commander/small/t6-c4.png b/public/media/commander/small/t6-c4.png deleted file mode 100755 index 3b4285f3c..000000000 Binary files a/public/media/commander/small/t6-c4.png and /dev/null differ diff --git a/public/media/commander/small/t6-c5.png b/public/media/commander/small/t6-c5.png deleted file mode 100755 index 5a36f6ab1..000000000 Binary files a/public/media/commander/small/t6-c5.png and /dev/null differ diff --git a/public/media/commander/small/t6-c6.png b/public/media/commander/small/t6-c6.png deleted file mode 100755 index ed17addd7..000000000 Binary files a/public/media/commander/small/t6-c6.png and /dev/null differ diff --git a/public/media/commander/small/t6-c7.png b/public/media/commander/small/t6-c7.png deleted file mode 100755 index 99c3d5a8f..000000000 Binary files a/public/media/commander/small/t6-c7.png and /dev/null differ diff --git a/public/media/commander/small/t6-c8.png b/public/media/commander/small/t6-c8.png deleted file mode 100644 index 98ee29400..000000000 Binary files a/public/media/commander/small/t6-c8.png and /dev/null differ diff --git a/public/media/commander/small/t6-c9.png b/public/media/commander/small/t6-c9.png deleted file mode 100644 index 0b5f66e99..000000000 Binary files a/public/media/commander/small/t6-c9.png and /dev/null differ diff --git a/public/media/commander/small/t7-c1.png b/public/media/commander/small/t7-c1.png deleted file mode 100755 index 262c71c8d..000000000 Binary files a/public/media/commander/small/t7-c1.png and /dev/null differ diff --git a/public/media/commander/small/t7-c10.png b/public/media/commander/small/t7-c10.png deleted file mode 100644 index 53137383d..000000000 Binary files a/public/media/commander/small/t7-c10.png and /dev/null differ diff --git a/public/media/commander/small/t7-c11.png b/public/media/commander/small/t7-c11.png deleted file mode 100644 index c25da8075..000000000 Binary files a/public/media/commander/small/t7-c11.png and /dev/null differ diff --git a/public/media/commander/small/t7-c12.png b/public/media/commander/small/t7-c12.png deleted file mode 100644 index ab566e28a..000000000 Binary files a/public/media/commander/small/t7-c12.png and /dev/null differ diff --git a/public/media/commander/small/t7-c2.png b/public/media/commander/small/t7-c2.png deleted file mode 100755 index 01c4b70f6..000000000 Binary files a/public/media/commander/small/t7-c2.png and /dev/null differ diff --git a/public/media/commander/small/t7-c3.png b/public/media/commander/small/t7-c3.png deleted file mode 100755 index 2c5854a57..000000000 Binary files a/public/media/commander/small/t7-c3.png and /dev/null differ diff --git a/public/media/commander/small/t7-c4.png b/public/media/commander/small/t7-c4.png deleted file mode 100755 index 908538c4c..000000000 Binary files a/public/media/commander/small/t7-c4.png and /dev/null differ diff --git a/public/media/commander/small/t7-c5.png b/public/media/commander/small/t7-c5.png deleted file mode 100755 index 8117d754d..000000000 Binary files a/public/media/commander/small/t7-c5.png and /dev/null differ diff --git a/public/media/commander/small/t7-c6.png b/public/media/commander/small/t7-c6.png deleted file mode 100755 index b7df30368..000000000 Binary files a/public/media/commander/small/t7-c6.png and /dev/null differ diff --git a/public/media/commander/small/t7-c7.png b/public/media/commander/small/t7-c7.png deleted file mode 100755 index bb319e077..000000000 Binary files a/public/media/commander/small/t7-c7.png and /dev/null differ diff --git a/public/media/commander/small/t7-c8.png b/public/media/commander/small/t7-c8.png deleted file mode 100644 index c8dac772c..000000000 Binary files a/public/media/commander/small/t7-c8.png and /dev/null differ diff --git a/public/media/commander/small/t7-c9.png b/public/media/commander/small/t7-c9.png deleted file mode 100644 index dbed7ed24..000000000 Binary files a/public/media/commander/small/t7-c9.png and /dev/null differ diff --git a/public/media/commander/small/t8-c1.png b/public/media/commander/small/t8-c1.png deleted file mode 100755 index 053dfb977..000000000 Binary files a/public/media/commander/small/t8-c1.png and /dev/null differ diff --git a/public/media/commander/small/t8-c10.png b/public/media/commander/small/t8-c10.png deleted file mode 100644 index afa75c97f..000000000 Binary files a/public/media/commander/small/t8-c10.png and /dev/null differ diff --git a/public/media/commander/small/t8-c11.png b/public/media/commander/small/t8-c11.png deleted file mode 100644 index 11c2acf3c..000000000 Binary files a/public/media/commander/small/t8-c11.png and /dev/null differ diff --git a/public/media/commander/small/t8-c12.png b/public/media/commander/small/t8-c12.png deleted file mode 100644 index 1fa64e0c5..000000000 Binary files a/public/media/commander/small/t8-c12.png and /dev/null differ diff --git a/public/media/commander/small/t8-c2.png b/public/media/commander/small/t8-c2.png deleted file mode 100755 index 589be1944..000000000 Binary files a/public/media/commander/small/t8-c2.png and /dev/null differ diff --git a/public/media/commander/small/t8-c3.png b/public/media/commander/small/t8-c3.png deleted file mode 100755 index 2069fd668..000000000 Binary files a/public/media/commander/small/t8-c3.png and /dev/null differ diff --git a/public/media/commander/small/t8-c4.png b/public/media/commander/small/t8-c4.png deleted file mode 100755 index 287ebf422..000000000 Binary files a/public/media/commander/small/t8-c4.png and /dev/null differ diff --git a/public/media/commander/small/t8-c5.png b/public/media/commander/small/t8-c5.png deleted file mode 100755 index 102bd52f7..000000000 Binary files a/public/media/commander/small/t8-c5.png and /dev/null differ diff --git a/public/media/commander/small/t8-c6.png b/public/media/commander/small/t8-c6.png deleted file mode 100755 index fa13c9c9a..000000000 Binary files a/public/media/commander/small/t8-c6.png and /dev/null differ diff --git a/public/media/commander/small/t8-c7.png b/public/media/commander/small/t8-c7.png deleted file mode 100755 index f53445cdb..000000000 Binary files a/public/media/commander/small/t8-c7.png and /dev/null differ diff --git a/public/media/commander/small/t8-c8.png b/public/media/commander/small/t8-c8.png deleted file mode 100644 index a2119f1f8..000000000 Binary files a/public/media/commander/small/t8-c8.png and /dev/null differ diff --git a/public/media/commander/small/t8-c9.png b/public/media/commander/small/t8-c9.png deleted file mode 100644 index a0c4c19b7..000000000 Binary files a/public/media/commander/small/t8-c9.png and /dev/null differ diff --git a/public/media/commander/small/t9-c1.png b/public/media/commander/small/t9-c1.png deleted file mode 100755 index 228395760..000000000 Binary files a/public/media/commander/small/t9-c1.png and /dev/null differ diff --git a/public/media/commander/small/t9-c10.png b/public/media/commander/small/t9-c10.png deleted file mode 100644 index 13080024e..000000000 Binary files a/public/media/commander/small/t9-c10.png and /dev/null differ diff --git a/public/media/commander/small/t9-c11.png b/public/media/commander/small/t9-c11.png deleted file mode 100644 index 4c57cfb2f..000000000 Binary files a/public/media/commander/small/t9-c11.png and /dev/null differ diff --git a/public/media/commander/small/t9-c12.png b/public/media/commander/small/t9-c12.png deleted file mode 100644 index 68df76281..000000000 Binary files a/public/media/commander/small/t9-c12.png and /dev/null differ diff --git a/public/media/commander/small/t9-c2.png b/public/media/commander/small/t9-c2.png deleted file mode 100755 index ddd7111ca..000000000 Binary files a/public/media/commander/small/t9-c2.png and /dev/null differ diff --git a/public/media/commander/small/t9-c3.png b/public/media/commander/small/t9-c3.png deleted file mode 100755 index 73ee85b7e..000000000 Binary files a/public/media/commander/small/t9-c3.png and /dev/null differ diff --git a/public/media/commander/small/t9-c4.png b/public/media/commander/small/t9-c4.png deleted file mode 100755 index 1a94b451c..000000000 Binary files a/public/media/commander/small/t9-c4.png and /dev/null differ diff --git a/public/media/commander/small/t9-c5.png b/public/media/commander/small/t9-c5.png deleted file mode 100755 index 551b6dce2..000000000 Binary files a/public/media/commander/small/t9-c5.png and /dev/null differ diff --git a/public/media/commander/small/t9-c6.png b/public/media/commander/small/t9-c6.png deleted file mode 100755 index 25c87adea..000000000 Binary files a/public/media/commander/small/t9-c6.png and /dev/null differ diff --git a/public/media/commander/small/t9-c7.png b/public/media/commander/small/t9-c7.png deleted file mode 100755 index c39e45dd6..000000000 Binary files a/public/media/commander/small/t9-c7.png and /dev/null differ diff --git a/public/media/commander/small/t9-c8.png b/public/media/commander/small/t9-c8.png deleted file mode 100644 index c5f5df048..000000000 Binary files a/public/media/commander/small/t9-c8.png and /dev/null differ diff --git a/public/media/commander/small/t9-c9.png b/public/media/commander/small/t9-c9.png deleted file mode 100644 index 5fb9aeebe..000000000 Binary files a/public/media/commander/small/t9-c9.png and /dev/null differ diff --git a/public/media/common/nav-base.png b/public/media/common/nav-base.png deleted file mode 100755 index 45525c500..000000000 Binary files a/public/media/common/nav-base.png and /dev/null differ diff --git a/public/media/common/nav-chat.png b/public/media/common/nav-chat.png deleted file mode 100644 index 432d072f9..000000000 Binary files a/public/media/common/nav-chat.png and /dev/null differ diff --git a/public/media/common/nav-embassy.png b/public/media/common/nav-embassy.png deleted file mode 100644 index 978c3a179..000000000 Binary files a/public/media/common/nav-embassy.png and /dev/null differ diff --git a/public/media/common/nav-faction.png b/public/media/common/nav-faction.png deleted file mode 100755 index b128f44c8..000000000 Binary files a/public/media/common/nav-faction.png and /dev/null differ diff --git a/public/media/common/nav-financial.png b/public/media/common/nav-financial.png deleted file mode 100755 index 22d1a1dce..000000000 Binary files a/public/media/common/nav-financial.png and /dev/null differ diff --git a/public/media/common/nav-fleet-attack.png b/public/media/common/nav-fleet-attack.png deleted file mode 100755 index 0bfac1056..000000000 Binary files a/public/media/common/nav-fleet-attack.png and /dev/null differ diff --git a/public/media/common/nav-fleet-defense.png b/public/media/common/nav-fleet-defense.png deleted file mode 100755 index 3d8d1e6c8..000000000 Binary files a/public/media/common/nav-fleet-defense.png and /dev/null differ diff --git a/public/media/common/nav-fleet.png b/public/media/common/nav-fleet.png deleted file mode 100755 index 1586f9090..000000000 Binary files a/public/media/common/nav-fleet.png and /dev/null differ diff --git a/public/media/common/nav-map.png b/public/media/common/nav-map.png deleted file mode 100755 index cbcb361a1..000000000 Binary files a/public/media/common/nav-map.png and /dev/null differ diff --git a/public/media/common/nav-message.png b/public/media/common/nav-message.png deleted file mode 100755 index 7a63f9335..000000000 Binary files a/public/media/common/nav-message.png and /dev/null differ diff --git a/public/media/common/nav-notif.png b/public/media/common/nav-notif.png deleted file mode 100755 index 862501832..000000000 Binary files a/public/media/common/nav-notif.png and /dev/null differ diff --git a/public/media/common/nav-profil.png b/public/media/common/nav-profil.png deleted file mode 100755 index f13c5286e..000000000 Binary files a/public/media/common/nav-profil.png and /dev/null differ diff --git a/public/media/common/nav-rank.png b/public/media/common/nav-rank.png deleted file mode 100755 index a3fd7a866..000000000 Binary files a/public/media/common/nav-rank.png and /dev/null differ diff --git a/public/media/common/nav-techno.png b/public/media/common/nav-techno.png deleted file mode 100755 index 5bbd2c21e..000000000 Binary files a/public/media/common/nav-techno.png and /dev/null differ diff --git a/public/media/common/next-base.png b/public/media/common/next-base.png deleted file mode 100644 index ad3bffc9d..000000000 Binary files a/public/media/common/next-base.png and /dev/null differ diff --git a/public/media/common/tool-admin.png b/public/media/common/tool-admin.png deleted file mode 100755 index ae7794271..000000000 Binary files a/public/media/common/tool-admin.png and /dev/null differ diff --git a/public/media/common/tool-bugtracker.png b/public/media/common/tool-bugtracker.png deleted file mode 100755 index 6f5f3be8e..000000000 Binary files a/public/media/common/tool-bugtracker.png and /dev/null differ diff --git a/public/media/common/tool-exit.png b/public/media/common/tool-exit.png deleted file mode 100755 index 0c7c1551d..000000000 Binary files a/public/media/common/tool-exit.png and /dev/null differ diff --git a/public/media/common/tool-param.png b/public/media/common/tool-param.png deleted file mode 100755 index 1c5cc9832..000000000 Binary files a/public/media/common/tool-param.png and /dev/null differ diff --git a/public/media/common/tool-roadmap.png b/public/media/common/tool-roadmap.png deleted file mode 100755 index 9feb88142..000000000 Binary files a/public/media/common/tool-roadmap.png and /dev/null differ diff --git a/public/media/common/tool-star.png b/public/media/common/tool-star.png deleted file mode 100755 index 2abe8f070..000000000 Binary files a/public/media/common/tool-star.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus1-1.png b/public/media/faction/bonus/bonus1-1.png deleted file mode 100755 index f7b949fc6..000000000 Binary files a/public/media/faction/bonus/bonus1-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus1-2.png b/public/media/faction/bonus/bonus1-2.png deleted file mode 100755 index f01a4d582..000000000 Binary files a/public/media/faction/bonus/bonus1-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus1-3.png b/public/media/faction/bonus/bonus1-3.png deleted file mode 100755 index 50cc638f9..000000000 Binary files a/public/media/faction/bonus/bonus1-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus2-1.png b/public/media/faction/bonus/bonus2-1.png deleted file mode 100755 index fe06795d4..000000000 Binary files a/public/media/faction/bonus/bonus2-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus2-2.png b/public/media/faction/bonus/bonus2-2.png deleted file mode 100755 index cd1c9f8ff..000000000 Binary files a/public/media/faction/bonus/bonus2-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus2-3.png b/public/media/faction/bonus/bonus2-3.png deleted file mode 100755 index 9e336a990..000000000 Binary files a/public/media/faction/bonus/bonus2-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus3-1.png b/public/media/faction/bonus/bonus3-1.png deleted file mode 100755 index d89267f18..000000000 Binary files a/public/media/faction/bonus/bonus3-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus3-2.png b/public/media/faction/bonus/bonus3-2.png deleted file mode 100755 index f46fd1675..000000000 Binary files a/public/media/faction/bonus/bonus3-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus3-3.png b/public/media/faction/bonus/bonus3-3.png deleted file mode 100755 index bcf3403e7..000000000 Binary files a/public/media/faction/bonus/bonus3-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus4-1.png b/public/media/faction/bonus/bonus4-1.png deleted file mode 100755 index 99dd954f2..000000000 Binary files a/public/media/faction/bonus/bonus4-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus4-2.png b/public/media/faction/bonus/bonus4-2.png deleted file mode 100755 index 73890e1f1..000000000 Binary files a/public/media/faction/bonus/bonus4-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus4-3.png b/public/media/faction/bonus/bonus4-3.png deleted file mode 100755 index 5f17be636..000000000 Binary files a/public/media/faction/bonus/bonus4-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus4-4.png b/public/media/faction/bonus/bonus4-4.png deleted file mode 100755 index 621f84520..000000000 Binary files a/public/media/faction/bonus/bonus4-4.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus5-1.png b/public/media/faction/bonus/bonus5-1.png deleted file mode 100755 index 4d3a0eb7d..000000000 Binary files a/public/media/faction/bonus/bonus5-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus5-2.png b/public/media/faction/bonus/bonus5-2.png deleted file mode 100755 index 8fc91c59f..000000000 Binary files a/public/media/faction/bonus/bonus5-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus5-3.png b/public/media/faction/bonus/bonus5-3.png deleted file mode 100755 index 0517777f3..000000000 Binary files a/public/media/faction/bonus/bonus5-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus6-1.png b/public/media/faction/bonus/bonus6-1.png deleted file mode 100755 index 13736dffe..000000000 Binary files a/public/media/faction/bonus/bonus6-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus6-2.png b/public/media/faction/bonus/bonus6-2.png deleted file mode 100755 index 4955d76fa..000000000 Binary files a/public/media/faction/bonus/bonus6-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus6-3.png b/public/media/faction/bonus/bonus6-3.png deleted file mode 100755 index 0f4e1fb4f..000000000 Binary files a/public/media/faction/bonus/bonus6-3.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus7-1.png b/public/media/faction/bonus/bonus7-1.png deleted file mode 100755 index 99dd954f2..000000000 Binary files a/public/media/faction/bonus/bonus7-1.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus7-2.png b/public/media/faction/bonus/bonus7-2.png deleted file mode 100755 index ecb418f14..000000000 Binary files a/public/media/faction/bonus/bonus7-2.png and /dev/null differ diff --git a/public/media/faction/bonus/bonus7-3.png b/public/media/faction/bonus/bonus7-3.png deleted file mode 100755 index a9d587137..000000000 Binary files a/public/media/faction/bonus/bonus7-3.png and /dev/null differ diff --git a/public/media/faction/data/diplomacy.png b/public/media/faction/data/diplomacy.png deleted file mode 100644 index 65218c2c5..000000000 Binary files a/public/media/faction/data/diplomacy.png and /dev/null differ diff --git a/public/media/faction/data/law.png b/public/media/faction/data/law.png deleted file mode 100644 index 4d1ad7a86..000000000 Binary files a/public/media/faction/data/law.png and /dev/null differ diff --git a/public/media/faction/data/tactical.png b/public/media/faction/data/tactical.png deleted file mode 100644 index 2118de0d6..000000000 Binary files a/public/media/faction/data/tactical.png and /dev/null differ diff --git a/public/media/faction/flag/flag-1.png b/public/media/faction/flag/flag-1.png deleted file mode 100755 index 22359dc45..000000000 Binary files a/public/media/faction/flag/flag-1.png and /dev/null differ diff --git a/public/media/faction/flag/flag-10.png b/public/media/faction/flag/flag-10.png deleted file mode 100644 index ef4bf06e4..000000000 Binary files a/public/media/faction/flag/flag-10.png and /dev/null differ diff --git a/public/media/faction/flag/flag-11.png b/public/media/faction/flag/flag-11.png deleted file mode 100644 index 1012c7945..000000000 Binary files a/public/media/faction/flag/flag-11.png and /dev/null differ diff --git a/public/media/faction/flag/flag-12.png b/public/media/faction/flag/flag-12.png deleted file mode 100644 index 777f3cf8a..000000000 Binary files a/public/media/faction/flag/flag-12.png and /dev/null differ diff --git a/public/media/faction/flag/flag-2.png b/public/media/faction/flag/flag-2.png deleted file mode 100755 index c4539db26..000000000 Binary files a/public/media/faction/flag/flag-2.png and /dev/null differ diff --git a/public/media/faction/flag/flag-3.png b/public/media/faction/flag/flag-3.png deleted file mode 100755 index bd3cc6b38..000000000 Binary files a/public/media/faction/flag/flag-3.png and /dev/null differ diff --git a/public/media/faction/flag/flag-4.png b/public/media/faction/flag/flag-4.png deleted file mode 100755 index 735e45c03..000000000 Binary files a/public/media/faction/flag/flag-4.png and /dev/null differ diff --git a/public/media/faction/flag/flag-5.png b/public/media/faction/flag/flag-5.png deleted file mode 100755 index be82968a1..000000000 Binary files a/public/media/faction/flag/flag-5.png and /dev/null differ diff --git a/public/media/faction/flag/flag-6.png b/public/media/faction/flag/flag-6.png deleted file mode 100755 index 79efab3de..000000000 Binary files a/public/media/faction/flag/flag-6.png and /dev/null differ diff --git a/public/media/faction/flag/flag-7.png b/public/media/faction/flag/flag-7.png deleted file mode 100755 index 2bf301658..000000000 Binary files a/public/media/faction/flag/flag-7.png and /dev/null differ diff --git a/public/media/faction/flag/flag-8.png b/public/media/faction/flag/flag-8.png deleted file mode 100644 index 57b846ee3..000000000 Binary files a/public/media/faction/flag/flag-8.png and /dev/null differ diff --git a/public/media/faction/flag/flag-9.png b/public/media/faction/flag/flag-9.png deleted file mode 100644 index e56172cef..000000000 Binary files a/public/media/faction/flag/flag-9.png and /dev/null differ diff --git a/public/media/faction/law/common.png b/public/media/faction/law/common.png deleted file mode 100644 index fe34c0328..000000000 Binary files a/public/media/faction/law/common.png and /dev/null differ diff --git a/public/media/faction/nav/data.png b/public/media/faction/nav/data.png deleted file mode 100644 index b63fbcef5..000000000 Binary files a/public/media/faction/nav/data.png and /dev/null differ diff --git a/public/media/faction/nav/election.png b/public/media/faction/nav/election.png deleted file mode 100755 index 7034444b1..000000000 Binary files a/public/media/faction/nav/election.png and /dev/null differ diff --git a/public/media/faction/nav/forum.png b/public/media/faction/nav/forum.png deleted file mode 100755 index 2a447eca9..000000000 Binary files a/public/media/faction/nav/forum.png and /dev/null differ diff --git a/public/media/faction/nav/government.png b/public/media/faction/nav/government.png deleted file mode 100755 index 23e92a698..000000000 Binary files a/public/media/faction/nav/government.png and /dev/null differ diff --git a/public/media/faction/nav/overview.png b/public/media/faction/nav/overview.png deleted file mode 100644 index 5566294d1..000000000 Binary files a/public/media/faction/nav/overview.png and /dev/null differ diff --git a/public/media/faction/nav/register.png b/public/media/faction/nav/register.png deleted file mode 100755 index 0741323d0..000000000 Binary files a/public/media/faction/nav/register.png and /dev/null differ diff --git a/public/media/favicon/color1.png b/public/media/favicon/color1.png deleted file mode 100755 index 767163891..000000000 Binary files a/public/media/favicon/color1.png and /dev/null differ diff --git a/public/media/favicon/color10.png b/public/media/favicon/color10.png deleted file mode 100644 index 80eb41078..000000000 Binary files a/public/media/favicon/color10.png and /dev/null differ diff --git a/public/media/favicon/color11.png b/public/media/favicon/color11.png deleted file mode 100644 index f9c240746..000000000 Binary files a/public/media/favicon/color11.png and /dev/null differ diff --git a/public/media/favicon/color12.png b/public/media/favicon/color12.png deleted file mode 100644 index 7c5df7f45..000000000 Binary files a/public/media/favicon/color12.png and /dev/null differ diff --git a/public/media/favicon/color2.png b/public/media/favicon/color2.png deleted file mode 100755 index 9b16142cc..000000000 Binary files a/public/media/favicon/color2.png and /dev/null differ diff --git a/public/media/favicon/color3.png b/public/media/favicon/color3.png deleted file mode 100755 index 7c5df7f45..000000000 Binary files a/public/media/favicon/color3.png and /dev/null differ diff --git a/public/media/favicon/color4.png b/public/media/favicon/color4.png deleted file mode 100755 index 3057e84bf..000000000 Binary files a/public/media/favicon/color4.png and /dev/null differ diff --git a/public/media/favicon/color5.png b/public/media/favicon/color5.png deleted file mode 100755 index f543c8dca..000000000 Binary files a/public/media/favicon/color5.png and /dev/null differ diff --git a/public/media/favicon/color6.png b/public/media/favicon/color6.png deleted file mode 100755 index 7fb900488..000000000 Binary files a/public/media/favicon/color6.png and /dev/null differ diff --git a/public/media/favicon/color7.png b/public/media/favicon/color7.png deleted file mode 100755 index eecabaa55..000000000 Binary files a/public/media/favicon/color7.png and /dev/null differ diff --git a/public/media/favicon/color8.png b/public/media/favicon/color8.png deleted file mode 100644 index 74ed3be4b..000000000 Binary files a/public/media/favicon/color8.png and /dev/null differ diff --git a/public/media/favicon/color9.png b/public/media/favicon/color9.png deleted file mode 100644 index f543c8dca..000000000 Binary files a/public/media/favicon/color9.png and /dev/null differ diff --git a/public/media/financial/commander.png b/public/media/financial/commander.png deleted file mode 100755 index 8f7175d70..000000000 Binary files a/public/media/financial/commander.png and /dev/null differ diff --git a/public/media/financial/commercial-route.png b/public/media/financial/commercial-route.png deleted file mode 100755 index 8cb0625a3..000000000 Binary files a/public/media/financial/commercial-route.png and /dev/null differ diff --git a/public/media/financial/fleet.png b/public/media/financial/fleet.png deleted file mode 100644 index cba9ff11e..000000000 Binary files a/public/media/financial/fleet.png and /dev/null differ diff --git a/public/media/financial/invest.png b/public/media/financial/invest.png deleted file mode 100755 index 740da4cf1..000000000 Binary files a/public/media/financial/invest.png and /dev/null differ diff --git a/public/media/financial/send-credit.png b/public/media/financial/send-credit.png deleted file mode 100755 index b9805e7a3..000000000 Binary files a/public/media/financial/send-credit.png and /dev/null differ diff --git a/public/media/financial/taxin.png b/public/media/financial/taxin.png deleted file mode 100755 index d15bc3983..000000000 Binary files a/public/media/financial/taxin.png and /dev/null differ diff --git a/public/media/financial/taxout.png b/public/media/financial/taxout.png deleted file mode 100755 index 76531a3eb..000000000 Binary files a/public/media/financial/taxout.png and /dev/null differ diff --git a/public/media/fleet/anchor.png b/public/media/fleet/anchor.png deleted file mode 100755 index 4171bbd2c..000000000 Binary files a/public/media/fleet/anchor.png and /dev/null differ diff --git a/public/media/fleet/archive.png b/public/media/fleet/archive.png deleted file mode 100755 index 10519dbdb..000000000 Binary files a/public/media/fleet/archive.png and /dev/null differ diff --git a/public/media/fleet/armies.png b/public/media/fleet/armies.png deleted file mode 100644 index 63cd215d9..000000000 Binary files a/public/media/fleet/armies.png and /dev/null differ diff --git a/public/media/fleet/back.png b/public/media/fleet/back.png deleted file mode 100755 index 7ae7260e2..000000000 Binary files a/public/media/fleet/back.png and /dev/null differ diff --git a/public/media/fleet/commanders.png b/public/media/fleet/commanders.png deleted file mode 100755 index 8f7175d70..000000000 Binary files a/public/media/fleet/commanders.png and /dev/null differ diff --git a/public/media/fleet/general-quarter.png b/public/media/fleet/general-quarter.png deleted file mode 100755 index 523af56ed..000000000 Binary files a/public/media/fleet/general-quarter.png and /dev/null differ diff --git a/public/media/fleet/loot.png b/public/media/fleet/loot.png deleted file mode 100755 index c9ecee6bb..000000000 Binary files a/public/media/fleet/loot.png and /dev/null differ diff --git a/public/media/fleet/memorial.png b/public/media/fleet/memorial.png deleted file mode 100755 index 401df6c12..000000000 Binary files a/public/media/fleet/memorial.png and /dev/null differ diff --git a/public/media/fleet/movement.png b/public/media/fleet/movement.png deleted file mode 100755 index 218fcea6b..000000000 Binary files a/public/media/fleet/movement.png and /dev/null differ diff --git a/public/media/fleet/spy.png b/public/media/fleet/spy.png deleted file mode 100755 index da9a6aa86..000000000 Binary files a/public/media/fleet/spy.png and /dev/null differ diff --git a/public/media/map/action/anchor.png b/public/media/map/action/anchor.png deleted file mode 100755 index 059c5bb70..000000000 Binary files a/public/media/map/action/anchor.png and /dev/null differ diff --git a/public/media/map/action/back.png b/public/media/map/action/back.png deleted file mode 100755 index bfacc3d08..000000000 Binary files a/public/media/map/action/back.png and /dev/null differ diff --git a/public/media/map/action/colo.png b/public/media/map/action/colo.png deleted file mode 100755 index 8021c4074..000000000 Binary files a/public/media/map/action/colo.png and /dev/null differ diff --git a/public/media/map/action/loot.png b/public/media/map/action/loot.png deleted file mode 100755 index dcd7fbc47..000000000 Binary files a/public/media/map/action/loot.png and /dev/null differ diff --git a/public/media/map/action/move.png b/public/media/map/action/move.png deleted file mode 100755 index b0310c0af..000000000 Binary files a/public/media/map/action/move.png and /dev/null differ diff --git a/public/media/map/action/ms.png b/public/media/map/action/ms.png deleted file mode 100755 index dca28b6fd..000000000 Binary files a/public/media/map/action/ms.png and /dev/null differ diff --git a/public/media/map/action/rc.png b/public/media/map/action/rc.png deleted file mode 100755 index 150f80083..000000000 Binary files a/public/media/map/action/rc.png and /dev/null differ diff --git a/public/media/map/action/shield-colo.png b/public/media/map/action/shield-colo.png deleted file mode 100755 index dc9838c82..000000000 Binary files a/public/media/map/action/shield-colo.png and /dev/null differ diff --git a/public/media/map/action/shield.png b/public/media/map/action/shield.png deleted file mode 100755 index 2d98ad4b2..000000000 Binary files a/public/media/map/action/shield.png and /dev/null differ diff --git a/public/media/map/action/spy.png b/public/media/map/action/spy.png deleted file mode 100755 index da9a6aa86..000000000 Binary files a/public/media/map/action/spy.png and /dev/null differ diff --git a/public/media/map/fleet/army-away.png b/public/media/map/fleet/army-away.png deleted file mode 100755 index eaf3a599d..000000000 Binary files a/public/media/map/fleet/army-away.png and /dev/null differ diff --git a/public/media/map/fleet/army-empty.png b/public/media/map/fleet/army-empty.png deleted file mode 100755 index aacbd8468..000000000 Binary files a/public/media/map/fleet/army-empty.png and /dev/null differ diff --git a/public/media/map/fleet/army-unknow.png b/public/media/map/fleet/army-unknow.png deleted file mode 100755 index 0480fa2ec..000000000 Binary files a/public/media/map/fleet/army-unknow.png and /dev/null differ diff --git a/public/media/map/fleet/army.png b/public/media/map/fleet/army.png deleted file mode 100755 index 362fbfb20..000000000 Binary files a/public/media/map/fleet/army.png and /dev/null differ diff --git a/public/media/map/fleet/emtpy.png b/public/media/map/fleet/emtpy.png deleted file mode 100755 index 0b88458e4..000000000 Binary files a/public/media/map/fleet/emtpy.png and /dev/null differ diff --git a/public/media/map/fleet/fleet1.png b/public/media/map/fleet/fleet1.png deleted file mode 100755 index 56c800f34..000000000 Binary files a/public/media/map/fleet/fleet1.png and /dev/null differ diff --git a/public/media/map/fleet/fleet2.png b/public/media/map/fleet/fleet2.png deleted file mode 100755 index cb4cf7a77..000000000 Binary files a/public/media/map/fleet/fleet2.png and /dev/null differ diff --git a/public/media/map/fleet/fleet3.png b/public/media/map/fleet/fleet3.png deleted file mode 100755 index 46bab42fe..000000000 Binary files a/public/media/map/fleet/fleet3.png and /dev/null differ diff --git a/public/media/map/fleet/full.png b/public/media/map/fleet/full.png deleted file mode 100755 index 46bab42fe..000000000 Binary files a/public/media/map/fleet/full.png and /dev/null differ diff --git a/public/media/map/fleet/full.psd b/public/media/map/fleet/full.psd deleted file mode 100755 index ce1f074d2..000000000 Binary files a/public/media/map/fleet/full.psd and /dev/null differ diff --git a/public/media/map/fleet/ship-reversed.png b/public/media/map/fleet/ship-reversed.png deleted file mode 100755 index 9d5836e47..000000000 Binary files a/public/media/map/fleet/ship-reversed.png and /dev/null differ diff --git a/public/media/map/fleet/ship.png b/public/media/map/fleet/ship.png deleted file mode 100755 index bd9818117..000000000 Binary files a/public/media/map/fleet/ship.png and /dev/null differ diff --git a/public/media/map/option/info.png b/public/media/map/option/info.png deleted file mode 100755 index 7c91e5ff9..000000000 Binary files a/public/media/map/option/info.png and /dev/null differ diff --git a/public/media/map/option/market.png b/public/media/map/option/market.png deleted file mode 100755 index 5a3886858..000000000 Binary files a/public/media/map/option/market.png and /dev/null differ diff --git a/public/media/map/option/minimap.png b/public/media/map/option/minimap.png deleted file mode 100755 index 5191cc044..000000000 Binary files a/public/media/map/option/minimap.png and /dev/null differ diff --git a/public/media/map/option/radio.png b/public/media/map/option/radio.png deleted file mode 100755 index 8578992b1..000000000 Binary files a/public/media/map/option/radio.png and /dev/null differ diff --git a/public/media/map/option/rank.png b/public/media/map/option/rank.png deleted file mode 100755 index bc3f07014..000000000 Binary files a/public/media/map/option/rank.png and /dev/null differ diff --git a/public/media/map/option/stats.png b/public/media/map/option/stats.png deleted file mode 100755 index 7b999503f..000000000 Binary files a/public/media/map/option/stats.png and /dev/null differ diff --git a/public/media/map/place/place1-1.png b/public/media/map/place/place1-1.png deleted file mode 100755 index f7444f279..000000000 Binary files a/public/media/map/place/place1-1.png and /dev/null differ diff --git a/public/media/map/place/place1-2.png b/public/media/map/place/place1-2.png deleted file mode 100755 index 5571c03de..000000000 Binary files a/public/media/map/place/place1-2.png and /dev/null differ diff --git a/public/media/map/place/place1-3.png b/public/media/map/place/place1-3.png deleted file mode 100755 index 3608fe759..000000000 Binary files a/public/media/map/place/place1-3.png and /dev/null differ diff --git a/public/media/map/place/place2-1.png b/public/media/map/place/place2-1.png deleted file mode 100644 index 530002d33..000000000 Binary files a/public/media/map/place/place2-1.png and /dev/null differ diff --git a/public/media/map/place/place2-2.png b/public/media/map/place/place2-2.png deleted file mode 100644 index 530002d33..000000000 Binary files a/public/media/map/place/place2-2.png and /dev/null differ diff --git a/public/media/map/place/place2-3.png b/public/media/map/place/place2-3.png deleted file mode 100644 index 530002d33..000000000 Binary files a/public/media/map/place/place2-3.png and /dev/null differ diff --git a/public/media/map/place/place3-1.png b/public/media/map/place/place3-1.png deleted file mode 100644 index 99e379e7b..000000000 Binary files a/public/media/map/place/place3-1.png and /dev/null differ diff --git a/public/media/map/place/place3-2.png b/public/media/map/place/place3-2.png deleted file mode 100644 index 021114fde..000000000 Binary files a/public/media/map/place/place3-2.png and /dev/null differ diff --git a/public/media/map/place/place3-3.png b/public/media/map/place/place3-3.png deleted file mode 100644 index 0ac4ad7dc..000000000 Binary files a/public/media/map/place/place3-3.png and /dev/null differ diff --git a/public/media/map/place/place4-1.png b/public/media/map/place/place4-1.png deleted file mode 100644 index 12045f981..000000000 Binary files a/public/media/map/place/place4-1.png and /dev/null differ diff --git a/public/media/map/place/place4-2.png b/public/media/map/place/place4-2.png deleted file mode 100644 index da685bcf1..000000000 Binary files a/public/media/map/place/place4-2.png and /dev/null differ diff --git a/public/media/map/place/place4-3.png b/public/media/map/place/place4-3.png deleted file mode 100644 index 49dccc82c..000000000 Binary files a/public/media/map/place/place4-3.png and /dev/null differ diff --git a/public/media/map/place/place5-1.png b/public/media/map/place/place5-1.png deleted file mode 100644 index a0b98ee15..000000000 Binary files a/public/media/map/place/place5-1.png and /dev/null differ diff --git a/public/media/map/place/place5-2.png b/public/media/map/place/place5-2.png deleted file mode 100644 index 63dc8dc6d..000000000 Binary files a/public/media/map/place/place5-2.png and /dev/null differ diff --git a/public/media/map/place/place5-3.png b/public/media/map/place/place5-3.png deleted file mode 100644 index 187af03d4..000000000 Binary files a/public/media/map/place/place5-3.png and /dev/null differ diff --git a/public/media/map/place/place6-1.png b/public/media/map/place/place6-1.png deleted file mode 100644 index 4cab948cd..000000000 Binary files a/public/media/map/place/place6-1.png and /dev/null differ diff --git a/public/media/map/place/place6-2.png b/public/media/map/place/place6-2.png deleted file mode 100644 index 4cab948cd..000000000 Binary files a/public/media/map/place/place6-2.png and /dev/null differ diff --git a/public/media/map/place/place6-3.png b/public/media/map/place/place6-3.png deleted file mode 100644 index 4cab948cd..000000000 Binary files a/public/media/map/place/place6-3.png and /dev/null differ diff --git a/public/media/map/spy/last-spy.png b/public/media/map/spy/last-spy.png deleted file mode 100755 index d50d7e1bc..000000000 Binary files a/public/media/map/spy/last-spy.png and /dev/null differ diff --git a/public/media/map/systems/source.psd b/public/media/map/systems/source.psd deleted file mode 100755 index f3da5839a..000000000 Binary files a/public/media/map/systems/source.psd and /dev/null differ diff --git a/public/media/map/systems/t1c0.png b/public/media/map/systems/t1c0.png deleted file mode 100755 index af2ef657b..000000000 Binary files a/public/media/map/systems/t1c0.png and /dev/null differ diff --git a/public/media/map/systems/t1c1.png b/public/media/map/systems/t1c1.png deleted file mode 100755 index fe6569894..000000000 Binary files a/public/media/map/systems/t1c1.png and /dev/null differ diff --git a/public/media/map/systems/t1c10.png b/public/media/map/systems/t1c10.png deleted file mode 100644 index 6f7eec45c..000000000 Binary files a/public/media/map/systems/t1c10.png and /dev/null differ diff --git a/public/media/map/systems/t1c11.png b/public/media/map/systems/t1c11.png deleted file mode 100644 index ca531afea..000000000 Binary files a/public/media/map/systems/t1c11.png and /dev/null differ diff --git a/public/media/map/systems/t1c12.png b/public/media/map/systems/t1c12.png deleted file mode 100644 index 077986bd7..000000000 Binary files a/public/media/map/systems/t1c12.png and /dev/null differ diff --git a/public/media/map/systems/t1c2.png b/public/media/map/systems/t1c2.png deleted file mode 100755 index 21c1ca386..000000000 Binary files a/public/media/map/systems/t1c2.png and /dev/null differ diff --git a/public/media/map/systems/t1c3.png b/public/media/map/systems/t1c3.png deleted file mode 100755 index 077986bd7..000000000 Binary files a/public/media/map/systems/t1c3.png and /dev/null differ diff --git a/public/media/map/systems/t1c4.png b/public/media/map/systems/t1c4.png deleted file mode 100755 index a2e1a6f95..000000000 Binary files a/public/media/map/systems/t1c4.png and /dev/null differ diff --git a/public/media/map/systems/t1c5.png b/public/media/map/systems/t1c5.png deleted file mode 100755 index af95e7d52..000000000 Binary files a/public/media/map/systems/t1c5.png and /dev/null differ diff --git a/public/media/map/systems/t1c6.png b/public/media/map/systems/t1c6.png deleted file mode 100755 index 8fd1c11a1..000000000 Binary files a/public/media/map/systems/t1c6.png and /dev/null differ diff --git a/public/media/map/systems/t1c7.png b/public/media/map/systems/t1c7.png deleted file mode 100755 index 95172f4ab..000000000 Binary files a/public/media/map/systems/t1c7.png and /dev/null differ diff --git a/public/media/map/systems/t1c8.png b/public/media/map/systems/t1c8.png deleted file mode 100644 index b533cde43..000000000 Binary files a/public/media/map/systems/t1c8.png and /dev/null differ diff --git a/public/media/map/systems/t1c9.png b/public/media/map/systems/t1c9.png deleted file mode 100644 index af95e7d52..000000000 Binary files a/public/media/map/systems/t1c9.png and /dev/null differ diff --git a/public/media/map/systems/t2c0.png b/public/media/map/systems/t2c0.png deleted file mode 100755 index 1db976f4a..000000000 Binary files a/public/media/map/systems/t2c0.png and /dev/null differ diff --git a/public/media/map/systems/t2c1.png b/public/media/map/systems/t2c1.png deleted file mode 100755 index 4338a36e9..000000000 Binary files a/public/media/map/systems/t2c1.png and /dev/null differ diff --git a/public/media/map/systems/t2c10.png b/public/media/map/systems/t2c10.png deleted file mode 100644 index 27b6bccf0..000000000 Binary files a/public/media/map/systems/t2c10.png and /dev/null differ diff --git a/public/media/map/systems/t2c11.png b/public/media/map/systems/t2c11.png deleted file mode 100644 index 2d3565be0..000000000 Binary files a/public/media/map/systems/t2c11.png and /dev/null differ diff --git a/public/media/map/systems/t2c12.png b/public/media/map/systems/t2c12.png deleted file mode 100644 index 1f71ab85b..000000000 Binary files a/public/media/map/systems/t2c12.png and /dev/null differ diff --git a/public/media/map/systems/t2c2.png b/public/media/map/systems/t2c2.png deleted file mode 100755 index 2d0c0a1b8..000000000 Binary files a/public/media/map/systems/t2c2.png and /dev/null differ diff --git a/public/media/map/systems/t2c3.png b/public/media/map/systems/t2c3.png deleted file mode 100755 index 1f71ab85b..000000000 Binary files a/public/media/map/systems/t2c3.png and /dev/null differ diff --git a/public/media/map/systems/t2c4.png b/public/media/map/systems/t2c4.png deleted file mode 100755 index d29fc4933..000000000 Binary files a/public/media/map/systems/t2c4.png and /dev/null differ diff --git a/public/media/map/systems/t2c5.png b/public/media/map/systems/t2c5.png deleted file mode 100755 index 6a20c564c..000000000 Binary files a/public/media/map/systems/t2c5.png and /dev/null differ diff --git a/public/media/map/systems/t2c6.png b/public/media/map/systems/t2c6.png deleted file mode 100755 index 89a438a7f..000000000 Binary files a/public/media/map/systems/t2c6.png and /dev/null differ diff --git a/public/media/map/systems/t2c7.png b/public/media/map/systems/t2c7.png deleted file mode 100755 index 56a135b45..000000000 Binary files a/public/media/map/systems/t2c7.png and /dev/null differ diff --git a/public/media/map/systems/t2c8.png b/public/media/map/systems/t2c8.png deleted file mode 100644 index 81a8a0c81..000000000 Binary files a/public/media/map/systems/t2c8.png and /dev/null differ diff --git a/public/media/map/systems/t2c9.png b/public/media/map/systems/t2c9.png deleted file mode 100644 index 6a20c564c..000000000 Binary files a/public/media/map/systems/t2c9.png and /dev/null differ diff --git a/public/media/map/systems/t3c0.png b/public/media/map/systems/t3c0.png deleted file mode 100755 index a6345792b..000000000 Binary files a/public/media/map/systems/t3c0.png and /dev/null differ diff --git a/public/media/map/systems/t3c1.png b/public/media/map/systems/t3c1.png deleted file mode 100755 index 54f67aceb..000000000 Binary files a/public/media/map/systems/t3c1.png and /dev/null differ diff --git a/public/media/map/systems/t3c10.png b/public/media/map/systems/t3c10.png deleted file mode 100644 index e170a15f6..000000000 Binary files a/public/media/map/systems/t3c10.png and /dev/null differ diff --git a/public/media/map/systems/t3c11.png b/public/media/map/systems/t3c11.png deleted file mode 100644 index 7c06e1044..000000000 Binary files a/public/media/map/systems/t3c11.png and /dev/null differ diff --git a/public/media/map/systems/t3c12.png b/public/media/map/systems/t3c12.png deleted file mode 100644 index d30ac44b8..000000000 Binary files a/public/media/map/systems/t3c12.png and /dev/null differ diff --git a/public/media/map/systems/t3c2.png b/public/media/map/systems/t3c2.png deleted file mode 100755 index f3889de4a..000000000 Binary files a/public/media/map/systems/t3c2.png and /dev/null differ diff --git a/public/media/map/systems/t3c3.png b/public/media/map/systems/t3c3.png deleted file mode 100755 index d30ac44b8..000000000 Binary files a/public/media/map/systems/t3c3.png and /dev/null differ diff --git a/public/media/map/systems/t3c4.png b/public/media/map/systems/t3c4.png deleted file mode 100755 index 598bea532..000000000 Binary files a/public/media/map/systems/t3c4.png and /dev/null differ diff --git a/public/media/map/systems/t3c5.png b/public/media/map/systems/t3c5.png deleted file mode 100755 index 4d55ae19d..000000000 Binary files a/public/media/map/systems/t3c5.png and /dev/null differ diff --git a/public/media/map/systems/t3c6.png b/public/media/map/systems/t3c6.png deleted file mode 100755 index 60c5239a8..000000000 Binary files a/public/media/map/systems/t3c6.png and /dev/null differ diff --git a/public/media/map/systems/t3c7.png b/public/media/map/systems/t3c7.png deleted file mode 100755 index 13bb57acd..000000000 Binary files a/public/media/map/systems/t3c7.png and /dev/null differ diff --git a/public/media/map/systems/t3c8.png b/public/media/map/systems/t3c8.png deleted file mode 100644 index 6b0108fb9..000000000 Binary files a/public/media/map/systems/t3c8.png and /dev/null differ diff --git a/public/media/map/systems/t3c9.png b/public/media/map/systems/t3c9.png deleted file mode 100644 index 4d55ae19d..000000000 Binary files a/public/media/map/systems/t3c9.png and /dev/null differ diff --git a/public/media/map/systems/t4c0.png b/public/media/map/systems/t4c0.png deleted file mode 100755 index 68a485081..000000000 Binary files a/public/media/map/systems/t4c0.png and /dev/null differ diff --git a/public/media/map/systems/t4c1.png b/public/media/map/systems/t4c1.png deleted file mode 100755 index 24ccb2dc6..000000000 Binary files a/public/media/map/systems/t4c1.png and /dev/null differ diff --git a/public/media/map/systems/t4c10.png b/public/media/map/systems/t4c10.png deleted file mode 100644 index 1276318d2..000000000 Binary files a/public/media/map/systems/t4c10.png and /dev/null differ diff --git a/public/media/map/systems/t4c11.png b/public/media/map/systems/t4c11.png deleted file mode 100644 index 47c21d3de..000000000 Binary files a/public/media/map/systems/t4c11.png and /dev/null differ diff --git a/public/media/map/systems/t4c12.png b/public/media/map/systems/t4c12.png deleted file mode 100644 index af46cc87c..000000000 Binary files a/public/media/map/systems/t4c12.png and /dev/null differ diff --git a/public/media/map/systems/t4c2.png b/public/media/map/systems/t4c2.png deleted file mode 100755 index b90db241f..000000000 Binary files a/public/media/map/systems/t4c2.png and /dev/null differ diff --git a/public/media/map/systems/t4c3.png b/public/media/map/systems/t4c3.png deleted file mode 100755 index af46cc87c..000000000 Binary files a/public/media/map/systems/t4c3.png and /dev/null differ diff --git a/public/media/map/systems/t4c4.png b/public/media/map/systems/t4c4.png deleted file mode 100755 index 11ddf2fa4..000000000 Binary files a/public/media/map/systems/t4c4.png and /dev/null differ diff --git a/public/media/map/systems/t4c5.png b/public/media/map/systems/t4c5.png deleted file mode 100755 index 63d42ff97..000000000 Binary files a/public/media/map/systems/t4c5.png and /dev/null differ diff --git a/public/media/map/systems/t4c6.png b/public/media/map/systems/t4c6.png deleted file mode 100755 index 55c229218..000000000 Binary files a/public/media/map/systems/t4c6.png and /dev/null differ diff --git a/public/media/map/systems/t4c7.png b/public/media/map/systems/t4c7.png deleted file mode 100755 index 8da9afcea..000000000 Binary files a/public/media/map/systems/t4c7.png and /dev/null differ diff --git a/public/media/map/systems/t4c8.png b/public/media/map/systems/t4c8.png deleted file mode 100644 index 34981d11c..000000000 Binary files a/public/media/map/systems/t4c8.png and /dev/null differ diff --git a/public/media/map/systems/t4c9.png b/public/media/map/systems/t4c9.png deleted file mode 100644 index 63d42ff97..000000000 Binary files a/public/media/map/systems/t4c9.png and /dev/null differ diff --git a/public/media/map/systems/t5c0.png b/public/media/map/systems/t5c0.png deleted file mode 100755 index 0d26abeef..000000000 Binary files a/public/media/map/systems/t5c0.png and /dev/null differ diff --git a/public/media/map/systems/t5c1.png b/public/media/map/systems/t5c1.png deleted file mode 100755 index adacfa4c1..000000000 Binary files a/public/media/map/systems/t5c1.png and /dev/null differ diff --git a/public/media/map/systems/t5c10.png b/public/media/map/systems/t5c10.png deleted file mode 100644 index 96986eae6..000000000 Binary files a/public/media/map/systems/t5c10.png and /dev/null differ diff --git a/public/media/map/systems/t5c11.png b/public/media/map/systems/t5c11.png deleted file mode 100644 index 42b4c7f8f..000000000 Binary files a/public/media/map/systems/t5c11.png and /dev/null differ diff --git a/public/media/map/systems/t5c12.png b/public/media/map/systems/t5c12.png deleted file mode 100644 index 5a907c128..000000000 Binary files a/public/media/map/systems/t5c12.png and /dev/null differ diff --git a/public/media/map/systems/t5c2.png b/public/media/map/systems/t5c2.png deleted file mode 100755 index 21e757764..000000000 Binary files a/public/media/map/systems/t5c2.png and /dev/null differ diff --git a/public/media/map/systems/t5c3.png b/public/media/map/systems/t5c3.png deleted file mode 100755 index 5a907c128..000000000 Binary files a/public/media/map/systems/t5c3.png and /dev/null differ diff --git a/public/media/map/systems/t5c4.png b/public/media/map/systems/t5c4.png deleted file mode 100755 index b9f13eead..000000000 Binary files a/public/media/map/systems/t5c4.png and /dev/null differ diff --git a/public/media/map/systems/t5c5.png b/public/media/map/systems/t5c5.png deleted file mode 100755 index 644745b17..000000000 Binary files a/public/media/map/systems/t5c5.png and /dev/null differ diff --git a/public/media/map/systems/t5c6.png b/public/media/map/systems/t5c6.png deleted file mode 100755 index f576f7102..000000000 Binary files a/public/media/map/systems/t5c6.png and /dev/null differ diff --git a/public/media/map/systems/t5c7.png b/public/media/map/systems/t5c7.png deleted file mode 100755 index f8a8aa9b5..000000000 Binary files a/public/media/map/systems/t5c7.png and /dev/null differ diff --git a/public/media/map/systems/t5c8.png b/public/media/map/systems/t5c8.png deleted file mode 100644 index a644fc276..000000000 Binary files a/public/media/map/systems/t5c8.png and /dev/null differ diff --git a/public/media/map/systems/t5c9.png b/public/media/map/systems/t5c9.png deleted file mode 100644 index 644745b17..000000000 Binary files a/public/media/map/systems/t5c9.png and /dev/null differ diff --git a/public/media/market/resources-pack-1.png b/public/media/market/resources-pack-1.png deleted file mode 100755 index 485794356..000000000 Binary files a/public/media/market/resources-pack-1.png and /dev/null differ diff --git a/public/media/market/resources-pack-2.png b/public/media/market/resources-pack-2.png deleted file mode 100755 index 4990e55b1..000000000 Binary files a/public/media/market/resources-pack-2.png and /dev/null differ diff --git a/public/media/market/resources-pack-3.png b/public/media/market/resources-pack-3.png deleted file mode 100755 index ed90681c5..000000000 Binary files a/public/media/market/resources-pack-3.png and /dev/null differ diff --git a/public/media/market/resources-pack-4.png b/public/media/market/resources-pack-4.png deleted file mode 100755 index 07c7e8adc..000000000 Binary files a/public/media/market/resources-pack-4.png and /dev/null differ diff --git a/public/media/market/resources-pack-5.png b/public/media/market/resources-pack-5.png deleted file mode 100755 index 9b9ad2517..000000000 Binary files a/public/media/market/resources-pack-5.png and /dev/null differ diff --git a/public/media/orbitalbase/antispy.png b/public/media/orbitalbase/antispy.png deleted file mode 100755 index 753289f2c..000000000 Binary files a/public/media/orbitalbase/antispy.png and /dev/null differ diff --git a/public/media/orbitalbase/base-type-0.jpg b/public/media/orbitalbase/base-type-0.jpg deleted file mode 100755 index f725b40f7..000000000 Binary files a/public/media/orbitalbase/base-type-0.jpg and /dev/null differ diff --git a/public/media/orbitalbase/base-type-1.jpg b/public/media/orbitalbase/base-type-1.jpg deleted file mode 100755 index 546545092..000000000 Binary files a/public/media/orbitalbase/base-type-1.jpg and /dev/null differ diff --git a/public/media/orbitalbase/base-type-2.jpg b/public/media/orbitalbase/base-type-2.jpg deleted file mode 100755 index 169e3e809..000000000 Binary files a/public/media/orbitalbase/base-type-2.jpg and /dev/null differ diff --git a/public/media/orbitalbase/base-type-3.jpg b/public/media/orbitalbase/base-type-3.jpg deleted file mode 100755 index fb4004778..000000000 Binary files a/public/media/orbitalbase/base-type-3.jpg and /dev/null differ diff --git a/public/media/orbitalbase/commercialplateforme.png b/public/media/orbitalbase/commercialplateforme.png deleted file mode 100644 index 877b2d3bf..000000000 Binary files a/public/media/orbitalbase/commercialplateforme.png and /dev/null differ diff --git a/public/media/orbitalbase/dock1.png b/public/media/orbitalbase/dock1.png deleted file mode 100755 index a75eec544..000000000 Binary files a/public/media/orbitalbase/dock1.png and /dev/null differ diff --git a/public/media/orbitalbase/dock2.png b/public/media/orbitalbase/dock2.png deleted file mode 100755 index eddd59ca9..000000000 Binary files a/public/media/orbitalbase/dock2.png and /dev/null differ diff --git a/public/media/orbitalbase/generator.png b/public/media/orbitalbase/generator.png deleted file mode 100755 index 2fb41c6fd..000000000 Binary files a/public/media/orbitalbase/generator.png and /dev/null differ diff --git a/public/media/orbitalbase/orbitalbase.png b/public/media/orbitalbase/orbitalbase.png deleted file mode 100755 index bf279b3be..000000000 Binary files a/public/media/orbitalbase/orbitalbase.png and /dev/null differ diff --git a/public/media/orbitalbase/place1-1.png b/public/media/orbitalbase/place1-1.png deleted file mode 100755 index daf9ca3f8..000000000 Binary files a/public/media/orbitalbase/place1-1.png and /dev/null differ diff --git a/public/media/orbitalbase/place1-2.png b/public/media/orbitalbase/place1-2.png deleted file mode 100755 index 9bec2a790..000000000 Binary files a/public/media/orbitalbase/place1-2.png and /dev/null differ diff --git a/public/media/orbitalbase/place1-3.png b/public/media/orbitalbase/place1-3.png deleted file mode 100755 index fabc03a87..000000000 Binary files a/public/media/orbitalbase/place1-3.png and /dev/null differ diff --git a/public/media/orbitalbase/planet.png b/public/media/orbitalbase/planet.png deleted file mode 100755 index 9327fc849..000000000 Binary files a/public/media/orbitalbase/planet.png and /dev/null differ diff --git a/public/media/orbitalbase/recycler.png b/public/media/orbitalbase/recycler.png deleted file mode 100644 index a868a089a..000000000 Binary files a/public/media/orbitalbase/recycler.png and /dev/null differ diff --git a/public/media/orbitalbase/recycling.png b/public/media/orbitalbase/recycling.png deleted file mode 100644 index cd7d978fd..000000000 Binary files a/public/media/orbitalbase/recycling.png and /dev/null differ diff --git a/public/media/orbitalbase/refinery.png b/public/media/orbitalbase/refinery.png deleted file mode 100755 index 58240a57f..000000000 Binary files a/public/media/orbitalbase/refinery.png and /dev/null differ diff --git a/public/media/orbitalbase/school.png b/public/media/orbitalbase/school.png deleted file mode 100755 index a204eb835..000000000 Binary files a/public/media/orbitalbase/school.png and /dev/null differ diff --git a/public/media/orbitalbase/situation.png b/public/media/orbitalbase/situation.png deleted file mode 100755 index 09b5201b7..000000000 Binary files a/public/media/orbitalbase/situation.png and /dev/null differ diff --git a/public/media/orbitalbase/spatioport.png b/public/media/orbitalbase/spatioport.png deleted file mode 100755 index 8cb0625a3..000000000 Binary files a/public/media/orbitalbase/spatioport.png and /dev/null differ diff --git a/public/media/orbitalbase/storage.png b/public/media/orbitalbase/storage.png deleted file mode 100644 index e4f55adf8..000000000 Binary files a/public/media/orbitalbase/storage.png and /dev/null differ diff --git a/public/media/orbitalbase/technosphere.png b/public/media/orbitalbase/technosphere.png deleted file mode 100755 index c250979c8..000000000 Binary files a/public/media/orbitalbase/technosphere.png and /dev/null differ diff --git a/public/media/orbitalbase/university.png b/public/media/orbitalbase/university.png deleted file mode 100755 index 093809947..000000000 Binary files a/public/media/orbitalbase/university.png and /dev/null differ diff --git a/public/media/profil/diary.png b/public/media/profil/diary.png deleted file mode 100755 index 538408780..000000000 Binary files a/public/media/profil/diary.png and /dev/null differ diff --git a/public/media/profil/profil.png b/public/media/profil/profil.png deleted file mode 100755 index 33e8966a1..000000000 Binary files a/public/media/profil/profil.png and /dev/null differ diff --git a/public/media/rank/cup.png b/public/media/rank/cup.png deleted file mode 100755 index a3fd7a866..000000000 Binary files a/public/media/rank/cup.png and /dev/null differ diff --git a/public/media/rank/faction.png b/public/media/rank/faction.png deleted file mode 100755 index 09521ce07..000000000 Binary files a/public/media/rank/faction.png and /dev/null differ diff --git a/public/media/rank/player.png b/public/media/rank/player.png deleted file mode 100755 index edb50b3e2..000000000 Binary files a/public/media/rank/player.png and /dev/null differ diff --git a/public/media/resources/attack.png b/public/media/resources/attack.png deleted file mode 100755 index d1e22aad3..000000000 Binary files a/public/media/resources/attack.png and /dev/null differ diff --git a/public/media/resources/check.png b/public/media/resources/check.png deleted file mode 100755 index f2b26efa1..000000000 Binary files a/public/media/resources/check.png and /dev/null differ diff --git a/public/media/resources/credit.png b/public/media/resources/credit.png deleted file mode 100755 index 80b5a606d..000000000 Binary files a/public/media/resources/credit.png and /dev/null differ diff --git a/public/media/resources/defense.png b/public/media/resources/defense.png deleted file mode 100755 index f41bd02bf..000000000 Binary files a/public/media/resources/defense.png and /dev/null differ diff --git a/public/media/resources/life.png b/public/media/resources/life.png deleted file mode 100755 index 8c0a576c0..000000000 Binary files a/public/media/resources/life.png and /dev/null differ diff --git a/public/media/resources/pa.png b/public/media/resources/pa.png deleted file mode 100755 index 03e08567f..000000000 Binary files a/public/media/resources/pa.png and /dev/null differ diff --git a/public/media/resources/pev.png b/public/media/resources/pev.png deleted file mode 100755 index 975f3a5cb..000000000 Binary files a/public/media/resources/pev.png and /dev/null differ diff --git a/public/media/resources/population.png b/public/media/resources/population.png deleted file mode 100644 index e0a54528a..000000000 Binary files a/public/media/resources/population.png and /dev/null differ diff --git a/public/media/resources/rate.png b/public/media/resources/rate.png deleted file mode 100755 index 0a5e6834f..000000000 Binary files a/public/media/resources/rate.png and /dev/null differ diff --git a/public/media/resources/resource.png b/public/media/resources/resource.png deleted file mode 100755 index 1194197ae..000000000 Binary files a/public/media/resources/resource.png and /dev/null differ diff --git a/public/media/resources/science.png b/public/media/resources/science.png deleted file mode 100644 index a205c9055..000000000 Binary files a/public/media/resources/science.png and /dev/null differ diff --git a/public/media/resources/speed.png b/public/media/resources/speed.png deleted file mode 100755 index cf3b18070..000000000 Binary files a/public/media/resources/speed.png and /dev/null differ diff --git a/public/media/resources/time.png b/public/media/resources/time.png deleted file mode 100755 index f74582b3a..000000000 Binary files a/public/media/resources/time.png and /dev/null differ diff --git a/public/media/resources/transport.png b/public/media/resources/transport.png deleted file mode 100755 index 64e74761f..000000000 Binary files a/public/media/resources/transport.png and /dev/null differ diff --git a/public/media/resources/xp.png b/public/media/resources/xp.png deleted file mode 100755 index 2623c7b60..000000000 Binary files a/public/media/resources/xp.png and /dev/null differ diff --git a/public/media/school/school-0.png b/public/media/school/school-0.png deleted file mode 100755 index f78852eca..000000000 Binary files a/public/media/school/school-0.png and /dev/null differ diff --git a/public/media/school/school-1.png b/public/media/school/school-1.png deleted file mode 100755 index 0c18a4a53..000000000 Binary files a/public/media/school/school-1.png and /dev/null differ diff --git a/public/media/school/school-2.png b/public/media/school/school-2.png deleted file mode 100755 index d053d2227..000000000 Binary files a/public/media/school/school-2.png and /dev/null differ diff --git a/public/media/ship/img/01-01.png b/public/media/ship/img/01-01.png deleted file mode 100755 index 69694a71e..000000000 Binary files a/public/media/ship/img/01-01.png and /dev/null differ diff --git a/public/media/ship/img/01-02.png b/public/media/ship/img/01-02.png deleted file mode 100755 index 7e752bc23..000000000 Binary files a/public/media/ship/img/01-02.png and /dev/null differ diff --git a/public/media/ship/img/01-03.png b/public/media/ship/img/01-03.png deleted file mode 100755 index 583cfc676..000000000 Binary files a/public/media/ship/img/01-03.png and /dev/null differ diff --git a/public/media/ship/img/01-04.png b/public/media/ship/img/01-04.png deleted file mode 100755 index 7d9b6fc6c..000000000 Binary files a/public/media/ship/img/01-04.png and /dev/null differ diff --git a/public/media/ship/img/01-05.png b/public/media/ship/img/01-05.png deleted file mode 100755 index 9943abc3d..000000000 Binary files a/public/media/ship/img/01-05.png and /dev/null differ diff --git a/public/media/ship/img/01-06.png b/public/media/ship/img/01-06.png deleted file mode 100755 index a550fa343..000000000 Binary files a/public/media/ship/img/01-06.png and /dev/null differ diff --git a/public/media/ship/img/01-07.png b/public/media/ship/img/01-07.png deleted file mode 100755 index e86754245..000000000 Binary files a/public/media/ship/img/01-07.png and /dev/null differ diff --git a/public/media/ship/img/01-08.png b/public/media/ship/img/01-08.png deleted file mode 100644 index 050a57625..000000000 Binary files a/public/media/ship/img/01-08.png and /dev/null differ diff --git a/public/media/ship/img/01-09.png b/public/media/ship/img/01-09.png deleted file mode 100644 index 9943abc3d..000000000 Binary files a/public/media/ship/img/01-09.png and /dev/null differ diff --git a/public/media/ship/img/01-10.png b/public/media/ship/img/01-10.png deleted file mode 100644 index b0445861b..000000000 Binary files a/public/media/ship/img/01-10.png and /dev/null differ diff --git a/public/media/ship/img/01-11.png b/public/media/ship/img/01-11.png deleted file mode 100644 index 818177a9e..000000000 Binary files a/public/media/ship/img/01-11.png and /dev/null differ diff --git a/public/media/ship/img/01-12.png b/public/media/ship/img/01-12.png deleted file mode 100644 index 583cfc676..000000000 Binary files a/public/media/ship/img/01-12.png and /dev/null differ diff --git a/public/media/ship/img/02-01.png b/public/media/ship/img/02-01.png deleted file mode 100755 index c701b210f..000000000 Binary files a/public/media/ship/img/02-01.png and /dev/null differ diff --git a/public/media/ship/img/02-02.png b/public/media/ship/img/02-02.png deleted file mode 100755 index ecdb79095..000000000 Binary files a/public/media/ship/img/02-02.png and /dev/null differ diff --git a/public/media/ship/img/02-03.png b/public/media/ship/img/02-03.png deleted file mode 100755 index c8b2eadc9..000000000 Binary files a/public/media/ship/img/02-03.png and /dev/null differ diff --git a/public/media/ship/img/02-04.png b/public/media/ship/img/02-04.png deleted file mode 100755 index fd5c4f338..000000000 Binary files a/public/media/ship/img/02-04.png and /dev/null differ diff --git a/public/media/ship/img/02-05.png b/public/media/ship/img/02-05.png deleted file mode 100755 index 897f5d716..000000000 Binary files a/public/media/ship/img/02-05.png and /dev/null differ diff --git a/public/media/ship/img/02-06.png b/public/media/ship/img/02-06.png deleted file mode 100755 index df8ac734c..000000000 Binary files a/public/media/ship/img/02-06.png and /dev/null differ diff --git a/public/media/ship/img/02-07.png b/public/media/ship/img/02-07.png deleted file mode 100755 index 9ace412f6..000000000 Binary files a/public/media/ship/img/02-07.png and /dev/null differ diff --git a/public/media/ship/img/02-08.png b/public/media/ship/img/02-08.png deleted file mode 100644 index 5d9d4dd70..000000000 Binary files a/public/media/ship/img/02-08.png and /dev/null differ diff --git a/public/media/ship/img/02-09.png b/public/media/ship/img/02-09.png deleted file mode 100644 index 897f5d716..000000000 Binary files a/public/media/ship/img/02-09.png and /dev/null differ diff --git a/public/media/ship/img/02-10.png b/public/media/ship/img/02-10.png deleted file mode 100644 index d2d6334b6..000000000 Binary files a/public/media/ship/img/02-10.png and /dev/null differ diff --git a/public/media/ship/img/02-11.png b/public/media/ship/img/02-11.png deleted file mode 100644 index aa5bc5129..000000000 Binary files a/public/media/ship/img/02-11.png and /dev/null differ diff --git a/public/media/ship/img/02-12.png b/public/media/ship/img/02-12.png deleted file mode 100644 index c8b2eadc9..000000000 Binary files a/public/media/ship/img/02-12.png and /dev/null differ diff --git a/public/media/ship/img/03-01.png b/public/media/ship/img/03-01.png deleted file mode 100755 index e568b0008..000000000 Binary files a/public/media/ship/img/03-01.png and /dev/null differ diff --git a/public/media/ship/img/03-02.png b/public/media/ship/img/03-02.png deleted file mode 100755 index b6165359d..000000000 Binary files a/public/media/ship/img/03-02.png and /dev/null differ diff --git a/public/media/ship/img/03-03.png b/public/media/ship/img/03-03.png deleted file mode 100755 index aa602796e..000000000 Binary files a/public/media/ship/img/03-03.png and /dev/null differ diff --git a/public/media/ship/img/03-04.png b/public/media/ship/img/03-04.png deleted file mode 100755 index 94f9e9e09..000000000 Binary files a/public/media/ship/img/03-04.png and /dev/null differ diff --git a/public/media/ship/img/03-05.png b/public/media/ship/img/03-05.png deleted file mode 100755 index c22d6031e..000000000 Binary files a/public/media/ship/img/03-05.png and /dev/null differ diff --git a/public/media/ship/img/03-06.png b/public/media/ship/img/03-06.png deleted file mode 100755 index f21ff1cc2..000000000 Binary files a/public/media/ship/img/03-06.png and /dev/null differ diff --git a/public/media/ship/img/03-07.png b/public/media/ship/img/03-07.png deleted file mode 100755 index 47f64f47a..000000000 Binary files a/public/media/ship/img/03-07.png and /dev/null differ diff --git a/public/media/ship/img/03-08.png b/public/media/ship/img/03-08.png deleted file mode 100644 index 5298b8e75..000000000 Binary files a/public/media/ship/img/03-08.png and /dev/null differ diff --git a/public/media/ship/img/03-09.png b/public/media/ship/img/03-09.png deleted file mode 100644 index c22d6031e..000000000 Binary files a/public/media/ship/img/03-09.png and /dev/null differ diff --git a/public/media/ship/img/03-10.png b/public/media/ship/img/03-10.png deleted file mode 100644 index 9864803fc..000000000 Binary files a/public/media/ship/img/03-10.png and /dev/null differ diff --git a/public/media/ship/img/03-11.png b/public/media/ship/img/03-11.png deleted file mode 100644 index 141ed9e21..000000000 Binary files a/public/media/ship/img/03-11.png and /dev/null differ diff --git a/public/media/ship/img/03-12.png b/public/media/ship/img/03-12.png deleted file mode 100644 index aa602796e..000000000 Binary files a/public/media/ship/img/03-12.png and /dev/null differ diff --git a/public/media/ship/img/04-01.png b/public/media/ship/img/04-01.png deleted file mode 100755 index 6cf67414f..000000000 Binary files a/public/media/ship/img/04-01.png and /dev/null differ diff --git a/public/media/ship/img/04-02.png b/public/media/ship/img/04-02.png deleted file mode 100755 index 1a889470e..000000000 Binary files a/public/media/ship/img/04-02.png and /dev/null differ diff --git a/public/media/ship/img/04-03.png b/public/media/ship/img/04-03.png deleted file mode 100755 index 0bac6d129..000000000 Binary files a/public/media/ship/img/04-03.png and /dev/null differ diff --git a/public/media/ship/img/04-04.png b/public/media/ship/img/04-04.png deleted file mode 100755 index 6369eb8cd..000000000 Binary files a/public/media/ship/img/04-04.png and /dev/null differ diff --git a/public/media/ship/img/04-05.png b/public/media/ship/img/04-05.png deleted file mode 100755 index 36809fdd8..000000000 Binary files a/public/media/ship/img/04-05.png and /dev/null differ diff --git a/public/media/ship/img/04-06.png b/public/media/ship/img/04-06.png deleted file mode 100755 index 341714c16..000000000 Binary files a/public/media/ship/img/04-06.png and /dev/null differ diff --git a/public/media/ship/img/04-07.png b/public/media/ship/img/04-07.png deleted file mode 100755 index 8175764bf..000000000 Binary files a/public/media/ship/img/04-07.png and /dev/null differ diff --git a/public/media/ship/img/04-08.png b/public/media/ship/img/04-08.png deleted file mode 100644 index adfa3c260..000000000 Binary files a/public/media/ship/img/04-08.png and /dev/null differ diff --git a/public/media/ship/img/04-09.png b/public/media/ship/img/04-09.png deleted file mode 100644 index 36809fdd8..000000000 Binary files a/public/media/ship/img/04-09.png and /dev/null differ diff --git a/public/media/ship/img/04-10.png b/public/media/ship/img/04-10.png deleted file mode 100644 index ce4110a6b..000000000 Binary files a/public/media/ship/img/04-10.png and /dev/null differ diff --git a/public/media/ship/img/04-11.png b/public/media/ship/img/04-11.png deleted file mode 100644 index 54a7d0ef3..000000000 Binary files a/public/media/ship/img/04-11.png and /dev/null differ diff --git a/public/media/ship/img/04-12.png b/public/media/ship/img/04-12.png deleted file mode 100644 index 0bac6d129..000000000 Binary files a/public/media/ship/img/04-12.png and /dev/null differ diff --git a/public/media/ship/img/05-01.png b/public/media/ship/img/05-01.png deleted file mode 100755 index f2f63067e..000000000 Binary files a/public/media/ship/img/05-01.png and /dev/null differ diff --git a/public/media/ship/img/05-02.png b/public/media/ship/img/05-02.png deleted file mode 100755 index 6fa972227..000000000 Binary files a/public/media/ship/img/05-02.png and /dev/null differ diff --git a/public/media/ship/img/05-03.png b/public/media/ship/img/05-03.png deleted file mode 100755 index 4a2177508..000000000 Binary files a/public/media/ship/img/05-03.png and /dev/null differ diff --git a/public/media/ship/img/05-04.png b/public/media/ship/img/05-04.png deleted file mode 100755 index 4e41fb972..000000000 Binary files a/public/media/ship/img/05-04.png and /dev/null differ diff --git a/public/media/ship/img/05-05.png b/public/media/ship/img/05-05.png deleted file mode 100755 index a4f136751..000000000 Binary files a/public/media/ship/img/05-05.png and /dev/null differ diff --git a/public/media/ship/img/05-06.png b/public/media/ship/img/05-06.png deleted file mode 100755 index 14f3f2905..000000000 Binary files a/public/media/ship/img/05-06.png and /dev/null differ diff --git a/public/media/ship/img/05-07.png b/public/media/ship/img/05-07.png deleted file mode 100755 index f3fef8d86..000000000 Binary files a/public/media/ship/img/05-07.png and /dev/null differ diff --git a/public/media/ship/img/05-08.png b/public/media/ship/img/05-08.png deleted file mode 100644 index b6c635d66..000000000 Binary files a/public/media/ship/img/05-08.png and /dev/null differ diff --git a/public/media/ship/img/05-09.png b/public/media/ship/img/05-09.png deleted file mode 100644 index a4f136751..000000000 Binary files a/public/media/ship/img/05-09.png and /dev/null differ diff --git a/public/media/ship/img/05-10.png b/public/media/ship/img/05-10.png deleted file mode 100644 index 4a47210cf..000000000 Binary files a/public/media/ship/img/05-10.png and /dev/null differ diff --git a/public/media/ship/img/05-11.png b/public/media/ship/img/05-11.png deleted file mode 100644 index 80ef2ff8b..000000000 Binary files a/public/media/ship/img/05-11.png and /dev/null differ diff --git a/public/media/ship/img/05-12.png b/public/media/ship/img/05-12.png deleted file mode 100644 index 4a2177508..000000000 Binary files a/public/media/ship/img/05-12.png and /dev/null differ diff --git a/public/media/ship/img/06-01.png b/public/media/ship/img/06-01.png deleted file mode 100755 index 9767d1e7d..000000000 Binary files a/public/media/ship/img/06-01.png and /dev/null differ diff --git a/public/media/ship/img/06-02.png b/public/media/ship/img/06-02.png deleted file mode 100755 index cc1c369c8..000000000 Binary files a/public/media/ship/img/06-02.png and /dev/null differ diff --git a/public/media/ship/img/06-03.png b/public/media/ship/img/06-03.png deleted file mode 100755 index 07cd5c313..000000000 Binary files a/public/media/ship/img/06-03.png and /dev/null differ diff --git a/public/media/ship/img/06-04.png b/public/media/ship/img/06-04.png deleted file mode 100755 index 3d52e6ad6..000000000 Binary files a/public/media/ship/img/06-04.png and /dev/null differ diff --git a/public/media/ship/img/06-05.png b/public/media/ship/img/06-05.png deleted file mode 100755 index add0068be..000000000 Binary files a/public/media/ship/img/06-05.png and /dev/null differ diff --git a/public/media/ship/img/06-06.png b/public/media/ship/img/06-06.png deleted file mode 100755 index 4e9b63f91..000000000 Binary files a/public/media/ship/img/06-06.png and /dev/null differ diff --git a/public/media/ship/img/06-07.png b/public/media/ship/img/06-07.png deleted file mode 100755 index 21ba28110..000000000 Binary files a/public/media/ship/img/06-07.png and /dev/null differ diff --git a/public/media/ship/img/06-08.png b/public/media/ship/img/06-08.png deleted file mode 100644 index 4e4ccbd60..000000000 Binary files a/public/media/ship/img/06-08.png and /dev/null differ diff --git a/public/media/ship/img/06-09.png b/public/media/ship/img/06-09.png deleted file mode 100644 index add0068be..000000000 Binary files a/public/media/ship/img/06-09.png and /dev/null differ diff --git a/public/media/ship/img/06-10.png b/public/media/ship/img/06-10.png deleted file mode 100644 index 1c64707ea..000000000 Binary files a/public/media/ship/img/06-10.png and /dev/null differ diff --git a/public/media/ship/img/06-11.png b/public/media/ship/img/06-11.png deleted file mode 100644 index 20c85ed50..000000000 Binary files a/public/media/ship/img/06-11.png and /dev/null differ diff --git a/public/media/ship/img/06-12.png b/public/media/ship/img/06-12.png deleted file mode 100644 index 07cd5c313..000000000 Binary files a/public/media/ship/img/06-12.png and /dev/null differ diff --git a/public/media/ship/img/07-01.png b/public/media/ship/img/07-01.png deleted file mode 100755 index e0170691e..000000000 Binary files a/public/media/ship/img/07-01.png and /dev/null differ diff --git a/public/media/ship/img/07-02.png b/public/media/ship/img/07-02.png deleted file mode 100755 index 6dc7cd208..000000000 Binary files a/public/media/ship/img/07-02.png and /dev/null differ diff --git a/public/media/ship/img/07-03.png b/public/media/ship/img/07-03.png deleted file mode 100755 index f60d9d81a..000000000 Binary files a/public/media/ship/img/07-03.png and /dev/null differ diff --git a/public/media/ship/img/07-04.png b/public/media/ship/img/07-04.png deleted file mode 100755 index 5e3fd2634..000000000 Binary files a/public/media/ship/img/07-04.png and /dev/null differ diff --git a/public/media/ship/img/07-05.png b/public/media/ship/img/07-05.png deleted file mode 100755 index 92e9e319d..000000000 Binary files a/public/media/ship/img/07-05.png and /dev/null differ diff --git a/public/media/ship/img/07-06.png b/public/media/ship/img/07-06.png deleted file mode 100755 index 55fe80e1d..000000000 Binary files a/public/media/ship/img/07-06.png and /dev/null differ diff --git a/public/media/ship/img/07-07.png b/public/media/ship/img/07-07.png deleted file mode 100755 index e98ca6812..000000000 Binary files a/public/media/ship/img/07-07.png and /dev/null differ diff --git a/public/media/ship/img/07-08.png b/public/media/ship/img/07-08.png deleted file mode 100644 index 48b39768d..000000000 Binary files a/public/media/ship/img/07-08.png and /dev/null differ diff --git a/public/media/ship/img/07-09.png b/public/media/ship/img/07-09.png deleted file mode 100644 index 92e9e319d..000000000 Binary files a/public/media/ship/img/07-09.png and /dev/null differ diff --git a/public/media/ship/img/07-10.png b/public/media/ship/img/07-10.png deleted file mode 100644 index 0b6e6aee1..000000000 Binary files a/public/media/ship/img/07-10.png and /dev/null differ diff --git a/public/media/ship/img/07-11.png b/public/media/ship/img/07-11.png deleted file mode 100644 index 5b86c3fa0..000000000 Binary files a/public/media/ship/img/07-11.png and /dev/null differ diff --git a/public/media/ship/img/07-12.png b/public/media/ship/img/07-12.png deleted file mode 100644 index f60d9d81a..000000000 Binary files a/public/media/ship/img/07-12.png and /dev/null differ diff --git a/public/media/ship/img/08-01.png b/public/media/ship/img/08-01.png deleted file mode 100755 index c4af99877..000000000 Binary files a/public/media/ship/img/08-01.png and /dev/null differ diff --git a/public/media/ship/img/08-02.png b/public/media/ship/img/08-02.png deleted file mode 100755 index 093d32d53..000000000 Binary files a/public/media/ship/img/08-02.png and /dev/null differ diff --git a/public/media/ship/img/08-03.png b/public/media/ship/img/08-03.png deleted file mode 100755 index 5d67b997a..000000000 Binary files a/public/media/ship/img/08-03.png and /dev/null differ diff --git a/public/media/ship/img/08-04.png b/public/media/ship/img/08-04.png deleted file mode 100755 index 243a35bfe..000000000 Binary files a/public/media/ship/img/08-04.png and /dev/null differ diff --git a/public/media/ship/img/08-05.png b/public/media/ship/img/08-05.png deleted file mode 100755 index 535b27cae..000000000 Binary files a/public/media/ship/img/08-05.png and /dev/null differ diff --git a/public/media/ship/img/08-06.png b/public/media/ship/img/08-06.png deleted file mode 100755 index 26d2bfc0f..000000000 Binary files a/public/media/ship/img/08-06.png and /dev/null differ diff --git a/public/media/ship/img/08-07.png b/public/media/ship/img/08-07.png deleted file mode 100755 index c41b3344d..000000000 Binary files a/public/media/ship/img/08-07.png and /dev/null differ diff --git a/public/media/ship/img/08-08.png b/public/media/ship/img/08-08.png deleted file mode 100644 index a53853b45..000000000 Binary files a/public/media/ship/img/08-08.png and /dev/null differ diff --git a/public/media/ship/img/08-09.png b/public/media/ship/img/08-09.png deleted file mode 100644 index 535b27cae..000000000 Binary files a/public/media/ship/img/08-09.png and /dev/null differ diff --git a/public/media/ship/img/08-10.png b/public/media/ship/img/08-10.png deleted file mode 100644 index 721bfc1d0..000000000 Binary files a/public/media/ship/img/08-10.png and /dev/null differ diff --git a/public/media/ship/img/08-11.png b/public/media/ship/img/08-11.png deleted file mode 100644 index 2f3c259a0..000000000 Binary files a/public/media/ship/img/08-11.png and /dev/null differ diff --git a/public/media/ship/img/08-12.png b/public/media/ship/img/08-12.png deleted file mode 100644 index 5d67b997a..000000000 Binary files a/public/media/ship/img/08-12.png and /dev/null differ diff --git a/public/media/ship/img/09-01.png b/public/media/ship/img/09-01.png deleted file mode 100755 index 537bb937a..000000000 Binary files a/public/media/ship/img/09-01.png and /dev/null differ diff --git a/public/media/ship/img/09-02.png b/public/media/ship/img/09-02.png deleted file mode 100755 index f6196ce95..000000000 Binary files a/public/media/ship/img/09-02.png and /dev/null differ diff --git a/public/media/ship/img/09-03.png b/public/media/ship/img/09-03.png deleted file mode 100755 index 517d10529..000000000 Binary files a/public/media/ship/img/09-03.png and /dev/null differ diff --git a/public/media/ship/img/09-04.png b/public/media/ship/img/09-04.png deleted file mode 100755 index 6f8da78c2..000000000 Binary files a/public/media/ship/img/09-04.png and /dev/null differ diff --git a/public/media/ship/img/09-05.png b/public/media/ship/img/09-05.png deleted file mode 100755 index 11d63e46b..000000000 Binary files a/public/media/ship/img/09-05.png and /dev/null differ diff --git a/public/media/ship/img/09-06.png b/public/media/ship/img/09-06.png deleted file mode 100755 index aad41d687..000000000 Binary files a/public/media/ship/img/09-06.png and /dev/null differ diff --git a/public/media/ship/img/09-07.png b/public/media/ship/img/09-07.png deleted file mode 100755 index 4a0bee181..000000000 Binary files a/public/media/ship/img/09-07.png and /dev/null differ diff --git a/public/media/ship/img/09-08.png b/public/media/ship/img/09-08.png deleted file mode 100644 index 75aa16f53..000000000 Binary files a/public/media/ship/img/09-08.png and /dev/null differ diff --git a/public/media/ship/img/09-09.png b/public/media/ship/img/09-09.png deleted file mode 100644 index 11d63e46b..000000000 Binary files a/public/media/ship/img/09-09.png and /dev/null differ diff --git a/public/media/ship/img/09-10.png b/public/media/ship/img/09-10.png deleted file mode 100644 index 93b1433a6..000000000 Binary files a/public/media/ship/img/09-10.png and /dev/null differ diff --git a/public/media/ship/img/09-11.png b/public/media/ship/img/09-11.png deleted file mode 100644 index 933c49e0c..000000000 Binary files a/public/media/ship/img/09-11.png and /dev/null differ diff --git a/public/media/ship/img/09-12.png b/public/media/ship/img/09-12.png deleted file mode 100644 index 517d10529..000000000 Binary files a/public/media/ship/img/09-12.png and /dev/null differ diff --git a/public/media/ship/img/10-01.png b/public/media/ship/img/10-01.png deleted file mode 100755 index a3cc4d1f0..000000000 Binary files a/public/media/ship/img/10-01.png and /dev/null differ diff --git a/public/media/ship/img/10-02.png b/public/media/ship/img/10-02.png deleted file mode 100755 index 798c8bdfe..000000000 Binary files a/public/media/ship/img/10-02.png and /dev/null differ diff --git a/public/media/ship/img/10-03.png b/public/media/ship/img/10-03.png deleted file mode 100755 index 6e06570b4..000000000 Binary files a/public/media/ship/img/10-03.png and /dev/null differ diff --git a/public/media/ship/img/10-04.png b/public/media/ship/img/10-04.png deleted file mode 100755 index 948a76a28..000000000 Binary files a/public/media/ship/img/10-04.png and /dev/null differ diff --git a/public/media/ship/img/10-05.png b/public/media/ship/img/10-05.png deleted file mode 100755 index a107c54cc..000000000 Binary files a/public/media/ship/img/10-05.png and /dev/null differ diff --git a/public/media/ship/img/10-06.png b/public/media/ship/img/10-06.png deleted file mode 100755 index 8cc0b5ef1..000000000 Binary files a/public/media/ship/img/10-06.png and /dev/null differ diff --git a/public/media/ship/img/10-07.png b/public/media/ship/img/10-07.png deleted file mode 100755 index 82465ea91..000000000 Binary files a/public/media/ship/img/10-07.png and /dev/null differ diff --git a/public/media/ship/img/10-08.png b/public/media/ship/img/10-08.png deleted file mode 100644 index dfd35ff08..000000000 Binary files a/public/media/ship/img/10-08.png and /dev/null differ diff --git a/public/media/ship/img/10-09.png b/public/media/ship/img/10-09.png deleted file mode 100644 index a107c54cc..000000000 Binary files a/public/media/ship/img/10-09.png and /dev/null differ diff --git a/public/media/ship/img/10-10.png b/public/media/ship/img/10-10.png deleted file mode 100644 index a587b0d4f..000000000 Binary files a/public/media/ship/img/10-10.png and /dev/null differ diff --git a/public/media/ship/img/10-11.png b/public/media/ship/img/10-11.png deleted file mode 100644 index 5e5715ea0..000000000 Binary files a/public/media/ship/img/10-11.png and /dev/null differ diff --git a/public/media/ship/img/10-12.png b/public/media/ship/img/10-12.png deleted file mode 100644 index 6e06570b4..000000000 Binary files a/public/media/ship/img/10-12.png and /dev/null differ diff --git a/public/media/ship/img/11-01.png b/public/media/ship/img/11-01.png deleted file mode 100755 index ef9140af4..000000000 Binary files a/public/media/ship/img/11-01.png and /dev/null differ diff --git a/public/media/ship/img/11-02.png b/public/media/ship/img/11-02.png deleted file mode 100755 index 7e67b5a28..000000000 Binary files a/public/media/ship/img/11-02.png and /dev/null differ diff --git a/public/media/ship/img/11-03.png b/public/media/ship/img/11-03.png deleted file mode 100755 index 84c3a32ed..000000000 Binary files a/public/media/ship/img/11-03.png and /dev/null differ diff --git a/public/media/ship/img/11-04.png b/public/media/ship/img/11-04.png deleted file mode 100755 index 496598e33..000000000 Binary files a/public/media/ship/img/11-04.png and /dev/null differ diff --git a/public/media/ship/img/11-05.png b/public/media/ship/img/11-05.png deleted file mode 100755 index ca5f100bc..000000000 Binary files a/public/media/ship/img/11-05.png and /dev/null differ diff --git a/public/media/ship/img/11-06.png b/public/media/ship/img/11-06.png deleted file mode 100755 index 95b628720..000000000 Binary files a/public/media/ship/img/11-06.png and /dev/null differ diff --git a/public/media/ship/img/11-07.png b/public/media/ship/img/11-07.png deleted file mode 100755 index f763cc282..000000000 Binary files a/public/media/ship/img/11-07.png and /dev/null differ diff --git a/public/media/ship/img/11-08.png b/public/media/ship/img/11-08.png deleted file mode 100644 index f2ea1c0c3..000000000 Binary files a/public/media/ship/img/11-08.png and /dev/null differ diff --git a/public/media/ship/img/11-09.png b/public/media/ship/img/11-09.png deleted file mode 100644 index ca5f100bc..000000000 Binary files a/public/media/ship/img/11-09.png and /dev/null differ diff --git a/public/media/ship/img/11-10.png b/public/media/ship/img/11-10.png deleted file mode 100644 index 3d9ebdedf..000000000 Binary files a/public/media/ship/img/11-10.png and /dev/null differ diff --git a/public/media/ship/img/11-11.png b/public/media/ship/img/11-11.png deleted file mode 100644 index 34fe248fa..000000000 Binary files a/public/media/ship/img/11-11.png and /dev/null differ diff --git a/public/media/ship/img/11-12.png b/public/media/ship/img/11-12.png deleted file mode 100644 index 84c3a32ed..000000000 Binary files a/public/media/ship/img/11-12.png and /dev/null differ diff --git a/public/media/ship/img/12-01.png b/public/media/ship/img/12-01.png deleted file mode 100755 index 6b2f2a246..000000000 Binary files a/public/media/ship/img/12-01.png and /dev/null differ diff --git a/public/media/ship/img/12-02.png b/public/media/ship/img/12-02.png deleted file mode 100755 index 57e7c901c..000000000 Binary files a/public/media/ship/img/12-02.png and /dev/null differ diff --git a/public/media/ship/img/12-03.png b/public/media/ship/img/12-03.png deleted file mode 100755 index 91200384f..000000000 Binary files a/public/media/ship/img/12-03.png and /dev/null differ diff --git a/public/media/ship/img/12-04.png b/public/media/ship/img/12-04.png deleted file mode 100755 index c588f2e16..000000000 Binary files a/public/media/ship/img/12-04.png and /dev/null differ diff --git a/public/media/ship/img/12-05.png b/public/media/ship/img/12-05.png deleted file mode 100755 index 41fcc8f83..000000000 Binary files a/public/media/ship/img/12-05.png and /dev/null differ diff --git a/public/media/ship/img/12-06.png b/public/media/ship/img/12-06.png deleted file mode 100755 index 56fc4f876..000000000 Binary files a/public/media/ship/img/12-06.png and /dev/null differ diff --git a/public/media/ship/img/12-07.png b/public/media/ship/img/12-07.png deleted file mode 100755 index e7819d1a0..000000000 Binary files a/public/media/ship/img/12-07.png and /dev/null differ diff --git a/public/media/ship/img/12-08.png b/public/media/ship/img/12-08.png deleted file mode 100644 index 2ea223f6a..000000000 Binary files a/public/media/ship/img/12-08.png and /dev/null differ diff --git a/public/media/ship/img/12-09.png b/public/media/ship/img/12-09.png deleted file mode 100644 index 41fcc8f83..000000000 Binary files a/public/media/ship/img/12-09.png and /dev/null differ diff --git a/public/media/ship/img/12-10.png b/public/media/ship/img/12-10.png deleted file mode 100644 index 993ae1a8c..000000000 Binary files a/public/media/ship/img/12-10.png and /dev/null differ diff --git a/public/media/ship/img/12-11.png b/public/media/ship/img/12-11.png deleted file mode 100644 index 5913329c6..000000000 Binary files a/public/media/ship/img/12-11.png and /dev/null differ diff --git a/public/media/ship/img/12-12.png b/public/media/ship/img/12-12.png deleted file mode 100644 index 91200384f..000000000 Binary files a/public/media/ship/img/12-12.png and /dev/null differ diff --git a/public/media/ship/picto/locked.png b/public/media/ship/picto/locked.png deleted file mode 100755 index 180a8af21..000000000 Binary files a/public/media/ship/picto/locked.png and /dev/null differ diff --git a/public/media/ship/picto/ship0.png b/public/media/ship/picto/ship0.png deleted file mode 100755 index dcef5d00f..000000000 Binary files a/public/media/ship/picto/ship0.png and /dev/null differ diff --git a/public/media/ship/picto/ship1.png b/public/media/ship/picto/ship1.png deleted file mode 100755 index e37121b51..000000000 Binary files a/public/media/ship/picto/ship1.png and /dev/null differ diff --git a/public/media/ship/picto/ship10.png b/public/media/ship/picto/ship10.png deleted file mode 100755 index 71fa020ef..000000000 Binary files a/public/media/ship/picto/ship10.png and /dev/null differ diff --git a/public/media/ship/picto/ship11.png b/public/media/ship/picto/ship11.png deleted file mode 100755 index dccd18935..000000000 Binary files a/public/media/ship/picto/ship11.png and /dev/null differ diff --git a/public/media/ship/picto/ship2.png b/public/media/ship/picto/ship2.png deleted file mode 100755 index c976e40db..000000000 Binary files a/public/media/ship/picto/ship2.png and /dev/null differ diff --git a/public/media/ship/picto/ship3.png b/public/media/ship/picto/ship3.png deleted file mode 100755 index 1ee662631..000000000 Binary files a/public/media/ship/picto/ship3.png and /dev/null differ diff --git a/public/media/ship/picto/ship4.png b/public/media/ship/picto/ship4.png deleted file mode 100755 index 26abec0d6..000000000 Binary files a/public/media/ship/picto/ship4.png and /dev/null differ diff --git a/public/media/ship/picto/ship5.png b/public/media/ship/picto/ship5.png deleted file mode 100755 index 76b6ca89f..000000000 Binary files a/public/media/ship/picto/ship5.png and /dev/null differ diff --git a/public/media/ship/picto/ship6.png b/public/media/ship/picto/ship6.png deleted file mode 100755 index 2c49b7827..000000000 Binary files a/public/media/ship/picto/ship6.png and /dev/null differ diff --git a/public/media/ship/picto/ship7.png b/public/media/ship/picto/ship7.png deleted file mode 100755 index 0b0fb9293..000000000 Binary files a/public/media/ship/picto/ship7.png and /dev/null differ diff --git a/public/media/ship/picto/ship8.png b/public/media/ship/picto/ship8.png deleted file mode 100755 index 125aaa553..000000000 Binary files a/public/media/ship/picto/ship8.png and /dev/null differ diff --git a/public/media/ship/picto/ship9.png b/public/media/ship/picto/ship9.png deleted file mode 100755 index 3aaa1424f..000000000 Binary files a/public/media/ship/picto/ship9.png and /dev/null differ diff --git a/public/media/technology/img/_26.png b/public/media/technology/img/_26.png deleted file mode 100755 index 7e920bc3d..000000000 Binary files a/public/media/technology/img/_26.png and /dev/null differ diff --git a/public/media/technology/img/_27.png b/public/media/technology/img/_27.png deleted file mode 100755 index 17e88ccd1..000000000 Binary files a/public/media/technology/img/_27.png and /dev/null differ diff --git a/public/media/technology/img/_28.png b/public/media/technology/img/_28.png deleted file mode 100755 index f0c4dbe8a..000000000 Binary files a/public/media/technology/img/_28.png and /dev/null differ diff --git a/public/media/technology/img/_29.png b/public/media/technology/img/_29.png deleted file mode 100755 index 47d4eadd7..000000000 Binary files a/public/media/technology/img/_29.png and /dev/null differ diff --git a/public/media/technology/img/antispyinvest.png b/public/media/technology/img/antispyinvest.png deleted file mode 100755 index 160f59161..000000000 Binary files a/public/media/technology/img/antispyinvest.png and /dev/null differ diff --git a/public/media/technology/img/basequantity.png b/public/media/technology/img/basequantity.png deleted file mode 100755 index 00ca6be2c..000000000 Binary files a/public/media/technology/img/basequantity.png and /dev/null differ diff --git a/public/media/technology/img/colonization.png b/public/media/technology/img/colonization.png deleted file mode 100755 index 9f697f7f9..000000000 Binary files a/public/media/technology/img/colonization.png and /dev/null differ diff --git a/public/media/technology/img/commanderinvest.png b/public/media/technology/img/commanderinvest.png deleted file mode 100755 index 95745b5b6..000000000 Binary files a/public/media/technology/img/commanderinvest.png and /dev/null differ diff --git a/public/media/technology/img/commercialincome.png b/public/media/technology/img/commercialincome.png deleted file mode 100755 index 811c66be4..000000000 Binary files a/public/media/technology/img/commercialincome.png and /dev/null differ diff --git a/public/media/technology/img/complatunblock.png b/public/media/technology/img/complatunblock.png deleted file mode 100644 index e40cf541e..000000000 Binary files a/public/media/technology/img/complatunblock.png and /dev/null differ diff --git a/public/media/technology/img/conquest.png b/public/media/technology/img/conquest.png deleted file mode 100755 index 238222d72..000000000 Binary files a/public/media/technology/img/conquest.png and /dev/null differ diff --git a/public/media/technology/img/corvetteattack.png b/public/media/technology/img/corvetteattack.png deleted file mode 100755 index daf1f716b..000000000 Binary files a/public/media/technology/img/corvetteattack.png and /dev/null differ diff --git a/public/media/technology/img/corvettedefense.png b/public/media/technology/img/corvettedefense.png deleted file mode 100755 index 956f8bdf4..000000000 Binary files a/public/media/technology/img/corvettedefense.png and /dev/null differ diff --git a/public/media/technology/img/corvettespeed.png b/public/media/technology/img/corvettespeed.png deleted file mode 100755 index 1d2f2e442..000000000 Binary files a/public/media/technology/img/corvettespeed.png and /dev/null differ diff --git a/public/media/technology/img/destroyerattack.png b/public/media/technology/img/destroyerattack.png deleted file mode 100755 index eef865066..000000000 Binary files a/public/media/technology/img/destroyerattack.png and /dev/null differ diff --git a/public/media/technology/img/destroyerdefense.png b/public/media/technology/img/destroyerdefense.png deleted file mode 100755 index 2fe255699..000000000 Binary files a/public/media/technology/img/destroyerdefense.png and /dev/null differ diff --git a/public/media/technology/img/destroyerspeed.png b/public/media/technology/img/destroyerspeed.png deleted file mode 100755 index c28c60af6..000000000 Binary files a/public/media/technology/img/destroyerspeed.png and /dev/null differ diff --git a/public/media/technology/img/dock1speed.png b/public/media/technology/img/dock1speed.png deleted file mode 100755 index dcdd880e5..000000000 Binary files a/public/media/technology/img/dock1speed.png and /dev/null differ diff --git a/public/media/technology/img/dock2speed.png b/public/media/technology/img/dock2speed.png deleted file mode 100755 index dfe12c9f1..000000000 Binary files a/public/media/technology/img/dock2speed.png and /dev/null differ diff --git a/public/media/technology/img/dock2unblock.png b/public/media/technology/img/dock2unblock.png deleted file mode 100755 index d0e822496..000000000 Binary files a/public/media/technology/img/dock2unblock.png and /dev/null differ diff --git a/public/media/technology/img/dock3speed.png b/public/media/technology/img/dock3speed.png deleted file mode 100755 index 39c0d952b..000000000 Binary files a/public/media/technology/img/dock3speed.png and /dev/null differ diff --git a/public/media/technology/img/dock3unblock.png b/public/media/technology/img/dock3unblock.png deleted file mode 100755 index 1b7383f3e..000000000 Binary files a/public/media/technology/img/dock3unblock.png and /dev/null differ diff --git a/public/media/technology/img/fighterattack.png b/public/media/technology/img/fighterattack.png deleted file mode 100755 index cdd391043..000000000 Binary files a/public/media/technology/img/fighterattack.png and /dev/null differ diff --git a/public/media/technology/img/fighterdefense.png b/public/media/technology/img/fighterdefense.png deleted file mode 100755 index 973c9a4e0..000000000 Binary files a/public/media/technology/img/fighterdefense.png and /dev/null differ diff --git a/public/media/technology/img/fighterspeed.png b/public/media/technology/img/fighterspeed.png deleted file mode 100755 index 4cdff8e24..000000000 Binary files a/public/media/technology/img/fighterspeed.png and /dev/null differ diff --git a/public/media/technology/img/frigateattack.png b/public/media/technology/img/frigateattack.png deleted file mode 100755 index e07363b51..000000000 Binary files a/public/media/technology/img/frigateattack.png and /dev/null differ diff --git a/public/media/technology/img/frigatedefense.png b/public/media/technology/img/frigatedefense.png deleted file mode 100755 index 63f05cece..000000000 Binary files a/public/media/technology/img/frigatedefense.png and /dev/null differ diff --git a/public/media/technology/img/frigatespeed.png b/public/media/technology/img/frigatespeed.png deleted file mode 100755 index ca4c825b5..000000000 Binary files a/public/media/technology/img/frigatespeed.png and /dev/null differ diff --git a/public/media/technology/img/generatorspeed.png b/public/media/technology/img/generatorspeed.png deleted file mode 100755 index 43ba14b06..000000000 Binary files a/public/media/technology/img/generatorspeed.png and /dev/null differ diff --git a/public/media/technology/img/generatorspeed2.png b/public/media/technology/img/generatorspeed2.png deleted file mode 100755 index 463394319..000000000 Binary files a/public/media/technology/img/generatorspeed2.png and /dev/null differ diff --git a/public/media/technology/img/gravitmodule.png b/public/media/technology/img/gravitmodule.png deleted file mode 100755 index 67b86104e..000000000 Binary files a/public/media/technology/img/gravitmodule.png and /dev/null differ diff --git a/public/media/technology/img/gravitmoduleunblock.png b/public/media/technology/img/gravitmoduleunblock.png deleted file mode 100755 index 46355eb00..000000000 Binary files a/public/media/technology/img/gravitmoduleunblock.png and /dev/null differ diff --git a/public/media/technology/img/populationtax.png b/public/media/technology/img/populationtax.png deleted file mode 100755 index c59941329..000000000 Binary files a/public/media/technology/img/populationtax.png and /dev/null differ diff --git a/public/media/technology/img/recyclingunblock.png b/public/media/technology/img/recyclingunblock.png deleted file mode 100644 index 206db8266..000000000 Binary files a/public/media/technology/img/recyclingunblock.png and /dev/null differ diff --git a/public/media/technology/img/refineryrefining.png b/public/media/technology/img/refineryrefining.png deleted file mode 100755 index 4fceb5005..000000000 Binary files a/public/media/technology/img/refineryrefining.png and /dev/null differ diff --git a/public/media/technology/img/refinerystorage.png b/public/media/technology/img/refinerystorage.png deleted file mode 100755 index 0d158570a..000000000 Binary files a/public/media/technology/img/refinerystorage.png and /dev/null differ diff --git a/public/media/technology/img/ship0unblock.png b/public/media/technology/img/ship0unblock.png deleted file mode 100755 index 626da1ef8..000000000 Binary files a/public/media/technology/img/ship0unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship10unblock.png b/public/media/technology/img/ship10unblock.png deleted file mode 100755 index 95e8ae04e..000000000 Binary files a/public/media/technology/img/ship10unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship11unblock.png b/public/media/technology/img/ship11unblock.png deleted file mode 100755 index 5dd8c77ba..000000000 Binary files a/public/media/technology/img/ship11unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship1unblock.png b/public/media/technology/img/ship1unblock.png deleted file mode 100755 index eec7e46ea..000000000 Binary files a/public/media/technology/img/ship1unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship2unblock.png b/public/media/technology/img/ship2unblock.png deleted file mode 100755 index 15cc1e4e1..000000000 Binary files a/public/media/technology/img/ship2unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship3unblock.png b/public/media/technology/img/ship3unblock.png deleted file mode 100755 index 09f63ca69..000000000 Binary files a/public/media/technology/img/ship3unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship4unblock.png b/public/media/technology/img/ship4unblock.png deleted file mode 100755 index 2352610aa..000000000 Binary files a/public/media/technology/img/ship4unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship5unblock.png b/public/media/technology/img/ship5unblock.png deleted file mode 100755 index e4a6e2dea..000000000 Binary files a/public/media/technology/img/ship5unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship6unblock.png b/public/media/technology/img/ship6unblock.png deleted file mode 100755 index 14387046c..000000000 Binary files a/public/media/technology/img/ship6unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship7unblock.png b/public/media/technology/img/ship7unblock.png deleted file mode 100755 index f6159ff86..000000000 Binary files a/public/media/technology/img/ship7unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship8unblock.png b/public/media/technology/img/ship8unblock.png deleted file mode 100755 index 788eb1eeb..000000000 Binary files a/public/media/technology/img/ship8unblock.png and /dev/null differ diff --git a/public/media/technology/img/ship9unblock.png b/public/media/technology/img/ship9unblock.png deleted file mode 100755 index ea17c72ec..000000000 Binary files a/public/media/technology/img/ship9unblock.png and /dev/null differ diff --git a/public/media/technology/img/spaceshipscontainer.png b/public/media/technology/img/spaceshipscontainer.png deleted file mode 100755 index d1966eb4a..000000000 Binary files a/public/media/technology/img/spaceshipscontainer.png and /dev/null differ diff --git a/public/media/technology/img/spaceshipsspeed.png b/public/media/technology/img/spaceshipsspeed.png deleted file mode 100755 index 77a536aba..000000000 Binary files a/public/media/technology/img/spaceshipsspeed.png and /dev/null differ diff --git a/public/media/technology/img/spatioportunblock.png b/public/media/technology/img/spatioportunblock.png deleted file mode 100755 index fb29798c5..000000000 Binary files a/public/media/technology/img/spatioportunblock.png and /dev/null differ diff --git a/public/media/technology/img/technospherespeed.png b/public/media/technology/img/technospherespeed.png deleted file mode 100755 index da797edbf..000000000 Binary files a/public/media/technology/img/technospherespeed.png and /dev/null differ diff --git a/public/media/technology/img/uniinvest.png b/public/media/technology/img/uniinvest.png deleted file mode 100755 index b83212ddb..000000000 Binary files a/public/media/technology/img/uniinvest.png and /dev/null differ diff --git a/public/media/technology/picto/_infomaticinvest.png b/public/media/technology/picto/_infomaticinvest.png deleted file mode 100755 index db8189fb5..000000000 Binary files a/public/media/technology/picto/_infomaticinvest.png and /dev/null differ diff --git a/public/media/technology/picto/_lifeinvest.png b/public/media/technology/picto/_lifeinvest.png deleted file mode 100755 index edb347f1c..000000000 Binary files a/public/media/technology/picto/_lifeinvest.png and /dev/null differ diff --git a/public/media/technology/picto/_naturalinvest.png b/public/media/technology/picto/_naturalinvest.png deleted file mode 100755 index 8de989583..000000000 Binary files a/public/media/technology/picto/_naturalinvest.png and /dev/null differ diff --git a/public/media/technology/picto/_socialinvest.png b/public/media/technology/picto/_socialinvest.png deleted file mode 100755 index 3710028d2..000000000 Binary files a/public/media/technology/picto/_socialinvest.png and /dev/null differ diff --git a/public/media/technology/picto/antispyinvest.png b/public/media/technology/picto/antispyinvest.png deleted file mode 100755 index af105ace3..000000000 Binary files a/public/media/technology/picto/antispyinvest.png and /dev/null differ diff --git a/public/media/technology/picto/basequantity.png b/public/media/technology/picto/basequantity.png deleted file mode 100755 index 165267bd8..000000000 Binary files a/public/media/technology/picto/basequantity.png and /dev/null differ diff --git a/public/media/technology/picto/colonization.png b/public/media/technology/picto/colonization.png deleted file mode 100755 index 365ada84d..000000000 Binary files a/public/media/technology/picto/colonization.png and /dev/null differ diff --git a/public/media/technology/picto/commanderinvest.png b/public/media/technology/picto/commanderinvest.png deleted file mode 100755 index 658817169..000000000 Binary files a/public/media/technology/picto/commanderinvest.png and /dev/null differ diff --git a/public/media/technology/picto/commercialincome.png b/public/media/technology/picto/commercialincome.png deleted file mode 100755 index 7b825445d..000000000 Binary files a/public/media/technology/picto/commercialincome.png and /dev/null differ diff --git a/public/media/technology/picto/complatunblock.png b/public/media/technology/picto/complatunblock.png deleted file mode 100644 index 5c4ffe618..000000000 Binary files a/public/media/technology/picto/complatunblock.png and /dev/null differ diff --git a/public/media/technology/picto/conquest.png b/public/media/technology/picto/conquest.png deleted file mode 100755 index 34d9f1e80..000000000 Binary files a/public/media/technology/picto/conquest.png and /dev/null differ diff --git a/public/media/technology/picto/corvetteattack.png b/public/media/technology/picto/corvetteattack.png deleted file mode 100755 index 8cdf24690..000000000 Binary files a/public/media/technology/picto/corvetteattack.png and /dev/null differ diff --git a/public/media/technology/picto/corvettedefense.png b/public/media/technology/picto/corvettedefense.png deleted file mode 100755 index 8cd6248e5..000000000 Binary files a/public/media/technology/picto/corvettedefense.png and /dev/null differ diff --git a/public/media/technology/picto/corvettespeed.png b/public/media/technology/picto/corvettespeed.png deleted file mode 100755 index 5df260379..000000000 Binary files a/public/media/technology/picto/corvettespeed.png and /dev/null differ diff --git a/public/media/technology/picto/destroyerattack.png b/public/media/technology/picto/destroyerattack.png deleted file mode 100755 index fbd5ff4a4..000000000 Binary files a/public/media/technology/picto/destroyerattack.png and /dev/null differ diff --git a/public/media/technology/picto/destroyerdefense.png b/public/media/technology/picto/destroyerdefense.png deleted file mode 100755 index 3e7a6fa92..000000000 Binary files a/public/media/technology/picto/destroyerdefense.png and /dev/null differ diff --git a/public/media/technology/picto/destroyerspeed.png b/public/media/technology/picto/destroyerspeed.png deleted file mode 100755 index c1bae37f3..000000000 Binary files a/public/media/technology/picto/destroyerspeed.png and /dev/null differ diff --git a/public/media/technology/picto/dock1speed.png b/public/media/technology/picto/dock1speed.png deleted file mode 100755 index e8c42dc99..000000000 Binary files a/public/media/technology/picto/dock1speed.png and /dev/null differ diff --git a/public/media/technology/picto/dock2speed.png b/public/media/technology/picto/dock2speed.png deleted file mode 100755 index aa0454b20..000000000 Binary files a/public/media/technology/picto/dock2speed.png and /dev/null differ diff --git a/public/media/technology/picto/dock2unblock.png b/public/media/technology/picto/dock2unblock.png deleted file mode 100755 index 7e688b368..000000000 Binary files a/public/media/technology/picto/dock2unblock.png and /dev/null differ diff --git a/public/media/technology/picto/dock3speed.png b/public/media/technology/picto/dock3speed.png deleted file mode 100755 index 247fb9ecd..000000000 Binary files a/public/media/technology/picto/dock3speed.png and /dev/null differ diff --git a/public/media/technology/picto/dock3unblock.png b/public/media/technology/picto/dock3unblock.png deleted file mode 100755 index 488509686..000000000 Binary files a/public/media/technology/picto/dock3unblock.png and /dev/null differ diff --git a/public/media/technology/picto/fighterattack.png b/public/media/technology/picto/fighterattack.png deleted file mode 100755 index aff501369..000000000 Binary files a/public/media/technology/picto/fighterattack.png and /dev/null differ diff --git a/public/media/technology/picto/fighterdefense.png b/public/media/technology/picto/fighterdefense.png deleted file mode 100755 index 15cf53d76..000000000 Binary files a/public/media/technology/picto/fighterdefense.png and /dev/null differ diff --git a/public/media/technology/picto/fighterspeed.png b/public/media/technology/picto/fighterspeed.png deleted file mode 100755 index 632b6d129..000000000 Binary files a/public/media/technology/picto/fighterspeed.png and /dev/null differ diff --git a/public/media/technology/picto/frigateattack.png b/public/media/technology/picto/frigateattack.png deleted file mode 100755 index ee192d71d..000000000 Binary files a/public/media/technology/picto/frigateattack.png and /dev/null differ diff --git a/public/media/technology/picto/frigatedefense.png b/public/media/technology/picto/frigatedefense.png deleted file mode 100755 index 5e37bd58d..000000000 Binary files a/public/media/technology/picto/frigatedefense.png and /dev/null differ diff --git a/public/media/technology/picto/frigatespeed.png b/public/media/technology/picto/frigatespeed.png deleted file mode 100755 index d12d14781..000000000 Binary files a/public/media/technology/picto/frigatespeed.png and /dev/null differ diff --git a/public/media/technology/picto/generatorspeed.png b/public/media/technology/picto/generatorspeed.png deleted file mode 100755 index 99fd5b11b..000000000 Binary files a/public/media/technology/picto/generatorspeed.png and /dev/null differ diff --git a/public/media/technology/picto/gravitmodule.png b/public/media/technology/picto/gravitmodule.png deleted file mode 100755 index 891799369..000000000 Binary files a/public/media/technology/picto/gravitmodule.png and /dev/null differ diff --git a/public/media/technology/picto/gravitmoduleunblock.png b/public/media/technology/picto/gravitmoduleunblock.png deleted file mode 100755 index d27db3402..000000000 Binary files a/public/media/technology/picto/gravitmoduleunblock.png and /dev/null differ diff --git a/public/media/technology/picto/populationtax.png b/public/media/technology/picto/populationtax.png deleted file mode 100755 index 677149d7c..000000000 Binary files a/public/media/technology/picto/populationtax.png and /dev/null differ diff --git a/public/media/technology/picto/recyclingunblock.png b/public/media/technology/picto/recyclingunblock.png deleted file mode 100644 index c3822fb51..000000000 Binary files a/public/media/technology/picto/recyclingunblock.png and /dev/null differ diff --git a/public/media/technology/picto/refineryrefining.png b/public/media/technology/picto/refineryrefining.png deleted file mode 100755 index 0a18fe694..000000000 Binary files a/public/media/technology/picto/refineryrefining.png and /dev/null differ diff --git a/public/media/technology/picto/refinerystorage.png b/public/media/technology/picto/refinerystorage.png deleted file mode 100755 index a061a27a9..000000000 Binary files a/public/media/technology/picto/refinerystorage.png and /dev/null differ diff --git a/public/media/technology/picto/ship0unblock.png b/public/media/technology/picto/ship0unblock.png deleted file mode 100755 index e6918e968..000000000 Binary files a/public/media/technology/picto/ship0unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship10unblock.png b/public/media/technology/picto/ship10unblock.png deleted file mode 100755 index c08308432..000000000 Binary files a/public/media/technology/picto/ship10unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship11unblock.png b/public/media/technology/picto/ship11unblock.png deleted file mode 100755 index 641e83531..000000000 Binary files a/public/media/technology/picto/ship11unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship1unblock.png b/public/media/technology/picto/ship1unblock.png deleted file mode 100755 index 0338217bd..000000000 Binary files a/public/media/technology/picto/ship1unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship2unblock.png b/public/media/technology/picto/ship2unblock.png deleted file mode 100755 index 8f0c56991..000000000 Binary files a/public/media/technology/picto/ship2unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship3unblock.png b/public/media/technology/picto/ship3unblock.png deleted file mode 100755 index b5cf11031..000000000 Binary files a/public/media/technology/picto/ship3unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship4unblock.png b/public/media/technology/picto/ship4unblock.png deleted file mode 100755 index e2d81a814..000000000 Binary files a/public/media/technology/picto/ship4unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship5unblock.png b/public/media/technology/picto/ship5unblock.png deleted file mode 100755 index 52577baca..000000000 Binary files a/public/media/technology/picto/ship5unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship6unblock.png b/public/media/technology/picto/ship6unblock.png deleted file mode 100755 index 94fb2bf3e..000000000 Binary files a/public/media/technology/picto/ship6unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship7unblock.png b/public/media/technology/picto/ship7unblock.png deleted file mode 100755 index b0417b74c..000000000 Binary files a/public/media/technology/picto/ship7unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship8unblock.png b/public/media/technology/picto/ship8unblock.png deleted file mode 100755 index 0573f31b8..000000000 Binary files a/public/media/technology/picto/ship8unblock.png and /dev/null differ diff --git a/public/media/technology/picto/ship9unblock.png b/public/media/technology/picto/ship9unblock.png deleted file mode 100755 index eda63ed4a..000000000 Binary files a/public/media/technology/picto/ship9unblock.png and /dev/null differ diff --git a/public/media/technology/picto/spaceshipscontainer.png b/public/media/technology/picto/spaceshipscontainer.png deleted file mode 100755 index b230d228a..000000000 Binary files a/public/media/technology/picto/spaceshipscontainer.png and /dev/null differ diff --git a/public/media/technology/picto/spaceshipsspeed.png b/public/media/technology/picto/spaceshipsspeed.png deleted file mode 100755 index 244f79924..000000000 Binary files a/public/media/technology/picto/spaceshipsspeed.png and /dev/null differ diff --git a/public/media/technology/picto/spatioportunblock.png b/public/media/technology/picto/spatioportunblock.png deleted file mode 100755 index a2858aa69..000000000 Binary files a/public/media/technology/picto/spatioportunblock.png and /dev/null differ diff --git a/public/media/technology/picto/technospherespeed.png b/public/media/technology/picto/technospherespeed.png deleted file mode 100755 index 05d13df2b..000000000 Binary files a/public/media/technology/picto/technospherespeed.png and /dev/null differ diff --git a/public/media/technology/picto/uniinvest.png b/public/media/technology/picto/uniinvest.png deleted file mode 100755 index 9e1225672..000000000 Binary files a/public/media/technology/picto/uniinvest.png and /dev/null differ diff --git a/public/media/university/algorithmic.png b/public/media/university/algorithmic.png deleted file mode 100755 index ff79905a5..000000000 Binary files a/public/media/university/algorithmic.png and /dev/null differ diff --git a/public/media/university/biology.png b/public/media/university/biology.png deleted file mode 100755 index 29410fcfd..000000000 Binary files a/public/media/university/biology.png and /dev/null differ diff --git a/public/media/university/chemistry.png b/public/media/university/chemistry.png deleted file mode 100755 index 018ce623f..000000000 Binary files a/public/media/university/chemistry.png and /dev/null differ diff --git a/public/media/university/communication.png b/public/media/university/communication.png deleted file mode 100644 index d668c4ab7..000000000 Binary files a/public/media/university/communication.png and /dev/null differ diff --git a/public/media/university/economy.png b/public/media/university/economy.png deleted file mode 100755 index eed1412a1..000000000 Binary files a/public/media/university/economy.png and /dev/null differ diff --git a/public/media/university/law.png b/public/media/university/law.png deleted file mode 100644 index 4fb6ed8f1..000000000 Binary files a/public/media/university/law.png and /dev/null differ diff --git a/public/media/university/mathematics.png b/public/media/university/mathematics.png deleted file mode 100755 index d54eba88c..000000000 Binary files a/public/media/university/mathematics.png and /dev/null differ diff --git a/public/media/university/medicine.png b/public/media/university/medicine.png deleted file mode 100755 index 35f2affbb..000000000 Binary files a/public/media/university/medicine.png and /dev/null differ diff --git a/public/media/university/networks.png b/public/media/university/networks.png deleted file mode 100755 index 2563f8cad..000000000 Binary files a/public/media/university/networks.png and /dev/null differ diff --git a/public/media/university/physics.png b/public/media/university/physics.png deleted file mode 100755 index 87e852731..000000000 Binary files a/public/media/university/physics.png and /dev/null differ diff --git a/public/media/university/psychology.png b/public/media/university/psychology.png deleted file mode 100755 index 31ab39474..000000000 Binary files a/public/media/university/psychology.png and /dev/null differ diff --git a/public/media/university/statistics.png b/public/media/university/statistics.png deleted file mode 100755 index 173035cda..000000000 Binary files a/public/media/university/statistics.png and /dev/null differ diff --git a/rector.php b/rector.php new file mode 100644 index 000000000..f387115f6 --- /dev/null +++ b/rector.php @@ -0,0 +1,19 @@ +withPaths([ + __DIR__ . '/assets', + __DIR__ . '/config', + __DIR__ . '/public', + __DIR__ . '/src', + __DIR__ . '/tests', + ]) + // uncomment to reach your current PHP version + ->withPhpSets() + ->withTypeCoverageLevel(0) + ->withDeadCodeLevel(0) + ->withCodeQualityLevel(0); diff --git a/src/Classes/Container/Alert.php b/src/Classes/Container/Alert.php new file mode 100644 index 000000000..76ced7f4c --- /dev/null +++ b/src/Classes/Container/Alert.php @@ -0,0 +1,80 @@ +alerts[] = [$message, $type]; + + return $this->size() - 1; + } + + public function clear() + { + $this->alerts = []; + } + + /** + * @return int + */ + public function size() + { + return count($this->alerts); + } + + /** + * @param int $position + * + * @return array|bool + */ + public function get($position) + { + return $this->alerts[$position] ?? false; + } + + /** + * @param string $tag + * @param string $type + * + * @return string + */ + public function getAlerts($tag, $type = ALERT_DEFAULT) + { + $format = ''; + foreach ($this->alerts as $k) { + if (ALERT_DEFAULT != $type and $type = $k[1]) { + $format .= '<'.$tag.' class="alert_'.$k[1].'">'.$k[0].''; + } + } + + return $format; + } + + /** + * @param string $path + * @param bool $date + * @param array $supp + */ + public function logAlerts($path, $date = true, $supp = []) + { + // TODO + } + + public function readUrl() + { + if (isset($_GET['say'])) { + $this->alerts[] = [$_GET['say'], ALERT_URL_INFO]; + } + } +} diff --git a/src/Classes/Container/ArrayList.php b/src/Classes/Container/ArrayList.php new file mode 100644 index 000000000..ee80308fc --- /dev/null +++ b/src/Classes/Container/ArrayList.php @@ -0,0 +1,86 @@ +elements); + } + + /** + * @param string $key + * + * @return mixed + */ + public function get($key) + { + return $this->elements[$key] ?? null; + } + + /** + * @param string $key + * + * @return bool + */ + public function exist($key) + { + return isset($this->elements[$key]); + } + + public function has(string $key): bool + { + return isset($this->elements[$key]); + } + + /** + * @param string $key + * @param mixed $value + * + * @return bool + */ + public function equal($key, $value) + { + return $this->exist($key) && $this->get($key) == $value; + } + + /** + * @param string $key + * @param mixed $value + */ + public function add($key, $value) + { + $this->elements[$key] = $value; + } + + /** + * @param string $key + * + * @return bool + */ + public function remove($key) + { + if (isset($this->elements[$key])) { + unset($this->elements[$key]); + } + + return false; + } + + public function clear() + { + $this->elements = []; + } + + public function __toString(): string + { + return sprintf('[%s]', implode(',', array_values($this->elements))); + } +} diff --git a/src/Classes/Container/Cookie.php b/src/Classes/Container/Cookie.php new file mode 100644 index 000000000..4e21d9305 --- /dev/null +++ b/src/Classes/Container/Cookie.php @@ -0,0 +1,73 @@ +elements[$key] = $value; + + if (true === $new) { + $this->newElements[$key] = $value; + } + } + + /** + * @param string $key + * + * @return mixed + */ + #[\Override] + public function get($key, $default = null) + { + return $this->elements[$key] ?? $default; + } + + /** + * @param string $key + * + * @return bool + */ + #[\Override] + public function remove($key) + { + if (!isset($this->elements[$key])) { + return false; + } + unset($this->elements[$key]); + } + + #[\Override] + public function clear() + { + $this->elements = []; + } + + /** + * @return array + */ + public function all() + { + return $this->elements; + } + + /** + * @return array + */ + public function getNewElements() + { + return $this->newElements; + } +} diff --git a/src/Classes/Container/EventList.php b/src/Classes/Container/EventList.php new file mode 100644 index 000000000..7a17fddb0 --- /dev/null +++ b/src/Classes/Container/EventList.php @@ -0,0 +1,115 @@ +events); + } + + /** + * @param int $index + * + * @return ArrayList + */ + public function get($index = 0) + { + return $this->events[$index] ?? null; + } + + /** + * @param string $date + * + * @return \App\Classes\Container\StackList + */ + public function getPastEvents($date) + { + $past = new StackList(); + foreach ($this->events as $e) { + if ($e->get('date') <= $date) { + $past->append($e); + } + } + + return $past; + } + + /** + * @param string $date + */ + public function clearPastEvents($date) + { + $size = $this->size() - 1; + for ($i = $size; $i >= 0; --$i) { + if ($this->events[$i]->get('date') <= $date) { + $this->remove($i); + --$i; + } + } + } + + /** + * @param string $date + * @param string $eventType + * @param string $eventId + * @param string $eventInfo + */ + public function add($date, $eventType, $eventId, $eventInfo = null) + { + $event = new ArrayList(); + $event->add('date', $date); + $event->add('eventType', $eventType); + $event->add('eventId', $eventId); + $event->add('eventInfo', $eventInfo); + + $index = 0; + $found = false; + foreach ($this->events as $e) { + if ($e->get('date') > $date) { + $found = true; + break; + } + ++$index; + } + if ($found) { + $begin = array_slice($this->events, 0, $index); + $begin[] = $event; + $end = array_slice($this->events, $index); + $this->events = array_merge($begin, $end); + } else { + $this->events[] = $event; + } + } + + /** + * @param int $index + * + * @return bool + */ + public function remove($index) + { + if ($index < 0) { + $index = count($this->events) + $index; + } + if (!isset($this->events[$index])) { + return false; + } + $begin = array_slice($this->events, 0, $index); + $end = array_slice($this->events, $index + 1); + $this->events = array_merge($begin, $end); + } + + public function clear() + { + $this->events = []; + } +} diff --git a/src/Classes/Container/History.php b/src/Classes/Container/History.php new file mode 100644 index 000000000..a27d4f041 --- /dev/null +++ b/src/Classes/Container/History.php @@ -0,0 +1,47 @@ +events, $path); + if (count($this->events) > self::MAX_SIZE) { + $this->events = array_slice($this->events, 0, self::MAX_SIZE); + } + } + + /** + * @return string + */ + public function getCurrentPath() + { + return $this->events[0]; + } + + /** + * @param int $larger + * + * @return string + */ + public function getPastPath($larger = 0) + { + if (isset($this->events[$larger])) { + return $this->events[$larger]; + } + } + + public function clear() + { + $this->events = []; + } +} diff --git a/src/Classes/Container/Params.php b/src/Classes/Container/Params.php new file mode 100644 index 000000000..0469e8474 --- /dev/null +++ b/src/Classes/Container/Params.php @@ -0,0 +1,37 @@ + true, + self::SHOW_MAP_MINIMAP => true, + self::SHOW_MAP_RC => true, + self::SHOW_MAP_ANTISPY => true, + self::SHOW_MAP_FLEETOUT => true, + self::SHOW_MAP_FLEETIN => true, + self::SHOW_ATTACK_REPORT => true, + self::SHOW_REBEL_REPORT => true, + self::REDIRECT_CHAT => false, + ]; + + /** + * @return array + */ + public static function getParams() + { + return self::$params; + } +} diff --git a/src/Classes/Container/StackList.php b/src/Classes/Container/StackList.php new file mode 100644 index 000000000..38ec37587 --- /dev/null +++ b/src/Classes/Container/StackList.php @@ -0,0 +1,123 @@ +elements); + } + + /** + * @param int $index + * + * @return mixed + */ + public function get($index = 0) + { + return $this->elements[$index] ?? null; + } + + public function all(): array + { + return $this->elements; + } + + /** + * @param int $index + * + * @return bool + */ + public function exist($index) + { + return isset($this->elements[$index]); + } + + /** + * @param string $key + * @param mixed $value + */ + public function add($key, $value) + { + $this->elements[$key] = $value; + } + + /** + * @param string $key + * @param mixed $value + */ + public function increase($key, $value) + { + $this->elements[$key] = + (isset($this->elements[$key])) + ? $this->elements[$key] + $value + : $value + ; + } + + /** + * @param string $key + * @param mixed $value + */ + public function insert($key, $value) + { + if (count($this->elements) < $key) { + $this->elements[$key] = $value; + } else { + // décalage des tous les index qui suivent + $begin = array_slice($this->elements, 0, $key); + $begin[] = $value; + $end = array_slice($this->elements, $key); + $this->elements = array_merge($begin, $end); + } + } + + /** + * @param mixed $element + */ + public function append($value) + { + $this->elements[] = $value; + } + + /** + * @param mixed $value + */ + public function prepend($value) + { + array_unshift($this->elements, $value); + } + + /** + * @param int $index + */ + public function remove($index) + { + if ($index < 0) { + $index = count($this->elements) + $index; + } + if (!isset($this->elements[$index])) { + return false; + } + $begin = array_slice($this->elements, 0, $index); + $end = array_slice($this->elements, $index + 1); + $this->elements = array_merge($begin, $end); + } + + public function clear() + { + $this->elements = []; + } + + public function __toString(): string + { + return sprintf('[%s]', implode(',', array_values($this->elements))); + } +} diff --git a/src/Classes/Library/Chronos.php b/src/Classes/Library/Chronos.php new file mode 100644 index 000000000..fc1e1eece --- /dev/null +++ b/src/Classes/Library/Chronos.php @@ -0,0 +1,121 @@ + minutes + * : str 's' => secondes + */ + public static function getTimer($type) + { + $ret = 60 - (date($type) + 1); + if ($ret < 10) { + $ret = '0'.$ret; + } + + return (int) $ret; + } + + /* + * retourne le temps écoulé depuis le début du serveur + * arg : $type + * : str 'str' => strates + * : str 'seg' => segments + * : str 'rel' => relèves + * : str 'min' => minutes + * : str 'sec' => secondes + */ + public static function getDate($type) + { + $now = time(); + $date = strtotime((string) $_ENV['SERVER_START_TIME']); + $intr = $now - $date; + $rel = (floor($intr / 3600)) + ($_ENV['SEGMENT_SHIFT'] * Chronos::CO_SEG); + + if ('str' == $type) { + return floor($rel / Chronos::CO_STR); + } elseif ('seg' == $type) { + return floor($rel / Chronos::CO_SEG); + } elseif ('rel' == $type) { + $str = floor($rel / Chronos::CO_STR); + $seg = floor(($rel - ($str * Chronos::CO_STR)) / Chronos::CO_SEG); + + return $rel - ($str * Chronos::CO_STR) - ($seg * Chronos::CO_SEG); + } + } + + private static function getRel($date) + { + $origin = strtotime((string) $_ENV['SERVER_START_TIME']); + $date = strtotime((string) $date); + $intr = $date - $origin; + + return (floor($intr / 3600)) + ($_ENV['SEGMENT_SHIFT'] * Chronos::CO_SEG); + } + + /* + * transforme une date en temps de jeu + * arg : $date + * : str => date au format sql (2012-08-01 18:30:00) + */ + public static function transform(string|\DateTimeImmutable $sourceDate, bool $returnHtml = true): string + { + if (\is_numeric($sourceDate)) { + $date = new \DateTimeImmutable(); + $date->setTimestamp(intval($sourceDate)); + } elseif ($sourceDate instanceof \DateTimeImmutable) { + $date = $sourceDate; + } else { + $date = new \DateTimeImmutable($sourceDate); + } + + $releve = self::getRel($date->format('Y-m-d H:i:s')); + $segment = floor($releve / Chronos::CO_SEG); + $releve -= $segment * Chronos::CO_SEG; + + $return = 'SEG'.$segment.' REL'.$releve; + $title = $date->format('j.m.Y à H:i:s'); + + return $returnHtml ? ''.$return.'' : $return; + } + + public static function secondToFormat($seconds, $format = 'large') + { + $return = ''; + $rel = floor($seconds / 3600); + $min = floor(($seconds - ($rel * 3600)) / 60); + $sec = $seconds - ($rel * 3600) - ($min * 60); + + if ('large' == $format) { + $return .= ($rel > 0) ? $rel.' '.Chronos::LN_REL.Format::addPlural($rel).', ' : ''; + $return .= ($min > 0) ? $min.' '.Chronos::LN_MIN.Format::addPlural($min).', ' : ''; + $return .= ($sec > 0) ? $sec.' '.Chronos::SN_SEC : ''; + } elseif ('short' == $format) { + $return .= $rel.' '.Chronos::SN_REL.Format::addPlural($rel).', '.$min.' '.Chronos::SN_MIN.', '.$sec.' '.Chronos::SN_SEC; + } elseif ('lite' == $format) { + $min = ($min > 9) ? $min : '0'.$min; + $sec = ($sec > 9) ? $sec : '0'.$sec; + $return .= $rel.':'.$min.':'.$sec; + } + + return trim($return, ', '); + } +} diff --git a/src/Classes/Library/DateTimeConverter.php b/src/Classes/Library/DateTimeConverter.php new file mode 100644 index 000000000..17175e67b --- /dev/null +++ b/src/Classes/Library/DateTimeConverter.php @@ -0,0 +1,20 @@ +getTimestamp() - time(); + + return ($diff > 0) ? $diff * 1000 : 0; + } +} diff --git a/src/Classes/Library/Format.php b/src/Classes/Library/Format.php new file mode 100644 index 000000000..0b17d4508 --- /dev/null +++ b/src/Classes/Library/Format.php @@ -0,0 +1,122 @@ + nombre qui définit ou non le pluriel + * arg : $return * + * : str => retourne la chaine (ou s si non spécifié) si number est supérieur à 1 + * arg : + */ + public static function addPlural(int $number, string $return = '', string $expression = ''): string + { + if ($number > 1) { + return ('' == $expression and '' == $return) + ? 's' + : $return; + } else { + return ('' == $expression) + ? '' + : $expression; + } + } + + public static function ordinalNumber(int $nbr): string + { + return match ($nbr) { + 1 => 'premier', + 2 => 'deuxième', + 3 => 'troisième', + 4 => 'quatrième', + 5 => 'cinquième', + 6 => 'sixième', + 7 => 'septième', + default => $nbr.'ème', + }; + } + + public static function plural(int $number, string $return = '', string $expression = ''): string + { + return self::addPlural($number, $return, $expression); + } + + /* + * retourne un nombre formté + * - en mettant des espaces chaque milliers + * - en choisissant le nombre de chiffre après la virgule + * arg : $number + * : int => nombre à formater + * arg : $decimal * + * : int => nombre de chiffre après la virgule + */ + public static function numberFormat(int|float $number, int $decimals = 0): string + { + return self::number($number, $decimals); + } + + public static function number(int|float $number, int $decimals = 0): string + { + if (-2 == $decimals and $number > 999999) { + return number_format(ceil($number / 1000000), $decimals, ',', ' ').' Mio'; + } elseif ($decimals <= -1 and $number > 9999) { + return number_format(ceil($number / 1000), $decimals, ',', ' ').' k'; + } else { + return number_format($number, $decimals, ',', ' '); + } + } + + public static function percent(int|float $number, int|float $base, bool $ceil = true): float + { + return min(100, (0 === intval(round($base))) + ? 0 + : ( + $ceil + ? ceil(($number / $base) * 100) + : ($number / $base) * 100 + )); + } + + public static function rankingFormat($number) + { + if (1 == $number) { + return '1er'; + } else { + return $number.'ème'; + } + } + + public static function actionBuilder($action, $token, $params = [], $hasRoot = true) + { + $url = ''; + if ($hasRoot) { + // @TODO replace with app_root + $url .= '/'; + } + $url .= 'action/'; + $url .= 'a-'.$action.'/'; + + foreach ($params as $key => $value) { + $url .= $key.'-'.$value.'/'; + } + $url .= 'token-'.$token; + + return $url; + } + + public static function paddingNumber($number, $size) + { + $digits = strlen((string) $number); + + if ($digits < $size) { + for ($i = 0; $i < $size - $digits; ++$i) { + $number = '0'.$number; + } + } + + return $number; + } +} diff --git a/src/Classes/Library/Game.php b/src/Classes/Library/Game.php new file mode 100644 index 000000000..851e5fcbc --- /dev/null +++ b/src/Classes/Library/Game.php @@ -0,0 +1,211 @@ + 'planète tellurique', + 2 => 'géante gazeuse', + 3 => 'ruine', + 4 => 'poche de gaz', + 5 => 'ceinture d\'astéroïdes', + 6 => 'zone vide', + default => 'rien', + }; + } + + public static function getSizeOfPlanet(int|float $population): int + { + if ($population < 100) { + return 1; + } elseif ($population < 200) { + return 2; + } else { + return 3; + } + } + + public static function formatCoord(int $xCoord, int $yCoord, int $planetPosition = 0, int $sectorLocation = 0): string + { + if ($sectorLocation > 0) { + return '⟨'.$sectorLocation.'⟩ '.$xCoord.':'.$yCoord.':'.$planetPosition.''; + } elseif ($planetPosition > 0) { + return $xCoord.':'.$yCoord.':'.$planetPosition; + } else { + return $xCoord.':'.$yCoord; + } + } + + public static function resourceProduction(float $coeffRefinery, int $coeffPlanet): float + { + return $coeffRefinery * $coeffPlanet; + } + + public static function getMaxTravelDistance($bonus): int + { + return Commander::DISTANCEMAX; + } + + public static function calculateCurrentRate($currentRate, $transactionType, $quantity, $identifier, $price) + { + // calculate the new rate (when a transaction is accepted) + switch ($transactionType) { + case Transaction::TYP_RESOURCE: + // 1 resource = x credit + $thisRate = $price / $quantity; + // dilution of 1% + $newRate = (($quantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $quantity); + + return max($newRate, Transaction::MIN_RATE_RESOURCE); + break; + case Transaction::TYP_SHIP: + // 1 resource = x credit + if (ShipResource::isAShip($identifier)) { + $resourceQuantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; + $thisRate = $price / $resourceQuantity; + // dilution of 1% + $newRate = (($resourceQuantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $resourceQuantity); + + return max($newRate, Transaction::MIN_RATE_SHIP); + } else { + return false; + } + break; + case Transaction::TYP_COMMANDER: + // 1 experience = x credit + $thisRate = $price / $quantity; + // dilution of 1% + $newRate = (($quantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $quantity); + + return max($newRate, Transaction::MIN_RATE_COMMANDER); + break; + default: + return 0; + break; + } + } + + public static function calculateRate($transactionType, $quantity, $identifier, $price) + { + switch ($transactionType) { + case Transaction::TYP_RESOURCE: + // 1 resource = x credit + return $price / $quantity; + break; + case Transaction::TYP_SHIP: + // 1 resource = x credit + if (ShipResource::isAShip($identifier)) { + $resourceQuantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; + + return $price / $resourceQuantity; + } else { + return false; + } + break; + case Transaction::TYP_COMMANDER: + // 1 experience = x credit + return $price / $quantity; + break; + default: + return false; + break; + } + } + + public static function getMinPriceRelativeToRate($transactionType, $quantity, $identifier = null) + { + switch ($transactionType) { + case Transaction::TYP_RESOURCE: + $minRate = Transaction::MIN_RATE_RESOURCE; + break; + case Transaction::TYP_SHIP: + $minRate = Transaction::MIN_RATE_SHIP; + $quantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; + break; + case Transaction::TYP_COMMANDER: + $minRate = Transaction::MIN_RATE_COMMANDER; + break; + default: + return false; + } + + $price = round($quantity * $minRate); + if ($price < 1) { + $price = 1; + } + + return $price; + } + + public static function getMaxPriceRelativeToRate($transactionType, $quantity, $identifier = false) + { + switch ($transactionType) { + case Transaction::TYP_RESOURCE: + $minRate = Transaction::MAX_RATE_RESOURCE; + break; + case Transaction::TYP_SHIP: + $minRate = Transaction::MAX_RATE_SHIP; + $quantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; + break; + case Transaction::TYP_COMMANDER: + $minRate = Transaction::MAX_RATE_COMMANDER; + break; + default: + return false; + } + + $price = $quantity * $minRate; + + return round($price); + } + + public static function getImprovementFromScientificCoef(int $coef): int + { + // transform scientific coefficient of a place + // into improvement coefficient for the technosphere + if ($coef < 10) { + return 0; + } elseif ($coef >= 100) { + return 40; + } else { + return intval(ceil(0.004 * $coef * $coef - 0.01 * $coef + 0.7)); + } + } + + /** + * @param array $ships + */ + public static function getFleetCost(array $ships, bool $affected = true): int + { + $cost = 0; + for ($i = 0; $i < ShipResource::SHIP_QUANTITY; ++$i) { + $cost += ShipResource::getInfo($i, 'cost') * ($ships[$i] ?? 0); + } + if (!$affected) { + $cost *= ShipResource::COST_REDUCTION; + } + + return ceil($cost); + } +} diff --git a/system/Classes/Library/Module.php b/src/Classes/Library/Module.php similarity index 76% rename from system/Classes/Library/Module.php rename to src/Classes/Library/Module.php index 5ce5df010..acbc1f367 100644 --- a/system/Classes/Library/Module.php +++ b/src/Classes/Library/Module.php @@ -1,6 +1,6 @@ getName()}/Resource/config/") + new FileLocator("{$projectDir}/src/Modules/{$this->getName()}/Resource/config/") ); $loader->load('config.yml'); } - + /** - * This method must return the name of the module and be the same as the module folder name + * This method must return the name of the module and be the same as the module folder name. */ abstract public function getName(): string; } diff --git a/system/Classes/Library/ParameterBag.php b/src/Classes/Library/ParameterBag.php similarity index 78% rename from system/Classes/Library/ParameterBag.php rename to src/Classes/Library/ParameterBag.php index 45c031ddc..51ecfb2f0 100644 --- a/system/Classes/Library/ParameterBag.php +++ b/src/Classes/Library/ParameterBag.php @@ -1,64 +1,70 @@ parameters[] = $value; - + return $this; } - + /** * @param string $key - * @param mixed $value + * @param mixed $value + * * @return $this */ public function set($key, $value) { $this->parameters[$key] = $value; - + return $this; } - + /** * @param string $key - * @return boolean + * + * @return bool */ public function has($key) { return isset($this->parameters[$key]); } - + /** * @param string $key + * * @return $this */ public function remove($key) { unset($this->parameters[$key]); - + return $this; } /** * @param string $key - * @param mixed $default + * @param mixed $default + * * @return mixed */ public function get($key, $default = null) { return ($this->has($key)) ? $this->parameters[$key] : $default; } - + /** * @return array */ @@ -66,4 +72,4 @@ public function all() { return $this->parameters; } -} \ No newline at end of file +} diff --git a/src/Classes/Library/Parser.php b/src/Classes/Library/Parser.php new file mode 100644 index 000000000..50306a24d --- /dev/null +++ b/src/Classes/Library/Parser.php @@ -0,0 +1,179 @@ +placeManager = $placeManager; + } + + public function parse(string $string): string + { + $string = static::protect($string); + + if ($this->parseLink) { + $string = $this->parseLink($string); + } + if ($this->parseIcon) { + $string = $this->parseIcon($string); + } + if ($this->parseSmile) { + $string = $this->parseSmile($string); + } + if ($this->parsePlayer) { + $string = $this->parsePlayer($string); + } + if ($this->parsePlace) { + $string = $this->parsePlace($string); + } + if ($this->parseTag) { + $string = $this->parseTag($string); + } + if ($this->parseBigTag) { + $string = $this->parseBigTag($string); + } + + return $string; + } + + public static function protect(string $string): string + { + $string = trim($string); + $string = htmlspecialchars($string); + $string = nl2br($string); + + return $string; + } + + /** @TODO Refactor this inferno */ + public function getToolbar(): string + { + $tl = '
'; + if ($this->parseTag) { + $tl .= ''; + $tl .= ''; + } + if ($this->parseIcon) { + // $tl .= ''; + } + if ($this->parsePlayer) { + $tl .= ''; + } + if ($this->parsePlace) { + $tl .= ''; + } + $tl .= '
'; + + return $tl; + } + + protected function parseIcon(string $string): string + { + $string = \preg_replace('#\[pa\]#', 'pa', $string); + $string = \preg_replace('#\[pev\]#', 'pev', (string) $string); + $string = \preg_replace('#\[credit\]#', 'credit', (string) $string); + $string = \preg_replace('#\[ressource\]#', 'resource', (string) $string); + $string = \preg_replace('#\[releve\]#', 'time', (string) $string); + + $string = \preg_replace('#\[attaque\]#', 'attack', (string) $string); + $string = \preg_replace('#\[vie\]#', 'life', (string) $string); + $string = \preg_replace('#\[defense\]#', 'defense', (string) $string); + $string = \preg_replace('#\[vitesse\]#', 'speed', (string) $string); + + return $string; + } + + protected function parseLink(string $string): string + { + return \preg_replace_callback( + "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/", + function ($m) { + $url = $m[0]; + $str = $url; + $str = preg_replace('#^https?://#', '', $str); + $str = strlen($str) > 32 ? substr($str, 0, 32).'...' : $str; + + return ''.$str.''; + }, + $string + ); + } + + protected function parseSmile(string $string): string + { + return $string; + } + + protected function parsePlayer(string $string): string + { + return preg_replace_callback( + '#\[\@(.+)\]#isU', + fn($m) => (($player = $this->playerRepository->getByName($m[1])) !== null) + ? '' . $player->name . '' + : $m[0], + $string + ); + } + + protected function parsePlace($string) + { + return \preg_replace_callback( + '#\[\#(.+)\]#isU', + function ($m) { + if (($place = $this->placeRepository->get($m[1]))) { + if ($place->getTypeOfBase() > 0) { + return ''.$place->base->name.''; + } else { + return 'planète rebelle'; + } + } + + return $m[0]; + }, + (string) $string + ); + } + + protected function parseTag(string $string): string + { + $string = \preg_replace('#\[b\](.+)\[/b\]#isU', '$1', $string); + $string = \preg_replace('#\[i\](.+)\[/i\]#isU', '$1', (string) $string); + + return $string; + } + + protected function parseBigTag(string $string): string + { + return $string; + } +} diff --git a/src/Classes/Library/Utils.php b/src/Classes/Library/Utils.php new file mode 100644 index 000000000..753b84ab8 --- /dev/null +++ b/src/Classes/Library/Utils.php @@ -0,0 +1,151 @@ +add(\DateInterval::createFromDateString('1 hour')); + + if ($cursor->getTimestamp() <= $tail->getTimestamp()) { + $dates[] = $cursor->format('Y-m-d H:i:s'); + } else { + break; + } + } + } elseif ('d' == $precision) { + // the changement is at 01:00:00 + $daysInterval = floor((abs(strtotime((string) $date1) - strtotime((string) $date2))) / (60 * 60 * 24)); + + $seconds = strtotime((string) $baseDate) + 86400; + $nextDay = floor($seconds / 86400) * 86400; + $fullDay = date('Y-m-d H:i:s', $nextDay); + + for ($i = 0; $i < $daysInterval; ++$i) { + // add date to array + $dates[] = $fullDay; + // compute next date + $newTime = strtotime($fullDay) + 86400; + $fullDay = date('Y-m-d H:i:s', $newTime); + } + // if there is an hour change at the end + if ($fullDay < $endDate) { + $dates[] = $fullDay; + } + } + + return $dates; + } + + /** + * @see DurationHandler::getDurationEnd() + * @deprecated Use \DateTimeImmutable instead + */ + public static function addSecondsToDate($date, $seconds) + { + return date('Y-m-d H:i:s', strtotime((string) $date) + $seconds); + } + + public static function generateString($nbr) + { + $password = ''; + for ($i = 0; $i < $nbr; ++$i) { + $aleaChar = self::$autorizedChar[random_int(0, count(self::$autorizedChar) - 1)]; + $password .= $aleaChar; + } + + return $password; + } + + public static function check($string, $mode = '') + { + $string = trim((string) $string); + $string = htmlspecialchars($string); + if ('complex' == $mode) { + $string = nl2br($string); + $string = preg_replace('`http://[a-z0-9._,;/?!&=#-]+`i', '$0', $string); + } + + return $string; + } + + public static function shuffle(&$array) + { + $keys = array_keys($array); + + shuffle($keys); + + foreach ($keys as $key) { + $new[$key] = $array[$key]; + } + + $array = $new; + + return true; + } +} diff --git a/system/Classes/Messenger/BusFactory.php b/src/Classes/Messenger/BusFactory.php similarity index 91% rename from system/Classes/Messenger/BusFactory.php rename to src/Classes/Messenger/BusFactory.php index 4205726be..260b8991b 100644 --- a/system/Classes/Messenger/BusFactory.php +++ b/src/Classes/Messenger/BusFactory.php @@ -1,6 +1,6 @@ $middleware; + : fn ($middleware) => $middleware; return new MessageBus([ $setLogger(new SendMessageMiddleware($sendersLocator)), diff --git a/system/Classes/Messenger/SendersLocator.php b/src/Classes/Messenger/SendersLocator.php similarity index 93% rename from system/Classes/Messenger/SendersLocator.php rename to src/Classes/Messenger/SendersLocator.php index 13a88b241..e818e7710 100644 --- a/system/Classes/Messenger/SendersLocator.php +++ b/src/Classes/Messenger/SendersLocator.php @@ -1,6 +1,6 @@ connection->auth($password); } } - + public function __destruct() { $this->connection->close(); diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 000000000..d5b5ccd1b --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,11 @@ +shipStatsHandler->getStats($ship, ShipStat::Attack, $playerBonus)); + + for ($attackNumber = 0; $attackNumber < $attacksCount; ++$attackNumber) { + if (0 === $enemySquadron->getShipsCount()) { + break; + } + $keyOfEnemyShip = $this->chooseEnemy($enemySquadron); + if (!$this->doesDodge($enemySquadron->ships[$keyOfEnemyShip], $playerBonus)) { + $this->attack($ship, $keyOfEnemyShip, $attackNumber, $enemySquadron, $playerBonus); + } else { + $this->logger->debug('{shipType} {shipId} of commander {commanderName} has dodged {attackerType} {attackerId} attack number {attackNumber}', [ + 'shipType' => $this->shipStatsHandler->getStats($enemySquadron->ships[$keyOfEnemyShip], ShipStat::CodeName, $playerBonus), + 'shipId' => $keyOfEnemyShip, + 'commanderName' => $enemySquadron->commander->name, + 'attackerType' => $this->shipStatsHandler->getStats($ship, ShipStat::CodeName, $playerBonus), + 'attackerId' => $ship->id, + 'attackNumber' => $attackNumber, + ]); + } + } + } + + private function chooseEnemy(Squadron $enemySquadron): int + { + return random_int(0, $enemySquadron->getShipsCount() - 1); + } + + private function attack(Ship $ship, int $key, int $attackNumber, Squadron $enemySquadron, PlayerBonus|null $playerBonus = null): void + { + $targetShip = $enemySquadron->ships[$key]; + + $attackDamage = $this->shipStatsHandler->getStats($ship, ShipStat::Attack, $playerBonus)[$attackNumber]; + + $damages = intval(ceil( + log(( + $attackDamage + / $this->shipStatsHandler->getStats($targetShip, ShipStat::Defense, $playerBonus) + ) + 1) + * 4 + * $attackDamage + )); + + $this->logger->debug('{shipType} {attackerId} of commander {commanderName} has inflicted {damage} damage points to {targetType} {targetId} with attack number {attackNumber}. Life before: {life}', [ + 'shipType' => $this->shipStatsHandler->getStats($ship, ShipStat::CodeName, $playerBonus), + 'targetType' => $this->shipStatsHandler->getStats($targetShip, ShipStat::CodeName, $playerBonus), + 'commanderName' => $ship->squadron->commander->name, + 'targetId' => $key, + 'life' => $targetShip->life, + 'damage' => $damages, + 'attackerId' => $ship->id, + 'attackNumber' => $attackNumber, + ]); + + $this->receiveDamages($enemySquadron, $key, $damages, $playerBonus); + } + + private function doesDodge(Ship $ship, PlayerBonus|null $playerBonus = null): bool + { + $avoidance = random_int(0, intval(round($this->shipStatsHandler->getStats($ship, ShipStat::Speed, $playerBonus)))); + + return $avoidance > 80; + } + + private function receiveDamages(Squadron $squadron, int $key, int $damages, PlayerBonus|null $playerBonus = null): void + { + $ship = $squadron->ships[$key]; + + $ship->life -= $damages; + + if ($ship->life <= 0) { + $this->logger->debug('{targetType} {targetId} of commander {commanderName} has been destroyed', [ + 'targetType' => $this->shipStatsHandler->getStats($ship, ShipStat::CodeName, $playerBonus), + 'targetId' => $key, + 'commanderName' => $ship->squadron->commander->name, + ]); + + $ship->life = 0; + $squadron->destructShip($key); + } + } +} diff --git a/src/Modules/Ares/Application/Handler/Battle/ShipStatsHandler.php b/src/Modules/Ares/Application/Handler/Battle/ShipStatsHandler.php new file mode 100644 index 000000000..e2d4d46fd --- /dev/null +++ b/src/Modules/Ares/Application/Handler/Battle/ShipStatsHandler.php @@ -0,0 +1,75 @@ +getStatsByShipNumber($ship->shipNumber, $stat, $playerBonus); + } + + public function getStatsByShipNumber(int $shipNumber, ShipStat $stat, PlayerBonus|null $playerBonus = null): mixed + { + $initialValue = ShipResource::getInfo($shipNumber, $stat->value); + + if (null !== $playerBonus && null !== ($bonusId = $this->getBonusIdForStat($shipNumber, $stat))) { + if (ShipStat::Attack === $stat) { + return array_map( + fn (int $damage) => $damage + $this->bonusApplier->apply($damage, $bonusId, $playerBonus), + $initialValue, + ); + } + + return $initialValue + $this->bonusApplier->apply( + $initialValue, + $bonusId, + $playerBonus, + ); + } + return $initialValue; + } + + /** + * TODO think bout a way to be warned when a ship does not have an associated bonus + */ + private function getBonusIdForStat(int $shipNumber, ShipStat $stat): int|null + { + return match ($stat) { + ShipStat::Attack => match ($shipNumber) { + Ship::TYPE_PEGASE, Ship::TYPE_SATYRE, Ship::TYPE_CHIMERE => PlayerBonusId::FIGHTER_ATTACK, + Ship::TYPE_SIRENE, Ship::TYPE_DRYADE, Ship::TYPE_MEDUSE => PlayerBonusId::CORVETTE_ATTACK, + Ship::TYPE_GRIFFON, Ship::TYPE_CYCLOPE => PlayerBonusId::FRIGATE_ATTACK, + Ship::TYPE_MINOTAURE, Ship::TYPE_HYDRE => PlayerBonusId::DESTROYER_ATTACK, + default => null, + }, + ShipStat::Defense => match ($shipNumber) { + Ship::TYPE_PEGASE, Ship::TYPE_SATYRE, Ship::TYPE_CHIMERE => PlayerBonusId::FIGHTER_DEFENSE, + Ship::TYPE_SIRENE, Ship::TYPE_DRYADE, Ship::TYPE_MEDUSE => PlayerBonusId::CORVETTE_DEFENSE, + Ship::TYPE_GRIFFON, Ship::TYPE_CYCLOPE => PlayerBonusId::FRIGATE_DEFENSE, + Ship::TYPE_MINOTAURE, Ship::TYPE_HYDRE => PlayerBonusId::DESTROYER_DEFENSE, + default => null, + }, + ShipStat::Speed => match ($shipNumber) { + Ship::TYPE_PEGASE, Ship::TYPE_SATYRE, Ship::TYPE_CHIMERE => PlayerBonusId::FIGHTER_SPEED, + Ship::TYPE_SIRENE, Ship::TYPE_DRYADE, Ship::TYPE_MEDUSE => PlayerBonusId::CORVETTE_SPEED, + Ship::TYPE_GRIFFON, Ship::TYPE_CYCLOPE => PlayerBonusId::FRIGATE_SPEED, + Ship::TYPE_MINOTAURE, Ship::TYPE_HYDRE => PlayerBonusId::DESTROYER_SPEED, + default => null, + }, + default => null, + }; + } +} diff --git a/src/Modules/Ares/Application/Handler/Battle/SquadronFightHandler.php b/src/Modules/Ares/Application/Handler/Battle/SquadronFightHandler.php new file mode 100644 index 000000000..9ef9e15fc --- /dev/null +++ b/src/Modules/Ares/Application/Handler/Battle/SquadronFightHandler.php @@ -0,0 +1,129 @@ +targetId = $this->chooseEnemy($squadron, $enemyCommander); + if (null === $squadron->targetId) { + $this->logger->debug('Squadron {squadronPosition} of commander {commanderName} has not found any enemy', [ + 'squadronPosition' => $squadron->position, + 'commanderName' => $squadron->commander->name, + ]); + + return; + } + + $enemySquadron = $enemyCommander->getSquadron($squadron->targetId); + + $this->logger->debug('Squadron {squadronPosition} of commander {commanderName} will fight Squadron {targetPosition}', [ + 'squadronPosition' => $squadron->position, + 'targetPosition' => $enemySquadron->position, + 'commanderName' => $squadron->commander->name, + ]); + + ++LiveReport::$littleRound; + + $this->fight($squadron, $enemySquadron, $attackerBonus); + + LiveReport::$squadrons[] = [ + 0, + $squadron->position, + 0, + LiveReport::$littleRound, + $squadron->commander, + $squadron->getShipQuantity(0), + $squadron->getShipQuantity(1), + $squadron->getShipQuantity(2), + $squadron->getShipQuantity(3), + $squadron->getShipQuantity(4), + $squadron->getShipQuantity(5), + $squadron->getShipQuantity(6), + $squadron->getShipQuantity(7), + $squadron->getShipQuantity(8), + $squadron->getShipQuantity(9), + $squadron->getShipQuantity(10), + $squadron->getShipQuantity(11), + ]; + LiveReport::$squadrons[] = [ + 0, + $enemySquadron->position, + 0, + LiveReport::$littleRound, + $enemyCommander, + $enemySquadron->getShipQuantity(0), + $enemySquadron->getShipQuantity(1), + $enemySquadron->getShipQuantity(2), + $enemySquadron->getShipQuantity(3), + $enemySquadron->getShipQuantity(4), + $enemySquadron->getShipQuantity(5), + $enemySquadron->getShipQuantity(6), + $enemySquadron->getShipQuantity(7), + $enemySquadron->getShipQuantity(8), + $enemySquadron->getShipQuantity(9), + $enemySquadron->getShipQuantity(10), + $enemySquadron->getShipQuantity(11), + ]; + + $enemySquadron->targetId = $squadron->position; + + $this->fight($enemySquadron, $squadron, $enemyBonus); + } + + private function chooseEnemy(Squadron $squadron, Commander $enemyCommander): int|null + { + $nbrShipsInLine = 0; + foreach ($enemyCommander->army as $enemySquadron) { + if ($enemySquadron->lineCoord * 3 <= FightManager::getCurrentLine()) { + $nbrShipsInLine += $enemySquadron->getShipsCount(); + } + } + if (0 == $nbrShipsInLine) { + return null; + } elseif (null != $squadron->targetId and $enemyCommander->getSquadron($squadron->targetId)->getShipsCount() > 0) { + return $squadron->targetId; + } else { + /** @var list $squadrons */ + $squadrons = $enemyCommander->squadrons->toArray(); + shuffle($squadrons); + + foreach ($squadrons as $squadron) { + if ($squadron->lineCoord * 3 <= FightManager::getCurrentLine() && $squadron->getShipsCount() > 0) { + return $squadron->position; + } + } + + return null; + } + } + + private function fight(Squadron $squadron, Squadron $enemySquadron, PlayerBonus|null $playerBonus = null): void + { + foreach ($squadron->ships as $ship) { + if (0 === $enemySquadron->getShipsCount()) { + break; + } + $this->shipFightHandler->engage($ship, $enemySquadron, $playerBonus); + } + } +} diff --git a/src/Modules/Ares/Application/Handler/CommanderArmyHandler.php b/src/Modules/Ares/Application/Handler/CommanderArmyHandler.php new file mode 100644 index 000000000..c1a7131b3 --- /dev/null +++ b/src/Modules/Ares/Application/Handler/CommanderArmyHandler.php @@ -0,0 +1,105 @@ +hasArmySetted) { + $playerBonus = null; + + if ($commander->player) { + $playerBonus = $this->playerBonusManager->getBonusByPlayer($commander->player); + } + + for ($i = 0; $i < $commander->level and $i < 25; ++$i) { + $commander->army[$i] = (null !== ($squadron = $commander->findSquadron($i))) + ? $squadron + : new Squadron( + id: Uuid::v4(), + commander: $commander, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + lineCoord: Commander::$LINECOORD[$i], + position: $i, + ); + $this->initializeShips($commander->army[$i], $playerBonus); + $commander->squadronsIds[] = $i; + } + $commander->hasArmySetted = true; + } + } + + public function getPev(Commander $commander): int + { + $this->setArmy($commander); + $pev = 0; + foreach ($commander->army as $squadron) { + $pev += $squadron->getPev(); + } + + return $pev; + } + + public function getPevToLoot(Commander $commander): int + { + $pev = 0; + foreach ($commander->armyAtEnd as $squadron) { + for ($i = 0; $i < 12; ++$i) { + $pev += $squadron[$i] * ShipResource::getInfo($i, 'pev'); + } + } + + if (0 !== $pev) { + return $pev; + } else { + return $this->getPev($commander); + } + } + + public function setArmyAtEnd(Commander $commander): void + { + $this->setArmy($commander); + + foreach ($commander->army as $key => $squadron) { + $commander->armyAtEnd[$key] = $squadron->getShips(); + } + } + + public function initializeShips(Squadron $squadron, ?PlayerBonus $playerBonus = null): void + { + if ($squadron->areShipsInitialized) { + return; + } + + foreach ($squadron->getShips() as $shipNumber => $quantity) { + for ($i = 0; $i < $quantity; ++$i) { + $squadron->ships[] = new Ship( + id: $i, + shipNumber: $shipNumber, + life: $this->shipStatsHandler->getStatsByShipNumber($shipNumber, ShipStat::Life, $playerBonus), + squadron: $squadron, + ); + } + } + + $squadron->areShipsInitialized = true; + } +} diff --git a/src/Modules/Ares/Application/Handler/CommanderExperienceHandler.php b/src/Modules/Ares/Application/Handler/CommanderExperienceHandler.php new file mode 100644 index 000000000..eeacb66ec --- /dev/null +++ b/src/Modules/Ares/Application/Handler/CommanderExperienceHandler.php @@ -0,0 +1,71 @@ +isAttacker ? LiveReport::$attackerImportance : LiveReport::$defenderImportance; + + $commander->earnedExperience = $importance * Commander::COEFFEARNEDEXP; + + if (null !== $commander->player) { + $exp = intval(round($commander->earnedExperience / Commander::COEFFEXPPLAYER)); + $this->playerManager->increaseExperience($commander->player, $exp); + + if ($enemyCommander->isAttacker) { + LiveReport::$expPlayerD = $exp; + } else { + LiveReport::$expPlayerA = $exp; + } + } + } + + public function upExperience(Commander $commander, int $earnedExperience): void + { + $commander->experience += $earnedExperience; + + while ($commander->experience >= $this->experienceToLevelUp($commander)) { + ++$commander->level; + } + + $this->commanderRepository->save($commander); + } + + public function nbLevelUp(int $level, int $newExperience): int + { + $oLevel = $level; + $nLevel = $level; + while (1) { + if ($newExperience >= (2 ** $nLevel * $this->commanderBaseLevel)) { + ++$nLevel; + } else { + break; + } + } + + return $nLevel - $oLevel; + } + + public function experienceToLevelUp(Commander $commander): int + { + return intval(2 ** $commander->level * $this->commanderBaseLevel); + } +} diff --git a/src/Modules/Ares/Application/Handler/FightImportanceHandler.php b/src/Modules/Ares/Application/Handler/FightImportanceHandler.php new file mode 100644 index 000000000..a3139ba3b --- /dev/null +++ b/src/Modules/Ares/Application/Handler/FightImportanceHandler.php @@ -0,0 +1,29 @@ +commanderArmyHandler->getPev($attacker); + $defenderPev = $this->commanderArmyHandler->getPev($defender); + + return intval(floor( + (($attackerPev + 1) * $defenderPev) + / ( + ($attackerPev + 1) * + (($defender->level + 1) / ($attacker->level + 1)) + ) + )); + } +} diff --git a/src/Modules/Ares/Application/Handler/GetFleetSpeed.php b/src/Modules/Ares/Application/Handler/GetFleetSpeed.php new file mode 100644 index 000000000..1e0bba93f --- /dev/null +++ b/src/Modules/Ares/Application/Handler/GetFleetSpeed.php @@ -0,0 +1,21 @@ +bonuses->get(PlayerBonusId::SHIP_SPEED) / 100)))) + : 0; + + return Commander::FLEETSPEED + $bonus; + } +} diff --git a/src/Modules/Ares/Application/Handler/Movement/MoveFleet.php b/src/Modules/Ares/Application/Handler/Movement/MoveFleet.php new file mode 100644 index 000000000..275fee34d --- /dev/null +++ b/src/Modules/Ares/Application/Handler/Movement/MoveFleet.php @@ -0,0 +1,45 @@ +destinationPlace = $destination; + $commander->startPlace = $origin; + $commander->travelType = $mission; + $commander->statement = Commander::MOVING; + + $commander->departedAt = (CommanderMission::Back !== $mission) + ? new \DateTimeImmutable() + : $commander->getArrivalDate(); + $commander->arrivedAt = ($this->getTravelDuration)( + origin: $origin, + destination: $destination, + departureDate: $commander->departedAt, + player: $commander->player, + ); + + $this->messageBus->dispatch( + new CommanderTravelMessage($commander->id), + [DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], + ); + } +} diff --git a/src/Modules/Ares/Application/Handler/VirtualCommanderHandler.php b/src/Modules/Ares/Application/Handler/VirtualCommanderHandler.php new file mode 100644 index 000000000..01d10ba7a --- /dev/null +++ b/src/Modules/Ares/Application/Handler/VirtualCommanderHandler.php @@ -0,0 +1,114 @@ +getVirtualCommanderLevel($place), + statement: Commander::AFFECTED, + isVirtual: true, + ); + + $squadronsCount = ceil($vCommander->level * (($place->danger + 1) / ($place->maxDanger + 1))); + + for ($squadronId = 0; $squadronId < $squadronsCount; ++$squadronId) { + $vCommander->army[$squadronId] = $this->generateSquadron( + $vCommander, + $this->getVirtualCommanderSquadronShips($vCommander, $place, $squadronId), + ); + $vCommander->squadronsIds[] = $squadronId; + + $this->commanderArmyHandler->initializeShips($vCommander->army[$squadronId]); + } + + for ($squadronId = $vCommander->level - 1; $squadronId >= $squadronsCount; --$squadronId) { + $vCommander->army[$squadronId] = $this->generateSquadron( + $vCommander, + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ); + $vCommander->squadronsIds[] = $squadronId; + } + $vCommander->hasArmySetted = true; + + return $vCommander; + } + + private function getVirtualCommanderLevel(Place $place): int + { + return intval(ceil(( + (($place->maxDanger / (Place::DANGERMAX / Place::LEVELMAXVCOMMANDER)) * 9) + + ($place->population / (Place::POPMAX / Place::LEVELMAXVCOMMANDER)) + ) / 10)); + } + + /** + * @return list + */ + private function getVirtualCommanderSquadronShips(Commander $commander, Place $place, int $squadronId): array + { + $level = $commander->level; + $compositionsCount = count(SquadronResource::$squadrons); + + // TODO extract that part to a tested method + $randomNumber = ($place->coefHistory * $place->coefResources * $place->position * $squadronId) % $compositionsCount; + + while ($randomNumber >= $compositionsCount) { + $randomNumber -= $compositionsCount; + } + if ($randomNumber < 0) { + $randomNumber = 0; + } + + $ships = SquadronResource::$squadrons[0][2]; + + for ($i = 0; $i < $compositionsCount; $i++, $randomNumber++) { + if ($randomNumber >= $compositionsCount) { + $randomNumber = 0; + } + + if (SquadronResource::$squadrons[$randomNumber][0] <= $level && SquadronResource::$squadrons[$randomNumber][1] >= $level) { + $ships = SquadronResource::$squadrons[$randomNumber][2]; + break; + } + } + + return $ships; + } + + private function generateSquadron(Commander $commander, array $ships): Squadron + { + $squadron = new Squadron( + id: Uuid::v4(), + commander: $commander, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ); + + $squadron->setShips($ships); + + return $squadron; + } +} diff --git a/src/Modules/Ares/AresModule.php b/src/Modules/Ares/AresModule.php new file mode 100644 index 000000000..22d526ee2 --- /dev/null +++ b/src/Modules/Ares/AresModule.php @@ -0,0 +1,13 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::AFFECT_COMMANDER; + } +} diff --git a/src/Modules/Ares/Domain/Event/Commander/LineChangeEvent.php b/src/Modules/Ares/Domain/Event/Commander/LineChangeEvent.php new file mode 100644 index 000000000..5396ec956 --- /dev/null +++ b/src/Modules/Ares/Domain/Event/Commander/LineChangeEvent.php @@ -0,0 +1,27 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::MOVE_FLEET_LINE; + } +} diff --git a/src/Modules/Ares/Domain/Event/Commander/NewCommanderEvent.php b/src/Modules/Ares/Domain/Event/Commander/NewCommanderEvent.php new file mode 100644 index 000000000..6d0de3c14 --- /dev/null +++ b/src/Modules/Ares/Domain/Event/Commander/NewCommanderEvent.php @@ -0,0 +1,46 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::CREATE_COMMANDER; + } + + public function getTrackingPeopleId(): int + { + return $this->commander->player->id; + } + + public function getTrackingEventName(): string + { + return 'Commander Recruited'; + } + + public function getTrackingData(): array + { + return [ + 'commander_id' => $this->commander->id, + 'base_id' => $this->commander->base->id, + ]; + } +} diff --git a/src/Modules/Ares/Domain/Event/Fleet/LootEvent.php b/src/Modules/Ares/Domain/Event/Fleet/LootEvent.php new file mode 100644 index 000000000..2f4dfa5a1 --- /dev/null +++ b/src/Modules/Ares/Domain/Event/Fleet/LootEvent.php @@ -0,0 +1,38 @@ +commander->player->id; + } + + public function getTrackingEventName(): string + { + return 'Loot'; + } + + public function getTrackingData(): array + { + return [ + 'commander_id' => $this->commander->id, + 'origin_place_id' => $this->commander->startPlace, + 'target_place_id' => $this->commander->destinationPlace, + 'is_victorious' => $this->commander->isVictorious(), + 'resources' => $this->commander->resources, + 'defender_id' => $this->defender?->id, + ]; + } +} diff --git a/src/Modules/Ares/Domain/Event/Fleet/PlannedLootEvent.php b/src/Modules/Ares/Domain/Event/Fleet/PlannedLootEvent.php new file mode 100644 index 000000000..130b1dd06 --- /dev/null +++ b/src/Modules/Ares/Domain/Event/Fleet/PlannedLootEvent.php @@ -0,0 +1,49 @@ +attacker; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::LOOT_PLANET; + } + + public function getTrackingPeopleId(): int + { + return $this->attacker->id; + } + + public function getTrackingEventName(): string + { + return 'Planned Loot Mission'; + } + + public function getTrackingData(): array + { + return [ + 'start_place_id' => $this->commander->startPlace, + 'destination_place_id' => $this->commander->destinationPlace, + 'commander_id' => $this->commander->id, + ]; + } +} diff --git a/src/Modules/Ares/Domain/Event/Fleet/SquadronUpdateEvent.php b/src/Modules/Ares/Domain/Event/Fleet/SquadronUpdateEvent.php new file mode 100644 index 000000000..49f7672c3 --- /dev/null +++ b/src/Modules/Ares/Domain/Event/Fleet/SquadronUpdateEvent.php @@ -0,0 +1,29 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::FILL_SQUADRON; + } +} diff --git a/src/Modules/Ares/Domain/Model/CommanderMission.php b/src/Modules/Ares/Domain/Model/CommanderMission.php new file mode 100644 index 000000000..f3650e51e --- /dev/null +++ b/src/Modules/Ares/Domain/Model/CommanderMission.php @@ -0,0 +1,13 @@ + + */ + public function getBySpecification(SelectorSpecification $specification): array; + + /** + * @param list $ids + * + * @return list + */ + public function getCommandersByIds(array $ids = []): array; + + /** + * @return list + */ + public function getMovingCommanders(): array; + + /** + * @param list $statements + * @param array $orderBy + * + * @return list + */ + public function getPlayerCommanders(Player $player, array $statements = [], array $orderBy = []): array; + + /** + * @param list $statements + * @param array $orderBy + * + * @return list + */ + public function getBaseCommanders(OrbitalBase $orbitalBase, array $statements = [], array $orderBy = []): array; + + /** + * @return list + */ + public function getIncomingAttacks(Player $player): array; + + /** + * @return list + */ + public function getOutcomingAttacks(Player $player): array; + + /** + * @return list + */ + public function getIncomingCommanders(Place $place): array; + + /** + * @return list + */ + public function getCommandersByLine(OrbitalBase $orbitalBase, int $line): array; + + public function countCommandersByLine(OrbitalBase $orbitalBase, int $line): int; + + /** + * @return array{nb: int, avgLevel: int} + */ + public function getFactionCommanderStats(Color $faction): array; +} diff --git a/src/Modules/Ares/Domain/Repository/LiveReportRepositoryInterface.php b/src/Modules/Ares/Domain/Repository/LiveReportRepositoryInterface.php new file mode 100644 index 000000000..b6e747d1f --- /dev/null +++ b/src/Modules/Ares/Domain/Repository/LiveReportRepositoryInterface.php @@ -0,0 +1,50 @@ + + */ +interface LiveReportRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Report|null; + + /** + * @return list + */ + public function getPlayerReports(Player $player): array; + + /** + * @param list $places + * + * @return list + */ + public function getAttackReportsByPlaces(Player $player, array $places): array; + + /** + * @return list + */ + public function getAttackReportsByMode(Player $player, bool $hasRebels, bool $isArchived): array; + + /** + * @return list + */ + public function getDefenseReportsByMode(Player $player, bool $hasRebels, bool $isArchived): array; + + /** + * @return list + */ + public function getFactionAttackReports(Color $faction): array; + + /** + * @return list + */ + public function getFactionDefenseReports(Color $faction): array; +} diff --git a/src/Modules/Ares/Domain/Repository/ReportRepositoryInterface.php b/src/Modules/Ares/Domain/Repository/ReportRepositoryInterface.php new file mode 100644 index 000000000..11ec23315 --- /dev/null +++ b/src/Modules/Ares/Domain/Repository/ReportRepositoryInterface.php @@ -0,0 +1,30 @@ + + */ +interface ReportRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Report|null; + + /** + * @return list + */ + public function getByAttackerAndPlace(Player $attacker, Place $place, \DateTimeImmutable $dFight): array; + + /** + * @param Uuid[] $places + * @return Report[] + */ + public function getAttackReportsByPlaces(Player $attacker, array $places): array; + + public function removePlayerReports(Player $player): void; +} diff --git a/src/Modules/Ares/Domain/Repository/SquadronRepositoryInterface.php b/src/Modules/Ares/Domain/Repository/SquadronRepositoryInterface.php new file mode 100644 index 000000000..789002b01 --- /dev/null +++ b/src/Modules/Ares/Domain/Repository/SquadronRepositoryInterface.php @@ -0,0 +1,31 @@ + + */ +interface SquadronRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return array{ + * nbs0: int, + * nbs1: int, + * nbs2: int, + * nbs3: int, + * nbs4: int, + * nbs5: int, + * nbs6: int, + * nbs7: int, + * nbs8: int, + * nbs9: int, + * nbs10: int, + * nbs11: int, + * } + */ + public function getFactionFleetStats(Color $faction): array; +} diff --git a/src/Modules/Ares/Domain/Specification/CanEarnSchoolExperience.php b/src/Modules/Ares/Domain/Specification/CanEarnSchoolExperience.php new file mode 100644 index 000000000..cfb8b813d --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/CanEarnSchoolExperience.php @@ -0,0 +1,19 @@ +isInSchool(); + } + + public function addMatchingCriteria(QueryBuilder $queryBuilder): void + { + $queryBuilder->andWhere('c.statement = :in_school_statement') + ->setParameter('in_school_statement', Commander::INSCHOOL); + } +} diff --git a/src/Modules/Ares/Domain/Specification/PlaceHasPlayer.php b/src/Modules/Ares/Domain/Specification/PlaceHasPlayer.php new file mode 100644 index 000000000..f06151c2e --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/PlaceHasPlayer.php @@ -0,0 +1,31 @@ +player; + } +} diff --git a/src/Modules/Ares/Domain/Specification/PlaceHavePlayersFaction.php b/src/Modules/Ares/Domain/Specification/PlaceHavePlayersFaction.php new file mode 100644 index 000000000..3a1d3a1ab --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/PlaceHavePlayersFaction.php @@ -0,0 +1,24 @@ +player->faction->id->equals($candidate->player->faction->id); + } +} diff --git a/src/Modules/Ares/Domain/Specification/PlaceIsInhabited.php b/src/Modules/Ares/Domain/Specification/PlaceIsInhabited.php new file mode 100644 index 000000000..bb852977f --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/PlaceIsInhabited.php @@ -0,0 +1,31 @@ +typeOfPlace; + } +} diff --git a/src/Modules/Ares/Domain/Specification/Player/CanPlayerAttackPlace.php b/src/Modules/Ares/Domain/Specification/Player/CanPlayerAttackPlace.php new file mode 100644 index 000000000..5d45e9f38 --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/Player/CanPlayerAttackPlace.php @@ -0,0 +1,17 @@ +player && !$candidate->player->faction->id->equals($this->player->faction->id)) + || (null === $candidate->player && 1 === $candidate->typeOfPlace); + } +} diff --git a/src/Modules/Ares/Domain/Specification/Player/CanPlayerMoveToPlace.php b/src/Modules/Ares/Domain/Specification/Player/CanPlayerMoveToPlace.php new file mode 100644 index 000000000..fbab54497 --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/Player/CanPlayerMoveToPlace.php @@ -0,0 +1,25 @@ +player + && (($candidate->player->id === $this->player->id && !$candidate->id->equals($this->orbitalBase->place->id)) + || $candidate->player->faction->id->equals($this->player->faction->id)); + } +} diff --git a/src/Modules/Ares/Domain/Specification/Player/CanRecycle.php b/src/Modules/Ares/Domain/Specification/Player/CanRecycle.php new file mode 100644 index 000000000..6920ba195 --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/Player/CanRecycle.php @@ -0,0 +1,17 @@ +system->sector->faction + || $candidate->system->sector->faction->id->equals($this->player->faction->id); + } +} diff --git a/src/Modules/Ares/Domain/Specification/Player/CanSpyPlace.php b/src/Modules/Ares/Domain/Specification/Player/CanSpyPlace.php new file mode 100644 index 000000000..2e6e46268 --- /dev/null +++ b/src/Modules/Ares/Domain/Specification/Player/CanSpyPlace.php @@ -0,0 +1,28 @@ +commanderRepository->get($message->commanderId) + ?? throw new \RuntimeException(sprintf('Commander %s not found', $message->commanderId)); + + // If the commander was updated recently, we skip him + $missingUpdatesCount = ($this->countMissingSystemUpdates)($commander); + if (0 === $missingUpdatesCount) { + return; + } + + $orbitalBase = $commander->base; + + $playerBonus = $this->playerBonusManager->getBonusByPlayer($commander->player); + $playerBonus = $playerBonus->bonuses; + + $secondsPerGameCycle = $this->gameTimeConverter->convertGameCyclesToSeconds(1); + + try { + $this->entityManager->beginTransaction(); + + $launchNewMessage = false; + + for ($i = 0; $i < $missingUpdatesCount; ++$i) { + if ($i === self::MAX_UPDATES) { + $launchNewMessage = true; + + break; + } + $invest = $orbitalBase->iSchool; + $invest += $invest * $playerBonus->get(PlayerBonusId::COMMANDER_INVEST) / 100; + + // xp gagnée + // TODO Factorize in a service and check potential duplicates + $earnedExperience = $invest / Commander::COEFFSCHOOL; + $earnedExperience += (1 == random_int(0, 1)) + ? random_int(0, intval(round($earnedExperience / 20))) + : -(random_int(0, intval(round($earnedExperience / 20)))); + $earnedExperience = max(intval(round($earnedExperience)), 0); + + $this->commanderExperienceHandler->upExperience($commander, $earnedExperience); + + $commander->updatedAt = $commander->updatedAt->modify(sprintf('+%d seconds', $secondsPerGameCycle)); + } + + $this->entityManager->commit(); + + if (true === $launchNewMessage) { + $this->messageBus->dispatch(new CommanderSchoolExperienceMessage($commander->id)); + + $this->logger->debug('Dispatched new school experience update message for the next iterations for commander {commanderName} of player {playerName}', [ + 'commanderName' => $commander->name, + 'commanderId' => $commander->id, + 'playerName' => $commander->player->name, + 'playerId' => $commander->player->id, + ]); + } + } catch (\Throwable $e) { + $this->entityManager->rollback(); + + throw $e; + } + } +} diff --git a/src/Modules/Ares/Handler/CommanderTravelHandler.php b/src/Modules/Ares/Handler/CommanderTravelHandler.php new file mode 100644 index 000000000..97059a8b3 --- /dev/null +++ b/src/Modules/Ares/Handler/CommanderTravelHandler.php @@ -0,0 +1,62 @@ +commanderRepository->get($commanderTravelMessage->getCommanderId()))) { + return; + } + + match ($commander->travelType) { + CommanderMission::Move => $this->commanderManager->uChangeBase($commander), + CommanderMission::Loot => $this->lootManager->loot($commander), + CommanderMission::Colo => $this->conquestManager->conquer($commander), + CommanderMission::Back => $this->moveBack($commander), + default => throw new \LogicException(sprintf( + 'Commander %s has arrived without mission', + $commander->id->toRfc4122(), + )), + }; + } + + protected function moveBack(Commander $commander): void + { + $this->placeManager->sendNotif($commander->destinationPlace, Place::COMEBACK, $commander); + + $this->commanderManager->endTravel($commander, Commander::AFFECTED); + + if ($commander->resources > 0) { + $this->orbitalBaseManager->increaseResources($commander->base, $commander->resources); + $commander->resources = 0; + } + $this->commanderRepository->save($commander); + } +} diff --git a/src/Modules/Ares/Handler/CommandersSchoolExperienceHandler.php b/src/Modules/Ares/Handler/CommandersSchoolExperienceHandler.php new file mode 100644 index 000000000..8e63f58d0 --- /dev/null +++ b/src/Modules/Ares/Handler/CommandersSchoolExperienceHandler.php @@ -0,0 +1,31 @@ +commanderRepository->getBySpecification(new CanEarnSchoolExperience()); + + foreach ($commanders as $commander) { + $this->messageBus->dispatch(new CommanderSchoolExperienceMessage($commander->id)); + } + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/AffectCommander.php b/src/Modules/Ares/Infrastructure/Controller/AffectCommander.php new file mode 100644 index 000000000..ce2711db2 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/AffectCommander.php @@ -0,0 +1,88 @@ + Requirement::UUID_V4, + ], + methods: Request::METHOD_GET, + )] + public function __invoke( + Uuid $id, + CommanderManager $commanderManager, + CommanderRepositoryInterface $commanderRepository, + EventDispatcherInterface $eventDispatcher, + Player $currentPlayer, + ): Response { + $commander = $commanderRepository->get($id) + ?? throw $this->createNotFoundException('Cet officier n\'existe pas ou ne vous appartient pas'); + + $orbitalBase = $commander->base; + + // checker si on a assez de place !!!!! + $nbrLine1 = $commanderRepository->countCommandersByLine($orbitalBase, 1); + $nbrLine2 = $commanderRepository->countCommandersByLine($orbitalBase, 2); + + if ($commander->isInSchool() || $commander->isInReserve()) { + if ($nbrLine2 < PlaceResource::get($orbitalBase->typeOfBase, 'r-line')) { + $commander->line = 2; + $statement = 'de réserve'; + } elseif ($nbrLine1 < PlaceResource::get($orbitalBase->typeOfBase, 'l-line')) { + $commander->line = 1; + $statement = 'active'; + } else { + throw new \LogicException('Votre base a dépassé la capacité limite d\'officiers en activité'); + } + $commander->assignedAt = new \DateTimeImmutable(); + $commander->statement = Commander::AFFECTED; + + $commanderRepository->save($commander); + + $eventDispatcher->dispatch(new AffectationEvent($commander, $currentPlayer)); + + $this->addFlash('success', sprintf('Votre officier %s a bien été affecté en force %s', $commander->name, $statement)); + + return $this->redirectToRoute('fleet_headquarters', ['commander' => $commander->id]); + } elseif ($commander->isAffected()) { + $baseCommanders = $commanderRepository->getBaseCommanders( + $orbitalBase, + [Commander::INSCHOOL], + ); + + $commander->updatedAt = new \DateTimeImmutable(); + if (count($baseCommanders) < PlaceResource::get($orbitalBase->typeOfBase, 'school-size')) { + $commander->statement = Commander::INSCHOOL; + $this->addFlash('success', 'Votre officier '.$commander->name.' a été remis à l\'école'); + } else { + $commander->statement = Commander::RESERVE; + $this->addFlash('success', 'Votre officier '.$commander->name.' a été remis dans la réserve de l\'armée'); + } + $commanderManager->emptySquadrons($commander); + $commanderRepository->save($commander); + + return $this->redirectToRoute('school'); + } + throw new ConflictHttpException('Le status de votre officier ne peut pas être modifié'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/CombatReport/ArchiveReport.php b/src/Modules/Ares/Infrastructure/Controller/CombatReport/ArchiveReport.php new file mode 100644 index 000000000..eab480e07 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/CombatReport/ArchiveReport.php @@ -0,0 +1,46 @@ +get($id)) !== null) { + if ($currentPlayer->id === $report->attacker->id) { + if (Report::STANDARD === $report->attackerStatement) { + $report->attackerStatement = Report::ARCHIVED; + } else { + $report->attackerStatement = Report::STANDARD; + } + } elseif ($currentPlayer->id === $report->defender->id) { + if (Report::STANDARD == $report->defenderStatement) { + $report->defenderStatement = Report::ARCHIVED; + } else { + $report->defenderStatement = Report::STANDARD; + } + } else { + throw new AccessDeniedHttpException('Ce rapport ne vous appartient pas.'); + } + } else { + throw new NotFoundHttpException('Ce rapport n\'existe pas.'); + } + $reportRepository->save($report); + + return $this->redirectToRoute('fleet_archives'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteAllReports.php b/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteAllReports.php new file mode 100644 index 000000000..a2a5d4414 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteAllReports.php @@ -0,0 +1,22 @@ +removePlayerReports($currentPlayer); + + $this->addFlash('success', 'Vos rapports ont été correctement supprimés'); + + return $this->redirectToRoute('fleet_archives'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteReport.php b/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteReport.php new file mode 100644 index 000000000..920dff48e --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/CombatReport/DeleteReport.php @@ -0,0 +1,40 @@ +get($id) + ?? throw $this->createNotFoundException('Ce rapport n\'existe pas'); + + if ($report->attacker->id === $currentPlayer->id) { + $report->attackerStatement = Report::DELETED; + } elseif ($report->defender->id === $currentPlayer->id) { + $report->defenderStatement = Report::DELETED; + } else { + throw $this->createAccessDeniedException('Ce rapport ne vous appartient pas'); + } + + $reportRepository->save($report); + + return $this->redirectToRoute('fleet_archives'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Commander/ChangeLine.php b/src/Modules/Ares/Infrastructure/Controller/Commander/ChangeLine.php new file mode 100644 index 000000000..08db97e7f --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Commander/ChangeLine.php @@ -0,0 +1,70 @@ + Requirement::UUID_V4, + ], + methods: Request::METHOD_GET, + )] + public function __invoke( + Request $request, + Player $currentPlayer, + CommanderManager $commanderManager, + CommanderRepositoryInterface $commanderRepository, + EventDispatcherInterface $eventDispatcher, + Uuid $id, + ): Response { + $commander = $commanderRepository->get($id) + ?? throw $this->createNotFoundException('Ce commandant n\'existe pas'); + + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas'); + } + + $orbitalBase = $commander->base; + + // checker si on a assez de place !!!!! + if (1 == $commander->line) { + $secondLineCommanders = $commanderRepository->getCommandersByLine($orbitalBase, 2); + + $commander->line = 2; + if (count($secondLineCommanders) >= PlaceResource::get($orbitalBase->typeOfBase, 'r-line')) { + $secondLineCommanders[0]->line = 1; + + $this->addFlash('success', 'Votre commandant '.$commander->name.' a échangé sa place avec '.$commander->name.'.'); + } + } else { + $firstLineCommanders = $commanderRepository->getCommandersByLine($orbitalBase, 1); + + $commander->line = 1; + if (count($firstLineCommanders) >= PlaceResource::get($orbitalBase->typeOfBase, 'l-line')) { + $firstLineCommanders[0]->line = 2; + $this->addFlash('success', 'Votre commandant '.$commander->name.' a échangé sa place avec '.$commander->name.'.'); + } + } + $commanderRepository->save($commander); + + $eventDispatcher->dispatch(new LineChangeEvent($commander, $currentPlayer)); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Commander/Disband.php b/src/Modules/Ares/Infrastructure/Controller/Commander/Disband.php new file mode 100644 index 000000000..7b32a9211 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Commander/Disband.php @@ -0,0 +1,42 @@ +get($id) + ?? throw $this->createNotFoundException('Ce commandant n\'existe pas.'); + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas'); + } + if (!$commander->isAffected()) { + throw new ConflictHttpException('Vous ne pouvez pas retirer les vaisseaux à un officier en déplacement.'); + } + + // vider le commandant + $commanderManager->emptySquadrons($commander); + + $this->addFlash('success', 'Vous avez vidé l\'armée menée par votre commandant '.$commander->name.'.'); + + $commanderRepository->save($commander); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Commander/Fire.php b/src/Modules/Ares/Infrastructure/Controller/Commander/Fire.php new file mode 100644 index 000000000..9108506f4 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Commander/Fire.php @@ -0,0 +1,44 @@ +get($id) + ?? throw $this->createNotFoundException('Ce commandant n\'existe pas.'); + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas'); + } + + if ($commander->isAffected() || $commander->isInSchool() || $commander->isInReserve()) { + // vider le commandant + $commanderManager->emptySquadrons($commander); + $commander->statement = Commander::DESERT; + + $commanderRepository->save($commander); + + $this->addFlash('success', 'Vous avez renvoyé votre commandant '.$commander->name.'.'); + } else { + $this->addFlash('error', 'Vous ne pouvez pas renvoyer un officier en déplacement.'); + } + + return $this->redirectToRoute('fleet_headquarters'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Commander/UpdateName.php b/src/Modules/Ares/Infrastructure/Controller/Commander/UpdateName.php new file mode 100644 index 000000000..b41c77181 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Commander/UpdateName.php @@ -0,0 +1,44 @@ +get($id) ?? throw $this->createNotFoundException('Commander not found'); + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas'); + } + $name = $parser->protect($request->request->get('name')); + $nameLength = strlen($name); + if ($nameLength < 2 || $nameLength > 25) { + throw new BadRequestHttpException('le nom doit comporter entre 2 et 25 caractères'); + } + + $commander->name = $name; + + $commanderRepository->save($commander); + + $this->addFlash('success', 'le nom de votre commandant est maintenant ' . $name); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/CreateCommander.php b/src/Modules/Ares/Infrastructure/Controller/CreateCommander.php new file mode 100644 index 000000000..7ededd619 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/CreateCommander.php @@ -0,0 +1,97 @@ +request->get('name') ?? throw new BadRequestHttpException('Missing name'); + + $cn = new CheckName(); + $cn->maxLength = 20; + + $schoolCommanders = $commanderRepository->getBaseCommanders($currentBase, [Commander::INSCHOOL]); + + if (count($schoolCommanders) >= PlaceResource::get($currentBase->typeOfBase, 'school-size')) { + throw new ConflictHttpException('Trop d\'officiers en formation. Déplacez des officiers dans le mess pour libérer de la place.'); + } + $reserveCommanders = $commanderRepository->getBaseCommanders($currentBase, [Commander::RESERVE]); + + if (count($reserveCommanders) >= OrbitalBase::MAXCOMMANDERINMESS) { + throw new ConflictHttpException('Vous ne pouvez pas créer de nouveaux officiers si vous en avez déjà '.Orbitalbase::MAXCOMMANDERINMESS.' ou plus.'); + } + $nbrCommandersToCreate = random_int(SchoolClassResource::getInfo($school, 'minSize'), SchoolClassResource::getInfo($school, 'maxSize')); + + // TODO Replace with validator component + if (!$cn->checkLength($name) || !$cn->checkChar($name)) { + throw new BadRequestHttpException('le nom contient des caractères non autorisé ou trop de caractères.'); + } + // TODO Replace with specification + if (SchoolClassResource::getInfo($school, 'credit') > $currentPlayer->getCredits()) { + throw new AccessDeniedHttpException('vous n\'avez pas assez de crédit.'); + } + // débit des crédits au joueur + $playerManager->decreaseCredit($currentPlayer, SchoolClassResource::getInfo($school, 'credit')); + + for ($i = 0; $i < $nbrCommandersToCreate; ++$i) { + $newCommander = new Commander( + id: Uuid::v4(), + name: $name, + avatar: 't'.random_int(1, 21).'-c'.$currentPlayer->faction->identifier, + player: $currentPlayer, + base: $currentBase, + enlistedAt: new \DateTimeImmutable(), + sexe: 1, + age: random_int(40, 70), + updatedAt: new \DateTimeImmutable(), + ); + $commanderExperienceHandler->upExperience( + $newCommander, + random_int( + SchoolClassResource::getInfo($school, 'minExp'), + SchoolClassResource::getInfo($school, 'maxExp'), + ), + ); + $commanderRepository->save($newCommander); + + $eventDispatcher->dispatch(new NewCommanderEvent($newCommander, $currentPlayer)); + } + $this->addFlash('success', sprintf( + '%s commandant%s inscrit%s au programme d\'entraînement.', + $nbrCommandersToCreate, + Format::addPlural($nbrCommandersToCreate), + Format::addPlural($nbrCommandersToCreate), + )); + + return $this->redirectToRoute('school'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/Cancel.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/Cancel.php new file mode 100644 index 000000000..36b873739 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/Cancel.php @@ -0,0 +1,64 @@ +get($id) ?? throw $this->createNotFoundException('Commander not found'); + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas ou n\'existe pas.'); + } + if ($commander->isComingBack()) { + throw new ConflictHttpException('Vous ne pouvez pas annuler un retour.'); + } + // @TODO travel cancellation + // $scheduler->cancel($commander, $commander->dArrival); + + $interval = $durationHandler->getDiff($commander->getDepartureDate(), new \DateTimeImmutable()); + $newArrivalDate = new \DateTimeImmutable(sprintf('-%d seconds', $interval)); + + $rDestinationPlace = $commander->destinationPlace; + $commander->destinationPlace = $commander->startPlace; + $commander->startPlace = $rDestinationPlace; + $commander->departedAt = new \DateTimeImmutable(); + $commander->arrivedAt = $newArrivalDate; + $commander->travelType = CommanderMission::Back; + + $this->addFlash('success', 'Déplacement annulé.'); + + $messageBus->dispatch( + new \App\Modules\Ares\Message\CommanderTravelMessage($commander->id), + [\App\Classes\Library\DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], + ); + $commanderRepository->save($commander); + + if ($request->query->has('redirect')) { + return $this->redirectToRoute('map', ['place' => $request->query->get('redirect')]); + } + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/Colonize.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/Colonize.php new file mode 100644 index 000000000..642e33973 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/Colonize.php @@ -0,0 +1,143 @@ +getPlayerTechnology($currentPlayer); + + // check si technologie CONQUEST débloquée + if (1 !== $technologies->getTechnology(TechnologyId::COLONIZATION)) { + throw new ConflictHttpException('Vous devez développer votre technologie colonisation.'); + } + // check si la technologie BASE_QUANTITY a un niveau assez élevé + $maxBasesQuantity = $technologies->getTechnology(TechnologyId::BASE_QUANTITY) + 1; + + $coloQuantity = 0; + $commanders = $commanderRepository->getPlayerCommanders($currentPlayer, [Commander::MOVING]); + foreach ($commanders as $commander) { + if (CommanderMission::Colo === $commander->travelType) { + ++$coloQuantity; + } + } + $totalBases = $currentPlayerBasesRegistry->count() + $coloQuantity; + if ($totalBases >= $maxBasesQuantity) { + throw new ConflictHttpException('Vous avez assez de conquête en cours ou un niveau administration étendue trop bas.'); + } + + $commander = $commanderRepository->get($id) ?? throw $this->createNotFoundException('Commander not found'); + + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas ou n\'existe pas.'); + } + $placeId = $request->query->get('placeId') ?? throw new BadRequestHttpException('Missing place id'); + + if (!Uuid::isValid($placeId)) { + throw new BadRequestHttpException('Invalid place id'); + } + + $place = $placeRepository->get(Uuid::fromString($placeId)) + ?? throw $this->createNotFoundException('Place not found'); + if (Place::TERRESTRIAL !== $place->typeOfPlace) { + throw new ConflictHttpException('Ce lieu n\'est pas habitable.'); + } + + $home = $commander->base; + + $length = $getDistanceBetweenPlaces($home->place, $place); + + // compute price + $price = $totalBases * $this->getParameter('ares.coeff.colonization_cost'); + + // calcul du bonus + $factionBonuses = ColorResource::getInfo($currentPlayer->faction->identifier, 'bonus'); + if (in_array(ColorResource::COLOPRICEBONUS, $factionBonuses)) { + $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); + } + + if (!$currentPlayer->canAfford($price)) { + throw new ConflictHttpException('Vous n\'avez pas assez de crédits pour coloniser cette planète.'); + } + if (0 === $commanderArmyHandler->getPev($commander)) { + throw new ConflictHttpException('Vous devez affecter au moins un vaisseau à votre officier.'); + } + if (!$commander->isAffected()) { + throw new ConflictHttpException('Cet officier n\'est pas en orbite.'); + } + $sector = $place->system->sector; + + $sectorColor = $sector->faction; + $isFactionSector = $sector->faction?->id->equals($commander->player->faction->id) + || Color::ALLY === $sectorColor?->relations[$currentPlayer->faction->identifier]; + + // TODO Replace by specification + if ($length > Commander::DISTANCEMAX && !$isFactionSector) { + throw new ConflictHttpException('Cet emplacement est trop éloigné.'); + } + $moveFleet( + commander: $commander, + origin: $home->place, + destination: $place, + mission: CommanderMission::Colo, + ); + + // debit credit + $playerManager->decreaseCredit($currentPlayer, $price); + + $entityManager->flush(); + + $this->addFlash('success', 'Flotte envoyée.'); + + if ($request->query->has('redirect')) { + return $this->redirectToRoute('map', ['place' => $request->query->get('redirect')]); + } + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/Conquer.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/Conquer.php new file mode 100644 index 000000000..91cbf35f4 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/Conquer.php @@ -0,0 +1,101 @@ +getParameter('ares.coeff.conquest_cost'); + $placeId = $request->query->get('placeId') ?? throw new BadRequestHttpException('Missing place id'); + + if (!Uuid::isValid($placeId)) { + throw new BadRequestHttpException('Invalid place id'); + } + + $place = $placeRepository->get(Uuid::fromString($placeId)) + ?? throw $this->createNotFoundException('Place not found'); + + $commander = $commanderRepository->get($id) ?? throw $this->createNotFoundException('Commander not found'); + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Ce commandant ne vous appartient pas'); + } + + $totalBases = $countPlayerBases($currentPlayer); + // compute price + $price = $totalBases * $conquestCost; + + // TODO factorize faction bonus in BonusApplier + $factionBonus = ColorResource::getInfo($currentPlayer->faction->identifier, 'bonus'); + // calcul du bonus + if (in_array(ColorResource::COLOPRICEBONUS, $factionBonus)) { + $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); + } + + $technologies = $technologyRepository->getPlayerTechnology($currentPlayer); + $conquest = new Conquest( + commander: $commander, + attackerTechnology: $technologies, + attackerBasesCount: $totalBases, + targetedPlace: $place, + ); + $violations = $validator->validate($conquest, new CanConquer($price)); + + if (0 < $violations->count()) { + throw new ValidationFailedException($conquest, $violations); + } + + $moveFleet( + commander: $commander, + origin: $commander->base->place, + destination: $place, + mission: CommanderMission::Colo, + ); + // debit credit + $playerManager->decreaseCredit($currentPlayer, $price); + + $this->addFlash('success', 'Flotte envoyée.'); + + $entityManager->flush(); + + if ($request->query->has('redirect')) { + return $this->redirectToRoute('map', ['place' => $request->query->get('redirect')]); + } + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/Loot.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/Loot.php new file mode 100644 index 000000000..50ddfbf1e --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/Loot.php @@ -0,0 +1,121 @@ +query->get('placeId') ?? throw new BadRequestHttpException('Missing place ID'); + + if (!Uuid::isValid($placeId)) { + throw new BadRequestHttpException('The given place ID is not a valid UUID'); + } + + // @TODO simplify this hell + $place = $placeRepository->get(Uuid::fromString($placeId)) + ?? throw $this->createNotFoundException('Place not found'); + $commander = $this->commanderRepository->get($id) + ?? throw $this->createNotFoundException('Commander not found'); + + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('This commander does not belong to you'); + } + + $home = $commander->base; + + // TODO replace with proper services + $length = $getDistanceBetweenPlaces($home->place, $place); + + if (0 === $commanderArmyHandler->getPev($commander)) { + throw new ConflictHttpException('You cannot send a commander with an empty fleet'); + } + + $sector = $place->system->sector; + $sectorColor = $sector->faction; + // Move that part in a Specification class + $isFactionSector = $sectorColor?->id->equals($currentPlayer->faction->id) || Color::ALLY === $sectorColor?->relations[$currentPlayer->faction->identifier]; + + // Move that part in a Specification class + if ($length > Commander::DISTANCEMAX && !$isFactionSector) { + throw new ConflictHttpException('Ce lieu est trop éloigné.'); + } + + // Move that part in a Specification class + if (null !== ($targetPlayer = $place->player) && 1 === $targetPlayer->level && !in_array($place->player->statement, [Player::DELETED, Player::DEAD])) { + throw new ConflictHttpException('Vous ne pouvez pas piller un joueur actif de niveau 1.'); + } + + $faction = $currentPlayer->faction; + + // Move that part in a Specification class + if (null !== $targetPlayer && ($faction->id->equals($targetPlayer->faction->id) || Color::ALLY === $faction->relations[$targetPlayer->faction->identifier])) { + throw new ConflictHttpException('You cannot loot an ally planet'); + } + + if (Place::TERRESTRIAL !== $place->typeOfPlace) { + throw new ConflictHttpException('This place is not inhabited'); + } + $moveFleet( + commander: $commander, + origin: $home->place, + destination: $place, + mission: CommanderMission::Loot, + ); + + $this->addFlash('success', 'Flotte envoyée.'); + + $this->entityManager->flush(); + + $this->eventDispatcher->dispatch(new PlannedLootEvent($place, $commander, $currentPlayer)); + + if ($request->query->has('redirect')) { + return $this->redirectToRoute('map', ['place' => $request->query->get('redirect')]); + } + + return new Response(status: Response::HTTP_NO_CONTENT); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/Move.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/Move.php new file mode 100644 index 000000000..17782111c --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/Move.php @@ -0,0 +1,77 @@ +get($id) ?? throw $this->createNotFoundException('Commander not found'); + + // TODO Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('This commander does not belong to you'); + } + + $placeId = $request->query->get('placeId') ?? throw new BadRequestHttpException('Missing place ID'); + + if (!Uuid::isValid($placeId)) { + throw new BadRequestHttpException('Invalid place ID'); + } + $place = $placeRepository->get(Uuid::fromString($placeId)) + ?? throw $this->createNotFoundException('Place not found'); + + if (!$commander->player->faction->id->equals($place->player?->faction->id)) { + throw new ConflictHttpException('Vous ne pouvez pas envoyer une flotte sur une planète qui ne vous appartient pas.'); + } + $home = $commander->base; + + $length = $getDistanceBetweenPlaces($home->place, $place); + + if (!$commander->isAffected()) { + throw new ConflictHttpException('Cet officier est déjà en déplacement.'); + } + $sector = $place->system->sector; + // TODO add an interface for faction assets entities to create a shortcut method to check the owning faction + $isFactionSector = $sector->faction?->id->equals($commander->player->faction->id); + + if ($length > Commander::DISTANCEMAX && !$isFactionSector) { + throw new ConflictHttpException('Cet emplacement est trop éloigné.'); + } + $moveFleet( + commander: $commander, + origin: $home->place, + destination: $place, + mission: CommanderMission::Move, + ); + + $commanderRepository->save($commander); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/Fleet/UpdateSquadron.php b/src/Modules/Ares/Infrastructure/Controller/Fleet/UpdateSquadron.php new file mode 100644 index 000000000..3c738dbfb --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/Fleet/UpdateSquadron.php @@ -0,0 +1,111 @@ +toArray(); + + if (empty($payload['army']) || empty($payload['base_id'])) { + throw new BadRequestHttpException('Pas assez d\'informations pour assigner un vaisseau.'); + } + + $newSquadron = array_map(fn ($el) => $el > 0 ? (int) $el : 0, $payload['army']); + + if (12 !== count($newSquadron)) { + throw new BadRequestHttpException('Pas assez d\'informations pour assigner un vaisseau.'); + } + + $commander = $commanderRepository->get($id) ?? throw $this->createNotFoundException('Commander not found'); + if (!Uuid::isValid($payload['base_id'])) { + throw new BadRequestHttpException('Invalid UUID given for base ID'); + } + + $base = $orbitalBaseRepository->get(Uuid::fromString($payload['base_id'])) ?? throw $this->createNotFoundException('Base not found'); + + // TODO add check on belonging player for multifleet + if (!$commander->base->id->equals($base->id)) { + throw new ConflictHttpException('This commander is not located on this base'); + } + + if (!$commander->isAffected()) { + throw new BadRequestHttpException('This commander is not in orbit.'); + } + + $commanderArmyHandler->setArmy($commander); + $squadron = $commander->getSquadron($squadronId); + + $squadronSHIP = $squadron->getShips(); + $baseSHIP = $base->getShipStorage(); + + foreach ($newSquadron as $shipNumber => $quantity) { + $baseSHIP[$shipNumber] -= ($quantity - $squadronSHIP[$shipNumber]); + $squadronSHIP[$shipNumber] = $quantity; + } + + // token de vérification + $baseOK = true; + $squadronOK = true; + $totalPEV = 0; + // vérif shipStorage (pas de nombre négatif) + foreach ($baseSHIP as $i => $v) { + if ($v < 0) { + $baseOK = false; + break; + } + } + + // vérif de squadron (pas plus de 100 PEV, pas de nombre négatif) + foreach ($squadronSHIP as $i => $v) { + $totalPEV += $v * ShipResource::getInfo($i, 'pev'); + if ($v < 0) { + $squadronOK = false; + break; + } + } + + if (!$baseOK || !$squadronOK || $totalPEV > 100) { + throw new BadRequestHttpException('Erreur dans la répartition des vaisseaux.'); + } + + $base->shipStorage = $baseSHIP; + $squadron->setShips($squadronSHIP); + + $orbitalBaseRepository->save($base); + $squadronRepository->save($squadron); + + $eventDispatcher->dispatch(new SquadronUpdateEvent($commander, $squadron, $currentPlayer)); + + return new Response('', Response::HTTP_NO_CONTENT); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/PutCommanderInSchool.php b/src/Modules/Ares/Infrastructure/Controller/PutCommanderInSchool.php new file mode 100644 index 000000000..ab9ed8271 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/PutCommanderInSchool.php @@ -0,0 +1,48 @@ +get($id)) || $commander->player->id !== $currentPlayer->id) { + throw new BadRequestHttpException('Ce commandant n\'existe pas ou ne vous appartient pas'); + } + $orbitalBase = $commander->base; + + if ($commander->isInReserve()) { + $commanders = $commanderRepository->getBaseCommanders($commander->base, [Commander::INSCHOOL]); + + if (count($commanders) >= PlaceResource::get($orbitalBase->typeOfBase, 'school-size')) { + throw new ConflictHttpException('Votre école est déjà pleine.'); + } + $commander->statement = Commander::INSCHOOL; + } elseif ($commander->isInSchool()) { + $commander->statement = Commander::RESERVE; + } else { + throw new ConflictHttpException('Vous ne pouvez rien faire avec cet officier.'); + } + $commander->updatedAt = new \DateTimeImmutable(); + + $commanderRepository->save($commander); + + return $this->redirectToRoute('school'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewArchives.php b/src/Modules/Ares/Infrastructure/Controller/ViewArchives.php new file mode 100644 index 000000000..68771dcb3 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewArchives.php @@ -0,0 +1,56 @@ +query->get('mode')) ? Report::ARCHIVED : Report::STANDARD; + + $rebels = (bool) $request->cookies->get('p'.Params::SHOW_REBEL_REPORT, Params::$params[Params::SHOW_REBEL_REPORT]); + + $combatReports = ($request->cookies->get('p'.Params::SHOW_ATTACK_REPORT, Params::$params[Params::SHOW_ATTACK_REPORT])) + ? $liveReportRepository->getAttackReportsByMode($currentPlayer, $rebels, $archived) + : $liveReportRepository->getDefenseReportsByMode($currentPlayer, $rebels, $archived) + ; + + if (null !== ($reportId = $request->query->get('report'))) { + if (!Uuid::isValid($reportId)) { + throw new BadRequestHttpException('Invalid report ID'); + } + + $report = $reportRepository->get(Uuid::fromString($reportId)); + + // TODO Voter + if (!\in_array($currentPlayer->id, [$report->attacker->id, $report->defender?->id])) { + throw $this->createAccessDeniedException('You cannot access this report'); + } + } + + return $this->render('pages/ares/fleet/archives.html.twig', [ + 'combat_reports' => $combatReports, + 'default_parameters' => Params::$params, + 'report' => $report ?? null, + 'report_attacker' => $report->attacker ?? null, + 'report_defender' => $report->defender ?? null, + ]); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewFleetDetails.php b/src/Modules/Ares/Infrastructure/Controller/ViewFleetDetails.php new file mode 100644 index 000000000..9199d8232 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewFleetDetails.php @@ -0,0 +1,14 @@ +render('pages/ares/fleet/details.html.twig'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewHeadquarters.php b/src/Modules/Ares/Infrastructure/Controller/ViewHeadquarters.php new file mode 100644 index 000000000..76e0624d1 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewHeadquarters.php @@ -0,0 +1,107 @@ +query->get('commander'))) { + if (!Uuid::isValid($commanderId)) { + throw new BadRequestHttpException('Invalid Commander ID'); + } + $commander = $this->commanderRepository->get(Uuid::fromString($commanderId)); + } + + if (null !== $commander && $commander->player->id === $currentPlayer->id && in_array($commander->statement, [Commander::AFFECTED, Commander::MOVING])) { + $commanderBase = $commander->base; + } + + [$obsets, $commandersIds] = $this->getObsetsAndCommandersIds($request, $currentPlayer); + + return $this->render('pages/ares/fleet/headquarters.html.twig', [ + 'commander' => $commander ?? null, + 'commander_base' => $commanderBase ?? null, + 'default_parameters' => Params::$params, + 'obsets' => $obsets, + 'commandersIds' => $commandersIds, + ]); + } + + private function getObsetsAndCommandersIds( + Request $request, + Player $currentPlayer, + ): array { + $session = $request->getSession(); + $obsets = []; + foreach ($this->currentPlayerBasesRegistry->all() as $orbitalBase) { + if ($request->cookies->get('p'.Params::LIST_ALL_FLEET, Params::$params[Params::LIST_ALL_FLEET]) || $orbitalBase->id->equals($this->currentPlayerBasesRegistry->current()->id)) { + $obsets[] = [ + 'info' => [ + 'id' => $orbitalBase->id, + 'name' => $orbitalBase->name, + 'type' => $orbitalBase->typeOfBase, + 'img' => '1-'.Game::getSizeOfPlanet($orbitalBase->place->population), + ], + 'fleets' => [], + ]; + } + } + + // commander manager : incoming attack + $commandersId = [0]; + for ($i = 0; $i < $session->get('playerEvent')->size(); ++$i) { + if ($session->get('playerEvent')->get($i)->get('eventType') == $this->getParameter('event_incoming_attack')) { + if ($session->get('playerEvent')->get($i)->get('eventInfo')->size() > 0) { + $commandersId[] = $session->get('playerEvent')->get($i)->get('eventId'); + } + } + } + + $attackingCommanders = $this->commanderRepository->getIncomingAttacks($currentPlayer); + for ($i = 0; $i < count($obsets); ++$i) { + foreach ($attackingCommanders as $commander) { + if ($commander->destinationPlace->id->equals($obsets[$i]['info']['id'])) { + $obsets[$i]['fleets'][] = $commander; + } + } + } + $commanders = $this->commanderRepository->getPlayerCommanders( + $currentPlayer, + [Commander::AFFECTED, Commander::MOVING], + ['c.base' => 'DESC'], + ); + + for ($i = 0; $i < count($obsets); ++$i) { + foreach ($commanders as $commander) { + if ($commander->base->id->equals($obsets[$i]['info']['id'])) { + $obsets[$i]['fleets'][] = $commander; + } + } + } + + return [$obsets, $commandersId]; + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewMemorial.php b/src/Modules/Ares/Infrastructure/Controller/ViewMemorial.php new file mode 100644 index 000000000..e11d3ea00 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewMemorial.php @@ -0,0 +1,21 @@ +render('pages/ares/fleet/memorial.html.twig', [ + 'commanders' => $commanderRepository->getPlayerCommanders($currentPlayer, [Commander::DEAD], ['c.palmares' => 'DESC']), + ]); + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewOverview.php b/src/Modules/Ares/Infrastructure/Controller/ViewOverview.php new file mode 100644 index 000000000..9aaedf923 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewOverview.php @@ -0,0 +1,70 @@ +render('pages/ares/fleet/overview.html.twig', [ + 'obsets' => $this->getObsets($currentPlayer), + ]); + } + + private function getObsets(Player $currentPlayer): array + { + // set d'orbitale base + $obsets = []; + foreach ($this->currentPlayerBasesRegistry->all() as $orbitalBase) { + $obsets[] = [ + 'info' => [ + 'id' => $orbitalBase->id->toRfc4122(), + 'name' => $orbitalBase->name, + 'type' => $orbitalBase->typeOfBase, + ], + ]; + } + + // commander manager : yours + $commanders = $this->commanderRepository->getPlayerCommanders( + $currentPlayer, + [Commander::AFFECTED, Commander::MOVING], + ['c.base' => 'DESC'], + ); + + for ($i = 0; $i < count($obsets); ++$i) { + foreach ($commanders as $commander) { + if ($commander->base->id->toRfc4122() === $obsets[$i]['info']['id']) { + $obsets[$i]['fleets'][] = $commander; + } + } + } + // ship in dock + $playerBases = $this->orbitalBaseRepository->getPlayerBases($currentPlayer); + + for ($i = 0; $i < count($obsets); ++$i) { + foreach ($playerBases as $orbitalBase) { + if ($orbitalBase->id->toRfc4122() == $obsets[$i]['info']['id']) { + $obsets[$i]['dock'] = $orbitalBase->getShipStorage(); + } + } + } + + return $obsets; + } +} diff --git a/src/Modules/Ares/Infrastructure/Controller/ViewSpyReports.php b/src/Modules/Ares/Infrastructure/Controller/ViewSpyReports.php new file mode 100644 index 000000000..daf00aa64 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Controller/ViewSpyReports.php @@ -0,0 +1,39 @@ +getPlayerReports($currentPlayer); + + $focusedSpyReport = null; + + if ($request->query->has('report')) { + $focusedSpyReport = $spyReportRepository->get( + Uuid::fromString($request->query->get('report')) + ); + } + if (null === $focusedSpyReport || $focusedSpyReport->player->id !== $currentPlayer->id) { + $focusedSpyReport = $spyReports[0] ?? null; + } + + return $this->render('pages/ares/fleet/spy_reports.html.twig', [ + 'spy_reports' => $spyReports, + 'focused_spy_report' => $focusedSpyReport, + ]); + } +} diff --git a/src/Modules/Ares/Infrastructure/Twig/CommanderExtension.php b/src/Modules/Ares/Infrastructure/Twig/CommanderExtension.php new file mode 100644 index 000000000..640880e1a --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Twig/CommanderExtension.php @@ -0,0 +1,59 @@ + match ($commander->travelType) { + CommanderMission::Move => 'déplacement vers ' . ($commander->destinationPlace->base?->name ?? 'colonie rebelle'), + CommanderMission::Loot => 'pillage de ' . ($commander->destinationPlace->base?->name ?? 'colonie rebelle'), + CommanderMission::Colo => 'colonisation de ' . ($commander->destinationPlace->base?->name ?? 'colonie rebelle'), + CommanderMission::Back => 'retour vers ' . ($commander->destinationPlace->base?->name ?? 'colonie rebelle'), + default => 'autre' + }), + new TwigFilter('commander_rank', fn (Commander $commander) => $this->getCommanderLevel($commander->level)), + new TwigFilter('pev', fn (Commander $commander) => $this->commanderArmyHandler->getPev($commander)), + ]; + } + + #[\Override] + public function getFunctions(): array + { + return [ + new TwigFunction('get_commander_level_up_from_report', fn (int $level, int $newExperience) => $this->commanderExperienceHandler->nbLevelUp($level, $newExperience)), + new TwigFunction('get_commander_missing_experience', fn (Commander $commander) => $this->commanderExperienceHandler->experienceToLevelUp($commander)), + new TwigFunction('get_fleet_cost', fn (Commander $commander) => Game::getFleetCost($commander->getNbrShipByType())), + new TwigFunction('get_commander_position', fn (Commander $commander, int $x1, int $x2, int $y1, int $y2) => $this->commanderManager->getPosition($commander, $x1, $x2, $x2, $y2)), + new TwigFunction('get_commander_rank', fn (int $level) => $this->getCommanderLevel($level)), + ]; + } + + protected function getCommanderLevel(int $level): string + { + return CommanderResources::getInfo($level, 'grade'); + } +} diff --git a/src/Modules/Ares/Infrastructure/Twig/Components/Atoms/CommanderAvatar.php b/src/Modules/Ares/Infrastructure/Twig/Components/Atoms/CommanderAvatar.php new file mode 100644 index 000000000..7bbac32f1 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Twig/Components/Atoms/CommanderAvatar.php @@ -0,0 +1,17 @@ + */ + public array $army; +} diff --git a/src/Modules/Ares/Infrastructure/Twig/Components/Organisms/ShipTransfer.php b/src/Modules/Ares/Infrastructure/Twig/Components/Organisms/ShipTransfer.php new file mode 100644 index 000000000..3b3079c34 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Twig/Components/Organisms/ShipTransfer.php @@ -0,0 +1,33 @@ +commander = $commander; + $this->manufactureMaxStorableShipPoints = ($this->countMaxStorableShipPoints)($commander->base, DockType::Manufacture); + $this->shipyardMaxStorableShipPoints = ($this->countMaxStorableShipPoints)($commander->base, DockType::Shipyard); + } +} diff --git a/src/Modules/Ares/Infrastructure/Twig/ReportExtension.php b/src/Modules/Ares/Infrastructure/Twig/ReportExtension.php new file mode 100644 index 000000000..df83fd4dc --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Twig/ReportExtension.php @@ -0,0 +1,64 @@ +attacker->faction->identifier === $this->currentPlayerRegistry->get()->faction->identifier) { + if ($report->winner?->id === $report->attacker->id) { + if ($report->type === Commander::LOOT) { + $title = 'Pillage'; + $img = 'loot.png'; + } else { + $title = null === $report->defender + ? 'Colonisation réussie' + : 'Conquête'; + $img = 'colo.png'; + } + } else { + if ($report->type === Commander::LOOT) { + $title = 'Pillage raté'; + $img = 'loot.png'; + } else { + $title = null === $report->defender + ? 'Colonisation ratée' + : 'Conquête ratée'; + $img = 'colo.png'; + } + } + } else { + if ($report->winner?->id === $report->defender?->id) { + $title = $report->type === Commander::LOOT + ? 'Pillage repoussé' + : 'Conquête repoussée'; + $img = 'shield.png'; + } else { + $title = $report->type === Commander::LOOT + ? 'Défense ratée lors d\'un pillage' + : 'Défense ratée lors d\'une conquête'; + $img = 'shield.png'; + } + } + + return ['title' => $title, 'img' => $img]; + }), + ]; + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/Commander/CanConquer.php b/src/Modules/Ares/Infrastructure/Validator/Commander/CanConquer.php new file mode 100644 index 000000000..e676a6da0 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/Commander/CanConquer.php @@ -0,0 +1,32 @@ +price), + ]; + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/Commander/HasShips.php b/src/Modules/Ares/Infrastructure/Validator/Commander/HasShips.php new file mode 100644 index 000000000..ea1ea8f81 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/Commander/HasShips.php @@ -0,0 +1,10 @@ +getCommander(); + + if (0 === $this->commanderArmyHandler->getPev($commander)) { + $this->context + ->buildViolation('Vous devez affecter au moins un vaisseau à votre officier.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/Commander/IsInOrbit.php b/src/Modules/Ares/Infrastructure/Validator/Commander/IsInOrbit.php new file mode 100644 index 000000000..35227eb4d --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/Commander/IsInOrbit.php @@ -0,0 +1,10 @@ +getCommander(); + + if (!$commander->isAffected()) { + $this->context + ->buildViolation('Cet officier est déjà en déplacement.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/Commander/IsInRange.php b/src/Modules/Ares/Infrastructure/Validator/Commander/IsInRange.php new file mode 100644 index 000000000..ee6a1d565 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/Commander/IsInRange.php @@ -0,0 +1,10 @@ +getCommander(); + $targetedPlace = $value->getPlace(); + + $length = ($this->getDistanceBetweenPlaces)($commander->base->place, $targetedPlace); + $isAlliedSector = ($this->isAlliedFactionSector)($targetedPlace->system->sector, $commander->player->faction); + + if ($length > Commander::DISTANCEMAX && !$isAlliedSector) { + $this->context + ->buildViolation('Cet emplacement est trop éloigné.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/Commander/NotAllyTarget.php b/src/Modules/Ares/Infrastructure/Validator/Commander/NotAllyTarget.php new file mode 100644 index 000000000..7f0a909f5 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/Commander/NotAllyTarget.php @@ -0,0 +1,10 @@ +getCommander(); + $place = $value->getPlace(); + $faction = $commander->player->faction; + + if (null === $place->player) { + return; + } + + if ($faction->id->equals($place->player->faction->id) || Color::ALLY === $faction->relations[$place->player->faction->identifier]) { + $this->context + ->buildViolation('Vous ne pouvez pas attaquer un lieu appartenant à votre Faction ou d\'une faction alliée.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/DTO/Conquest.php b/src/Modules/Ares/Infrastructure/Validator/DTO/Conquest.php new file mode 100644 index 000000000..24d0be534 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/DTO/Conquest.php @@ -0,0 +1,45 @@ +commander; + } + + public function getPlace(): Place + { + return $this->targetedPlace; + } + + public function getBasesCount(): int + { + return $this->attackerBasesCount; + } + + public function getTechnology(): Technology + { + return $this->attackerTechnology; + } +} diff --git a/src/Modules/Ares/Infrastructure/Validator/DTO/HasCommander.php b/src/Modules/Ares/Infrastructure/Validator/DTO/HasCommander.php new file mode 100644 index 000000000..a45ecc754 --- /dev/null +++ b/src/Modules/Ares/Infrastructure/Validator/DTO/HasCommander.php @@ -0,0 +1,10 @@ +commanderRepository->getIncomingAttacks($player); + $incomingCommanders = []; + + foreach ($attackingCommanders as $commander) { + // va chercher les heures auxquelles il rentre dans les cercles d'espionnage + $times = $this->antiSpyHandler->getAntiSpyEntryTime( + $commander->startPlace, + $commander->destinationPlace, + $commander, + ); + + // TODO WARNING I suppose that true values may mean that the attack is already detected but not sure + if (true === $times[0] || new \DateTimeImmutable() >= $times[0]) { + $incomingCommanders[] = $commander; + } + } + + return $incomingCommanders; + } + + public function schedule(): void + { + $commanders = $this->commanderRepository->getMovingCommanders(); + + foreach ($commanders as $commander) { + $this->messageBus->dispatch( + new CommanderTravelMessage($commander->id), + [DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], + ); + } + } + + public function emptySquadrons(Commander $commander): void + { + $this->commanderArmyHandler->setArmy($commander); + $orbitalBase = $commander->base; + + $nbSquadrons = count($commander->squadronsIds); + for ($i = 0; $i < $nbSquadrons; ++$i) { + for ($j = 0; $j < 12; ++$j) { + $orbitalBase->addShips($j, $commander->getSquadron($i)->getShipQuantity($j)); + } + $commander->getSquadron($i)->emptySquadron(); + } + } + + public function getPosition(Commander $commander, $x1, $y1, $x2, $y2): array + { + $x = $x1; + $y = $y1; + if ($commander->isMoving()) { + $parcouredTime = $this->durationHandler->getDiff($commander->departedAt, new \DateTimeImmutable()); + $totalTime = $this->durationHandler->getDiff($commander->departedAt, $commander->arrivedAt); + $progression = $parcouredTime / $totalTime; + + $x = $x1 + $progression * ($x2 - $x1); + $y = $y1 + $progression * ($y2 - $y1); + } + + return [$x, $y]; + } + + public function uChangeBase(Commander $commander): void + { + $place = $commander->destinationPlace; + $base = $place->base; + $placeCommanders = $this->commanderRepository->getBaseCommanders($base); + // @WARNING check if this is the right property to use, originally rbaseId to Place + $commanderPlace = $commander->startPlace; + $player = $commander->player; + $playerBonus = $this->playerBonusManager->getBonusByPlayer($player); + // si la place et la flotte ont la même couleur + // on pose la flotte si il y a assez de place + // sinon on met la flotte dans les hangars + // TODO replace with specification + if ($place->player->id !== $commander->player->id || Place::TYP_ORBITALBASE !== $place->typeOfPlace) { + // retour forcé + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commanderPlace, + mission: CommanderMission::Back, + ); + $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); + $this->entityManager->flush(); + + return; + } + $maxCom = + ($place->base->isMilitaryBase() || $place->base->isCapital()) + ? OrbitalBase::MAXCOMMANDERMILITARY + : OrbitalBase::MAXCOMMANDERSTANDARD + ; + + // si place a assez de case libre : + if (count($placeCommanders) < $maxCom) { + $comLine2 = 0; + + foreach ($placeCommanders as $com) { + if (2 == $com->line) { + ++$comLine2; + } + } + + if (OrbitalBase::MAXCOMMANDERMILITARY == $maxCom) { + if ($comLine2 < 2) { + $commander->line = 2; + } else { + $commander->line = 1; + } + } else { + if ($comLine2 < 1) { + $commander->line = 2; + } else { + $commander->line = 1; + } + } + + // changer rBase commander + // @TODO update that + $commander->base = $base; + $this->endTravel($commander, Commander::AFFECTED); + + // envoi de notif + $this->placeManager->sendNotif($place, Place::CHANGESUCCESS, $commander); + } else { + // changer rBase commander + $commander->base = $base; + $this->endTravel($commander, Commander::RESERVE); + + $this->emptySquadrons($commander); + + // envoi de notif + $this->placeManager->sendNotif($place, Place::CHANGEFAIL, $commander); + } + + // modifier le rPlayer (ne se modifie pas si c'est le même) + $commander->player = $base->player; + + $this->entityManager->flush(); + } + + public function endTravel(Commander $commander, int $statement): void + { + $commander->travelType = null; + $commander->departedAt = null; + $commander->arrivedAt = null; + $commander->startPlace = null; + $commander->destinationPlace = null; + $commander->statement = $statement; + } + + public function lootAnEmptyPlace(Place $place, Commander $commander, PlayerBonus $playerBonus): void + { + $bonus = $playerBonus->bonuses->get(PlayerBonusId::SHIP_CONTAINER); + + $storage = $this->commanderArmyHandler->getPevToLoot($commander) * Commander::COEFFLOOT; + $storage += intval(round($storage * ((2 * $bonus) / 100))); + + $resourcesLooted = ($storage > $place->resources) ? $place->resources : $storage; + + $place->resources -= $resourcesLooted; + $commander->resources = $resourcesLooted; + + LiveReport::$resources = $resourcesLooted; + } + + public function startFight(Place $place, Commander $commander, ?Commander $enemyCommander = null): void + { + if (null === $enemyCommander) { + $enemyCommander = $this->virtualCommanderHandler->createVirtualCommander($place); + } + $this->fightManager->startFight($commander, $enemyCommander); + } + + public function createReport(Place $place): Report + { + $report = Report::fromLiveReport($place); + + $this->reportRepository->save($report); + LiveReport::clear(); + + return $report; + } +} diff --git a/src/Modules/Ares/Manager/ConquestManager.php b/src/Modules/Ares/Manager/ConquestManager.php new file mode 100644 index 000000000..ae0693118 --- /dev/null +++ b/src/Modules/Ares/Manager/ConquestManager.php @@ -0,0 +1,239 @@ +processAttackCost($player, $this->colonizationCost, $totalBases); + } + + public function getConquestCost(Player $player, int $totalBases): int + { + return $this->processAttackCost($player, $this->conquestCost, $totalBases); + } + + private function processAttackCost(Player $player, int $cost, int $totalBases): int + { + $price = $cost * $totalBases; + + if (ColorResource::CARDAN == $player->faction->identifier) { + // bonus if the player is from Cardan + $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); + } + + return intval($price); + } + + public function conquer(Commander $commander): void + { + $place = $commander->destinationPlace; + $commanderColor = $commander->player->faction; + $playerBonus = $this->playerBonusManager->getBonusByPlayer($commander->player); + // conquete + if (null !== ($placePlayer = $place->player)) { + // @TODO Replace with specification + if ($placePlayer->faction !== $commander->player->faction + && $placePlayer->level > 3 + && Color::ALLY != $commanderColor->relations[$placePlayer->faction->identifier]) { + $reportIds = []; + $reportArray = []; + $placeBase = $place->base; + $baseCommanders = $this->commanderRepository->getBaseCommanders($placeBase); + + for ($nbrBattle = 0; $nbrBattle < count($baseCommanders); ++$nbrBattle) { + if (!$baseCommanders[$nbrBattle]->isAffected()) { + continue; + } + LiveReport::$type = Commander::COLO; + LiveReport::$dFight = $commander->getArrivalDate(); + LiveReport::$isLegal = $commanderColor->canAttackLegally($placePlayer->faction); + + $this->commanderManager->startFight($place, $commander, $baseCommanders[$nbrBattle]); + + $report = $this->commanderManager->createReport($place); + $reportArray[] = $report; + $reportIds[] = $report->id; + // PATCH DEGUEU POUR LES MUTLIS-COMBATS + $this->entityManager->clear(); + $reports = $this->reportRepository->getByAttackerAndPlace( + $commander->player, + $place, + $commander->getArrivalDate(), + ); + foreach ($reports as $r) { + if ($r->id->equals($report->id)) { + continue; + } + $r->attackerStatement = Report::DELETED; + $r->defenderStatement = Report::DELETED; + } + $this->entityManager->flush(); + $this->entityManager->clear(); + + // mort du commandant + // arrêt des combats + if ($commander->isDead()) { + break; + } + } + + // victoire + if (!$commander->isDead()) { + if (0 == $nbrBattle) { + $this->placeManager->sendNotif($place, Place::CONQUERPLAYERWHITOUTBATTLESUCCESS, $commander, null); + } else { + $this->placeManager->sendNotifForConquest($place, Place::CONQUERPLAYERWHITBATTLESUCCESS, $commander, $reportIds); + } + + $place->player = $commander->player; + + // changer l'appartenance de la base (et de la place) + $this->orbitalBaseManager->changeOwner($placeBase, $commander->player); + + $commander->base = $placeBase; + + $this->commanderManager->endTravel($commander, Commander::AFFECTED); + $commander->line = 2; + + $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place)); + + // PATCH DEGUEU POUR LES MUTLIS-COMBATS + $this->notificationManager->patchForMultiCombats($commander->player, $place->player, $commander->getArrivalDate()); + // défaite + } else { + // TODO check if these instructions still have use + /*$baseCommandersCount = count($baseCommanders); + for ($i = 0; $i < $baseCommandersCount; ++$i) { + if (Commander::DEAD == $place->commanders[$i]->statement) { + unset($place->commanders[$i]); + $place->commanders = array_merge($place->commanders); + } + }*/ + + $this->placeManager->sendNotifForConquest($place, Place::CONQUERPLAYERWHITBATTLEFAIL, $commander, $reportIds); + } + } else { + // si c'est la même couleur + if ($place->player->faction->identifier === $commander->player->faction->identifier) { + // si c'est une de nos planètes + // on tente de se poser + $this->commanderManager->uChangeBase($commander); + } else { + // si c'est une base alliée on repart + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commander->startPlace, + mission: CommanderMission::Back, + ); + $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); + } + } + + // colonisation + } else { + // faire un combat + LiveReport::$type = Commander::COLO; + LiveReport::$dFight = $commander->getArrivalDate(); + LiveReport::$isLegal = true; + + $this->commanderManager->startFight($place, $commander); + + // victoire + if (!$commander->isDead()) { + $place->player = $commander->player; + + // créer une base + // TODO factorize in a service + $ob = new OrbitalBase( + id: Uuid::v4(), + place: $place, + player: $commander->player, + name: 'colonie', + // TODO transform into constant + iSchool: 500, + iAntiSpy: 500, + resourcesStorage: 2000, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ); + $this->orbitalBasePointsHandler->updatePoints($ob); + + $this->orbitalBaseRepository->save($ob); + + // attibuer le commander à la place + $commander->base = $ob; + $this->commanderManager->endTravel($commander, Commander::AFFECTED); + $commander->line = 2; + + // création du rapport + $report = $this->commanderManager->createReport($place); + + $place->danger = 0; + $place->base = $ob; + + $this->placeManager->sendNotif($place, Place::CONQUEREMPTYSSUCCESS, $commander, $report); + + $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place)); + + // défaite + } else { + // création du rapport + $report = $this->commanderManager->createReport($place); + + // mise à jour du danger + // TODO Factorize in service + $percentage = (($report->defenderPevAtEnd + 1) / ($report->defenderPevAtBeginning + 1)) * 100; + $place->danger = round(($percentage * $place->danger) / 100); + + $this->placeManager->sendNotif($place, Place::CONQUEREMPTYFAIL, $commander); + } + } + $this->entityManager->flush(); + } +} diff --git a/src/Modules/Ares/Manager/FightManager.php b/src/Modules/Ares/Manager/FightManager.php new file mode 100644 index 000000000..984f6d1e5 --- /dev/null +++ b/src/Modules/Ares/Manager/FightManager.php @@ -0,0 +1,282 @@ +commanderArmyHandler->setArmy($attacker); + $attacker->isAttacker = true; + $this->commanderArmyHandler->setArmy($defender); + $defender->isAttacker = false; + + LiveReport::$rPlayerAttacker = $attacker->player; + LiveReport::$rPlayerDefender = $defender->player; + + LiveReport::$attackerCommander = $attacker; + LiveReport::$defenderCommander = $defender; + LiveReport::$levelA = $attacker->level; + LiveReport::$levelD = $defender->level; + LiveReport::$experienceA = $attacker->experience; + LiveReport::$experienceD = $defender->experience; + LiveReport::$palmaresA = $attacker->palmares; + LiveReport::$palmaresD = $defender->palmares; + LiveReport::$attackerImportance = $this->fightImportanceHandler->calculateImportance($attacker, $defender); + LiveReport::$defenderImportance = $this->fightImportanceHandler->calculateImportance($defender, $attacker); + + $this->logger->debug('Battle importance is {attacker_importance} for commander {attacker_name}, {defender_importance} for commander {defender_name}', [ + 'attacker_importance' => LiveReport::$attackerImportance, + 'attacker_name' => $attacker->name, + 'defender_importance' => LiveReport::$defenderImportance, + 'defender_name' => $defender->name, + ]); + + $this->storeSquadronsInBegin($attacker); + $this->storeSquadronsInBegin($defender); + + $this->processRounds($attacker, $defender); + + $this->logger->debug('Attacker has {attackerShipsCount} remaining ships, defender has {defenderShipsCount}', [ + 'attackerShipsCount' => array_sum($attacker->getNbrShipByType()), + 'defenderShipsCount' => array_sum($defender->getNbrShipByType()), + ]); + + $this->updateCommander($attacker); + $this->updateCommander($defender); + } + + private function processRounds(Commander $attacker, Commander $defender): void + { + $attackerBonus = null !== $attacker->player ? $this->playerBonusManager->getBonusByPlayer($attacker->player) : null; + $defenderBonus = null !== $defender->player ? $this->playerBonusManager->getBonusByPlayer($defender->player) : null; + + while (1000 > LiveReport::$round) { + $this->logger->debug('Beginning round {roundNumber}', [ + 'roundNumber' => LiveReport::$round, + ]); + + if (true === $this->processPartyRound($defender, $attacker, $defenderBonus, $attackerBonus)) { + break; + } + + if (true === $this->processPartyRound($attacker, $defender, $attackerBonus, $defenderBonus)) { + break; + } + + ++LiveReport::$round; + ++self::$currentLine; + } + + $this->storeRemainingSquadronsAtEnd($attacker); + $this->storeRemainingSquadronsAtEnd($defender); + } + + private function processPartyRound( + Commander $commander, + Commander $opponent, + PlayerBonus|null $playerBonus = null, + PlayerBonus|null $opponentBonus = null, + ): bool { + $this->engage($commander, $opponent, $playerBonus, $opponentBonus); + ++LiveReport::$halfRound; + + $commanderShipsCount = 0; + + foreach ($commander->army as $squadron) { + $commanderShipsCount += array_sum($squadron->getShips()); + } + if (0 == $commanderShipsCount) { + $this->processDeath($commander, $opponent); + + return true; + } + + return false; + } + + private function processDeath(Commander $commander, Commander $opponent): void + { + $this->logger->debug('Commander {name} died', [ + 'name' => $commander->name, + ]); + + $this->resultOfFight($opponent, true, $commander); + $this->resultOfFight($commander, false, $opponent); + $commander->statement = Commander::DEAD; + $commander->diedAt = new \DateTimeImmutable(); + LiveReport::$rPlayerWinner = $opponent->player; + + if (null !== $commander->player) { + ++$commander->player->defeat; + } + + if (null !== $opponent->player) { + ++$opponent->player->victory; + } + } + + private function storeSquadronsInBegin(Commander $commander): void + { + foreach ($commander->army as $key => $squadron) { + LiveReport::$squadrons[] = [ + 0, + $key, + 0, + 0, + $commander, + $squadron->getShipQuantity(0), + $squadron->getShipQuantity(1), + $squadron->getShipQuantity(2), + $squadron->getShipQuantity(3), + $squadron->getShipQuantity(4), + $squadron->getShipQuantity(5), + $squadron->getShipQuantity(6), + $squadron->getShipQuantity(7), + $squadron->getShipQuantity(8), + $squadron->getShipQuantity(9), + $squadron->getShipQuantity(10), + $squadron->getShipQuantity(11), + ]; + } + } + + private function storeRemainingSquadronsAtEnd(Commander $commander): void + { + foreach ($commander->army as $key => $squadron) { + LiveReport::$squadrons[] = [ + 0, + $key, + 0, + -1, + $commander, + $squadron->getShipQuantity(0), + $squadron->getShipQuantity(1), + $squadron->getShipQuantity(2), + $squadron->getShipQuantity(3), + $squadron->getShipQuantity(4), + $squadron->getShipQuantity(5), + $squadron->getShipQuantity(6), + $squadron->getShipQuantity(7), + $squadron->getShipQuantity(8), + $squadron->getShipQuantity(9), + $squadron->getShipQuantity(10), + $squadron->getShipQuantity(11), + ]; + } + } + + private function resultOfFight(Commander $commander, bool $isWinner, Commander $enemyCommander): void + { + if ($commander->isVirtual) { + return; + } + + /* TODO VERIFY * */ + $this->commanderExperienceHandler->setEarnedExperience($commander, $enemyCommander); + $commander->earnedExperience = intval(round($commander->earnedExperience)); + $commander->winner = $isWinner; + $this->commanderArmyHandler->setArmyAtEnd($commander); + + $this->commanderExperienceHandler->upExperience($commander, $commander->earnedExperience); + + if ($isWinner) { + LiveReport::$expCom = $commander->earnedExperience; + + ++$commander->palmares; + } + } + + // ENGAGE UN COMBAT ENTRE CHAQUE SQUADRON CONTRE UN COMMANDANT + private function engage( + Commander $commander, + Commander $enemyCommander, + PlayerBonus|null $playerBonus = null, + PlayerBonus|null $enemyBonus = null, + ): void { + foreach ($commander->army as $squadron) { + $squadron->targetId = null; + } + foreach ($commander->army as $squadron) { + // TODO move to spec (same as SquadronManager::chooseEnemy) + // The current line is just the rule to ensure that all the lines don't fire at the starting round + if (0 < $squadron->getPev() && $squadron->lineCoord * 3 <= FightManager::getCurrentLine()) { + $this->squadronFightHandler->engage($squadron, $enemyCommander, $playerBonus, $enemyBonus); + } elseif (0 === $squadron->getPev()) { + $this->logger->debug('Squadron {squadronPosition} of commander {commanderName} has no more ships to fight', [ + 'squadronPosition' => $squadron->position, + 'commanderName' => $squadron->commander->name, + ]); + } else { + $this->logger->debug('Squadron {squadronPosition} from {squadronLine} line of commander {commanderName} does not fight in this round. Current line is {currentLine}', [ + 'squadronPosition' => $squadron->position, + 'squadronLine' => $squadron->lineCoord, + 'commanderName' => $squadron->commander->name, + 'currentLine' => FightManager::getCurrentLine(), + ]); + } + } + } + + private function updateCommander(Commander $commander): void + { + if ($commander->isVirtual) { + return; + } + + foreach ($commander->squadrons as $squadron) { + if (0 === $squadron->getShipsCount()) { + $this->squadronRepository->remove($squadron); + + continue; + } + $this->squadronRepository->save($squadron); + } + } +} diff --git a/src/Modules/Ares/Manager/LootManager.php b/src/Modules/Ares/Manager/LootManager.php new file mode 100644 index 000000000..8038a2255 --- /dev/null +++ b/src/Modules/Ares/Manager/LootManager.php @@ -0,0 +1,190 @@ +destinationPlace; + $placePlayer = $place->player; + $placeBase = $place->base; + $placeCommanders = null !== $placeBase ? $this->commanderRepository->getBaseCommanders($placeBase) : []; + // @WARNING possibly not the right property to use + $commanderPlace = $commander->startPlace; + $commanderPlayer = $commander->player; + $commanderColor = $commanderPlayer->faction; + $playerBonus = $this->playerBonusManager->getBonusByPlayer($commanderPlayer); + LiveReport::$type = Commander::LOOT; + LiveReport::$dFight = $commander->getArrivalDate(); + + // si la planète est vide + if (null === $placePlayer) { + LiveReport::$isLegal = true; + + // planète vide : faire un combat + $this->commanderManager->startFight($place, $commander); + + // victoire + if (!$commander->isDead()) { + // piller la planète + $this->commanderManager->lootAnEmptyPlace($place, $commander, $playerBonus); + // création du rapport de combat + $report = $this->commanderManager->createReport($place); + + // réduction de la force de la planète + $percentage = (($report->defenderPevAtEnd + 1) / ($report->defenderPevAtBeginning + 1)) * 100; + $place->danger = intval(round(($percentage * $place->danger) / 100)); + + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commanderPlace, + mission: CommanderMission::Back, + ); + $this->placeManager->sendNotif($place, Place::LOOTEMPTYSSUCCESS, $commander, $report); + } else { + // si il est mort + // création du rapport de combat + $report = $this->commanderManager->createReport($place); + $this->placeManager->sendNotif($place, Place::LOOTEMPTYFAIL, $commander, $report); + + // réduction de la force de la planète + // TODO Factorize in a service + $percentage = (($report->defenderPevAtEnd + 1) / ($report->defenderPevAtBeginning + 1)) * 100; + $place->danger = intval(round(($percentage * $place->danger) / 100)); + } + // si il y a une base d'un joueur + } else { + // TODO Move to Specification class + LiveReport::$isLegal = $commanderColor->canAttackLegally($place->player->faction); + + // planète à joueur : si $this->rColor != commandant->rColor + // si il peut l'attaquer + // TODO move to spec + if ((!$place->player->faction->id->equals($commander->player->faction->id) && $place->player->level > 1 && Color::ALLY !== $commanderColor->relations[$place->player->faction->identifier]) || null === $place->player) { + $dCommanders = []; + foreach ($placeCommanders as $dCommander) { + if ($dCommander->isAffected() && 1 == $dCommander->line) { + $dCommanders[] = $dCommander; + } + } + + // il y a des commandants en défense : faire un combat avec un des commandants + if (0 !== count($dCommanders)) { + $aleaNbr = random_int(0, count($dCommanders) - 1); + $this->commanderManager->startFight($place, $commander, $dCommanders[$aleaNbr]); + + // victoire + if (!$commander->isDead()) { + // piller la planète + $this->lootAPlayerPlace($commander, $playerBonus, $placeBase); + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commanderPlace, + mission: CommanderMission::Back, + ); + + // suppression des commandants + unset($placeCommanders[$aleaNbr]); + $placeCommanders = array_merge($placeCommanders); + + // création du rapport + $report = $this->commanderManager->createReport($place); + + $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITBATTLESUCCESS, $commander, $report); + + // défaite + } else { + // création du rapport + $report = $this->commanderManager->createReport($place); + + $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITBATTLEFAIL, $commander, $report); + } + } else { + $this->lootAPlayerPlace($commander, $playerBonus, $placeBase); + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commanderPlace, + mission: CommanderMission::Back, + ); + $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITOUTBATTLESUCCESS, $commander); + } + } else { + // si c'est la même couleur + if ($place->player->id === $commander->player->id) { + // si c'est une de nos planètes + // on tente de se poser + $this->commanderManager->uChangeBase($commander); + } else { + // si c'est une base alliée on repart + ($this->moveFleet)( + commander: $commander, + origin: $place, + destination: $commanderPlace, + mission: CommanderMission::Back, + ); + $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); + } + } + } + $this->eventDispatcher->dispatch(new LootEvent($commander, $placePlayer)); + + $this->entityManager->flush(); + } + + public function lootAPlayerPlace(Commander $commander, PlayerBonus $playerBonus, OrbitalBase $placeBase): void + { + $bonus = $playerBonus->bonuses->get(PlayerBonusId::SHIP_CONTAINER); + + $resourcesToLoot = $placeBase->resourcesStorage - Commander::LIMITTOLOOT; + + $storage = $this->commanderArmyHandler->getPevToLoot($commander) * Commander::COEFFLOOT; + $storage += round($storage * ((2 * $bonus) / 100)); + + $resourcesLooted = ($storage > $resourcesToLoot) ? $resourcesToLoot : $storage; + + if ($resourcesLooted > 0) { + $this->orbitalBaseManager->decreaseResources($placeBase, $resourcesLooted); + $commander->resources = $resourcesLooted; + + LiveReport::$resources = $resourcesLooted; + } + } +} diff --git a/src/Modules/Ares/Message/CommanderSchoolExperienceMessage.php b/src/Modules/Ares/Message/CommanderSchoolExperienceMessage.php new file mode 100644 index 000000000..4a6445c4e --- /dev/null +++ b/src/Modules/Ares/Message/CommanderSchoolExperienceMessage.php @@ -0,0 +1,16 @@ +commanderId; + } +} diff --git a/src/Modules/Ares/Message/CommandersSchoolExperienceMessage.php b/src/Modules/Ares/Message/CommandersSchoolExperienceMessage.php new file mode 100644 index 000000000..72e109220 --- /dev/null +++ b/src/Modules/Ares/Message/CommandersSchoolExperienceMessage.php @@ -0,0 +1,9 @@ + */ + public array $squadronsIds = []; + /** @var list> */ + public array $armyAtEnd = []; + public int $earnedExperience = 0; + public bool $winner = false; + public bool|null $isAttacker = null; + public bool $hasArmySetted = false; + + // variables de déplacement + public \DateTimeImmutable|null $departedAt = null; + public \DateTimeImmutable|null $arrivedAt = null; + public int $resources = 0; + public CommanderMission|null $travelType = null; + public Place|null $startPlace = null; + public Place|null $destinationPlace = null; + // Tableau d'objets squadron + /** + * @var list + */ + public array $army = []; + + public function __construct( + public Uuid $id, + public string $name, + public string $avatar, + public Player|null $player, + public OrbitalBase|null $base, + public \DateTimeImmutable $enlistedAt, + public int $experience = 0, + public int $sexe = 0, + public int $age = 0, + public int $level = 0, + public int $uExperience = 0, + public int $palmares = 0, + public int $statement = Commander::INSCHOOL, + public int $line = 1, + public string|null $comment = null, + /** @var Collection */ + public Collection $squadrons = new ArrayCollection(), + public \DateTimeImmutable|null $assignedAt = null, + public \DateTimeImmutable|null $diedAt = null, + public \DateTimeImmutable|null $updatedAt = null, + public bool $hasToU = true, + public bool $uMethodCtced = false, + public bool $isVirtual = false + ) + { + } + + public const COEFFSCHOOL = 100; + public const COEFFEARNEDEXP = 50; + public const COEFFEXPPLAYER = 100; + public const CMDBASELVL = 100; + + public const FLEETSPEED = 35; + + public const COEFFMOVEINSYSTEM = 584; + public const COEFFMOVEOUTOFSYSTEM = 600; + public const COEFFMOVEINTERSYSTEM = 50000; + + public const LVLINCOMECOMMANDER = 200; + + public const CREDITCOEFFTOCOLONIZE = 80000; + public const CREDITCOEFFTOCONQUER = 150000; + + // loot const + public const LIMITTOLOOT = 5000; + public const COEFFLOOT = 275; + + // Commander statements + public const INSCHOOL = 0; // dans l'école + public const AFFECTED = 1; // autour de la base + public const MOVING = 2; // en déplacement + public const DEAD = 3; // mort + public const DESERT = 4; // déserté + public const RETIRED = 5; // à la retraite + public const ONSALE = 6; // dans le marché + public const RESERVE = 7; // dans la réserve (comme à l'école mais n'apprend pas) + + // types of travel + public const MOVE = 0; // déplacement + public const LOOT = 1; // pillage + public const COLO = 2; // colo ou conquete + public const BACK = 3; // retour après une action + + public const MAXTRAVELTIME = 57600; + public const DISTANCEMAX = 30; + + // Const de lineCoord + public static array $LINECOORD = [1, 1, 1, 2, 2, 1, 2, 3, 3, 1, 2, 3, 4, 4, 2, 3, 4, 5, 5, 3, 4, 5, 6, 6, 4, 5, 6, 7, 7, 5, 6, 7]; + + public function isMoving(): bool + { + return self::MOVING === $this->statement; + } + + public function isAffected(): bool + { + return self::AFFECTED === $this->statement; + } + + public function isInSchool(): bool + { + return self::INSCHOOL === $this->statement; + } + + public function isInReserve(): bool + { + return self::RESERVE === $this->statement; + } + + public function isDead(): bool + { + return self::DEAD === $this->statement; + } + + public function isOnSale(): bool + { + return self::ONSALE === $this->statement; + } + + public function isTransferring(): bool + { + return CommanderMission::Move === $this->travelType; + } + + public function isLooting(): bool + { + return CommanderMission::Loot === $this->travelType; + } + + public function isInvading(): bool + { + return CommanderMission::Colo === $this->travelType; + } + + public function isComingBack(): bool + { + return CommanderMission::Back === $this->travelType; + } + + public function isVictorious(): bool + { + return self::DEAD !== $this->statement; + } + + public function findSquadron(int $position): Squadron|null + { + foreach ($this->squadrons as $squadron) { + if ($squadron->position === $position) { + return $squadron; + } + } + + return null; + } + + public function getFormatLineCoord(): array + { + $return = []; + + for ($i = 0; $i < ($this->level + 1); ++$i) { + $return[] = self::$LINECOORD[$i]; + } + + return $return; + } + + public function getSizeArmy(): int + { + return count($this->squadronsIds); + } + + public function getSquadron(int $i): Squadron|null + { + if ($i > 16) { + throw new \LogicException(sprintf('Squadron ID cannot be greater than 16, %d given', $i)); + } + + return $this->squadrons->get($i) ?? $this->army[$i] ?? null; + } + + /** + * @return array + */ + public function getNbrShipByType(): array + { + $array = array_fill(0, ShipResource::countAvailableShips(), 0); + + foreach ($this->army as $squadron) { + for ($i = 0; $i < 12; ++$i) { + $array[$i] += $squadron->getShipQuantity($i); + } + } + + return $array; + } + + public function getDepartureDate(): \DateTimeImmutable|null + { + return $this->departedAt; + } + + public function getArrivalDate(): \DateTimeImmutable|null + { + return $this->arrivedAt; + } + + public function jsonSerialize(): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'avatar' => $this->avatar, + ]; + } + + public function lastUpdatedBySystemAt(): \DateTimeImmutable + { + return $this->updatedAt; + } +} diff --git a/src/Modules/Ares/Model/LiveReport.php b/src/Modules/Ares/Model/LiveReport.php new file mode 100644 index 000000000..344915364 --- /dev/null +++ b/src/Modules/Ares/Model/LiveReport.php @@ -0,0 +1,70 @@ +setArmies(); + $report->setPev(); + + return $report; + } + + public function setPev(): void + { + for ($i = 0; $i < 12; ++$i) { + $this->attackerPevAtBeginning += ShipResource::getInfo($i, 'pev') * $this->attackerTotalInBegin[$i]; + $this->defenderPevAtBeginning += ShipResource::getInfo($i, 'pev') * $this->defenderTotalInBegin[$i]; + $this->attackerPevAtEnd += ShipResource::getInfo($i, 'pev') * $this->attackerTotalAtEnd[$i]; + $this->defenderPevAtEnd += ShipResource::getInfo($i, 'pev') * $this->defenderTotalAtEnd[$i]; + } + } + + public function setArmies(): void + { + if (!$this->armiesDone) { + // squadron(id, pos, rReport, round, rCommander, ship0, ..., ship11) + + foreach ($this->squadrons as $sq) { + // TODO Handle differently this weird way to get differences between armies + // First round: squadrons are added in the begin army + if (0 == $sq[3]) { + if ($this->attackerCommander->id->equals($sq[4]->id)) { + $this->attackerArmyInBegin[] = $sq; + } else { + $this->defenderArmyInBegin[] = $sq; + } + // Later rounds, the fight array seems to contain squadron duplicates for storing the state evolution + } elseif ($sq[3] > 0) { + $this->fight[] = $sq; + // End army is stored, Round value is -1 at this point + } else { + if ($this->attackerCommander->id->equals($sq[4]->id)) { + $this->attackerArmyAtEnd[] = $sq; + } else { + $this->defenderArmyAtEnd[] = $sq; + } + } + } + + // TODO Maybe we can stack differently the total ships. + foreach ($this->attackerArmyInBegin as $sq) { + for ($i = 5; $i <= 16; ++$i) { + $this->attackerTotalInBegin[$i - 5] += $sq[$i]; + } + } + foreach ($this->defenderArmyInBegin as $sq) { + for ($i = 5; $i <= 16; ++$i) { + $this->defenderTotalInBegin[$i - 5] += $sq[$i]; + } + } + foreach ($this->attackerArmyAtEnd as $sq) { + for ($i = 5; $i <= 16; ++$i) { + $this->attackerTotalAtEnd[$i - 5] += $sq[$i]; + } + } + foreach ($this->defenderArmyAtEnd as $sq) { + for ($i = 5; $i <= 16; ++$i) { + $this->defenderTotalAtEnd[$i - 5] += $sq[$i]; + } + } + + for ($i = 0; $i < 12; ++$i) { + $this->attackerDifference[$i] = $this->attackerTotalInBegin[$i] - $this->attackerTotalAtEnd[$i]; + } + for ($i = 0; $i < 12; ++$i) { + $this->defenderDifference[$i] = $this->defenderTotalInBegin[$i] - $this->defenderTotalAtEnd[$i]; + } + + $this->armiesDone = true; + } + } +} diff --git a/src/Modules/Ares/Model/Ship.php b/src/Modules/Ares/Model/Ship.php new file mode 100644 index 000000000..62d8b11ce --- /dev/null +++ b/src/Modules/Ares/Model/Ship.php @@ -0,0 +1,27 @@ + */ + public array $ships = []; + public bool $areShipsInitialized = false; + + public function __construct( + public Uuid $id, + public Commander $commander, + public \DateTimeImmutable $createdAt, + public \DateTimeImmutable $updatedAt, + public int $lineCoord = 0, + public int $position = 0, // position dans le tableau de l'armée + public int|null $targetId = null, + public int $ship0 = 0, + public int $ship1 = 0, + public int $ship2 = 0, + public int $ship3 = 0, + public int $ship4 = 0, + public int $ship5 = 0, + public int $ship6 = 0, + public int $ship7 = 0, + public int $ship8 = 0, + public int $ship9 = 0, + public int $ship10 = 0, + public int $ship11 = 0, + ) { + } + + public function setShips(array $ships): static + { + [ + $this->ship0, + $this->ship1, + $this->ship2, + $this->ship3, + $this->ship4, + $this->ship5, + $this->ship6, + $this->ship7, + $this->ship8, + $this->ship9, + $this->ship10, + $this->ship11, + ] = $ships; + + return $this; + } + + public function getShips(): array + { + return [ + $this->ship0, + $this->ship1, + $this->ship2, + $this->ship3, + $this->ship4, + $this->ship5, + $this->ship6, + $this->ship7, + $this->ship8, + $this->ship9, + $this->ship10, + $this->ship11, + ]; + } + + public function getShipQuantity(int $shipNumber): int + { + return match ($shipNumber) { + 0 => $this->ship0, + 1 => $this->ship1, + 2 => $this->ship2, + 3 => $this->ship3, + 4 => $this->ship4, + 5 => $this->ship5, + 6 => $this->ship6, + 7 => $this->ship7, + 8 => $this->ship8, + 9 => $this->ship9, + 10 => $this->ship10, + 11 => $this->ship11, + default => throw new \RuntimeException(sprintf('%d is not a valid ship number', $shipNumber)), + }; + } + + public function setShipQuantity(int $shipNumber, int $quantity): void + { + match ($shipNumber) { + 0 => $this->ship0 = $quantity, + 1 => $this->ship1 = $quantity, + 2 => $this->ship2 = $quantity, + 3 => $this->ship3 = $quantity, + 4 => $this->ship4 = $quantity, + 5 => $this->ship5 = $quantity, + 6 => $this->ship6 = $quantity, + 7 => $this->ship7 = $quantity, + 8 => $this->ship8 = $quantity, + 9 => $this->ship9 = $quantity, + 10 => $this->ship10 = $quantity, + 11 => $this->ship11 = $quantity, + default => throw new \RuntimeException(sprintf('%d is not a valid ship number', $shipNumber)), + }; + } + + public function getShipsCount(): int + { + return count($this->ships); + } + + // Move this method in dedicated handler + public function getPev(): int + { + $pev = 0; + foreach ($this->getShips() as $shipNumber => $quantity) { + $pev += ShipResource::getInfo($shipNumber, 'pev') * $quantity; + } + + return $pev; + } + + public function isEmpty(): bool + { + return 0 === $this->getPev(); + } + + public function destructShip(int $key): void + { + $ship = $this->ships[$key]; + + $this->setShipQuantity($ship->shipNumber, $this->getShipQuantity($ship->shipNumber) - 1); + + unset($this->ships[$key]); + + $this->ships = array_values($this->ships); + } + + public function emptySquadron(): void + { + $this->setShips(array_fill(0, 12, 0)); + } + + public function jsonSerialize(): array + { + return [ + 'lineCoord' => $this->lineCoord, + 'position' => $this->position, + 'ship0' => $this->ship0, + 'ship1' => $this->ship1, + 'ship2' => $this->ship2, + 'ship3' => $this->ship3, + 'ship4' => $this->ship4, + 'ship5' => $this->ship5, + 'ship6' => $this->ship6, + 'ship7' => $this->ship7, + 'ship8' => $this->ship8, + 'ship9' => $this->ship9, + 'ship10' => $this->ship10, + 'ship11' => $this->ship11, + ]; + } +} diff --git a/src/Modules/Ares/Repository/CommanderRepository.php b/src/Modules/Ares/Repository/CommanderRepository.php new file mode 100644 index 000000000..9c06b57e5 --- /dev/null +++ b/src/Modules/Ares/Repository/CommanderRepository.php @@ -0,0 +1,153 @@ +find($id); + } + + public function getBySpecification(SelectorSpecification $specification): array + { + $qb = $this->createQueryBuilder('c'); + + $qb->join('c.player', 'p'); + + $specification->addMatchingCriteria($qb); + + return $qb->getQuery()->getResult(); + } + + public function getCommandersByIds(array $ids = []): array + { + $qb = $this->createQueryBuilder('c'); + + return $qb + ->andWhere($qb->expr()->in('c.id', $ids)) + ->getQuery() + ->getResult(); + } + + public function getMovingCommanders(): array + { + return $this->findBy(['statement' => Commander::MOVING]); + } + + public function getPlayerCommanders(Player $player, array $statements = [], array $orderBy = []): array + { + $qb = $this->createQueryBuilder('c'); + + foreach ($orderBy as $field => $order) { + $qb->addOrderBy($field, $order); + } + + return $qb + ->andWhere($qb->expr()->in('c.statement', ':statements')) + ->andWhere('c.player = :player') + ->setParameter('statements', $statements) + ->setParameter('player', $player) + ->getQuery() + ->getResult(); + } + + public function getBaseCommanders(OrbitalBase $orbitalBase, array $statements = [], array $orderBy = []): array + { + return $this->findBy([ + 'base' => $orbitalBase, + 'statement' => $statements, + ], $orderBy); + } + + public function getCommandersByLine(OrbitalBase $orbitalBase, int $line): array + { + return $this->findBy([ + 'base' => $orbitalBase, + 'line' => $line, + ]); + } + + public function getIncomingAttacks(Player $player): array + { + $qb = $this->createQueryBuilder('c'); + + return $qb + ->join('c.destinationPlace', 'dp') + ->join('dp.player', 'player') + ->andWhere('dp.player = :player') + ->andWhere('c.player != :player') + ->andWhere($qb->expr()->eq('c.statement', Commander::MOVING)) + ->andWhere($qb->expr()->in('c.travelType', [Commander::COLO, Commander::LOOT])) + ->setParameter('player', $player) + ->getQuery() + ->getResult(); + } + + public function getOutcomingAttacks(Player $player): array + { + return $this->findBy([ + 'player' => $player, + 'statement' => Commander::MOVING, + ]); + } + + public function getIncomingCommanders(Place $place): array + { + return $this->findBy([ + 'destinationPlace' => $place, + 'statement' => Commander::MOVING, + ], ['dArrival' => 'ASC']); + } + + public function countCommandersByLine(OrbitalBase $orbitalBase, int $line): int + { + $qb = $this->createQueryBuilder('c'); + + return $qb + ->select('COUNT(c)') + ->andWhere('c.base = :orbital_base') + ->andWhere('c.line = :line') + ->andWhere($qb->expr()->in('c.statement', [Commander::AFFECTED, Commander::MOVING])) + ->setParameter('orbital_base', $orbitalBase->id, UuidType::NAME) + ->setParameter('line', $line) + ->getQuery() + ->getSingleScalarResult(); + } + + public function getFactionCommanderStats(Color $faction): array + { + $qb = $this->createQueryBuilder('c'); + + $qb + ->select( + 'COUNT(c.id) AS nb', + 'AVG(c.level) AS avgLevel', + ) + ->join('c.player', 'p') + ->where('p.faction = :faction') + ->andWhere($qb->expr()->in('c.statement', [Commander::AFFECTED, Commander::MOVING])) + ->setParameter('faction', $faction->id, UuidType::NAME); + + return $qb->getQuery()->getSingleResult(); + } +} diff --git a/src/Modules/Ares/Repository/LiveReportRepository.php b/src/Modules/Ares/Repository/LiveReportRepository.php new file mode 100644 index 000000000..8bc1445ba --- /dev/null +++ b/src/Modules/Ares/Repository/LiveReportRepository.php @@ -0,0 +1,126 @@ +find($id); + } + + public function getPlayerReports(Player $player): array + { + $qb = $this->createQueryBuilder('r'); + + $qb->where( + $qb->expr()->orX( + $qb->expr()->andX( + $qb->expr()->eq('r.attacker', ':attacker'), + $qb->expr()->eq('r.attackerStatement', Report::STANDARD), + ), + $qb->expr()->andX( + $qb->expr()->eq('r.defender', ':defender'), + $qb->expr()->eq('r.defenderStatement', Report::STANDARD), + ), + ), + ) + ->setParameter('attacker', $player) + ->setParameter('defender', $player); + + return $qb->getQuery()->getResult(); + } + + public function getAttackReportsByPlaces(Player $player, array $places): array + { + $qb = $this->createQueryBuilder('r'); + + $qb + ->where('r.attacker = :player') + ->andWhere($qb->expr()->in('r.place', ':places')) + ->setParameter('player', $player) + ->setParameter('places', $places) + ->orderBy('r.foughtAt', 'DESC') + ->setMaxResults(30); + + return $qb->getQuery()->getResult(); + } + + public function getAttackReportsByMode(Player $player, bool $hasRebels, bool $isArchived): array + { + $qb = $this->createQueryBuilder('r'); + + $qb + ->where('r.attacker = :player') + ->andWhere('r.attackerStatement = :statement') + ->setParameter('player', $player) + ->setParameter('statement', $isArchived ? Report::ARCHIVED : Report::STANDARD) + ->orderBy('r.foughtAt', 'DESC') + ->setMaxResults(50); + + if (!$hasRebels) { + $qb->andWhere('r.defender IS NOT NULL'); + } + + return $qb->getQuery()->getResult(); + } + + public function getDefenseReportsByMode(Player $player, bool $hasRebels, bool $isArchived): array + { + $qb = $this->createQueryBuilder('r'); + + $qb + ->where('r.defender = :player') + ->andWhere('r.defenderStatement = :statement') + ->setParameter('player', $player) + ->setParameter('statement', $isArchived ? Report::ARCHIVED : Report::STANDARD) + ->orderBy('r.foughtAt', 'DESC') + ->setMaxResults(50); + + return $qb->getQuery()->getResult(); + } + + public function getFactionAttackReports(Color $faction): array + { + $qb = $this->createQueryBuilder('r'); + + $qb->join('r.attacker', 'a') + ->where('a.faction = :faction') + ->andWhere('r.defender IS NOT NULL') + ->setParameter('faction', $faction) + ->orderBy('r.foughtAt', 'DESC') + ->setMaxResults(30) + ; + + return $qb->getQuery()->getResult(); + } + + public function getFactionDefenseReports(Color $faction): array + { + $qb = $this->createQueryBuilder('r'); + + $qb->join('r.defender', 'd') + ->where('d.faction = :faction') + ->setParameter('faction', $faction) + ->orderBy('r.foughtAt', 'DESC') + ->setMaxResults(30) + ; + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Ares/Repository/ReportRepository.php b/src/Modules/Ares/Repository/ReportRepository.php new file mode 100644 index 000000000..d291449c0 --- /dev/null +++ b/src/Modules/Ares/Repository/ReportRepository.php @@ -0,0 +1,64 @@ +find($id); + } + + public function getByAttackerAndPlace(Player $attacker, Place $place, \DateTimeImmutable $dFight): array + { + return $this->findBy([ + 'attacker' => $attacker, + 'place' => $place, + 'fight' => $dFight, + ]); + } + + public function getAttackReportsByPlaces(Player $attacker, array $places): array + { + $qb = $this->createQueryBuilder('r'); + + $qb->where('r.attacker = :attacker') + ->andWhere($qb->expr()->in('r.place', ':places')) + ->setParameter('attacker', $attacker) + ->setParameter('places', array_map( + fn(Uuid $uuid) => $uuid->toBinary(), + $places + ), ArrayParameterType::BINARY); + + return $qb->getQuery()->getResult(); + } + + public function removePlayerReports(Player $player): void + { + $qb = $this->createQueryBuilder('r'); + + $qb->delete() + ->where('r.attacker = :player') + ->orWhere('r.defender = :player') + ->setParameter('player', $player); + + $qb->getQuery()->execute(); + } +} diff --git a/src/Modules/Ares/Repository/SquadronRepository.php b/src/Modules/Ares/Repository/SquadronRepository.php new file mode 100644 index 000000000..f551326b6 --- /dev/null +++ b/src/Modules/Ares/Repository/SquadronRepository.php @@ -0,0 +1,49 @@ +createQueryBuilder('s'); + + $qb + ->select( + 'SUM(s.ship0) AS nbs0', + 'SUM(s.ship1) AS nbs1', + 'SUM(s.ship2) AS nbs2', + 'SUM(s.ship3) AS nbs3', + 'SUM(s.ship4) AS nbs4', + 'SUM(s.ship5) AS nbs5', + 'SUM(s.ship6) AS nbs6', + 'SUM(s.ship7) AS nbs7', + 'SUM(s.ship8) AS nbs8', + 'SUM(s.ship9) AS nbs9', + 'SUM(s.ship10) AS nbs10', + 'SUM(s.ship11) AS nbs11' + ) + ->join('s.commander', 'c') + ->join('c.player', 'p') + ->where('p.faction = :faction') + ->andWhere($qb->expr()->in('c.statement', [Commander::AFFECTED, Commander::MOVING])) + ->setParameter('faction', $faction->id, UuidType::NAME); + + return $qb->getQuery()->getSingleResult(); + } +} diff --git a/src/Modules/Ares/Resource/CommanderResources.php b/src/Modules/Ares/Resource/CommanderResources.php new file mode 100755 index 000000000..4cb329421 --- /dev/null +++ b/src/Modules/Ares/Resource/CommanderResources.php @@ -0,0 +1,96 @@ + '3ème Classe', + ], + [ + 'grade' => '2ème Classe', + ], + [ + 'grade' => '1ère Classe', + ], + [ + 'grade' => 'Quartier-Maître', + ], + [ + 'grade' => 'Sergent', + ], + [ + 'grade' => 'Enseigne', + ], + [ + 'grade' => 'Lieutenant', + ], + [ + 'grade' => 'Capitaine', + ], + [ + 'grade' => 'Major', + ], + [ + 'grade' => 'Colonel', + ], + [ + 'grade' => 'Commandant', + ], + [ + 'grade' => 'Commodore', + ], + [ + 'grade' => 'Contre-Amiral', + ], + [ + 'grade' => 'Vice-Amiral', + ], + [ + 'grade' => 'Amiral', + ], + [ + 'grade' => 'Grand Amiral', + ], + [ + 'grade' => 'Grand Amiral', + ], + [ + 'grade' => 'Grand Amiral', + ], + [ + 'grade' => 'Grand Amiral', + ], + [ + 'grade' => 'Grand Amiral', + ], + ]; + + public static function getInfo($level, $info) + { + if ($level <= self::size()) { + if (in_array($info, ['grade'])) { + return self::$commanders[$level - 1][$info]; + } else { + return false; + } + } else { + return false; + } + } + + public static function size() + { + return count(self::$commanders); + } +} diff --git a/src/Modules/Ares/Resource/config/config.yml b/src/Modules/Ares/Resource/config/config.yml new file mode 100644 index 000000000..179429c4c --- /dev/null +++ b/src/Modules/Ares/Resource/config/config.yml @@ -0,0 +1,35 @@ +--- +parameters: + ares.commander.base_level: 100 + ares.commander.income_level: 200 + + ares.coeff.move_in_system: 584 + ares.coeff.move_out_of_system: 600 + ares.coeff.move_intersystem: 1000 + + ares.coeff.colonization_cost: 80000 + ares.coeff.conquest_cost: 150000 + + ares.loot_limit: 5000 + ares.coeff.loot: 275 + +services: + _defaults: + autowire: true + autoconfigure: true + + _instanceof: + App\Shared\Application\SchedulerInterface: + tags: ['app.scheduler'] + + App\Modules\Ares\: + resource: '%kernel.project_dir%/src/Modules/Ares/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Ares\Manager\ConquestManager: + arguments: + $colonizationCost: '%ares.coeff.colonization_cost%' + $conquestCost: '%ares.coeff.conquest_cost%' diff --git a/src/Modules/Artemis/Application/EventListener/SpyingNotificationEventListener.php b/src/Modules/Artemis/Application/EventListener/SpyingNotificationEventListener.php new file mode 100644 index 000000000..cd0125180 --- /dev/null +++ b/src/Modules/Artemis/Application/EventListener/SpyingNotificationEventListener.php @@ -0,0 +1,62 @@ +spyReport->type) { + SpyReport::TYP_ANONYMOUSLY_CAUGHT => NotificationBuilder::new() + ->setTitle('Espionnage détecté') + ->setContent(NotificationBuilder::paragraph( + 'Un joueur a espionné votre base ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $event->spyReport->place->id]), + $event->spyReport->placeName, + ), + '.', + NotificationBuilder::divider(), + 'Malheureusement, nous n\'avons pas pu connaître l\'identité de l\'espion.' + )), + SpyReport::TYP_CAUGHT => NotificationBuilder::new() + ->setTitle('Espionnage intercepté') + ->setContent(NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $event->player]), + $event->player->name, + ), + ' a espionné votre base ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $event->spyReport->place->id]), + $event->spyReport->placeName, + ), + '.', + NotificationBuilder::divider(), + 'L\'espion s\'est fait attrapé en train de fouiller dans vos affaires.', + )), + default => null, + }; + + if (null === $notificationBuilder) { + return; + } + + $this->notificationRepository->save($notificationBuilder->for($event->spyReport->targetPlayer)); + } +} diff --git a/src/Modules/Artemis/Application/Handler/AntiSpyHandler.php b/src/Modules/Artemis/Application/Handler/AntiSpyHandler.php new file mode 100644 index 000000000..1e0e832b2 --- /dev/null +++ b/src/Modules/Artemis/Application/Handler/AntiSpyHandler.php @@ -0,0 +1,109 @@ + + */ + public function getAntiSpyEntryTime(Place $startPlace, Place $destinationPlace, Commander $commander): array + { + $arrivalDate = $commander->getArrivalDate(); + // dans le même système + if ($startPlace->system->id->equals($destinationPlace->system->id)) { + return [true, true, true]; + } + $departureDate = new \DateTimeImmutable(); + $arrivalDate = ($this->getTravelDuration)( + origin: $startPlace, + destination: $destinationPlace, + departureDate: $departureDate, + player: $commander->player + ); + $duration = $this->durationHandler->getDiff($departureDate, $arrivalDate); + + $secRemaining = $arrivalDate->getTimestamp() - time(); + $ratioRemaining = $secRemaining / $duration; + + $distance = ($this->getDistanceBetweenPlaces)($startPlace, $destinationPlace); + $distanceRemaining = $this->getRemainingSeconds($distance, $ratioRemaining); + + $antiSpyRadius = $this->getAntiSpyRadius($destinationPlace->base->iAntiSpy, 1); + + if ($distanceRemaining < $antiSpyRadius / 3) { + return [true, true, true]; + } + + if ($distanceRemaining < $antiSpyRadius / 3 * 2) { + $ratio = ($antiSpyRadius / 3) / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + return [true, true, $newDate]; + } + + if ($distanceRemaining < $antiSpyRadius) { + $ratio = ($antiSpyRadius / 3 * 2) / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate1 = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + $ratio = ($antiSpyRadius / 3) / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate2 = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + return [true, $newDate1, $newDate2]; + } + + $ratio = $antiSpyRadius / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate1 = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + $ratio = ($antiSpyRadius / 3 * 2) / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate2 = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + $ratio = ($antiSpyRadius / 3) / $distanceRemaining; + $sec = $this->getRemainingSeconds($ratio, $secRemaining); + $newDate3 = $this->durationHandler->getDurationEnd($arrivalDate, -$sec); + + return [$newDate1, $newDate2, $newDate3]; + } + + /** + * TODO Sanitize the parameters and include ratio calculation + */ + public function getRemainingSeconds(float|int $ratio, float|int $secRemaining): int + { + return intval(floor($ratio * $secRemaining)); + } +} diff --git a/src/Modules/Artemis/Application/Handler/NpcSpyingHandler.php b/src/Modules/Artemis/Application/Handler/NpcSpyingHandler.php new file mode 100644 index 000000000..7ec89735c --- /dev/null +++ b/src/Modules/Artemis/Application/Handler/NpcSpyingHandler.php @@ -0,0 +1,49 @@ +place; + + $spyReport->resources = $place->resources; + + // generate a commander for the place + $commander = $this->virtualCommanderHandler->createVirtualCommander($place); + + $spyReport->commanders = [[ + 'name' => $commander->name, + 'avatar' => $commander->avatar, + 'level' => $commander->level, + 'line' => $commander->line, + 'statement' => $commander->statement, + 'pev' => $this->commanderArmyHandler->getPev($commander), + 'army' => $commander->getNbrShipByType(), + ]]; + } + + protected function getAntiSpyCoeff(Place $place): int + { + return $place->maxDanger * 40; + } + + #[\Override] + protected function getTypeOfSpy(int $success, int $antiSpy): int + { + return SpyReport::TYP_NOT_CAUGHT; + } +} diff --git a/src/Modules/Artemis/Application/Handler/PlayerSpyingHandler.php b/src/Modules/Artemis/Application/Handler/PlayerSpyingHandler.php new file mode 100644 index 000000000..c9433f563 --- /dev/null +++ b/src/Modules/Artemis/Application/Handler/PlayerSpyingHandler.php @@ -0,0 +1,53 @@ +place->base; + + $spyReport->resources = $orbitalBase->resourcesStorage; + + $spyReport->commercialRouteIncome = $this->commercialRouteRepository->getBaseIncome($orbitalBase); + + $commandersArray = []; + $commanders = $this->commanderRepository->getBaseCommanders( + $orbitalBase, + [Commander::AFFECTED, Commander::MOVING], + ); + + foreach ($commanders as $commander) { + $commandersArray[] = [ + 'name' => $commander->name, + 'avatar' => $commander->avatar, + 'level' => $commander->level, + 'line' => $commander->line, + 'statement' => $commander->statement, + 'pev' => $this->commanderArmyHandler->getPev($commander), + 'army' => $commander->getNbrShipByType(), + ]; + } + $spyReport->commanders = $commandersArray; + } + + protected function getAntiSpyCoeff(Place $place): int + { + return $place->base->antiSpyAverage; + } +} diff --git a/src/Modules/Artemis/Application/Handler/SpyingHandler.php b/src/Modules/Artemis/Application/Handler/SpyingHandler.php new file mode 100644 index 000000000..1a0f916da --- /dev/null +++ b/src/Modules/Artemis/Application/Handler/SpyingHandler.php @@ -0,0 +1,110 @@ +getAntiSpyCoeff($place); + + $successRate = $this->calculateSuccessRate($antiSpy, $price); + + $sr = new SpyReport( + id: Uuid::v4(), + player: $player, + place: $place, + price: $price, + placeFaction: $place->player?->faction, + placeType: $place->typeOfPlace, + baseType: $place->base?->typeOfBase ?? OrbitalBase::TYP_NEUTRAL, + placeName: $place->base?->name ?? 'Planète rebelle', + points: $place->base?->points ?? 0, + targetPlayer: $place->player, + targetPlayerLevel: $place->player?->level, + resources: 0, + shipStorage: $place->base?->getShipStorage() ?? [], + antiSpyInvest: $place->base?->iAntiSpy ?? 0, + commercialRouteIncome: 0, + commanders: [], + successRate: $successRate, + type: $this->getTypeOfSpy($successRate, $antiSpy), + createdAt: new \DateTimeImmutable(), + ); + + $this->processSpyingMission($sr); + + return $sr; + } + + protected function calculateSuccessRate(int $antiSpy, int $priceInvested): int + { + // spy success must be between 0 and 100 + $antiSpy = 0 == $antiSpy ? 1 : $antiSpy; + $ratio = $priceInvested / $antiSpy; + $percent = intval(round($ratio * 33)); + // ça veut dire qu'il payer 3x plus que ce que le gars investi pour tout voir + if ($percent > 100) { + $percent = 100; + } + + return $percent; + } + + /** + * @return SpyReport::TYP_* + */ + protected function getTypeOfSpy(int $success, int $antiSpy): int + { + if ($antiSpy < 1000) { + return SpyReport::TYP_NOT_CAUGHT; + } + + $percent = random_int(0, 100); + if ($success < 40) { + if ($percent < 5) { + return SpyReport::TYP_NOT_CAUGHT; // 5% + } elseif ($percent < 50) { + return SpyReport::TYP_ANONYMOUSLY_CAUGHT; // 45% + } else { + return SpyReport::TYP_CAUGHT; // 50% + } + } elseif ($success < 80) { + if ($percent < 30) { + return SpyReport::TYP_NOT_CAUGHT; // 30% + } elseif ($percent < 60) { + return SpyReport::TYP_ANONYMOUSLY_CAUGHT; // 30% + } else { + return SpyReport::TYP_CAUGHT; // 40% + } + } elseif ($success < 100) { + if ($percent < 50) { + return SpyReport::TYP_NOT_CAUGHT; // 50% + } elseif ($percent < 80) { + return SpyReport::TYP_ANONYMOUSLY_CAUGHT; // 30% + } else { + return SpyReport::TYP_CAUGHT; // 20% + } + } else { // success == 100 + if ($percent < 70) { + return SpyReport::TYP_NOT_CAUGHT; // 70% + } elseif ($percent < 90) { + return SpyReport::TYP_ANONYMOUSLY_CAUGHT; // 20% + } else { + return SpyReport::TYP_CAUGHT; // 10% + } + } + } +} diff --git a/src/Modules/Artemis/ArtemisModule.php b/src/Modules/Artemis/ArtemisModule.php new file mode 100644 index 000000000..74b0bc3c4 --- /dev/null +++ b/src/Modules/Artemis/ArtemisModule.php @@ -0,0 +1,13 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::SPY_PLANET; + } + + public function getTrackingPeopleId(): int + { + return $this->player->id; + } + + public function getTrackingEventName(): string + { + return 'New Spy Report'; + } + + public function getTrackingData(): array + { + return [ + 'place' => $this->spyReport->place, + 'enemy' => $this->spyReport->targetPlayer, + 'price' => $this->spyReport->price, + 'success_rate' => $this->spyReport->successRate, + ]; + } +} diff --git a/src/Modules/Artemis/Domain/Repository/SpyReportRepositoryInterface.php b/src/Modules/Artemis/Domain/Repository/SpyReportRepositoryInterface.php new file mode 100644 index 000000000..78f2da484 --- /dev/null +++ b/src/Modules/Artemis/Domain/Repository/SpyReportRepositoryInterface.php @@ -0,0 +1,29 @@ + + */ +interface SpyReportRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): SpyReport|null; + + /** + * @param Uuid[] $places + * @return SpyReport[] + */ + public function getSystemReports(Player $player, array $places): array; + + /** + * @return SpyReport[] + */ + public function getPlayerReports(Player $player): array; + + public function deletePlayerReports(Player $player): int; +} diff --git a/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteAllReports.php b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteAllReports.php new file mode 100644 index 000000000..6e0c663f1 --- /dev/null +++ b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteAllReports.php @@ -0,0 +1,26 @@ +deletePlayerReports($currentPlayer); + + if ($nbr > 1) { + $this->addFlash('success', $nbr.' rapports ont été supprimés.'); + } elseif (1 == $nbr) { + $this->addFlash('success', 'Un rapport a été supprimé.'); + } else { + $this->addFlash('success', 'Tous vos rapports ont déjà été supprimés.'); + } + + return $this->redirectToRoute('spy_reports'); + } +} diff --git a/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteReport.php b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteReport.php new file mode 100644 index 000000000..f62fa9e42 --- /dev/null +++ b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/DeleteReport.php @@ -0,0 +1,31 @@ +get($id) + ?? throw $this->createNotFoundException('Ce rapport n\'existe pas'); + + if ($currentPlayer->id !== $spyReport->player->id) { + throw $this->createAccessDeniedException('Ce rapport ne vous appartient pas'); + } + + $spyReportRepository->remove($spyReport); + + $this->addFlash('success', 'Rapport d\'espionnage supprimé'); + + return $this->redirectToRoute('spy_reports'); + } +} diff --git a/src/Modules/Artemis/Infrastructure/Controller/SpyReport/Spy.php b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/Spy.php new file mode 100644 index 000000000..6dcc1a6c1 --- /dev/null +++ b/src/Modules/Artemis/Infrastructure/Controller/SpyReport/Spy.php @@ -0,0 +1,82 @@ +query->get('baseId') ?? throw new BadRequestHttpException('Missing place ID'); + + if (!Uuid::isValid($placeId)) { + throw new BadRequestHttpException('Place ID must be a valid UUID'); + } + + $price = $request->query->getInt('price', $request->request->getInt('price')); + + if ($price > 1000000 || 0 === $price) { + throw new BadRequestHttpException('Impossible de lancer un espionnage avec le montant proposé'); + } + + if (!$currentPlayer->canAfford($price)) { + throw new ConflictHttpException('Not enough credits to pay for that spying operation'); + } + $place = $placeRepository->get(Uuid::fromString($placeId)) ?? throw $this->createNotFoundException('Place not found'); + + // TODO convert into specification/Voter + if (Place::TERRESTRIAL !== $place->typeOfPlace || $place->player?->faction->id->equals($currentPlayer->faction->id)) { + throw new ConflictHttpException('You cannot spy this place'); + } + $spyReport = $this->getSpyingHandler($place)->spy($place, $currentPlayer, $price); + + $spyReportRepository->save($spyReport); + + $playerManager->decreaseCredit($currentPlayer, $price); + + $eventDispatcher->dispatch(new SpyEvent($spyReport, $currentPlayer)); + + $this->addFlash('success', 'Espionnage effectué.'); + + return $this->redirectToRoute('spy_reports', ['report' => $spyReport->id]); + } + + public function getSpyingHandler(Place $place): SpyingHandler + { + return $this->spyingHandlers->get( + null !== $place->player + ? PlayerSpyingHandler::class + : NpcSpyingHandler::class + ); + } +} diff --git a/src/Modules/Artemis/Infrastructure/Repository/SpyReportRepository.php b/src/Modules/Artemis/Infrastructure/Repository/SpyReportRepository.php new file mode 100644 index 000000000..c954a0853 --- /dev/null +++ b/src/Modules/Artemis/Infrastructure/Repository/SpyReportRepository.php @@ -0,0 +1,65 @@ +find($id); + } + + public function getSystemReports(Player $player, array $places): array + { + $qb = $this->createQueryBuilder('sp'); + + $qb + ->where('sp.player = :player') + ->andWhere($qb->expr()->in('sp.place', ':places')) + ->orderBy('sp.createdAt', 'DESC') + ->setMaxResults(30) + ->setFirstResult(0) + ->setParameter('player', $player) + ->setParameter('places', array_map( + fn(Uuid $uuid) => $uuid->toBinary(), + $places + ), ArrayParameterType::BINARY); + + return $qb->getQuery()->getResult(); + } + + public function getPlayerReports(Player $player): array + { + return $this->findBy([ + 'player' => $player, + ], [ + 'createdAt' => 'DESC', + ], 40, 0); + } + + public function deletePlayerReports(Player $player): int + { + $qb = $this->createQueryBuilder('s'); + + $qb->delete() + ->where('s.player = :player') + ->setParameter('player', $player); + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Artemis/Model/SpyReport.php b/src/Modules/Artemis/Model/SpyReport.php new file mode 100644 index 000000000..13d439d60 --- /dev/null +++ b/src/Modules/Artemis/Model/SpyReport.php @@ -0,0 +1,128 @@ +shipStorage + array_fill(0, 12, 0); + } + + public function isNotCaught(): bool + { + return self::TYP_NOT_CAUGHT === $this->type; + } + + public function isAnonymouslyCaught(): bool + { + return self::TYP_ANONYMOUSLY_CAUGHT === $this->type; + } + + public function isCaught(): bool + { + return self::TYP_CAUGHT === $this->type; + } + + public function hasSpottedFleets(): bool + { + return self::STEP_FLEET < $this->successRate; + } + + public function hasSpottedArmies(): bool + { + return self::STEP_ARMY < $this->successRate; + } + + public function hasSpottedMovements(): bool + { + return self::STEP_MOVEMENT < $this->successRate; + } + + public function hasSpottedCommanders(): bool + { + return self::STEP_COMMANDER < $this->successRate; + } + + public function hasSpottedPevs(): bool + { + return self::STEP_PEV < $this->successRate; + } + + public function hasSpottedDocks(): bool + { + return self::STEP_DOCK < $this->successRate; + } + + public function hasSpottedResourcesStorage(): bool + { + return self::STEP_RESOURCES < $this->successRate; + } + + public function hasSpottedPoints(): bool + { + return self::STEP_POINT < $this->successRate; + } + + public function hasSpottedAntiSpy(): bool + { + return self::STEP_ANITSPY < $this->successRate; + } + + public function hasSpottedCommercialRoutesIncome(): bool + { + return self::STEP_RC < $this->successRate; + } + + public function hasShipsInStorage(): bool + { + return \array_sum($this->shipStorage) > 0; + } +} diff --git a/src/Modules/Artemis/Resource/config/config.yml b/src/Modules/Artemis/Resource/config/config.yml new file mode 100644 index 000000000..685c770e4 --- /dev/null +++ b/src/Modules/Artemis/Resource/config/config.yml @@ -0,0 +1,13 @@ +--- +services: + _defaults: + autowire: true + autoconfigure: true + + App\Modules\Artemis\: + resource: '%kernel.project_dir%/src/Modules/Artemis/' + exclude: + - '../../Message' + - '../../Model' + - '../../Repository' + - '../../Resource' diff --git a/src/Modules/Athena/Application/EventListener/PlayerLossListener.php b/src/Modules/Athena/Application/EventListener/PlayerLossListener.php new file mode 100644 index 000000000..d6e0f3152 --- /dev/null +++ b/src/Modules/Athena/Application/EventListener/PlayerLossListener.php @@ -0,0 +1,32 @@ +getPreviousOwner(); + $base = $event->getOrbitalBase(); + + $oldPlayerBases = $this->orbitalBaseRepository->getPlayerBases($previousOwner); + $nbOldPlayerBases = count($oldPlayerBases); + if (0 === $nbOldPlayerBases || (1 === $nbOldPlayerBases && $oldPlayerBases[0]->id->equals($base->id))) { + $this->playerManager->reborn($previousOwner); + } + } +} diff --git a/src/Modules/Athena/Application/Factory/BuildingQueueFactory.php b/src/Modules/Athena/Application/Factory/BuildingQueueFactory.php new file mode 100644 index 000000000..644354ae1 --- /dev/null +++ b/src/Modules/Athena/Application/Factory/BuildingQueueFactory.php @@ -0,0 +1,57 @@ +durationHandler->getDurationEnd($startedAt, ($this->getTimeCost)($identifier, $targetLevel)), + ); + + $this->buildingQueueRepository->save($buildingQueue); + + $this->messageBus->dispatch( + new BuildingQueueMessage($buildingQueue->id), + [DateTimeConverter::to_delay_stamp($buildingQueue->getEndDate())], + ); + + $this->eventDispatcher->dispatch(new NewBuildingQueueEvent($buildingQueue)); + + return $buildingQueue; + } +} diff --git a/src/Modules/Athena/Application/Factory/ShipQueueFactory.php b/src/Modules/Athena/Application/Factory/ShipQueueFactory.php new file mode 100644 index 000000000..7d3a6daa3 --- /dev/null +++ b/src/Modules/Athena/Application/Factory/ShipQueueFactory.php @@ -0,0 +1,64 @@ +durationHandler->getDurationEnd($startedAt, ($this->countShipTimeCost)( + identifier: $shipIdentifier, + dockType: $dockType, + quantity: $quantity, + )), + dockType: $dockType->getIdentifier(), + shipNumber: $shipIdentifier, + quantity: $quantity, + ); + + $this->shipQueueRepository->save($shipQueue); + + $this->messageBus->dispatch( + new ShipQueueMessage($shipQueue->id), + [DateTimeConverter::to_delay_stamp($shipQueue->getEndDate())], + ); + + $this->eventDispatcher->dispatch(new NewShipQueueEvent($shipQueue)); + + return $shipQueue; + } +} diff --git a/src/Modules/Athena/Application/Handler/Building/BuildingLevelHandler.php b/src/Modules/Athena/Application/Handler/Building/BuildingLevelHandler.php new file mode 100644 index 000000000..0278a8e4d --- /dev/null +++ b/src/Modules/Athena/Application/Handler/Building/BuildingLevelHandler.php @@ -0,0 +1,79 @@ +updateBuildingLevel($orbitalBase, $buildingIdentifier, fn (int $level) => $level + 1); + } + + public function decreaseBuildingLevel(OrbitalBase $orbitalBase, int $buildingIdentifier): void + { + $this->updateBuildingLevel($orbitalBase, $buildingIdentifier, fn (int $level) => max($level - 1, 0)); + } + + private function updateBuildingLevel(OrbitalBase $orbitalBase, int $buildingIdentifier, callable $updateLevel): void + { + $propertyAccessor = PropertyAccess::createPropertyAccessor(); + $levelField = $this->getBuildingLevelField($buildingIdentifier); + + $propertyAccessor->setValue( + $orbitalBase, + $levelField, + $updateLevel($propertyAccessor->getValue($orbitalBase, $levelField)), + ); + } + + public function getBuildingLevel(OrbitalBase $base, int $buildingIdentifier): int + { + $propertyAccessor = PropertyAccess::createPropertyAccessor(); + + return $propertyAccessor->getValue($base, $this->getBuildingLevelField($buildingIdentifier)); + } + + public function getBuildingRealLevel(OrbitalBase $base, int $buildingIdentifier, array $buildingQueues): int + { + return array_reduce( + $buildingQueues, + function (int $level, BuildingQueue $buildingQueue) use ($buildingIdentifier) { + if ($buildingIdentifier !== $buildingQueue->buildingNumber) { + return $level; + } + + return ($level < $buildingQueue->targetLevel) ? $buildingQueue->targetLevel : $level; + }, + $this->getBuildingLevel($base, $buildingIdentifier), + ); + } + + public function getRequiredGeneratorLevel(int $buildingIdentifier): int + { + return match ($buildingIdentifier) { + OrbitalBaseResource::GENERATOR, + OrbitalBaseResource::STORAGE, + OrbitalBaseResource::DOCK1, + OrbitalBaseResource::REFINERY, + OrbitalBaseResource::TECHNOSPHERE => 0, + OrbitalBaseResource::DOCK2, OrbitalBaseResource::SPATIOPORT => 20, + OrbitalBaseResource::DOCK3 => 30, + OrbitalBaseResource::COMMERCIAL_PLATEFORME, OrbitalBaseResource::RECYCLING => 10, + // no break + default => throw new \LogicException('Invalid building Identifier'), + }; + } + + private function getBuildingLevelField(int $buildingIdentifier): string + { + $buildingName = OrbitalBaseResource::$building[$buildingIdentifier]['name'] + ?? throw new \LogicException(sprintf('Building identifier %s is not valid', $buildingIdentifier)); + + return sprintf('level%s', ucfirst($buildingName)); + } +} diff --git a/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRouteIncome.php b/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRouteIncome.php new file mode 100644 index 000000000..436e7ace0 --- /dev/null +++ b/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRouteIncome.php @@ -0,0 +1,42 @@ +place->system->sector->id->equals($to->place->system->sector->id)) ? $this->sectorBonus : 1; + $bonusB = (!$from->player->faction->id->equals($to->player->faction->id)) ? $this->factionBonus : 1; + + $distance = ($this->getDistanceBetweenPlaces)($from->place, $to->place); + + $income = CommercialRoute::COEF_INCOME_2 * sqrt(min($distance, 100) * CommercialRoute::COEF_INCOME_1); + + if (null !== $player) { + $income += intval($this->bonusApplier->apply($income, PlayerBonusId::COMMERCIAL_INCOME)); + } + + return intval(round($income * $bonusA * $bonusB)); + } +} diff --git a/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRoutePrice.php b/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRoutePrice.php new file mode 100644 index 000000000..101b9e353 --- /dev/null +++ b/src/Modules/Athena/Application/Handler/CommercialRoute/GetCommercialRoutePrice.php @@ -0,0 +1,36 @@ +applyBonuses($price, $player); + } + + return intval(round($price)); + } + + private function applyBonuses(int $price, Player $player): float + { + // TODO Refactor faction economic bonuses to merge with player bonus management + $factionBonus = ColorResource::getInfo($player->faction->identifier, 'bonus'); + + if (in_array(ColorResource::COMMERCIALROUTEPRICEBONUS, $factionBonus)) { + // bonus if the player is from Negore + $price -= $price * ColorResource::BONUS_NEGORA_ROUTE / 100; + } + + return $price; + } +} diff --git a/src/Modules/Athena/Application/Handler/CountPlayerBases.php b/src/Modules/Athena/Application/Handler/CountPlayerBases.php new file mode 100644 index 000000000..892a1de66 --- /dev/null +++ b/src/Modules/Athena/Application/Handler/CountPlayerBases.php @@ -0,0 +1,31 @@ +orbitalBaseRepository->getPlayerBasesCount($player); + + $conquerringCommanders = count(array_filter( + $this->commanderRepository->getPlayerCommanders($player, [Commander::MOVING]), + fn(Commander $commander) => CommanderMission::Colo === $commander->travelType, + )); + + return $playerBases + $conquerringCommanders; + } +} diff --git a/src/Modules/Athena/Application/Handler/Income/CommercialRouteIncomeHandler.php b/src/Modules/Athena/Application/Handler/Income/CommercialRouteIncomeHandler.php new file mode 100644 index 000000000..d03ca8132 --- /dev/null +++ b/src/Modules/Athena/Application/Handler/Income/CommercialRouteIncomeHandler.php @@ -0,0 +1,31 @@ +commercialRouteRepository->getBaseIncome($base); + + $bonus = intval($this->bonusApplier->apply($initialValue, PlayerBonusId::COMMERCIAL_INCOME)); + + return new CommercialRouteIncome( + initial: $initialValue, + bonus: $bonus, + total: $initialValue + $bonus, + ); + } +} diff --git a/src/Modules/Athena/Application/Handler/OrbitalBasePointsHandler.php b/src/Modules/Athena/Application/Handler/OrbitalBasePointsHandler.php new file mode 100644 index 000000000..d1b6ea11c --- /dev/null +++ b/src/Modules/Athena/Application/Handler/OrbitalBasePointsHandler.php @@ -0,0 +1,37 @@ +points; + $points = 0; + + for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; ++$i) { + for ($j = 0; $j < $this->buildingLevelHandler->getBuildingLevel($orbitalBase, $i); ++$j) { + $points += $this->orbitalBaseHelper->getBuildingInfo($i, 'level', $j + 1, 'resourcePrice') / 1000; + } + } + + $points = intval(round($points)); + $orbitalBase->points = $points; + + return $points - $initialPoints; + } +} diff --git a/src/Modules/Athena/Application/Handler/Tax/PopulationTaxHandler.php b/src/Modules/Athena/Application/Handler/Tax/PopulationTaxHandler.php new file mode 100644 index 000000000..2be5150ce --- /dev/null +++ b/src/Modules/Athena/Application/Handler/Tax/PopulationTaxHandler.php @@ -0,0 +1,33 @@ +place->population) + 1500) * $this->playerTaxCoeff; + $tax *= PlaceResource::get($base->typeOfBase, 'tax'); + + $bonus = intval($this->bonusApplier->apply($tax, PlayerBonusId::POPULATION_TAX)); + + return new PopulationTax( + initial: intval(round($tax)), + bonus: $bonus, + ); + } +} diff --git a/src/Modules/Athena/Application/Registry/CurrentPlayerBasesRegistry.php b/src/Modules/Athena/Application/Registry/CurrentPlayerBasesRegistry.php new file mode 100644 index 000000000..1118ef90a --- /dev/null +++ b/src/Modules/Athena/Application/Registry/CurrentPlayerBasesRegistry.php @@ -0,0 +1,73 @@ + + */ + private array $bases = []; + + private Uuid|null $currentBaseId = null; + + /** + * @param list $bases + */ + public function setBases(array $bases): void + { + $this->bases = array_reduce($bases, function (array $acc, OrbitalBase $orbitalBase) { + $acc[$orbitalBase->id->toBase32()] = $orbitalBase; + + return $acc; + }, []); + } + + public function get(Uuid $baseId): OrbitalBase|null + { + return $this->bases[$baseId->toBase32()] ?? null; + } + + public function current(): OrbitalBase + { + if (null === $this->currentBaseId) { + throw new NoCurrentBaseSetException(); + } + + return $this->bases[$this->currentBaseId->toBase32()]; + } + + public function first(): OrbitalBase + { + return array_values($this->bases)[0]; + } + + public function next(): OrbitalBase|null + { + $currentIndex = array_search($this->currentBaseId->toBase32(), array_keys($this->bases)); + + return array_values($this->bases)[$currentIndex + 1] ?? null; + } + + public function setCurrentBase(Uuid $currentBaseId): void + { + $this->currentBaseId = $currentBaseId; + } + + public function count(): int + { + return count($this->bases); + } + + /** @return array */ + public function all(): array + { + return $this->bases; + } +} diff --git a/src/Modules/Athena/AthenaModule.php b/src/Modules/Athena/AthenaModule.php new file mode 100644 index 000000000..0e915f08a --- /dev/null +++ b/src/Modules/Athena/AthenaModule.php @@ -0,0 +1,13 @@ +initial + $this->bonus; + } +} diff --git a/src/Modules/Athena/Domain/Enum/DockType.php b/src/Modules/Athena/Domain/Enum/DockType.php new file mode 100644 index 000000000..51a93d3d4 --- /dev/null +++ b/src/Modules/Athena/Domain/Enum/DockType.php @@ -0,0 +1,66 @@ + range(Ship::TYPE_PEGASE, Ship::TYPE_MEDUSE), + self::Shipyard => range(Ship::TYPE_GRIFFON, Ship::TYPE_PHENIX), + }; + } + + public function getLevel(OrbitalBase $base): int + { + return match ($this) { + self::Manufacture => $base->levelDock1, + self::Shipyard => $base->levelDock2, + }; + } + + public function getBuildingNumber(): int + { + return match ($this) { + self::Manufacture => OrbitalBaseResource::DOCK1, + self::Shipyard => OrbitalBaseResource::DOCK2, + }; + } + + public function getSpeedBonusId(): int + { + return match ($this) { + self::Manufacture => PlayerBonusId::DOCK1_SPEED, + self::Shipyard => PlayerBonusId::DOCK2_SPEED, + }; + } + + public function getIdentifier(): int + { + return match ($this) { + self::Manufacture => 1, + self::Shipyard => 2, + }; + } + + public static function fromShipIdentifier(int $identifier): self + { + return match (true) { + ShipResource::isAShipFromDock1($identifier) => self::Manufacture, + ShipResource::isAShipFromDock2($identifier) => self::Shipyard, + default => throw new \InvalidArgumentException(sprintf('Invalid ship identifier %d', $identifier)), + }; + } +} diff --git a/src/Modules/Athena/Domain/Event/BaseOwnerChangeEvent.php b/src/Modules/Athena/Domain/Event/BaseOwnerChangeEvent.php new file mode 100644 index 000000000..b7fc9cfc6 --- /dev/null +++ b/src/Modules/Athena/Domain/Event/BaseOwnerChangeEvent.php @@ -0,0 +1,26 @@ +orbitalBase; + } + + public function getPreviousOwner(): Player + { + return $this->previousOwner; + } +} diff --git a/src/Modules/Athena/Domain/Event/NewBuildingQueueEvent.php b/src/Modules/Athena/Domain/Event/NewBuildingQueueEvent.php new file mode 100644 index 000000000..391a94ef8 --- /dev/null +++ b/src/Modules/Athena/Domain/Event/NewBuildingQueueEvent.php @@ -0,0 +1,34 @@ +buildingQueue->base->player->id; + } + + public function getTrackingEventName(): string + { + return 'Building Planned'; + } + + public function getTrackingData(): array + { + return [ + 'building_id' => $this->buildingQueue->buildingNumber, + 'target_level' => $this->buildingQueue->targetLevel, + 'base_id' => $this->buildingQueue->base->id, + ]; + } +} diff --git a/src/Modules/Athena/Domain/Event/NewShipQueueEvent.php b/src/Modules/Athena/Domain/Event/NewShipQueueEvent.php new file mode 100644 index 000000000..60a3147a8 --- /dev/null +++ b/src/Modules/Athena/Domain/Event/NewShipQueueEvent.php @@ -0,0 +1,51 @@ +shipQueue->base->player; + } + + public function getTutorialStep(): int|null + { + return match ($this->shipQueue->shipNumber) { + ShipResource::PEGASE => TutorialResource::BUILD_SHIP0, + ShipResource::SATYRE => TutorialResource::BUILD_SHIP1, + default => null, + }; + } + + public function getTrackingPeopleId(): int + { + return $this->shipQueue->base->player->id; + } + + public function getTrackingEventName(): string + { + return 'Ships Ordered'; + } + + public function getTrackingData(): array + { + return [ + 'ship_id' => $this->shipQueue->shipNumber, + 'quantity' => $this->shipQueue->quantity, + 'place_id' => $this->shipQueue->base->id, + ]; + } +} diff --git a/src/Modules/Athena/Domain/Exception/NoCurrentBaseSetException.php b/src/Modules/Athena/Domain/Exception/NoCurrentBaseSetException.php new file mode 100644 index 000000000..93e592f28 --- /dev/null +++ b/src/Modules/Athena/Domain/Exception/NoCurrentBaseSetException.php @@ -0,0 +1,13 @@ + + */ + public function getBaseQueues(OrbitalBase $orbitalBase): array; + + /** + * @return list + */ + public function getAll(): array; +} diff --git a/src/Modules/Athena/Domain/Repository/CommercialRouteRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/CommercialRouteRepositoryInterface.php new file mode 100644 index 000000000..40f213901 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/CommercialRouteRepositoryInterface.php @@ -0,0 +1,77 @@ + $factions + * @return list> + * + * @throws Exception + */ + public function searchCandidates( + Player $player, + OrbitalBase $orbitalBase, + array $factions, + int $minDistance, + int $maxDistance, + ): array; + + /** + * @return list + */ + public function getAllPlayerRoutes(Player $player): array; + + public function countCommercialRoutesBetweenFactions(Color $faction, Color $otherFaction): int; + + public function getCommercialRouteFactionData(Color $faction): array; + + public function getInternalCommercialRouteFactionData(Color $faction): array; + + public function getByIdAndBase(Uuid $id, OrbitalBase $base): CommercialRoute|null; + + public function getByIdAndDistantBase(Uuid $id, OrbitalBase $base): CommercialRoute|null; + + /** + * @return list + */ + public function getByBase(OrbitalBase $base): array; + + /** + * @return list + */ + public function getByDistantBase(OrbitalBase $base): array; + + public function getExistingRoute(OrbitalBase $base, OrbitalBase $distantBase): CommercialRoute|null; + + /** + * @return list + */ + public function getBaseRoutes(OrbitalBase $base): array; + + public function getBaseIncome(OrbitalBase $base): int; + + /** + * @param list $statements + */ + public function countBaseRoutes(OrbitalBase $base, array $statements = []): int; + + public function freezeRoutes(Color $faction, Color $otherFaction, bool $freeze): void; + + /** + * @return list + */ + public function getPlayerConstructedRoutesSince(Player $player, \DateTimeImmutable $since): array; +} diff --git a/src/Modules/Athena/Domain/Repository/CommercialShippingRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/CommercialShippingRepositoryInterface.php new file mode 100644 index 000000000..892f688a1 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/CommercialShippingRepositoryInterface.php @@ -0,0 +1,31 @@ + + */ + public function getAll(): array; + + /** + * @return list + */ + public function getMoving(): array; + + /** + * @return list + */ + public function getByBase(OrbitalBase $orbitalBase): array; +} diff --git a/src/Modules/Athena/Domain/Repository/CommercialTaxRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/CommercialTaxRepositoryInterface.php new file mode 100644 index 000000000..6762f124b --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/CommercialTaxRepositoryInterface.php @@ -0,0 +1,24 @@ + + */ + public function getFactionTaxesByImport(Color $faction): array; + + /** + * @param Color $faction + * @return list + */ + public function getFactionTaxesByExport(Color $faction): array; +} diff --git a/src/Modules/Athena/Domain/Repository/OrbitalBaseRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/OrbitalBaseRepositoryInterface.php new file mode 100644 index 000000000..13d500ae9 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/OrbitalBaseRepositoryInterface.php @@ -0,0 +1,39 @@ + + */ + public function getBySpecification(SelectorSpecification $specification): array; + + /** + * @return list + */ + public function getPlayerBases(Player $player): array; + + public function getPlayerBasesCount(Player $player): int; + + /** + * @return list + */ + public function getSectorBases(Sector $sector): array; + + /** + * @return list + */ + public function getSystemBases(System $system): array; +} diff --git a/src/Modules/Athena/Domain/Repository/RecyclingLogRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/RecyclingLogRepositoryInterface.php new file mode 100644 index 000000000..498261012 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/RecyclingLogRepositoryInterface.php @@ -0,0 +1,18 @@ + + */ + public function getBaseActiveMissionsLogs(OrbitalBase $base): array; + + public function getPlayerRecycledCreditsSince(Player $player, \DateTimeImmutable $since): int; +} diff --git a/src/Modules/Athena/Domain/Repository/RecyclingMissionRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/RecyclingMissionRepositoryInterface.php new file mode 100644 index 000000000..d892ef897 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/RecyclingMissionRepositoryInterface.php @@ -0,0 +1,33 @@ + + */ +interface RecyclingMissionRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): RecyclingMission|null; + + /** + * @return list + */ + public function getAll(): array; + + /** + * @return list + */ + public function getBaseMissions(OrbitalBase $base): array; + + /** + * @return list + */ + public function getBaseActiveMissions(OrbitalBase $base): array; + + public function removeBaseMissions(OrbitalBase $base): void; +} diff --git a/src/Modules/Athena/Domain/Repository/ShipQueueRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/ShipQueueRepositoryInterface.php new file mode 100644 index 000000000..59bb7ad24 --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/ShipQueueRepositoryInterface.php @@ -0,0 +1,28 @@ + + */ + public function getAll(): array; + + /** + * @return list + */ + public function getBaseQueues(OrbitalBase $base): array; + + /** + * @return list + */ + public function getByBaseAndDockType(OrbitalBase $base, int $dockType): array; +} diff --git a/src/Modules/Athena/Domain/Repository/TransactionRepositoryInterface.php b/src/Modules/Athena/Domain/Repository/TransactionRepositoryInterface.php new file mode 100644 index 000000000..4ea32668b --- /dev/null +++ b/src/Modules/Athena/Domain/Repository/TransactionRepositoryInterface.php @@ -0,0 +1,30 @@ + + */ + public function matchPlayerCompletedTransactionsSince(Player $player, \DateTimeImmutable $completedAt): Collection; +} diff --git a/src/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandler.php b/src/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandler.php new file mode 100644 index 000000000..7855a1550 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandler.php @@ -0,0 +1,51 @@ +orbitalBaseHelper->getBuildingInfo($identifier, 'name'); + } + + public function getBuildingColumn(int $identifier): string + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'column'); + } + + public function getFrenchName(int $identifier): string + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'frenchName'); + } + + public function getImageLink(int $identifier): string + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'imageLink'); + } + + public function getDescription(int $identifier): string + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'description'); + } + + public function getBuildingTimeCost(int $identifier, int $targetLevel): int|null + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'level', $targetLevel, 'time'); + } + + public function getBuildingResourceCost(int $identifier, int $targetLevel): int|null + { + return $this->orbitalBaseHelper->getBuildingInfo($identifier, 'level', $targetLevel, 'resourcePrice'); + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Building/GetTimeCost.php b/src/Modules/Athena/Domain/Service/Base/Building/GetTimeCost.php new file mode 100644 index 000000000..bdbcd681b --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Building/GetTimeCost.php @@ -0,0 +1,32 @@ +timeMode->isStandard() + ? $this->buildingDataHandler->getBuildingTimeCost($identifier, $targetLevel) + : $targetLevel * 10; + + $bonus = $this->bonusApplier->apply($time, PlayerBonusId::GENERATOR_SPEED); + + return intval(round($time - $bonus)); + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/GetCoolDownBeforeLeavingBase.php b/src/Modules/Athena/Domain/Service/Base/GetCoolDownBeforeLeavingBase.php new file mode 100644 index 000000000..2d8875896 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/GetCoolDownBeforeLeavingBase.php @@ -0,0 +1,28 @@ +timeMode) { + TimeMode::Fast => 2, + TimeMode::Standard => 12, + }; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/GetMaxResourceStorage.php b/src/Modules/Athena/Domain/Service/Base/GetMaxResourceStorage.php new file mode 100644 index 000000000..b03fe05a7 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/GetMaxResourceStorage.php @@ -0,0 +1,40 @@ +playerBonusManager->getBonusByPlayer($base->player); + $maxStorage = $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::STORAGE, + 'level', + $base->levelStorage, + 'storageSpace', + ); + $maxStorage += intval(round($this->bonusApplier->apply($maxStorage, PlayerBonusId::REFINERY_STORAGE, $playerBonus))); + + if (true === $offLimits) { + $maxStorage += OrbitalBase::EXTRA_STOCK; + } + + return $maxStorage; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountAffordableShips.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountAffordableShips.php new file mode 100644 index 000000000..aae0d157a --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountAffordableShips.php @@ -0,0 +1,59 @@ + $shipQueues + */ + public function __invoke(int $shipIdentifier, OrbitalBase $base, DockType $dockType, array $shipQueues): int + { + return min( + $this->countAffordableShipsFromResources($shipIdentifier, $base), + $this->countAffordableShipsFromHangarStorage($shipIdentifier, $base, $dockType, $shipQueues), + ); + } + + /** + * @param list $shipQueues + */ + private function countAffordableShipsFromHangarStorage( + int $shipIdentifier, + OrbitalBase $base, + DockType $dockType, + array $shipQueues, + ): int { + $affordableShipPoints = ($this->countHangarAvailableStorableShipPoints)($base, $shipQueues, $dockType); + + $affordableShipsCount = intval(floor($affordableShipPoints / ShipResource::getInfo($shipIdentifier, 'pev'))); + + return min($affordableShipsCount, 99); + } + + private function countAffordableShipsFromResources(int $shipIdentifier, OrbitalBase $base): int + { + $resourcePrice = ShipResource::getInfo($shipIdentifier, 'resourcePrice'); + // TODO Apply BonusApplier once faction bonuses are processable with it + if (ColorResource::EMPIRE === $base->player->faction->identifier && in_array($shipIdentifier, [ShipResource::CERBERE, ShipResource::PHENIX])) { + $resourcePrice -= PercentageApplier::toInt($resourcePrice, ColorResource::BONUS_EMPIRE_CRUISER); + } + + $affordableShipsCount = intval(floor($base->resourcesStorage / $resourcePrice)); + + return min($affordableShipsCount, 99); + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountHangarAvailableStorableShipPoints.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountHangarAvailableStorableShipPoints.php new file mode 100644 index 000000000..f4bc9ac7c --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountHangarAvailableStorableShipPoints.php @@ -0,0 +1,27 @@ +countMaxStorableShipPoints)($orbitalBase, $dockType); + $storedShipPoints = ($this->countStoredShipPoints)($orbitalBase, $dockType); + $queuedShipPoints = ($this->countQueuedShipPoints)($shipQueues); + + return $maxStorableShipPoints - $storedShipPoints - $queuedShipPoints; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxShipQueues.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxShipQueues.php new file mode 100644 index 000000000..6e9015932 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxShipQueues.php @@ -0,0 +1,27 @@ +orbitalBaseHelper->getBuildingInfo( + $dockType->getBuildingNumber(), + 'level', + $dockType->getLevel($orbitalBase), + 'nbQueues', + ); + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxStorableShipPoints.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxStorableShipPoints.php new file mode 100644 index 000000000..4cd11cc4e --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountMaxStorableShipPoints.php @@ -0,0 +1,26 @@ +orbitalBaseHelper->getBuildingInfo( + $dockType->getBuildingNumber(), + 'level', + $dockType->getLevel($orbitalBase), + 'storageSpace' + ) ?? 0; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountQueuedShipPoints.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountQueuedShipPoints.php new file mode 100644 index 000000000..59a7a2c3f --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountQueuedShipPoints.php @@ -0,0 +1,25 @@ + $shipQueues + */ + public function __invoke(array $shipQueues): int + { + $inQueue = 0; + + foreach ($shipQueues as $shipQueue) { + $inQueue += ShipResource::getInfo($shipQueue->shipNumber, 'pev') * $shipQueue->quantity; + } + + return $inQueue; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountShipResourceCost.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountShipResourceCost.php new file mode 100644 index 000000000..2c3c6e376 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountShipResourceCost.php @@ -0,0 +1,35 @@ +currentPlayerRegistry->get(); + // débit des ressources au joueur + $resourceCost = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; + // TODO Refactor the way faction bonuses are retrieved and applied using BonusApplierInterface + if (in_array($identifier, [ShipResource::CERBERE, ShipResource::PHENIX])) { + if (in_array(ColorResource::PRICEBIGSHIPBONUS, ColorResource::getInfo($manufacturer->faction->identifier, 'bonus'))) { + $resourceCost -= PercentageApplier::toInt($resourceCost, ColorResource::BONUS_EMPIRE_CRUISER); + } + } + + return $resourceCost; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountShipTimeCost.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountShipTimeCost.php new file mode 100644 index 000000000..2c96aad86 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountShipTimeCost.php @@ -0,0 +1,32 @@ +timeMode->isStandard() + ? ShipResource::getInfo($identifier, 'time') * $quantity + : ($identifier ** 2 + 5) * $quantity; + + $bonus = $this->bonusApplier->apply($time, $dockType->getSpeedBonusId()); + + return intval(round($time - $bonus)); + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Ship/CountStoredShipPoints.php b/src/Modules/Athena/Domain/Service/Base/Ship/CountStoredShipPoints.php new file mode 100644 index 000000000..6e794823a --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Ship/CountStoredShipPoints.php @@ -0,0 +1,24 @@ +getShipStorage(); + $inStorage = 0; + + foreach ($dockType->getShipRange() as $m) { + $inStorage += ShipResource::getInfo($m, 'pev') * ($storage[$m] ?? 0); + } + + return $inStorage; + } +} diff --git a/src/Modules/Athena/Domain/Service/Base/Trade/GetBaseCommercialShippingData.php b/src/Modules/Athena/Domain/Service/Base/Trade/GetBaseCommercialShippingData.php new file mode 100644 index 000000000..4ef4f141a --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Base/Trade/GetBaseCommercialShippingData.php @@ -0,0 +1,53 @@ +>, + * outgoing: list>, + * } + */ + public function __invoke(OrbitalBase $orbitalBase) + { + $commercialShippingsData = [ + 'used_ships' => 0, + 'incoming' => [ + CommercialShipping::ST_WAITING => [], + CommercialShipping::ST_GOING => [], + CommercialShipping::ST_MOVING_BACK => [], + ], + 'outgoing' => [ + CommercialShipping::ST_WAITING => [], + CommercialShipping::ST_GOING => [], + CommercialShipping::ST_MOVING_BACK => [], + ], + ]; + $commercialShippings = $this->commercialShippingRepository->getByBase($orbitalBase); + + foreach ($commercialShippings as $commercialShipping) { + if ($commercialShipping->originBase->id->equals($orbitalBase->id)) { + $commercialShippingsData['used_ships'] += $commercialShipping->shipQuantity; + $commercialShippingsData['outgoing'][$commercialShipping->statement][] = $commercialShipping; + } + if ($commercialShipping->destinationBase?->id->equals($orbitalBase->id)) { + $commercialShippingsData['incoming'][$commercialShipping->statement][] = $commercialShipping; + } + } + + return $commercialShippingsData; + } +} diff --git a/src/Modules/Athena/Domain/Service/CountAvailableCommercialShips.php b/src/Modules/Athena/Domain/Service/CountAvailableCommercialShips.php new file mode 100644 index 000000000..91baa5336 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/CountAvailableCommercialShips.php @@ -0,0 +1,42 @@ +orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::COMMERCIAL_PLATEFORME, + 'level', + $base->levelCommercialPlateforme, + 'nbCommercialShip', + ); + $usedShips = 0; + + // TODO transform this part into an optimized SQL query + $commercialShippings = $this->commercialShippingRepository->getByBase($base); + + foreach ($commercialShippings as $commercialShipping) { + if ($commercialShipping->originBase->id->equals($base->id)) { + $usedShips += $commercialShipping->shipQuantity; + } + } + + return $totalShips - $usedShips; + } +} diff --git a/src/Modules/Athena/Domain/Service/CountNeededCommercialShips.php b/src/Modules/Athena/Domain/Service/CountNeededCommercialShips.php new file mode 100644 index 000000000..fa997aefa --- /dev/null +++ b/src/Modules/Athena/Domain/Service/CountNeededCommercialShips.php @@ -0,0 +1,27 @@ + 1 commercialShip + Transaction::TYP_RESOURCE => intval(ceil($quantity / 1000)), + // 1 PEV => 1 commercialShip + Transaction::TYP_SHIP => (ShipResource::isAShip(intval($identifier)) and $quantity > 0) + ? $quantity * ShipResource::getInfo(intval($identifier), 'pev') + : throw new \LogicException('Invalid ship or quantity'), + // 1 commander => 1 commercialShip + Transaction::TYP_COMMANDER => 1, + default => throw new \LogicException('Unknown transaction type'), + }; + } +} diff --git a/src/Modules/Athena/Domain/Service/Recycling/ExtractPoints.php b/src/Modules/Athena/Domain/Service/Recycling/ExtractPoints.php new file mode 100644 index 000000000..657027908 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Recycling/ExtractPoints.php @@ -0,0 +1,22 @@ +target->resources, + $recyclingMission->recyclerQuantity * RecyclingMission::RECYCLER_CAPACTIY, + ); + } +} diff --git a/src/Modules/Athena/Domain/Service/Recycling/GetMissionTime.php b/src/Modules/Athena/Domain/Service/Recycling/GetMissionTime.php new file mode 100644 index 000000000..381188247 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Recycling/GetMissionTime.php @@ -0,0 +1,33 @@ +calculateTravelTime)($startPlace, $destinationPlace, TravelType::RecyclingShips, $player); + + return (2 * $travelTime) + match ($this->timeMode) { + TimeMode::Fast => 3600, + TimeMode::Standard => RecyclingMission::RECYCLING_TIME, + }; + } +} diff --git a/src/Modules/Athena/Domain/Service/Recycling/RecycleCredits.php b/src/Modules/Athena/Domain/Service/Recycling/RecycleCredits.php new file mode 100644 index 000000000..e2b0fe16e --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Recycling/RecycleCredits.php @@ -0,0 +1,20 @@ +target->population) * 10; + // Random variation between credit and resources extraction + $creditRecycled += PercentageApplier::toInt($creditRecycled, $percent); + + return max($creditRecycled, 0); + } +} diff --git a/src/Modules/Athena/Domain/Service/Recycling/RecycleResources.php b/src/Modules/Athena/Domain/Service/Recycling/RecycleResources.php new file mode 100644 index 000000000..62c110021 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Recycling/RecycleResources.php @@ -0,0 +1,20 @@ +target->coefResources); + // Random variation between credit and resources extraction + $resourceRecycled -= PercentageApplier::toInt($resourceRecycled, $balancingPercent); + + return max($resourceRecycled, 0); + } +} diff --git a/src/Modules/Athena/Domain/Service/Recycling/RecycleShips.php b/src/Modules/Athena/Domain/Service/Recycling/RecycleShips.php new file mode 100644 index 000000000..0f57052c7 --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Recycling/RecycleShips.php @@ -0,0 +1,74 @@ +target->coefHistory); + + // convert shipRecycled to real ships + $pointsToRecycle = round($shipRecycled * RecyclingMission::COEF_SHIP); + $shipsArray1 = []; + $buyShip = []; + for ($i = 0; $i < ShipResource::SHIP_QUANTITY; ++$i) { + if (floor($pointsToRecycle / ShipResource::getInfo($i, 'resourcePrice')) > 0) { + $shipsArray1[] = [ + 'ship' => $i, + 'price' => ShipResource::getInfo($i, 'resourcePrice'), + 'canBuild' => true, ]; + } + $buyShip[] = 0; + } + + shuffle($shipsArray1); + $shipsArray = []; + $onlyThree = 0; + foreach ($shipsArray1 as $key => $value) { + ++$onlyThree; + $shipsArray[] = $value; + if (3 == $onlyThree) { + break; + } + } + $continue = true; + if (count($shipsArray) > 0) { + while ($continue) { + foreach ($shipsArray as $key => $line) { + if ($line['canBuild']) { + $nbmax = intval(floor($pointsToRecycle / $line['price'])); + if ($nbmax < 1) { + $shipsArray[$key]['canBuild'] = false; + } else { + $qty = random_int(1, $nbmax); + $pointsToRecycle -= $qty * $line['price']; + $buyShip[$line['ship']] += $qty; + } + } + } + + $canBuild = false; + // verify if we can build one more ship + foreach ($shipsArray as $line) { + if ($line['canBuild']) { + $canBuild = true; + break; + } + } + if (!$canBuild) { + // if the 3 types of ships can't be build anymore --> stop + $continue = false; + } + } + } + + return $buyShip; + } +} diff --git a/src/Modules/Athena/Domain/Service/Transaction/TransactionHandlerInterface.php b/src/Modules/Athena/Domain/Service/Transaction/TransactionHandlerInterface.php new file mode 100644 index 000000000..f710592ff --- /dev/null +++ b/src/Modules/Athena/Domain/Service/Transaction/TransactionHandlerInterface.php @@ -0,0 +1,10 @@ +diff($candidate->createdAt); + + return $diff->format('%a') > 1 || $diff->format('%H') >= $this->coolDownHours; + } +} diff --git a/src/Modules/Athena/Domain/Specification/CanOrbitalBaseTradeWithPlace.php b/src/Modules/Athena/Domain/Specification/CanOrbitalBaseTradeWithPlace.php new file mode 100644 index 000000000..b39809f26 --- /dev/null +++ b/src/Modules/Athena/Domain/Specification/CanOrbitalBaseTradeWithPlace.php @@ -0,0 +1,16 @@ +player && !$candidate->id->equals($this->orbitalBase->place->id); + } +} diff --git a/src/Modules/Athena/Domain/Specification/CanProposeCommercialRoute.php b/src/Modules/Athena/Domain/Specification/CanProposeCommercialRoute.php new file mode 100644 index 000000000..09be6ca2e --- /dev/null +++ b/src/Modules/Athena/Domain/Specification/CanProposeCommercialRoute.php @@ -0,0 +1,42 @@ +andWhere('ob.player = :player') + ->andWhere('ob.levelSpatioport > 0') + ->andWhere($queryBuilder->expr()->in('p.faction', ':factions')) + ->andWhere('(FLOOR(SQRT(POW(:system_x - s.xPosition, 2) + POW(:system_y - s.yPosition, 2)))) >= :min_distance') + ->andWhere('(FLOOR(SQRT(POW(:system_x - s.xPosition, 2) + POW(:system_y - s.yPosition, 2)))) <= :max_distance') + ->setParameter('player', $this->player) + ->setParameter('system_x', $this->orbitalBase->place->system->xPosition) + ->setParameter('system_y', $this->orbitalBase->place->system->yPosition) + ->setParameter('factions', $this->factions) + ->setParameter('min_distance', $this->minDistance) + ->setParameter('max_distance', $this->maxDistance); + } +} diff --git a/src/Modules/Athena/Domain/Specification/OrbitalBaseSpecification.php b/src/Modules/Athena/Domain/Specification/OrbitalBaseSpecification.php new file mode 100644 index 000000000..b62d31fb1 --- /dev/null +++ b/src/Modules/Athena/Domain/Specification/OrbitalBaseSpecification.php @@ -0,0 +1,13 @@ +orbitalBaseRepository->get($message->baseId) + ?? throw new \RuntimeException(sprintf('Base %s not found', $message->baseId)); + + $missingUpdatesCount = ($this->countMissingSystemUpdates)($base); + if (0 === $missingUpdatesCount) { + return; + } + + $playerBonus = $this->playerBonusManager->getBonusByPlayer($base->player); + + $secondsPerGameCycle = $this->gameTimeConverter->convertGameCyclesToSeconds(1); + + try { + $this->entityManager->beginTransaction(); + + $launchNewMessage = false; + + for ($i = 0; $i < $missingUpdatesCount; ++$i) { + if ($i === self::MAX_UPDATES) { + $launchNewMessage = true; + + break; + } + $this->updateResources($base, $playerBonus); + $this->updateAntiSpy($base); + + $base->updatedAt = $base->updatedAt->modify(sprintf('+%d seconds', $secondsPerGameCycle)); + } + + $this->orbitalBaseRepository->save($base); + + $this->entityManager->commit(); + + if (true === $launchNewMessage) { + $this->messageBus->dispatch(new BaseUpdateMessage($base->id)); + + $this->logger->debug('Dispatched new base update message for the next iterations for base {baseName} of player {playerName}', [ + 'baseName' => $base->name, + 'baseId' => $base->id, + 'playerName' => $base->player->name, + 'playerId' => $base->player->id, + ]); + } + } catch (\Throwable $e) { + $this->entityManager->rollback(); + + throw $e; + } + } + + protected function updateResources(OrbitalBase $orbitalBase, PlayerBonus $playerBonus): void + { + $addResources = Game::resourceProduction( + $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::REFINERY, + 'level', + $orbitalBase->levelRefinery, + 'refiningCoefficient' + ), + $orbitalBase->place->coefResources, + ); + $addResources += $this->bonusApplier->apply($addResources, PlayerBonusId::REFINERY_REFINING, $playerBonus); + + $this->orbitalBaseManager->increaseResources($orbitalBase, intval(round($addResources)), false); + } + + protected function updateAntiSpy(OrbitalBase $orbitalBase): void + { + $orbitalBase->antiSpyAverage = intval(round((($orbitalBase->antiSpyAverage * (24 - 1)) + $orbitalBase->iAntiSpy) / 24)); + } +} diff --git a/src/Modules/Athena/Handler/Base/BasesUpdateHandler.php b/src/Modules/Athena/Handler/Base/BasesUpdateHandler.php new file mode 100644 index 000000000..1b7095d17 --- /dev/null +++ b/src/Modules/Athena/Handler/Base/BasesUpdateHandler.php @@ -0,0 +1,31 @@ +orbitalBaseRepository->getBySpecification(new IsPlayerAlive()); + + foreach ($bases as $base) { + $this->messageBus->dispatch(new BaseUpdateMessage($base->id)); + } + } +} diff --git a/src/Modules/Athena/Handler/Building/BuildingQueueHandler.php b/src/Modules/Athena/Handler/Building/BuildingQueueHandler.php new file mode 100644 index 000000000..5cd64a3a7 --- /dev/null +++ b/src/Modules/Athena/Handler/Building/BuildingQueueHandler.php @@ -0,0 +1,54 @@ +logger->info('Handle building completion for queue {queueId}', [ + 'queueId' => $message->getBuildingQueueId(), + ]); + if (null === ($queue = $this->buildingQueueRepository->get($message->getBuildingQueueId()))) { + return; + } + $orbitalBase = $queue->base; + $player = $orbitalBase->player; + $this->buildingLevelHandler->increaseBuildingLevel($orbitalBase, $queue->buildingNumber); + $this->orbitalBasePointsHandler->updatePoints($orbitalBase); + $this->orbitalBaseRepository->save($orbitalBase); + // increase player experience + $experience = $this->orbitalBaseHelper->getBuildingInfo($queue->buildingNumber, 'level', $queue->targetLevel, 'points'); + $this->playerManager->increaseExperience($player, $experience); + + // alert @TODO replace with Mercure + // if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { + // $session->addFlashbag('Construction de votre ' . $this->orbitalBaseHelper->getBuildingInfo($queue->buildingNumber, 'frenchName') . ' niveau ' . $queue->targetLevel . ' sur ' . $orbitalBase->name . ' terminée. Vous gagnez ' . $experience . ' point' . Format::addPlural($experience) . ' d\'expérience.', Flashbag::TYPE_GENERATOR_SUCCESS); + // $this->sessionWrapper->save($session); + // } + $this->buildingQueueRepository->remove($queue); + $this->logger->info('Construction done'); + } +} diff --git a/src/Modules/Athena/Handler/RecyclingMissionHandler.php b/src/Modules/Athena/Handler/RecyclingMissionHandler.php new file mode 100644 index 000000000..caadc0ebd --- /dev/null +++ b/src/Modules/Athena/Handler/RecyclingMissionHandler.php @@ -0,0 +1,235 @@ +recyclingMissionRepository->get($message->getRecyclingMissionId()); + $orbitalBase = $mission->base; + $targetPlace = $mission->target; + + $this->logger->debug('Processing recycling mission {missionId}. Initial target resources : {targetResources}', [ + 'missionId' => $mission->id->toRfc4122(), + 'targetResources' => $targetPlace->resources, + ]); + + $player = $orbitalBase->player; + + if (null === $player || !$player->isAlive()) { + $mission->stop(); + + $this->recyclingMissionRepository->save($mission); + + return; + } + + if (Place::EMPTYZONE === $targetPlace->typeOfPlace) { + $this->logger->debug('Mission {missionId} target has become empty',[ + 'missionId' => $mission->id->toRfc4122(), + ]); + // the place become an empty place + $targetPlace->resources = 0; + + // stop the mission + $mission->statement = RecyclingMission::ST_DELETED; + + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Arrêt de mission de recyclage') + ->setContent(NotificationBuilder::paragraph( + 'Un ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $mission->target->id]), + 'lieu', + ), + ' que vous recycliez est désormais totalement dépourvu de ressources et s\'est donc transformé en lieu vide.', + NotificationBuilder::divider(), + 'Vos recycleurs restent donc stationnés sur votre ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $mission->base->place->id]), + 'base orbitale', + ), + ' le temps que vous programmiez une autre mission.', + )) + ->for($player)); + + $this->entityManager->flush(); + + return; + } + // make the recycling : decrease resources on the target place + $totalRecycled = ($this->extractPoints)($mission); + $targetPlace->resources -= $totalRecycled; + // if there is no more resource + if ($targetPlace->resources <= 0) { + // Avoid out of range errors + $targetPlace->resources = 0; + // the place become an empty place + $this->placeManager->turnAsEmptyPlace($targetPlace); + + // stop the mission + $mission->statement = RecyclingMission::ST_DELETED; + + // send notification to the player + $notification = NotificationBuilder::new() + ->setTitle('Arrêt de mission de recyclage') + ->setContent(NotificationBuilder::paragraph( + 'Un ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $mission->target->id]), + 'lieu', + ), + ' que vous recycliez est désormais totalement dépourvu de ressources et s\'est donc transformé en lieu vide.', + NotificationBuilder::divider(), + 'Vos recycleurs restent donc stationnés sur votre ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $orbitalBase->place->id]), + 'base orbitale', + ), + ' le temps que vous programmiez une autre mission.', + )) + ->for($player); + + $this->notificationRepository->save($notification); + } + + // if the sector change its color between 2 recyclings + // TODO transform into specification and factorize + if (null !== $targetPlace->system->sector->faction && !$player->faction->id->equals($targetPlace->system->sector->faction?->id)) { + $mission->stop(); + + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Arrêt de mission de recyclage') + ->setContent(NotificationBuilder::paragraph( + 'Le secteur d\'un ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $mission->target->id]), + 'lieu', + ), + ' que vous recycliez est passé à l\'ennemi, vous ne pouvez donc plus y envoyer vos recycleurs. La mission est annulée.', + NotificationBuilder::divider(), + 'Vos recycleurs restent donc stationnés sur votre ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $mission->base->place->id]), + 'base orbitale', + ), + ' le temps que vous programmiez une autre mission.', + )) + ->for($player)); + } + + // diversify a little (resource and credit) + $balancingPercent = random_int(-5, 5); + + $buyShip = ($this->recycleShips)($mission, $totalRecycled); + $resourceRecycled = ($this->recycleResources)($mission, $totalRecycled, $balancingPercent); + $creditRecycled = ($this->recycleCredits)($mission, $totalRecycled, $balancingPercent); + + // create a RecyclingLog + $rl = new RecyclingLog( + id: Uuid::v4(), + mission: $mission, + createdAt: new \DateTimeImmutable(), + resources: $resourceRecycled, + credits: $creditRecycled, + ship0: $buyShip[0], + ship1: $buyShip[1], + ship2: $buyShip[2], + ship3: $buyShip[3], + ship4: $buyShip[4], + ship5: $buyShip[5], + ship6: $buyShip[6], + ship7: $buyShip[7], + ship8: $buyShip[8], + ship9: $buyShip[9], + ship10: $buyShip[10], + ship11: $buyShip[11], + ); + + $this->recyclingLogRepository->save($rl); + + // give to the orbitalBase ($orbitalBase) and player what was recycled + $this->orbitalBaseManager->increaseResources($orbitalBase, $resourceRecycled); + for ($i = 0; $i < ShipResource::SHIP_QUANTITY; ++$i) { + $orbitalBase->addShips($i, $buyShip[$i]); + } + $this->playerManager->increaseCredit($player, $creditRecycled); + + // add recyclers waiting to the mission + $mission->recyclerQuantity += $mission->addToNextMission; + $mission->addToNextMission = 0; + + // if a mission is stopped by the user, delete it + if ($mission->isBeingDeleted()) { + $mission->statement = RecyclingMission::ST_DELETED; + } + + $this->logger->debug('Recycling mission {missionId} has been processed. Final target resources : {targetResources}', [ + 'missionId' => $mission->id->toRfc4122(), + 'targetResources' => $targetPlace->resources, + 'refinedCredits' => $creditRecycled, + 'refinedResources' => $resourceRecycled, + 'refinedShips' => $buyShip, + ]); + + // update the cycle time in case the time mode has changed or new bonuses apply since the previous occurrence + $mission->cycleTime = ($this->getMissionTime)($orbitalBase->place, $targetPlace, $player); + $mission->endedAt = $this->durationHandler->getDurationEnd($mission->endedAt, $mission->cycleTime); + // Schedule the next mission if there is still resources + if (!$mission->isDeleted()) { + $this->messageBus->dispatch( + new RecyclingMissionMessage($mission->id), + [DateTimeConverter::to_delay_stamp($mission->endedAt)] + ); + } + $this->entityManager->flush(); + } +} diff --git a/src/Modules/Athena/Handler/Ship/ShipQueueHandler.php b/src/Modules/Athena/Handler/Ship/ShipQueueHandler.php new file mode 100644 index 000000000..a967981b0 --- /dev/null +++ b/src/Modules/Athena/Handler/Ship/ShipQueueHandler.php @@ -0,0 +1,49 @@ +shipQueueRepository->get($message->getShipQueueId()))) { + return; + } + $orbitalBase = $queue->base; + $player = $orbitalBase->player; + // vaisseau construit + $orbitalBase->addShips($queue->shipNumber, $queue->quantity); + // increase player experience + $experience = $queue->quantity * ShipResource::getInfo($queue->shipNumber, 'points'); + $this->playerManager->increaseExperience($player, $experience); + + // alert @TODO replace with Mercure + // if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { + // $shipName = ShipResource::getInfo($queue->shipNumber, 'codeName'); + // $session->addFlashbag(\sprintf( + // 'Construction de %s sur %s terminée. Vous gagnez %s point%s d\'expérience.', + // ($queue->quantity > 1) + // ? \sprintf('vos %s %ss', $queue->quantity, $shipName) + // : \sprintf('votre %s', $shipName), + // $orbitalBase->name, + // $experience, + // Format::addPlural($experience), + // ), 1 === $queue->dockType ? Flashbag::TYPE_DOCK1_SUCCESS : Flashbag::TYPE_DOCK2_SUCCESS); + // $this->sessionWrapper->save($session); + // } + $this->shipQueueRepository->remove($queue); + } +} diff --git a/src/Modules/Athena/Handler/Trade/CommercialShippingHandler.php b/src/Modules/Athena/Handler/Trade/CommercialShippingHandler.php new file mode 100644 index 000000000..4adcb201b --- /dev/null +++ b/src/Modules/Athena/Handler/Trade/CommercialShippingHandler.php @@ -0,0 +1,87 @@ +commercialShippingRepository->get($message->getCommercialShippingId()) + ?? throw new \RuntimeException(sprintf('Commercial shipping %s not found', $message->getCommercialShippingId())); + $transaction = $cs->transaction; + $orbitalBase = $cs->originBase; + $destOB = $cs->destinationBase; + $commander = (null !== $transaction && Transaction::TYP_COMMANDER === $transaction->type) + ? $transaction->commander + : null + ; + + switch ($cs->statement) { + case CommercialShipping::ST_GOING: + // shipping arrived, delivery of items to rBaseDestination + $this->commercialShippingManager->deliver($cs, $transaction, $destOB, $commander); + // prepare commercialShipping for moving back + $cs->statement = CommercialShipping::ST_MOVING_BACK; + $timeToTravel = $this->durationHandler->getDiff($cs->getDepartureDate(), $cs->getArrivalDate()); + $cs->departureDate = $cs->getArrivalDate(); + $cs->arrivalDate = $this->durationHandler->getDurationEnd($cs->getArrivalDate(), $timeToTravel); + + $this->commercialShippingRepository->save($cs); + + $this->messageBus->dispatch( + new CommercialShippingMessage($cs->id), + [DateTimeConverter::to_delay_stamp($cs->getArrivalDate())], + ); + break; + case CommercialShipping::ST_MOVING_BACK: + // shipping arrived, release of the commercial ships + // send notification + $notification = NotificationBuilder::new() + ->setTitle('Retour de livraison') + ->setContent(NotificationBuilder::paragraph( + (1 === $cs->shipQuantity) + ? 'Votre vaisseau commercial est de retour sur votre ' + : 'Vos vaisseaux commerciaux sont de retour sur votre ', + NotificationBuilder::link($this->urlGenerator->generate('map', ['place' => $orbitalBase->place->id]), 'base orbitale'), + ' après avoir livré du matériel sur une autre ', + NotificationBuilder::link($this->urlGenerator->generate('map', ['place' => $destOB->place->id]), 'base'), + NotificationBuilder::divider(), + (1 === $cs->shipQuantity) + ? 'Votre vaisseau de commerce est à nouveau disponible pour faire d\'autres transactions ou routes commerciales.' + : 'Vos '.$cs->shipQuantity.' vaisseaux de commerce sont à nouveau disponibles pour faire d\'autres transactions ou routes commerciales.', + )) + ->for($cs->player); + + $this->notificationRepository->save($notification); + // delete commercialShipping + $this->commercialShippingRepository->remove($cs); + break; + default: + break; + } + } +} diff --git a/src/Modules/Athena/Helper/OrbitalBaseHelper.php b/src/Modules/Athena/Helper/OrbitalBaseHelper.php new file mode 100644 index 000000000..8021c406e --- /dev/null +++ b/src/Modules/Athena/Helper/OrbitalBaseHelper.php @@ -0,0 +1,171 @@ + 2, + OrbitalBase::TYP_MILITARY, OrbitalBase::TYP_CAPITAL => 5, + default => 0, + }; + } + + // @TODO Check for the need of this method ?? + public function getInfo($buildingNumber, $info, $level = 0, $sup = 'default') + { + return $this->getBuildingInfo($buildingNumber, $info, $level, $sup); + } + + // @TODO Separate building logic from orbital-ase logic in a dedicated helper (for now) + public function getBuildingInfo($buildingNumber, $info, $level = 0, $sup = 'default') + { + if ($this->isABuilding($buildingNumber)) { + if (\in_array($info, ['name', 'column', 'frenchName', 'imageLink', 'description'])) { + return OrbitalBaseResource::$building[$buildingNumber][$info]; + } elseif ('techno' == $info) { + if (\in_array($buildingNumber, [3, 4, 6, 8, 9])) { + return OrbitalBaseResource::$building[$buildingNumber][$info]; + } else { + return -1; + } + } elseif ('maxLevel' == $info) { + // $level is the type of the base + return OrbitalBaseResource::$building[$buildingNumber][$info][$level]; + } elseif ('level' == $info) { + if ($level <= 0 or $level > count(OrbitalBaseResource::$building[$buildingNumber]['level'])) { + return null; + } + if ('time' == $sup) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][0]; + } elseif ('resourcePrice' == $sup) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][1]; + } elseif ('points' == $sup) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][2]; + } else { + if ('nbQueues' == $sup) { + if (0 == $buildingNumber or 2 == $buildingNumber or 3 == $buildingNumber or 5 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } + } elseif ('storageSpace' == $sup) { + if (7 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } elseif (2 == $buildingNumber or 3 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][4]; + } + } elseif ('refiningCoefficient' == $sup and 1 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } elseif ('releasedShip' == $sup and (2 == $buildingNumber or 3 == $buildingNumber)) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][5]; + } elseif ('releasedShip' == $sup and 4 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][4]; + } elseif ('nbCommercialShip' == $sup and 6 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } elseif ('nbRecyclers' == $sup and 8 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } elseif ('nbRoutesMax' == $sup and 9 == $buildingNumber) { + return OrbitalBaseResource::$building[$buildingNumber][$info][$level - 1][3]; + } else { + throw new \ErrorException('4e argument invalide dans getBuildingInfo de OrbitalBaseResource'); + } + } + } else { + throw new \ErrorException('2e argument invalide dans getBuildingInfo de OrbitalBaseResource'); + } + } else { + throw new \ErrorException('1er argument invalide (entre 0 et 7) dans getBuildingInfo de OrbitalBaseResource'); + } + + return null; + } + + public function haveRights($buildingId, $level, $type, $sup): bool|string + { + if ($this->isABuilding($buildingId)) { + switch ($type) { + // assez de ressources pour contruire ? + case 'resource': + return $sup >= $this->getBuildingInfo($buildingId, 'level', $level, 'resourcePrice'); + // encore de la place dans la queue ? + // $sup est le nombre de batiments dans la queue + case 'queue': + // $buildingId n'est pas utilisé + return $sup < $this->getBuildingInfo($buildingId, 'level', $level, 'nbQueues'); + // droit de construire le batiment ? + // $sup est un objet de type OrbitalBase + case 'buildingTree': + $diminution = match ($buildingId) { + OrbitalBaseResource::GENERATOR, + OrbitalBaseResource::STORAGE, + OrbitalBaseResource::DOCK1, + OrbitalBaseResource::REFINERY, + OrbitalBaseResource::TECHNOSPHERE => 0, + OrbitalBaseResource::DOCK2, OrbitalBaseResource::SPATIOPORT => 20, + OrbitalBaseResource::DOCK3 => 30, + OrbitalBaseResource::COMMERCIAL_PLATEFORME, OrbitalBaseResource::RECYCLING => 10, + // no break + default => throw new \LogicException('buildingId invalide (entre 0 et 9) dans haveRights de OrbitalBaseResource'), + }; + if (OrbitalBaseResource::GENERATOR == $buildingId) { + if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$sup->typeOfBase]) { + return 'niveau maximum atteint'; + } else { + return true; + } + } else { + $realGeneratorLevel = $this->buildingLevelHandler->getBuildingRealLevel( + $sup, + OrbitalBaseResource::GENERATOR, + $this->buildingQueueRepository->getBaseQueues($sup), + ); + + if (1 == $level and OrbitalBase::TYP_NEUTRAL == $sup->typeOfBase and in_array($buildingId, [OrbitalBaseResource::SPATIOPORT, OrbitalBaseResource::DOCK2])) { + return 'vous devez évoluer votre colonie pour débloquer ce bâtiment'; + } + if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$sup->typeOfBase]) { + return 'niveau maximum atteint'; + } elseif ($level > ($realGeneratorLevel - $diminution)) { + return 'le niveau du générateur n\'est pas assez élevé'; + } else { + return true; + } + } + // a la technologie pour construire ce bâtiment ? + // $sup est un objet de type Technology + case 'techno': + if (-1 == $this->getBuildingInfo($buildingId, 'techno')) { + return true; + } + if (1 == $sup->getTechnology($this->getBuildingInfo($buildingId, 'techno'))) { + return true; + } else { + return 'il vous faut développer la technologie '.$this->technologyHelper->getInfo($this->getBuildingInfo($buildingId, 'techno'), 'name'); + } + default: + throw new \LogicException('$type invalide (entre 1 et 4) dans haveRights de OrbitalBaseResource'); + } + } else { + throw new \LogicException('buildingId invalide (entre 0 et 9) dans haveRights de OrbitalBaseResource'); + } + } +} diff --git a/src/Modules/Athena/Helper/ShipHelper.php b/src/Modules/Athena/Helper/ShipHelper.php new file mode 100644 index 000000000..5e347e87c --- /dev/null +++ b/src/Modules/Athena/Helper/ShipHelper.php @@ -0,0 +1,113 @@ +currentPlayerRegistry->get()->faction->identifier + && in_array($shipId, [ShipResource::CERBERE, ShipResource::PHENIX]) + ) { + $price -= PercentageApplier::toInt($price, ColorResource::BONUS_EMPIRE_CRUISER); + } + + return !($sup < $price); + case 'queue': + return $quantity < ($this->countMaxShipQueues)( + orbitalBase: $sup, + dockType: DockType::fromShipIdentifier($shipId), + ); + // droit de construire le vaisseau ? + // $sup est un objet de type OrbitalBase + case 'shipTree': + if (ShipResource::isAShipFromDock1($shipId)) { + $level = $sup->levelDock1; + + return $shipId < $this->orbitalBaseHelper->getBuildingInfo(2, 'level', $level, 'releasedShip'); + } elseif (ShipResource::isAShipFromDock2($shipId)) { + $level = $sup->levelDock2; + + return ($shipId - 6) < $this->orbitalBaseHelper->getBuildingInfo(3, 'level', $level, 'releasedShip'); + } else { + $level = $sup->levelDock3; + + return ($shipId - 12) < $this->orbitalBaseHelper->getBuildingInfo(4, 'level', $level, 'releasedShip'); + } + // assez de pev dans le storage et dans la queue ? + // $sup est un objet de type OrbitalBase + case 'pev': + $dockType = DockType::fromShipIdentifier($shipId); + $wanted = ShipResource::getInfo($shipId, 'pev') * $quantity; + + $shipQueues = $this->shipQueueRepository->getByBaseAndDockType($sup, $dockType->getIdentifier()); + + return $wanted <= ($this->countHangarAvailableStorableShipPoints)($sup, $shipQueues, $dockType); + // a la technologie nécessaire pour constuire ce vaisseau ? + // $sup est un objet de type Technology + case 'techno': + if (1 == $sup->getTechnology(ShipResource::getInfo($shipId, 'techno'))) { + return true; + } + return 'il vous faut développer la technologie ' . $this->technologyHelper->getInfo(ShipResource::getInfo($shipId, 'techno'), 'name'); + default: + throw new \ErrorException('type invalide dans haveRights de ShipResource'); + } + } else { + throw new \ErrorException('shipId invalide (entre 0 et 14) dans haveRights de ShipResource'); + } + } + + public function dockLevelNeededFor($shipId) + { + if (ShipResource::isAShipFromDock1($shipId)) { + $building = OrbitalBaseResource::DOCK1; + $size = 40; + ++$shipId; + } elseif (ShipResource::isAShipFromDock2($shipId)) { + $building = OrbitalBaseResource::DOCK2; + $size = 20; + $shipId -= 5; + } else { + $building = OrbitalBaseResource::DOCK3; + $size = 10; + $shipId -= 11; + } + for ($i = 0; $i <= $size; ++$i) { + $relasedShip = $this->orbitalBaseHelper->getBuildingInfo($building, 'level', $i, 'releasedShip'); + if ($relasedShip == $shipId) { + return $i; + } + } + } +} diff --git a/src/Modules/Athena/Infrastructure/ArgumentResolver/CurrentBaseValueResolver.php b/src/Modules/Athena/Infrastructure/ArgumentResolver/CurrentBaseValueResolver.php new file mode 100644 index 000000000..37212659c --- /dev/null +++ b/src/Modules/Athena/Infrastructure/ArgumentResolver/CurrentBaseValueResolver.php @@ -0,0 +1,28 @@ +getType()) { + return []; + } + if (null === $this->currentPlayerBasesRegistry->current()) { + return []; + } + + return [$this->currentPlayerBasesRegistry->current()]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/AutocompleteBase.php b/src/Modules/Athena/Infrastructure/Controller/Base/AutocompleteBase.php new file mode 100644 index 000000000..41b156fdb --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/AutocompleteBase.php @@ -0,0 +1,25 @@ +query->get('q'))) { + throw new BadRequestHttpException('Missing search parameter'); + } + + return $this->render('blocks/athena/autocomplete_base.html.twig', [ + 'places' => $placeRepository->search($search), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/Build.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/Build.php new file mode 100644 index 000000000..d0af9e088 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/Build.php @@ -0,0 +1,94 @@ +isABuilding($identifier)) { + throw new BadRequestHttpException('le bâtiment indiqué n\'est pas valide'); + } + $buildingQueues = $buildingQueueRepository->getBaseQueues($currentBase); + $buildingQueuesCount = count($buildingQueues); + + $currentLevel = $buildingLevelHandler->getBuildingRealLevel($currentBase, $identifier, $buildingQueues); + $targetLevel = $currentLevel + 1; + $technos = $technologyRepository->getPlayerTechnology($currentPlayer); + + $buildingConstructionOrder = new BuildingConstructionOrder( + orbitalBase: $currentBase, + technology: $technos, + buildingIdentifier: $identifier, + targetLevel: $targetLevel, + ); + + $violations = $validator->validate($buildingConstructionOrder, new Sequentially([ + new IsValidBuilding(), + new CanMakeBuilding($buildingQueuesCount), + ])); + + if (0 < $violations->count()) { + throw new ValidationFailedException($buildingConstructionOrder, $violations); + } + + if (0 === $buildingQueuesCount) { + $startedAt = new \DateTimeImmutable(); + } else { + $startedAt = $buildingQueues[$buildingQueuesCount - 1]->endedAt; + } + + // debit resources + $orbitalBaseManager->decreaseResources( + $currentBase, + $buildingDataHandler->getBuildingResourceCost($identifier, $targetLevel), + ); + + $buildingQueue = $buildingQueueFactory->create( + orbitalBase: $currentBase, + identifier: $identifier, + targetLevel: $targetLevel, + startedAt: $startedAt, + ); + + // TODO remove this + // add the event in controller + $request->getSession()->get('playerEvent')->add($buildingQueue->getEndDate(), $this->getParameter('event_base'), $currentBase->id); + + $this->addFlash('success', 'Construction programmée'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/Cancel.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/Cancel.php new file mode 100644 index 000000000..db55914bd --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/Cancel.php @@ -0,0 +1,92 @@ +isABuilding($identifier)) { + throw new BadRequestHttpException('le bâtiment indiqué n\'est pas valide'); + } + $buildingQueues = $buildingQueueRepository->getBaseQueues($currentBase); + + $index = null; + $dStart = null; + $targetLevel = null; + $nbBuildingQueues = count($buildingQueues); + for ($i = 0; $i < $nbBuildingQueues; ++$i) { + $queue = $buildingQueues[$i]; + // get the last element from the correct building + if ($queue->buildingNumber === $identifier) { + $index = $i; + $targetLevel = $queue->targetLevel; + $dStart = $queue->getStartDate(); + } + } + + if (null === $dStart || null === $index || null === $targetLevel) { + throw new ConflictHttpException('suppression de bâtiment impossible'); + } + + // if it's the first, the next must restart by now + if (0 === $index) { + $dStart = new \DateTimeImmutable(); + } + // shift + for ($i = $index + 1; $i < $nbBuildingQueues; ++$i) { + $queue = $buildingQueues[$i]; + + $queue->endedAt = $durationHandler->getDurationEnd($dStart, $durationHandler->getDurationRemainingTime($queue)); + $queue->startedAt = $dStart; + + // @TODO handle rescheduling + // $scheduler->reschedule($queue, $queue->dEnd, $oldDate); + + $dStart = $queue->endedAt; + } + + // @TODO handle cancellation + // $scheduler->cancel($buildingQueues[$index], $buildingQueues[$index]->dEnd); + $entityManager->remove($buildingQueues[$index]); + $entityManager->flush(); + + $buildingResourceRefund = $this->getParameter('athena.building.building_queue_resource_refund'); + // give the resources back + $resourcePrice = $orbitalBaseHelper->getBuildingInfo($identifier, 'level', $targetLevel, 'resourcePrice'); + $resourcePrice = intval(round($resourcePrice * $buildingResourceRefund)); + $orbitalBaseManager->increaseResources($currentBase, $resourcePrice); + $this->addFlash('success', 'Construction annulée, vous récupérez le '.$buildingResourceRefund * 100 .'% du montant investi pour la construction'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/RefineryController.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/RefineryController.php new file mode 100644 index 000000000..671dd2b23 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/RefineryController.php @@ -0,0 +1,19 @@ +render('pages/athena/refinery.html.twig', [ + 'refining_bonus' => $currentPlayerBonusRegistry->getPlayerBonus()->bonuses->get(PlayerBonusId::REFINERY_REFINING), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/StorageController.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/StorageController.php new file mode 100644 index 000000000..1861bc70f --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/StorageController.php @@ -0,0 +1,18 @@ +render('pages/athena/storage.html.twig', [ + 'storage_bonus' => $currentPlayerBonusRegistry->getPlayerBonus()->bonuses->get(PlayerBonusId::REFINERY_STORAGE), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/TradeMarketController.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/TradeMarketController.php new file mode 100644 index 000000000..9ffabb0e1 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/TradeMarketController.php @@ -0,0 +1,51 @@ +levelCommercialPlateforme === 0) { + return $this->redirectToRoute('base_overview'); + } + + return $this->render('pages/athena/trade_market.html.twig', [ + 'mode' => $mode, + 'max_ships' => $orbitalBaseHelper->getInfo( + OrbitalBaseResource::COMMERCIAL_PLATEFORME, + 'level', + $currentBase->levelCommercialPlateforme, + 'nbCommercialShip', + ), + 'resources_current_rate' => $transactionRepository->getLastCompletedTransaction(Transaction::TYP_RESOURCE)->currentRate, + 'resource_transactions' => $transactionRepository->getProposedTransactions(Transaction::TYP_RESOURCE), + 'commander_current_rate' => $transactionRepository->getLastCompletedTransaction(Transaction::TYP_COMMANDER)->currentRate, + 'commander_transactions' => $transactionRepository->getProposedTransactions(Transaction::TYP_COMMANDER), + 'ship_current_rate' => $transactionRepository->getLastCompletedTransaction(Transaction::TYP_SHIP)->currentRate, + 'ship_transactions' => $transactionRepository->getProposedTransactions(Transaction::TYP_SHIP), + 'commercial_shippings' => $getBaseCommercialShippingsData($currentBase), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewBuildingPanel.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewBuildingPanel.php new file mode 100644 index 000000000..eb38532e3 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewBuildingPanel.php @@ -0,0 +1,115 @@ +isABuilding($identifier)) { + throw $this->createNotFoundException('This building does not exist'); + } + + $currentLevel = $buildingLevelHandler->getBuildingLevel($currentBase, $identifier); + $max = $orbitalBaseHelper->getBuildingInfo($identifier, 'maxLevel', OrbitalBase::TYP_CAPITAL); + + $noteQuantity = 0; + $footnoteArray = []; + $data = []; + for ($i = 0; $i < $max; ++$i) { + $level = $i + 1; + // generate the exponents for the footnotes + $alreadyANote = false; + $note = ''; + for ($j = 0; $j < 4; ++$j) { + if ($i == $orbitalBaseHelper->getInfo($identifier, 'maxLevel', $j) - 1) { + if (!$alreadyANote) { + $alreadyANote = true; + ++$noteQuantity; + $note .= ''.$noteQuantity.''; + } + $footnoteArray[$j] = $noteQuantity; + } + } + $data[$i] = [ + 'note' => $level.$note, + 'resourcePrice' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'resourcePrice')), + 'time' => Chronos::secondToFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'time'), 'lite'), + 'stats' => match ($identifier) { + OrbitalBaseResource::GENERATOR => [ + ['stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbQueues'))], + ], + OrbitalBaseResource::REFINERY => [ + [ + 'stat' => Format::numberFormat(Game::resourceProduction($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'refiningCoefficient'), 50)), + 'image' => 'resource', + 'alt' => 'resources', + ], + ], + OrbitalBaseResource::STORAGE => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'storageSpace')), + 'image' => 'resource', + 'alt' => 'resources', + ], + ], + OrbitalBaseResource::DOCK1, OrbitalBaseResource::DOCK2 => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbQueues')), + ], + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'storageSpace')), + 'image' => 'pev', + 'alt' => 'pev', + ], + ], + OrbitalBaseResource::TECHNOSPHERE => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbQueues')), + ], + ], + OrbitalBaseResource::COMMERCIAL_PLATEFORME => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbCommercialShip')), + ], + ], + OrbitalBaseResource::RECYCLING => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbRecyclers')), + ], + ], + OrbitalBaseResource::SPATIOPORT => [ + [ + 'stat' => Format::numberFormat($orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'nbRoutesMax')), + ], + ], + default => throw new \LogicException(), + }, + 'points' => $orbitalBaseHelper->getBuildingInfo($identifier, 'level', $level, 'points'), + ]; + } + + return $this->render('blocks/athena/building_panel.html.twig', [ + 'footnote_array' => $footnoteArray, + 'quantity_array' => array_count_values($footnoteArray), + 'data' => $data, + 'current_level' => $currentLevel, + 'max_level' => $max, + 'building_number' => $identifier, + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewDocks.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewDocks.php new file mode 100644 index 000000000..f7752b49a --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewDocks.php @@ -0,0 +1,69 @@ +getLevel($currentBase)) { + return $this->redirectToRoute('base_overview'); + } + + $playerBonuses = $currentPlayerBonusRegistry->getPlayerBonus()->bonuses; + + $dockLevel = $dockType->getLevel($currentBase); + $buildingNumber = $dockType->getBuildingNumber(); + $dockSpeedBonus = $playerBonuses->get($dockType->getSpeedBonusId()); + $shipsRange = $dockType->getShipRange(); + $dockIdentifier = $dockType->getIdentifier(); + + $shipQueues = $shipQueueRepository->getByBaseAndDockType($currentBase, $dockIdentifier); + $nbShipQueues = count($shipQueues); + $technology = $technologyRepository->getPlayerTechnology($currentPlayer); + + $inStorage = $countStoredShipPoints(base: $currentBase, dockType: $dockType); + $inQueue = $countQueuedShipPoints($shipQueues); + + return $this->render('pages/athena/docks.html.twig', [ + 'building_number' => $buildingNumber, + 'technology' => $technology, + 'dock_type' => $dockType, + 'dock_level' => $dockLevel, + 'ships_range' => $shipsRange, + 'total_space' => $countMaxStorableShipPoints($currentBase, $dockType), + 'ship_queues' => $shipQueues, + 'nb_ship_queues' => $nbShipQueues, + 'nb_dock_queues' => $countMaxShipQueues($currentBase, $dockType), + 'in_storage' => $inStorage, + 'in_queue' => $inQueue, + 'ship_resource_refund' => $this->getParameter('athena.building.ship_queue_resource_refund'), + 'dock_speed_bonus' => $dockSpeedBonus, + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewGenerator.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewGenerator.php new file mode 100644 index 000000000..fa86dec0b --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewGenerator.php @@ -0,0 +1,44 @@ +getPlayerTechnology($currentPlayer); + $buildingQueues = $buildingQueueRepository->getBaseQueues($currentBase); + $buildingQueuesCount = count($buildingQueues); + + return $this->render('pages/athena/generator.html.twig', [ + 'technology' => $technology, + 'generator_speed_bonus' => $currentPlayerBonusRegistry + ->getPlayerBonus()->bonuses->get(PlayerBonusId::GENERATOR_SPEED), + 'building_resource_refund' => $this->getParameter('athena.building.building_queue_resource_refund'), + 'building_queues' => $buildingQueues, + 'building_queues_count' => $buildingQueuesCount, + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewRecycling.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewRecycling.php new file mode 100644 index 000000000..d69aa1dc8 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewRecycling.php @@ -0,0 +1,96 @@ +levelRecycling) { + return $this->redirectToRoute('base_overview'); + } + + // load recycling missions + $baseMissions = $recyclingMissionRepository->getBaseActiveMissions($currentBase); + $missionsLogs = $recyclingLogRepository->getBaseActiveMissionsLogs($currentBase); + $missionQuantity = count($baseMissions); + + $totalRecyclers = $orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::RECYCLING, + 'level', + $currentBase->levelRecycling, + 'nbRecyclers' + ); + $busyRecyclers = 0; + + foreach ($baseMissions as $mission) { + $busyRecyclers += $mission->recyclerQuantity; + $busyRecyclers += $mission->addToNextMission; + } + + $freeRecyclers = $totalRecyclers - $busyRecyclers; + + return $this->render('pages/athena/base/building/recycling.html.twig', [ + 'base_missions' => array_map(fn (RecyclingMission $rm) => $this->getData($rm), $baseMissions), + 'mission_logs' => $missionsLogs, + 'mission_quantity' => $missionQuantity, + 'free_recyclers' => $freeRecyclers, + 'busy_recyclers' => $busyRecyclers, + 'total_recyclers' => $totalRecyclers, + ]); + } + + private function getData(RecyclingMission $mission): array + { + // usefull vars + $missionID = md5($mission->id.$mission->recyclerQuantity); + $missionID = strtoupper(substr($missionID, 0, 3).'-'.substr($missionID, 3, 6).'-'.substr($missionID, 10, 2)); + + // @TODO Infamous patch + $percent = Utils::interval(Utils::now(), date('Y-m-d H:i:s', strtotime($mission->endedAt->format('c')) - $mission->cycleTime), 's') / $mission->cycleTime * 100; + $travelTime = ($this->calculateTravelTime)($mission->base->place, $mission->target, TravelType::RecyclingShips, $mission->base->player); + $beginRECY = Format::percent($travelTime, $mission->cycleTime); + $recyclingTime = ($this->getMissionTime)($mission->base->place, $mission->target, $mission->base->player) - ($travelTime * 2); + $endRECY = Format::percent($travelTime + $recyclingTime, $mission->cycleTime); + + return [ + 'mission' => $mission, + 'mission_id' => $missionID, + 'percent' => $percent, + 'travel_time' => $travelTime, + 'begin_recv' => $beginRECY, + 'end_recv' => $endRECY, + 'coords' => Game::formatCoord( + $mission->target->system->xPosition, + $mission->target->system->yPosition, + $mission->target->position, + $mission->target->system->sector->identifier + ), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSchool.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSchool.php new file mode 100644 index 000000000..a7dce76dc --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSchool.php @@ -0,0 +1,54 @@ +getPlayerBonus()->bonuses->get(PlayerBonusId::COMMANDER_INVEST); + + $invest = $currentBase->iSchool * $commanderInvestBonus / 100; + + return $this->render('pages/athena/school.html.twig', [ + 'commanders' => $commanderRepository->getBaseCommanders( + $currentBase, + [Commander::INSCHOOL], + ['experience' => 'DESC'], + ), + 'reserve_commanders' => $commanderRepository->getBaseCommanders( + $currentBase, + [Commander::RESERVE], + ['experience' => 'DESC'], + ), + 'earned_experience' => $this->calculateEarnedExperience($invest), + 'max_commanders_in_school' => PlaceResource::get($currentBase->typeOfBase, 'school-size'), + 'random_name' => CheckName::randomize(), + 'commander_price' => SchoolClassResource::getInfo(0, 'credit'), + 'commander_invest_bonus' => $commanderInvestBonus, + ]); + } + + // @TODO Move that logic elsewhere + private function calculateEarnedExperience(int $invest): int + { + return max(round($invest / Commander::COEFFSCHOOL), 0); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSpatioport.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSpatioport.php new file mode 100644 index 000000000..af46aba4a --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewSpatioport.php @@ -0,0 +1,67 @@ +levelSpatioport === 0) { + return $this->redirectToRoute('base_overview'); + } + + $mode = $request->query->get('mode', 'list'); + + $inGameFactions = $colorRepository->getInGameFactions(); + + return $this->render('pages/athena/spatioport.html.twig', [ + 'routes' => $commercialRouteRepository->getBaseRoutes($currentBase), + 'routes_data' => $commercialRouteManager->getBaseCommercialData($currentBase), + 'player_commercial_income_bonus' => $currentPlayerBonusRegistry + ->getPlayerBonus()->bonuses->get(PlayerBonusId::COMMERCIAL_INCOME), + 'negora_commercial_bonus' => ColorResource::BONUS_NEGORA_ROUTE, + 'is_player_from_negora' => ColorResource::NEGORA === $currentPlayer->faction->identifier, + 'in_game_factions' => $inGameFactions, + 'mode' => $mode, + 'search_results' => ('search' === $mode && 'POST' === $request->getMethod()) + ? $commercialRouteRepository->searchCandidates( + $currentPlayer, + $currentBase, + array_reduce($inGameFactions, function (array $carry, Color $faction) use ($request) { + if ($request->request->has('faction-'.$faction->identifier)) { + $carry[] = $faction->identifier; + } + + return $carry; + }, []), + abs(intval($request->request->get('min-dist', self::MIN_DISTANCE))), + abs(intval($request->request->get('max-dist', self::MAX_DISTANCE))), + ) : null, + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewTechnosphere.php b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewTechnosphere.php new file mode 100644 index 000000000..538a92d1c --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/Building/ViewTechnosphere.php @@ -0,0 +1,170 @@ +levelTechnosphere === 0) { + return $this->redirectToRoute('base_overview'); + } + + $technologyResourceRefund = $this->getParameter('promethee.technology_queue.resource_refund'); + + $technology = $technologyRepository->getPlayerTechnology($currentPlayer); + + // session avec les technos de cette base + $baseTechnologyQueues = $technologyQueueRepository->getPlaceQueues($currentBase->place); + $playerTechnologyQueues = $technologyQueueRepository->getPlayerQueues($currentPlayer); + + $coef = $currentBase->place->coefHistory; + $coefBonus = Game::getImprovementFromScientificCoef($coef); + $techBonus = $currentPlayerBonusRegistry->getPlayerBonus()->bonuses->get(PlayerBonusId::TECHNOSPHERE_SPEED); + $factionBonus = 0; + if (ColorResource::APHERA == $currentPlayer->faction->identifier) { + // bonus if the player is from Aphera + $factionBonus += ColorResource::BONUS_APHERA_TECHNO; + } + $totalBonus = $coefBonus + $techBonus + $factionBonus; + + return $this->render('pages/athena/base/building/technosphere.html.twig', [ + 'has_financial_technologies' => in_array($currentBase->typeOfBase, [OrbitalBase::TYP_COMMERCIAL, OrbitalBase::TYP_CAPITAL]), + 'has_military_technologies' => in_array($currentBase->typeOfBase, [OrbitalBase::TYP_MILITARY, OrbitalBase::TYP_CAPITAL]), + 'base_queues' => $baseTechnologyQueues, + 'player_queues' => $playerTechnologyQueues, + 'available_queues' => $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'level', $currentBase->levelTechnosphere, 'nbQueues'), + 'total_bonus' => $totalBonus, + 'technology_resource_refund' => $technologyResourceRefund, + 'technologies_data' => $this->getTechnologiesData( + $currentPlayer, + $currentBase, + $technology, + $baseTechnologyQueues, + $playerTechnologyQueues, + $totalBonus, + ), + ]); + } + + /** + * @param list $baseTechnologyQueues + * @param list $playerTechnologyQueues + */ + private function getTechnologiesData( + Player $currentPlayer, + OrbitalBase $currentBase, + Technology $technology, + array $baseTechnologyQueues, + array $playerTechnologyQueues, + int $totalBonus, + ): array { + $data = []; + + $playerResearch = $this->researchRepository->getPlayerResearch($currentPlayer) + ?? throw new ConflictHttpException('Player must have an associated Research entity'); + + foreach (TechnologyId::getAll() as $technologyId) { + if ($this->technologyHelper->isATechnologyNotDisplayed($technologyId)) { + continue; + } + $disability = 'disable'; + $closed = ''; + $inQueue = false; + $inALocalQueue = false; + $isAnUnblockingTechnology = $this->technologyHelper->isAnUnblockingTechnology($technologyId); + + foreach ($playerTechnologyQueues as $playerQueue) { + if ($playerQueue->technology !== $technologyId) { + continue; + } + $inQueue = true; + foreach ($baseTechnologyQueues as $baseQueue) { + if ($baseQueue->technology === $technologyId) { + $inALocalQueue = true; + break; + } + } + break; + } + + $technologyLevel = $technology->getTechnology($technologyId); + $nextLevel = $technologyLevel + 1; + $researchRequirements = $this->technologyHelper->haveRights( + $technologyId, + 'research', + ($isAnUnblockingTechnology) ? 1 : $nextLevel, + $this->researchManager->getResearchList($playerResearch), + ); + + // compute time to build with the bonuses + $timeToBuild = $this->technologyHelper->getInfo($technologyId, 'time', $nextLevel); + $timeToBuild -= round($timeToBuild * $totalBonus / 100); + // warning : $totalBonus est défini plus haut (ne pas inverser les blocs de code !) + $timeToBuild = ($this->getTimeCost)($technologyId, $nextLevel, $currentBase->place->coefHistory); + + $column = $this->technologyHelper->getInfo($technologyId, 'column'); + + $data[$column] ??= []; + $data[$column][] = [ + 'identifier' => $technologyId, + 'is_unblocking_technology' => $isAnUnblockingTechnology, + 'technology_level' => $technologyLevel, + 'next_level' => $nextLevel, + 'max_level_requirements' => $this->technologyHelper->haveRights($technologyId, 'maxLevel', $nextLevel), + 'queue_requirements' => $this->technologyHelper->haveRights($technologyId, 'queue', $currentBase, count($baseTechnologyQueues)), + 'credit_requirements' => $this->technologyHelper->haveRights($technologyId, 'credit', $nextLevel, $currentPlayer->getCredits()), + 'resource_requirements' => $this->technologyHelper->haveRights($technologyId, 'resource', $nextLevel, $currentBase->resourcesStorage), + 'technosphere_requirements' => $this->technologyHelper->haveRights($technologyId, 'technosphereLevel', $currentBase->levelTechnosphere), + 'research_requirements' => $researchRequirements, + 'in_queue' => $inQueue, + 'in_local_queue' => $inALocalQueue, + 'is_over' => $isAnUnblockingTechnology && $technologyLevel, + 'time_to_build' => $timeToBuild, + ]; + } + + return $data; + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/ChangeBaseType.php b/src/Modules/Athena/Infrastructure/Controller/Base/ChangeBaseType.php new file mode 100644 index 000000000..09e591984 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/ChangeBaseType.php @@ -0,0 +1,385 @@ +query->get('type') ?? throw new BadRequestHttpException('Missing base type')); + + if ($currentBase->isColony()) { + // TODO Move to specification pattern + if ($currentBase->levelGenerator < intval($this->getParameter('athena.obm.change_type_min_level'))) { + throw new ConflictHttpException('Evolution de votre colonie impossible - niveau du générateur pas assez élevé'); + } + + if (!in_array($type, [OrbitalBase::TYP_COMMERCIAL, OrbitalBase::TYP_MILITARY])) { + throw new BadRequestHttpException('Modification du type de la base orbitale impossible (seulement commercial ou militaire)'); + } + $totalPrice = PlaceResource::get($type, 'price'); + if (!$currentPlayer->canAfford($totalPrice)) { + throw new ConflictHttpException('Evolution de votre colonie impossible - vous n\'avez pas assez de crédits'); + } + $currentBase->typeOfBase = $type; + $playerManager->decreaseCredit($currentPlayer, $totalPrice); + + $this->addFlash('success', sprintf( + '%s est désormais %s', + $currentBase->name, + match ($type) { + OrbitalBase::TYP_COMMERCIAL => 'un Centre Industriel', + OrbitalBase::TYP_MILITARY => 'une Base Militaire', + } + )); + } elseif ($currentBase->isCommercialBase() || $currentBase->isMilitaryBase()) { + $baseMinLevelForCapital = intval($this->getParameter('athena.obm.capital_min_level')); + if (OrbitalBase::TYP_CAPITAL === $type) { + if ($currentBase->levelGenerator < $baseMinLevelForCapital) { + throw new ConflictHttpException('Pour transformer votre base en capitale, vous devez augmenter votre générateur jusqu\'au niveau '.$baseMinLevelForCapital.'.'); + } + $playerBases = $orbitalBaseRepository->getPlayerBases($currentPlayer); + + $capitalQuantity = 0; + foreach ($playerBases as $playerBase) { + if (OrbitalBase::TYP_CAPITAL == $playerBase->typeOfBase) { + ++$capitalQuantity; + } + } + if (0 < $capitalQuantity) { + throw new ConflictHttpException('Vous ne pouvez pas avoir plus d\'une Capitale. Sauf si vous en conquérez à vos ennemis bien sûr.'); + } + $totalPrice = PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'price'); + if (!$currentPlayer->canAfford($totalPrice)) { + throw new ConflictHttpException('Modification du type de la base orbitale impossible - vous n\'avez pas assez de crédits'); + } + $currentBase->typeOfBase = $type; + $playerManager->decreaseCredit($currentPlayer, $totalPrice); + + $this->addFlash('success', $currentBase->name.' est désormais une capitale.'); + } elseif (($currentBase->isCommercialBase() && OrbitalBase::TYP_MILITARY === $type) + || ($currentBase->isMilitaryBase() && OrbitalBase::TYP_COMMERCIAL === $type)) { + // commercial --> military OR military --> commercial + $totalPrice = PlaceResource::get($type, 'price'); + if (!$currentPlayer->canAfford($totalPrice)) { + throw new ConflictHttpException('modification du type de la base orbitale impossible - vous n\'avez pas assez de crédits'); + } + $canChangeBaseType = true; + if (OrbitalBase::TYP_COMMERCIAL === $type) { + $canChangeBaseType = $this->removeCommercialBaseAssets($currentBase); + } + if (!$canChangeBaseType) { + throw new ConflictHttpException('modification du type de la base orbitale impossible (seulement capitale, commercial ou militaire)'); + } + $playerManager->decreaseCredit($currentPlayer, $totalPrice); + $currentBase->typeOfBase = $type; + // delete commercial buildings + for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; ++$i) { + $maxLevel = $orbitalBaseHelper->getBuildingInfo($i, 'maxLevel', $type); + if ($currentBase->getBuildingLevel($i) > $maxLevel) { + $currentBase->setBuildingLevel($i, $maxLevel); + } + } + // delete buildings in queue + // TODO warn player of that behavior if not already done + // TODO Refund ? + $buildingQueues = $buildingQueueRepository->getBaseQueues($currentBase); + foreach ($buildingQueues as $buildingQueue) { + $buildingQueueRepository->remove($buildingQueue); + } + $entityManager->flush(); + // send the right alert + if (OrbitalBase::TYP_COMMERCIAL == $type) { + $this->addFlash('success', 'Votre Base Militaire devient un Centre Commerciale. Vos bâtiments militaires superflus sont détruits.'); + } else { + $this->addFlash('success', 'Votre Centre Industriel devient une Base Militaire. Vos bâtiments commerciaux superflus sont détruits.'); + } + } else { + throw new ConflictHttpException('modification du type de la base orbitale impossible - vous avez trop de flottes en mouvement pour changer votre base en Centre Industriel'); + } + } elseif ($currentBase->isCapital()) { + /*switch ($type) { + case OrbitalBase::TYP_COMMERCIAL: + $orbitalBase->typeOfBase = $type; + # casser les bâtiments en trop + # killer la file de construction + throw new ErrorException('Votre base orbitale devient commerciale.', ALERT_STD_SUCCESS); + break; + case OrbitalBase::TYP_MILITARY: + $orbitalBase->typeOfBase = $type; + # casser les bâtiments en trop + # killer la file de construction + throw new ErrorException('Votre base orbitale devient militaire.', ALERT_STD_SUCCESS); + break; + default : + throw new ErrorException('modification du type de la base orbitale impossible (seulement commercial ou militaire)', ALERT_STD_ERROR); + break; + }*/ + throw new ConflictHttpException('modification du type de la base orbitale impossible - c\'est déjà une capitale !'); + } else { + throw new ConflictHttpException('modification du type de la base orbitale impossible - type invalide'); + } + $orbitalBaseRepository->save($currentBase); + + $eventDispatcher->dispatch(new PlaceOwnerChangeEvent($currentBase->place)); + + return $this->redirectToRoute('base_overview'); + } + + private function removeCommercialBaseAssets(OrbitalBase $currentBase): bool + { + // delete all recycling missions and logs + $this->recyclingMissionRepository->removeBaseMissions($currentBase); + + // verify if fleets are moving or not + // transfer to the mess the extra commanders and change line if needed + $firstLineCommanders = $this->commanderRepository->getCommandersByLine($currentBase, 1); + $totalQtyLine1 = count($firstLineCommanders); + $movingQtyLine1 = 0; + foreach ($firstLineCommanders as $commander) { + if (Commander::MOVING == $commander->statement) { + ++$movingQtyLine1; + } + } + $secondLineCommanders = $this->commanderRepository->getCommandersByLine($currentBase, 2); + $totalQtyLine2 = count($secondLineCommanders); + $movingQtyLine2 = 0; + foreach ($secondLineCommanders as $commander) { + if (Commander::MOVING == $commander->statement) { + ++$movingQtyLine2; + } + } + + $totalQty = $totalQtyLine1 + $totalQtyLine2; + $movingQty = $movingQtyLine1 + $movingQtyLine2; + + if ($totalQty >= 2) { + switch ($movingQty) { + case 2: + $line1 = false; + $line2 = false; + foreach ($firstLineCommanders as $commander) { + if (Commander::MOVING == $commander->statement) { + if ($line1) { + // move to line 2 + $commander->line = 2; + $line2 = true; + continue; + } + // stay on line 1 + $line1 = true; + continue; + } + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + foreach ($secondLineCommanders as $commander) { + if (Commander::MOVING == $commander->statement) { + if ($line2) { + // move to line 1 + $commander->line = 1; + $line1 = true; + continue; + } + // stay on line 2 + $line2 = true; + continue; + } + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + break; + case 1: + if (1 == $movingQtyLine1) { + if ($totalQtyLine1 >= 1 && $totalQtyLine2 >= 1) { + // let stay one cmder on each line + foreach ($firstLineCommanders as $commander) { + if (Commander::MOVING != $commander->statement) { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + $line2 = false; + foreach ($secondLineCommanders as $commander) { + if (!$line2) { + $line2 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } else { + // change line of one from line 1 to 2 + $line2 = false; + foreach ($firstLineCommanders as $commander) { + if (Commander::MOVING != $commander->statement) { + if (!$line2) { + $line2 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } + } + } else { // $movingQtyLine2 == 1 + if ($totalQtyLine1 >= 1 && $totalQtyLine2 >= 1) { + // let stay one cmder on each line + foreach ($secondLineCommanders as $commander) { + if (Commander::MOVING != $commander->statement) { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + $line1 = false; + foreach ($firstLineCommanders as $commander) { + if (!$line1) { + $line1 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } else { + // change line of one from line 2 to 1 + $line1 = false; + foreach ($firstLineCommanders as $commander) { + if (Commander::MOVING != $commander->statement) { + if (!$line1) { + $line1 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } + } + } + break; + case 0: + if (0 == $totalQtyLine1) { + // one from line 2 to line 1 + $line1 = false; + $line2 = false; + foreach ($firstLineCommanders as $commander) { + if (!$line1) { + $line1 = true; + } elseif (!$line2) { + // move one to line 2 + $commander->line = 2; + $line2 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } elseif (0 == $totalQtyLine2) { + // one from line 1 to line 2 + $line1 = false; + $line2 = false; + foreach ($secondLineCommanders as $commander) { + if (!$line2) { + $line2 = true; + } elseif (!$line1) { + // move one to line 1 + $commander->line = 1; + $line1 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } else { + // one on each line + $line1 = false; + foreach ($firstLineCommanders as $commander) { + if (!$line1) { + $line1 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + $line2 = false; + foreach ($secondLineCommanders as $commander) { + if (!$line2) { + $line2 = true; + } else { + // move to the mess + $commander->statement = Commander::RESERVE; + $this->commanderManager->emptySquadrons($commander); + } + } + } + break; + default: + // the user can't change base type to commercial right now ! + return false; + } + } else { + if (2 == $totalQtyLine1) { + // switch one from line 1 to line 2 + $firstLineCommanders[0]->line = 2; + } + if (2 == $totalQtyLine2) { + // switch one from line 2 to line 1 + $secondLineCommanders[1]->line = 1; + } + } + + return true; + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/LeaveBase.php b/src/Modules/Athena/Infrastructure/Controller/Base/LeaveBase.php new file mode 100644 index 000000000..6c2260996 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/LeaveBase.php @@ -0,0 +1,96 @@ +count()) { + throw new ConflictHttpException('vous ne pouvez pas abandonner votre unique planète'); + } + // @TODO replace with a count query + $baseCommanders = $commanderRepository->getBaseCommanders($currentBase); + + $isAFleetMoving = \array_reduce( + $baseCommanders, + fn (bool $carry, Commander $commander) => $carry || $commander->isMoving(), + false + ); + if ($isAFleetMoving) { + throw new ConflictHttpException('toutes les flottes de cette base doivent être immobiles'); + } + + $coolDownInHours = $getCoolDownBeforeLeavingBase(); + $canLeaveBase = new CanLeaveOrbitalBase($coolDownInHours); + if (!$canLeaveBase->isSatisfiedBy($currentBase)) { + throw new ConflictHttpException('Vous ne pouvez pas abandonner de base dans les ' . $coolDownInHours . ' premières relèves.'); + } + + // delete buildings in queue + // @TODO Apply refund rules for cancelled buildings + $buildingQueues = $buildingQueueRepository->getBaseQueues($currentBase); + foreach ($buildingQueues as $buildingQueue) { + $buildingQueueRepository->remove($buildingQueue); + } + + // change base type if it is a capital + if ($currentBase->isCapital()) { + $newType = (0 === random_int(0, 1)) ? OrbitalBase::TYP_COMMERCIAL : OrbitalBase::TYP_MILITARY; + // delete extra buildings + for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; ++$i) { + $maxLevel = $orbitalBaseHelper->getBuildingInfo($i, 'maxLevel', $newType); + if ($currentBase->getBuildingLevel($i) > $maxLevel) { + $currentBase->setBuildingLevel($i, $maxLevel); + } + } + // change base type + $currentBase->typeOfBase = $newType; + } + $place = $currentBase->place; + + $orbitalBaseManager->changeOwner($currentBase, null); + $place->player = null; + $entityManager->flush(); + + $eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place)); + + $this->addFlash('success', 'Base abandonnée'); + + return $this->redirectToRoute('switchbase', [ + 'baseId' => $currentPlayerBasesRegistry->next()->id->toRfc4122(), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/RenameBase.php b/src/Modules/Athena/Infrastructure/Controller/Base/RenameBase.php new file mode 100644 index 000000000..3cb2eb427 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/RenameBase.php @@ -0,0 +1,50 @@ +protect($request->request->get('name')); + + if (empty($name)) { + throw new BadRequestHttpException('Nom invalide'); + } + $check = new CheckName(); + $check->setMaxLength(20); + + if (!$check->checkLength($name)) { + throw new BadRequestHttpException('modification du nom de la base orbitale impossible - nom trop long ou trop court'); + } + if (!$check->checkChar($name)) { + throw new BadRequestHttpException('modification du nom de la base orbitale impossible - le nom contient des caractères non-autorisés'); + } + $currentBase->name = $name; + + $entityManager->flush(); + + $this->addFlash('success', 'Le nom a été changé en ' . $name . ' avec succès'); + + return $this->redirectToRoute('base_overview'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/SwitchBase.php b/src/Modules/Athena/Infrastructure/Controller/Base/SwitchBase.php new file mode 100644 index 000000000..41fff8173 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/SwitchBase.php @@ -0,0 +1,46 @@ +get($baseId))) { + throw new NotFoundHttpException('Base not found'); + } + + if ($base->player->id !== $currentPlayer->id) { + throw new AccessDeniedHttpException('This base does not belong to you'); + } + + $request->getSession()->get('playerParams')->add('base', $base->id); + + return $this->redirectToRoute(match ($page) { + 'generator' => 'generator', + 'refinery' => 'refinery', + 'docks' => 'docks', + 'technosphere' => 'technosphere', + 'commercialroute', 'sell', 'market' => 'trade_market', + 'school' => 'school', + 'spatioport' => 'spatioport', + default => 'base_overview', + }, $request->query->all()); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Base/ViewOverview.php b/src/Modules/Athena/Infrastructure/Controller/Base/ViewOverview.php new file mode 100644 index 000000000..f42b51df0 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Base/ViewOverview.php @@ -0,0 +1,47 @@ +render('pages/athena/overview.html.twig', [ + 'commercial_routes_data' => $commercialRouteManager->getBaseCommercialData($orbitalBase), + 'commanders' => $commanderRepository->getBaseCommanders($orbitalBase, [Commander::AFFECTED, Commander::MOVING]), + 'vanguard_positions' => PlaceResource::get($orbitalBase->typeOfBase, 'l-line-position'), + 'vanguard_positions_count' => PlaceResource::get($orbitalBase->typeOfBase, 'l-line'), + 'rear_positions' => PlaceResource::get($orbitalBase->typeOfBase, 'r-line-position'), + 'rear_positions_count' => PlaceResource::get($orbitalBase->typeOfBase, 'r-line'), + 'science_coeff' => Game::getImprovementFromScientificCoef($orbitalBase->place->coefHistory), + 'minimal_change_level' => $this->getParameter('athena.obm.change_type_min_level'), + 'capital_change_level' => $this->getParameter('athena.obm.capital_min_level'), + 'capitals_count' => $this->getCapitalsCount($currentPlayerBasesRegistry->all()), + 'building_resource_refund' => $this->getParameter('athena.building.building_queue_resource_refund'), + ]); + } + + private function getCapitalsCount(array $bases): int + { + return \count(\array_filter( + $bases, + fn (OrbitalBase $base) => $base->isCapital(), + )); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToFaction.php b/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToFaction.php new file mode 100644 index 000000000..cabfec4d8 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToFaction.php @@ -0,0 +1,54 @@ +request->getInt('quantity'); + + if (0 >= $credit) { + throw new BadRequestHttpException('envoi de crédits impossible - il faut envoyer un nombre entier positif'); + } + + if ($currentPlayer->getCredits() < $credit) { + throw new BadRequestHttpException('envoi de crédits impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); + } + + // make the transaction + $playerManager->decreaseCredit($currentPlayer, $credit); + $currentPlayer->faction->increaseCredit($credit); + + // create the transaction + $ct = new CreditTransaction( + id: Uuid::v4(), + playerSender: $currentPlayer, + playerReceiver: null, + factionReceiver: $currentPlayer->faction, + factionSender: null, + createdAt: new \DateTimeImmutable(), + amount: $credit, + comment: null, + ); + $creditTransactionRepository->save($ct); + + $this->addFlash('success', 'Crédits envoyés'); + + return $this->redirectToRoute('financial_transfers'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToPlayer.php b/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToPlayer.php new file mode 100644 index 000000000..379adaa59 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/SendCreditsToPlayer.php @@ -0,0 +1,99 @@ +request->get('name'); + $credit = $request->request->getInt('quantity'); + $text = $request->request->get('text'); + + if (null === $name || 0 === $credit) { + throw new BadRequestHttpException('Le nom ou le montant est invalide'); + } + + if (500 < strlen($text)) { + throw new BadRequestHttpException('Le message ne doit pas dépasser 500 caractères'); + } + + if (null === ($receiver = $playerRepository->getByName($name))) { + throw $this->createNotFoundException('Le bénéficiaire renseigné n\'existe pas'); + } + + if ($receiver->id === $currentPlayer->id) { + return $this->redirectToRoute('financial_transfers'); + } + + if ($credit > $currentPlayer->getCredits()) { + throw new BadRequestHttpException('Vous ne disposez pas du montant nécessaire'); + } + + // input protection + $name = $parser->protect($name); + $text = $parser->parse($text); + + $playerManager->decreaseCredit($currentPlayer, $credit); + $playerManager->increaseCredit($receiver, $credit); + + // create the transaction + $ct = new CreditTransaction( + id: Uuid::v4(), + factionReceiver: null, + factionSender: null, + playerSender: $currentPlayer, + playerReceiver: $receiver, + amount: $credit, + createdAt: new \DateTimeImmutable(), + comment: $text, + ); + + $creditTransactionRepository->save($ct); + + $n = NotificationBuilder::new() + ->setTitle('Réception de crédits') + ->setContent( + NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' vous a envoyé des crédits', + !empty($text) + ? sprintf(' avec le message suivant :%s"%s"', NotificationBuilder::divider(), $text) + : '.', + NotificationBuilder::resourceBox('credit', Format::numberFormat($credit), 1 == $credit ? 'crédit reçu' : 'crédits reçus') + ) + ) + ->for($receiver); + + $notificationRepository->save($n); + + $this->addFlash('success', 'Crédits envoyés'); + + return $this->redirectToRoute('financial_transfers'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateBaseInvestments.php b/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateBaseInvestments.php new file mode 100644 index 000000000..81de20b66 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateBaseInvestments.php @@ -0,0 +1,52 @@ +request->getInt('credit'); + + match ($category) { + 'school' => $this->updateSchoolInvestment($currentBase, $credit), + 'antispy' => $this->updateAntiSpyInvestment($currentBase, $credit), + default => throw new BadRequestHttpException('Invalid category'), + }; + + $orbitalBaseRepository->save($currentBase); + + return $this->redirectToRoute('financial_investments'); + } + + protected function updateSchoolInvestment(OrbitalBase $base, int $credit): void + { + if (50000 < $credit) { + throw new BadRequestHttpException('La limite maximale d\'investissement dans l\'école de commandement est de 50\'000 crédits.'); + } + $base->iSchool = $credit; + $this->addFlash('success', 'L\'investissement dans l\'école de commandement de votre base '.$base->name.' a été modifié'); + } + + protected function updateAntiSpyInvestment(OrbitalBase $base, int $credit): void + { + if (100000 < $credit) { + throw new BadRequestHttpException('La limite maximale d\'investissement dans l\'anti-espionnage est de 100\'000 crédits.'); + } + $base->iAntiSpy = $credit; + $this->addFlash('success', 'L\'investissement dans l\'anti-espionnage sur votre base '.$base->name.' a été modifié'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateUniversityInvestments.php b/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateUniversityInvestments.php new file mode 100644 index 000000000..f54216cdb --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/UpdateUniversityInvestments.php @@ -0,0 +1,33 @@ +request->getInt('credit')); + + if (500000 < $investment) { + throw new BadRequestHttpException( + 'La limite maximale d\'investissement dans l\'Université est de 500\'000 crédits.', + ); + } + + $playerManager->updateUniversityInvestment($currentPlayer, $investment); + + $this->addFlash('success', 'L\'investissement dans l\'université a été modifié'); + + return $this->redirectToRoute('financial_investments'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/ViewInvestments.php b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewInvestments.php new file mode 100644 index 000000000..738daa2ed --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewInvestments.php @@ -0,0 +1,194 @@ +getParameter('zeus.player.tax_coeff'); + + $playerBases = $orbitalBaseRepository->getPlayerBases($currentPlayer); + + $commanders = $commanderRepository->getPlayerCommanders( + $currentPlayer, + [Commander::AFFECTED, Commander::MOVING], + ['c.base' => 'ASC'], + ); + + $transactions = $transactionRepository->getPlayerPropositions($currentPlayer, Transaction::TYP_SHIP); + + $basesData = $this->getBasesData($playerBases, $taxCoeff); + + return $this->render('pages/athena/financial/investments.html.twig', [ + 'commanders' => $commanders, + 'commanders_by_base' => array_reduce($commanders, function ($carry, Commander $commander) { + $commanderBaseId = $commander->base->id->toRfc4122(); + if (!isset($carry[$commanderBaseId])) { + $carry[$commanderBaseId] = []; + } + $this->commanderArmyHandler->setArmy($commander); + $carry[$commanderBaseId][] = $commander; + + return $carry; + }, []), + 'player_bases' => $playerBases, + 'tax_coeff' => $taxCoeff, + 'transactions' => $transactions, + 'bases_data' => $basesData, + 'investments_data' => $this->getInvestmentsData( + $currentPlayer, + $playerBases, + $commanders, + $transactions, + $basesData, + $taxCoeff, + ), + ]); + } + + /** + * @param list $bases + * @return array, + * routes_count: int, + * routes_income: int, + * routes_income_bonus: int, + * }> + */ + private function getBasesData(array $bases, int $taxCoeff): array + { + return array_reduce($bases, function (array $carry, OrbitalBase $base) { + $routesIncome = $this->commercialRouteRepository->getBaseIncome($base); + $populationTax = $this->populationTaxHandler->getPopulationTax($base); + + $carry[$base->id->toRfc4122()] = [ + 'tax_income' => $populationTax->initial, + 'tax_income_bonus' => $populationTax->bonus, + // @TODO possible non pertinent retrieval of bases count. Why filtering by statement for the count and not for the retrieval ? + 'routes' => $this->commercialRouteRepository->getBaseRoutes($base), + 'routes_count' => $this->commercialRouteRepository->countBaseRoutes($base, [CommercialRoute::ACTIVE]), + 'routes_income' => $routesIncome, + 'routes_income_bonus' => $this->bonusApplier->apply($routesIncome, PlayerBonusId::COMMERCIAL_INCOME), + ]; + + return $carry; + }, []); + } + + /** + * @param OrbitalBase[] $playerBases + * @param Commander[] $commanders + * @param Transaction[] $transactions + * @param array, + * routes_count: int, + * routes_income: int, + * routes_income_bonus: int, + * }> $basesData + * + * @return array + */ + private function getInvestmentsData( + Player $player, + array $playerBases, + array $commanders, + array $transactions, + array $basesData, + int $taxCoeff, + ): array { + $data = [ + 'totalTaxIn' => 0, + 'totalTaxInBonus' => 0, + 'totalRouteIncome' => 0, + 'totalInvest' => 0, + 'totalInvestUni' => $player->iUniversity, + 'totalFleetFees' => 0, + 'totalShipsFees' => 0, + 'totalTaxOut' => 0, + 'totalMSFees' => 0, + ]; + + foreach ($playerBases as $base) { + $populationTax = $this->populationTaxHandler->getPopulationTax($base); + $data['totalTaxIn'] += $populationTax->initial; + $data['totalTaxInBonus'] += $populationTax->bonus; + $data['totalTaxOut'] += $populationTax->getTotal() * $base->place->system->sector->tax / 100; + $data['totalInvest'] += $base->iSchool + $base->iAntiSpy; + $data['totalShipsFees'] += Game::getFleetCost($base->getShipStorage(), false); + + // @TODO cout des trucs en vente + + foreach ($basesData[$base->id->toRfc4122()]['routes'] as $route) { + if (CommercialRoute::ACTIVE == $route->statement) { + $data['totalRouteIncome'] += $route->income; + } + } + } + + foreach ($commanders as $commander) { + $data['totalFleetFees'] += $commander->level * Commander::LVLINCOMECOMMANDER; + $data['totalShipsFees'] += Game::getFleetCost($commander->getNbrShipByType()); + } + + foreach ($transactions as $transaction) { + $data['totalShipsFees'] += ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity; + } + + $data['totalRouteIncomeBonus'] = $this->bonusApplier->apply( + $data['totalRouteIncome'], + PlayerBonusId::COMMERCIAL_INCOME + ); + $data['total_income'] = $data['totalTaxIn'] + + $data['totalTaxInBonus'] + + $data['totalRouteIncome'] + + $data['totalRouteIncomeBonus']; + $data['total_expenses'] = $data['totalInvest'] + + $data['totalInvestUni'] + + $data['totalTaxOut'] + + $data['totalMSFees'] + + $data['totalFleetFees'] + + $data['totalShipsFees']; + + $data['gains'] = $data['total_income'] - $data['total_expenses']; + $data['remains'] = round($player->getCredits()) + round($data['gains']); + + return $data; + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/ViewReports.php b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewReports.php new file mode 100644 index 000000000..2b6772b9d --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewReports.php @@ -0,0 +1,86 @@ +getPlayerLastReports($currentPlayer)); + + return $this->render('pages/athena/financial/reports.html.twig', [ + 'reports_labels' => array_map( + fn (PlayerFinancialReport $playerFinancialReport) => $gameTimeConverter->convertDatetimeToGameDate($playerFinancialReport->createdAt, false), + $playerFinancialReports, + ), + 'reports_data' => array_reduce( + $playerFinancialReports, + function (array $carry, PlayerFinancialReport $playerFinancialReport) { + $carry['populationTaxes'][] = $playerFinancialReport->populationTaxes; + $carry['recycledCredits'][] = $playerFinancialReport->recycledCredits; + $carry['commercialRoutesConstructions'][] = -$playerFinancialReport->commercialRoutesConstructions; + $carry['technologiesInvestments'][] = -$playerFinancialReport->technologiesInvestments; + $carry['receivedPlayersCreditTransactions'][] = $playerFinancialReport->receivedPlayersCreditTransactions; + $carry['receivedFactionsCreditTransactions'][] = $playerFinancialReport->receivedFactionsCreditTransactions; + $carry['sentPlayersCreditTransactions'][] = -$playerFinancialReport->sentPlayersCreditTransactions; + $carry['sentFactionsCreditTransactions'][] = -$playerFinancialReport->sentFactionsCreditTransactions; + $carry['commandersSales'][] = $playerFinancialReport->commandersSales; + $carry['resourcesSales'][] = $playerFinancialReport->resourcesSales; + $carry['shipsSales'][] = $playerFinancialReport->shipsSales; + $carry['commandersPurchases'][] = -$playerFinancialReport->commandersPurchases; + $carry['resourcesPurchases'][] = -$playerFinancialReport->resourcesPurchases; + $carry['shipsPurchases'][] = -$playerFinancialReport->shipsPurchases; + $carry['conquestInvestments'][] = -$playerFinancialReport->conquestInvestments; + $carry['commercialRoutesIncome'][] = $playerFinancialReport->commercialRoutesIncome; + $carry['factionTaxes'][] = -$playerFinancialReport->factionTaxes; + $carry['antiSpyInvestments'][] = -$playerFinancialReport->antiSpyInvestments; + $carry['universityInvestments'][] = -$playerFinancialReport->universityInvestments; + $carry['schoolInvestments'][] = -$playerFinancialReport->schoolInvestments; + $carry['commandersWages'][] = -$playerFinancialReport->commandersWages; + $carry['shipsCost'][] = -$playerFinancialReport->shipsCost; + $carry['diff'][] = $playerFinancialReport->getDiff(); + + return $carry; + }, + [ + 'populationTaxes' => [], + 'recycledCredits' => [], + 'commercialRoutesConstructions' => [], + 'technologiesInvestments' => [], + 'receivedPlayersCreditTransactions' => [], + 'receivedFactionsCreditTransactions' => [], + 'sentPlayersCreditTransactions' => [], + 'sentFactionsCreditTransactions' => [], + 'commandersSales' => [], + 'resourcesSales' => [], + 'shipsSales' => [], + 'commandersPurchases' => [], + 'resourcesPurchases' => [], + 'shipsPurchases' => [], + 'conquestInvestments' => [], + 'commercialRoutesIncome' => [], + 'factionTaxes' => [], + 'antiSpyInvestments' => [], + 'universityInvestments' => [], + 'schoolInvestments' => [], + 'commandersWages' => [], + 'shipsCost' => [], + 'diff' => [], + ] + ) + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Financial/ViewTransfers.php b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewTransfers.php new file mode 100644 index 000000000..3f3ec787a --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Financial/ViewTransfers.php @@ -0,0 +1,21 @@ +render('pages/athena/financial/transfers.html.twig', [ + 'sendings' => $creditTransactionRepository->getAllBySender($currentPlayer), + 'receivings' => $creditTransactionRepository->getAllByPlayerReceiver($currentPlayer), + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Recycling/AddToMission.php b/src/Modules/Athena/Infrastructure/Controller/Recycling/AddToMission.php new file mode 100644 index 000000000..92b8cd8e2 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Recycling/AddToMission.php @@ -0,0 +1,59 @@ +request->getInt('quantity'); + + if (0 === $quantity) { + throw new BadRequestHttpException('Ca va être dur de recycler avec aussi peu de recycleurs. Entrez un nombre plus grand que zéro.'); + } + $maxRecyclers = $orbitalBaseHelper->getInfo(OrbitalBaseResource::RECYCLING, 'level', $currentBase->levelRecycling, 'nbRecyclers'); + $usedRecyclers = 0; + + $baseMissions = $recyclingMissionRepository->getBaseActiveMissions($currentBase); + + $mission = null; + foreach ($baseMissions as $baseMission) { + $usedRecyclers += $baseMission->recyclerQuantity + $baseMission->addToNextMission; + if ($baseMission->id->equals($id) && $baseMission->isActive()) { + $mission = $baseMission; + } + } + + if (null === $mission) { + throw $this->createNotFoundException('Il y a un problème, la mission est introuvable. Veuillez contacter un administrateur.'); + } + + if ($maxRecyclers - $usedRecyclers < $quantity) { + throw new ConflictHttpException('Vous n\'avez pas assez de recycleurs libres pour lancer cette mission.'); + } + + $mission->addToNextMission += $quantity; + + $recyclingMissionRepository->save($mission); + + $this->addFlash('success', 'Vos recycleurs ont bien été affectés, ils seront ajoutés à la prochaine mission.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Recycling/CancelMission.php b/src/Modules/Athena/Infrastructure/Controller/Recycling/CancelMission.php new file mode 100644 index 000000000..a39b89082 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Recycling/CancelMission.php @@ -0,0 +1,40 @@ +get($id) + ?? throw $this->createNotFoundException('Mission not found'); + + if ($mission->base->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('This mission does not belong to you'); + } + + if (!$mission->isActive()) { + throw new ConflictHttpException('This mission is not active'); + } + + $mission->cancel(); + + $this->addFlash('success', 'Ordre de mission annulé.'); + + $recyclingMissionRepository->save($mission); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Recycling/CreateMission.php b/src/Modules/Athena/Infrastructure/Controller/Recycling/CreateMission.php new file mode 100644 index 000000000..542cd3c6a --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Recycling/CreateMission.php @@ -0,0 +1,84 @@ +request->getInt('quantity', 0); + + if ($quantity < 1) { + throw new BadRequestHttpException('Ca va être dur de recycler avec autant peu de recycleurs. Entrez un nombre plus grand que zéro.'); + } + $maxRecyclers = $orbitalBaseHelper->getInfo(OrbitalBaseResource::RECYCLING, 'level', $currentBase->levelRecycling, 'nbRecyclers'); + $usedRecyclers = 0; + + $baseMissions = $recyclingMissionRepository->getBaseActiveMissions($currentBase); + + foreach ($baseMissions as $mission) { + $usedRecyclers += $mission->recyclerQuantity; + $usedRecyclers += $mission->addToNextMission; + } + + if ($maxRecyclers - $usedRecyclers < $quantity) { + throw new BadRequestHttpException('Vous n\'avez pas assez de recycleurs libres pour lancer cette mission.'); + } + $destinationPlace = $placeRepository->get($targetId) + ?? throw $this->createNotFoundException('Il y a un problème avec le lieu de départ ou d\'arrivée. Veuillez contacter un administrateur.'); + + $startPlace = $currentBase->place; + // TODO Make constants or enum + if (null !== $destinationPlace->player || !in_array($destinationPlace->typeOfPlace, [2, 3, 4, 5])) { + throw new BadRequestHttpException('On ne peut pas recycler ce lieu, petit hacker.'); + } + + $sectorFaction = $destinationPlace->system->sector->faction; + if (null !== $sectorFaction && !$currentPlayer->faction->id->equals($sectorFaction->id)) { + throw $this->createAccessDeniedException('Vous pouvez recycler uniquement dans les secteurs de votre faction ainsi que dans les secteurs neutres.'); + } + $missionTime = $getMissionTime($startPlace, $destinationPlace, $currentPlayer); + + $rm = new RecyclingMission( + id: Uuid::v4(), + base: $currentBase, + target: $destinationPlace, + cycleTime: $missionTime, + recyclerQuantity: $quantity, + statement: RecyclingMission::ST_ACTIVE, + endedAt: new \DateTimeImmutable(sprintf('+%d seconds', $missionTime)), + ); + + $recyclingMissionManager->add($rm); + + $this->addFlash('success', 'Votre mission a été lancée.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Ship/BuildShips.php b/src/Modules/Athena/Infrastructure/Controller/Ship/BuildShips.php new file mode 100644 index 000000000..327e8006c --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Ship/BuildShips.php @@ -0,0 +1,103 @@ +getSession(); + $shipIdentifier = $request->query->getInt('ship') + ?? throw new BadRequestHttpException('Missing ship identifier'); + $quantity = $request->query->getInt('quantity') + ?? throw new BadRequestHttpException('Missing quantity'); + + if (0 === $quantity) { + throw new BadRequestHttpException('Quantity must be higher than 0'); + } + if (!ShipResource::isAShip($shipIdentifier)) { + throw new BadRequestHttpException('Invalid ship identifier'); + } + $dockType = DockType::fromShipIdentifier($shipIdentifier); + if (DockType::Shipyard === $dockType) { + $quantity = 1; + } + $shipQueues = $shipQueueRepository->getByBaseAndDockType($currentBase, $dockType->getIdentifier()); + $shipQueuesCount = count($shipQueues); + $technos = $technologyRepository->getPlayerTechnology($currentPlayer); + // TODO Replace with Specification pattern + if ( + !$shipHelper->haveRights($shipIdentifier, 'resource', $currentBase->resourcesStorage, $quantity) + || !$shipHelper->haveRights($shipIdentifier, 'queue', $currentBase, $shipQueuesCount) + || !$shipHelper->haveRights($shipIdentifier, 'shipTree', $currentBase) + || !$shipHelper->haveRights($shipIdentifier, 'pev', $currentBase, $quantity) + || !$shipHelper->haveRights($shipIdentifier, 'techno', $technos) + ) { + throw new ConflictHttpException('Missing some conditions to launch the build order'); + } + // TODO create a dedicated service for queued durations + $startedAt = (0 === $shipQueuesCount) + ? new \DateTimeImmutable() + : $shipQueues[$shipQueuesCount - 1]->getEndDate(); + + $shipQueue = $shipQueueFactory->create( + orbitalBase: $currentBase, + shipIdentifier: $shipIdentifier, + dockType: $dockType, + quantity: $quantity, + startedAt: $startedAt, + ); + + // débit des ressources au joueur + $resourcePrice = ($countShipResourceCost)($shipIdentifier, $quantity, $currentPlayer); + $orbitalBaseManager->decreaseResources($currentBase, $resourcePrice); + + // ajout de l'event dans le contrôleur + $session->get('playerEvent')->add($shipQueue->getEndDate(), $this->getParameter('event_base'), $currentBase->id); + + // if (true === $this->getContainer()->getParameter('data_analysis')) { + // $qr = $database->prepare('INSERT INTO + // DA_BaseAction(`from`, type, opt1, opt2, weight, dAction) + // VALUES(?, ?, ?, ?, ?, ?)' + // ); + // $qr->execute([$session->get('playerId'), 3, $ship, $quantity, DataAnalysis::resourceToStdUnit(ShipResource::getInfo($ship, 'resourcePrice') * $quantity), Utils::now()]); + // } + + // alerte + if (1 == $quantity) { + $this->addFlash('success', 'Construction d\'' . (ShipResource::isAFemaleShipName($shipIdentifier) ? 'une ' : 'un ') . ShipResource::getInfo($shipIdentifier, 'codeName') . ' commandée'); + } else { + $this->addFlash('success', 'Construction de ' . $quantity . ' ' . ShipResource::getInfo($shipIdentifier, 'codeName') . Format::addPlural($quantity) . ' commandée'); + } + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Ship/CancelQueue.php b/src/Modules/Athena/Infrastructure/Controller/Ship/CancelQueue.php new file mode 100644 index 000000000..4cf523426 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Ship/CancelQueue.php @@ -0,0 +1,100 @@ +query->get('dock') ?? throw new BadRequestHttpException('Missing dock parameter'); + + if (!in_array($dock, [1, 2])) { + throw new BadRequestHttpException(sprintf('Invalid shipyard %s', $dock)); + } + $shipQueues = $shipQueueRepository->getByBaseAndDockType($currentBase, $dock); + $nbShipQueues = count($shipQueues); + + $index = null; + $startDate = null; + $shipNumber = null; + $dockType = null; + $quantity = null; + for ($i = 0; $i < $nbShipQueues; ++$i) { + $shipQueue = $shipQueues[$i]; + // get the index of the queue + if ($shipQueue->id->equals($id)) { + $index = $i; + $startDate = $shipQueue->getStartDate(); + $shipNumber = $shipQueue->shipNumber; + $dockType = $shipQueue->dockType; + $quantity = $shipQueue->quantity; + break; + } + } + + if (null === $index || null === $startDate || null === $shipNumber || null === $dockType || null === $quantity) { + throw $this->createNotFoundException('Queue not found'); + } + + // if it's the first, the next must restart by now + if (0 === $index) { + $startDate = new \DateTimeImmutable(); + } + // shift + for ($i = $index + 1; $i < $nbShipQueues; ++$i) { + $shipQueue = $shipQueues[$i]; + + $shipQueue->endedAt = $durationHandler->getDurationEnd( + $startDate, + $durationHandler->getDiff($shipQueue->startedAt, $shipQueue->endedAt), + ); + $shipQueue->startedAt = $startDate; + + // @TODO handle rescheduling + // $scheduler->reschedule($shipQueue, $shipQueue->dEnd, $oldDate); + + $startDate = $shipQueue->getEndDate(); + } + + // @TODO handle cancellation + // $scheduler->cancel($shipQueues[$index], $shipQueues[$index]->dEnd); + $shipQueueRepository->remove($shipQueues[$index]); + // give a part of the resources back + $resourcePrice = ShipResource::getInfo($shipNumber, 'resourcePrice'); + if (1 == $dockType) { + $resourcePrice *= $quantity; + } + $shipResourceRefund = $this->getParameter('athena.building.ship_queue_resource_refund'); + $resourcePrice *= $shipResourceRefund; + + $orbitalBaseManager->increaseResources($currentBase, $resourcePrice, true); + + $this->addFlash('success', 'Commande annulée, vous récupérez le '.$shipResourceRefund * 100 .'% du montant investi pour la construction'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Ship/Recycle.php b/src/Modules/Athena/Infrastructure/Controller/Ship/Recycle.php new file mode 100644 index 000000000..00bded47a --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Ship/Recycle.php @@ -0,0 +1,40 @@ +query->get('ship_identifier'); + $quantity = $request->request->get('quantity'); + + if (false !== $typeOfShip and false !== $quantity) { + if ($quantity > 0 && $quantity <= $currentBase->getShipStorage()[$typeOfShip]) { + $resources = ($quantity * ShipResource::getInfo($typeOfShip, 'resourcePrice')) / 2; + $currentBase->removeShips($typeOfShip, $quantity); + $orbitalBaseManager->increaseResources($currentBase, $resources); + + return $this->redirect($request->headers->get('referer')); + } else { + throw new ConflictHttpException('cette quantité ne correspond pas à votre stock'); + } + } else { + throw new BadRequestHttpException('pas assez d\'informations'); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Ship/ViewShipPanel.php b/src/Modules/Athena/Infrastructure/Controller/Ship/ViewShipPanel.php new file mode 100644 index 000000000..1aec4fcfc --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Ship/ViewShipPanel.php @@ -0,0 +1,65 @@ +getPlayerBonus()->bonuses; + + switch (ShipResource::getInfo($shipNumber, 'class')) { + case 0: + $bonusSPE = $playerBonuses->get(PlayerBonusId::FIGHTER_SPEED); + $bonusATT = $playerBonuses->get(PlayerBonusId::FIGHTER_ATTACK); + $bonusDEF = $playerBonuses->get(PlayerBonusId::FIGHTER_DEFENSE); + break; + case 1: + $bonusSPE = $playerBonuses->get(PlayerBonusId::CORVETTE_SPEED); + $bonusATT = $playerBonuses->get(PlayerBonusId::CORVETTE_ATTACK); + $bonusDEF = $playerBonuses->get(PlayerBonusId::CORVETTE_DEFENSE); + break; + case 2: + $bonusSPE = $playerBonuses->get(PlayerBonusId::FRIGATE_SPEED); + $bonusATT = $playerBonuses->get(PlayerBonusId::FRIGATE_ATTACK); + $bonusDEF = $playerBonuses->get(PlayerBonusId::FRIGATE_DEFENSE); + break; + case 3: + $bonusSPE = $playerBonuses->get(PlayerBonusId::DESTROYER_SPEED); + $bonusATT = $playerBonuses->get(PlayerBonusId::DESTROYER_ATTACK); + $bonusDEF = $playerBonuses->get(PlayerBonusId::DESTROYER_DEFENSE); + break; + default: + $bonusSPE = 0; + $bonusATT = 0; + $bonusDEF = 0; + break; + } + + // MAXIMA + $attacks = ShipResource::getInfo($shipNumber, 'attack'); + + return $this->render('blocks/athena/ship_panel.html.twig', [ + 'ship_number' => $shipNumber, + 'bonus_att' => $bonusATT, + 'bonus_def' => $bonusDEF, + 'bonus_spe' => $bonusSPE, + 'attacks' => $attacks, + 'damage' => array_unique($attacks), + 'nb_shots' => array_count_values($attacks), + 'life' => ($shipNumber > 5) ? 1600 : 135, + 'defense' => ($shipNumber > 5) ? 200 : 25, + 'speed_a' => ($shipNumber > 5) ? 25 : 100, + 'speed_b' => ($shipNumber > 5) ? 250 : 150, + 'attack' => ($shipNumber > 5) ? 700 : 90, + ]); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/GiveResources.php b/src/Modules/Athena/Infrastructure/Controller/Trade/GiveResources.php new file mode 100644 index 000000000..fbc6569c3 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/GiveResources.php @@ -0,0 +1,150 @@ +request->get('baseId') ?? throw new BadRequestHttpException('Missing base id'); + $quantity = $request->request->get('quantity') ?? throw new BadRequestHttpException('Missing quantity'); + + if (!Uuid::isValid($baseId)) { + throw new BadRequestHttpException('Base id is invalid'); + } + + $baseUuid = Uuid::fromString($baseId); + if ($currentBase->id->equals($baseUuid)) { + throw new BadRequestHttpException('envoi de ressources impossible - action inutile, vos ressources sont déjà sur cette base orbitale'); + } + $resource = intval($quantity); + if ($resource === 0) { + throw new BadRequestHttpException('envoi de ressources impossible - il faut envoyer un nombre entier positif'); + } + if ($currentBase->resourcesStorage < $resource) { + throw new ConflictHttpException('envoi de ressources impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); + } + // --------------------------- + // controler le nombre de vaisseaux + // verif : have we enough commercialShips + $totalShips = $orbitalBaseHelper->getBuildingInfo(6, 'level', $currentBase->levelCommercialPlateforme, 'nbCommercialShip'); + $usedShips = 0; + + $commercialShippings = $commercialShippingRepository->getByBase($currentBase); + + foreach ($commercialShippings as $commercialShipping) { + if ($commercialShipping->originBase->id->equals($currentBase->id)) { + $usedShips += $commercialShipping->shipQuantity; + } + } + + // TODO service to calculate needed commercial ships number + $remainingShips = $totalShips - $usedShips; + $commercialShipQuantity = $countNeededCommercialShips(Transaction::TYP_RESOURCE, $resource); + + if ($remainingShips < $commercialShipQuantity) { + throw new ConflictHttpException('envoi de ressources impossible - vous n\'avez pas assez de vaisseaux de transport'); + } + $otherBase = $orbitalBaseRepository->get($baseUuid) + ?? throw $this->createNotFoundException('envoi de ressources impossible - erreur dans les bases orbitales'); + + $departure = new \DateTimeImmutable(); + + // création du convoi + $cs = new CommercialShipping( + id: Uuid::v4(), + player: $currentPlayer, + originBase: $currentBase, + destinationBase: $otherBase, + resourceTransported: $resource, + shipQuantity: $commercialShipQuantity, + statement: CommercialShipping::ST_GOING, + departureDate: $departure, + arrivalDate: $getTravelDuration( + origin: $currentBase->place, + destination: $otherBase->place, + departureDate: $departure, + travelType: TravelType::CommercialShipping, + player: $currentPlayer + ), + ); + $commercialShippingRepository->save($cs); + + $messageBus->dispatch( + new CommercialShippingMessage($cs->id), + [DateTimeConverter::to_delay_stamp($cs->getArrivalDate())], + ); + + $orbitalBaseManager->decreaseResources($currentBase, $resource); + + if ($currentBase->player->id !== $otherBase->player->id) { + $notification = NotificationBuilder::new() + ->setTitle('Envoi de ressources') + ->setContent( + NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' a lancé un convoi de ', + NotificationBuilder::bold(Format::numberFormat($resource)), + ' ressources depuis sa base ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $currentBase->place->id]), + $currentBase->name, + ), + '.', + ), + NotificationBuilder::paragraph( + 'Quand le convoi arrivera, les ressources seront à vous.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('switchbase', ['baseId' => $otherBase->id, 'page' => 'market']), + 'vers la place du commerce →', + ), + ), + ) + ->for($otherBase->player); + $notificationRepository->save($notification); + } + + $this->addFlash('success', 'Ressources envoyées'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/GiveShips.php b/src/Modules/Athena/Infrastructure/Controller/Trade/GiveShips.php new file mode 100644 index 000000000..833a7eab5 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/GiveShips.php @@ -0,0 +1,195 @@ +request->get('baseId') ?? throw new BadRequestHttpException('Missing base id'); + + if (!Uuid::isValid($baseId)) { + throw new BadRequestHttpException('Invalid base id'); + } + + $baseUuid = Uuid::fromString($baseId); + if ($currentBase->id->equals($baseUuid)) { + throw new BadRequestHttpException('You cannot send ships to your current base'); + } + + // @TODO fix request format as multiple ships sending isn't possible with this design + for ($i = 0; $i < ShipResource::SHIP_QUANTITY; ++$i) { + if ($request->request->has('identifier-'.$i)) { + $shipType = $i; + + if ($request->request->has('quantity-'.$i)) { + $ships = $request->request->get('quantity-'.$i) > 0 + ? $request->request->get('quantity-'.$i) : 1; + $ships = intval($ships); + } + + break; + } + } + + if (!isset($shipType) || !isset($ships)) { + throw new BadRequestHttpException('Missing ship request data'); + } + + if (!ShipResource::isAShipFromDock1($shipType) && !ShipResource::isAShipFromDock2($shipType)) { + throw new BadRequestHttpException('Invalid ship identifier'); + } + + if ($ships <= 0) { + throw new BadRequestHttpException('Invalid ship quantity'); + } + + if ($currentBase->getShipStorage()[$shipType] < $ships) { + throw new ConflictHttpException('You do not have enough ships'); + } + + $commercialShipQuantity = $countNeededCommercialShips(Transaction::TYP_SHIP, $ships, $shipType); + $totalShips = $orbitalBaseHelper->getBuildingInfo(6, 'level', $currentBase->levelCommercialPlateforme, 'nbCommercialShip'); + $usedShips = 0; + + // TODO make service + $commercialShippings = $commercialShippingRepository->getByBase($currentBase); + foreach ($commercialShippings as $commercialShipping) { + if ($commercialShipping->originBase->id->equals($currentBase->id)) { + $usedShips += $commercialShipping->shipQuantity; + } + } + + $remainingShips = $totalShips - $usedShips; + + if ($remainingShips < $commercialShipQuantity) { + throw new ConflictHttpException('Missing transport ships to perform this operation'); + } + + // création de la transaction + // TODO why a transaction ? Must destroy the price rates + // To handle the ships quantity. + // TODO Refactor ships quantity and move this field to commercial shipping entity + $tr = new Transaction( + id: Uuid::v4(), + player: $currentPlayer, + base: $currentBase, + type: Transaction::TYP_SHIP, + quantity: $ships, + identifier: $shipType, + price: 0, + statement: Transaction::ST_COMPLETED, + publishedAt: new \DateTimeImmutable(), + currentRate: $transactionRepository->getExchangeRate(Transaction::TYP_SHIP), + ); + $transactionRepository->save($tr); + + $departure = new \DateTimeImmutable(); + $otherBase = $orbitalBaseRepository->get($baseUuid) + ?? throw $this->createNotFoundException('Destination base not found'); + + $cs = new CommercialShipping( + id: Uuid::v4(), + player: $currentPlayer, + originBase: $currentBase, + destinationBase: $otherBase, + transaction: $tr, + resourceTransported: 0, + shipQuantity: $commercialShipQuantity, + departureDate: $departure, + arrivalDate: $getTravelDuration( + origin: $currentBase->place, + destination: $otherBase->place, + player: $currentPlayer, + departureDate: $departure, + travelType: TravelType::CommercialShipping, + ), + statement: CommercialShipping::ST_GOING, + ); + + $commercialShippingRepository->save($cs); + + $messageBus->dispatch( + new CommercialShippingMessage($cs->id), + [DateTimeConverter::to_delay_stamp($cs->getArrivalDate())], + ); + + $currentBase->removeShips($shipType, $ships); + + $orbitalBaseRepository->save($currentBase); + + if ($currentBase->player->id !== $otherBase->player->id) { + + $notification = NotificationBuilder::new() + ->setTitle('Envoi de vaisseaux') + ->setContent( + NotificationBuilder::paragraph( + $otherBase->name, + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' a lancé un convoi de ', + NotificationBuilder::bold(Format::numberFormat($ships)), + ' ' . ShipResource::getInfo($shipType, 'codeName') . ' depuis sa base ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $currentBase->place->id]), + $currentBase->name, + ), + '.', + ), + NotificationBuilder::paragraph( + 'Quand le convoi arrivera, les vaisseaux seront placés dans votre hangar.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('switchbase', ['baseId' => $otherBase->id, 'page' => 'market']), + 'vers la place du commerce →', + ), + ) + ) + ->for($otherBase->player); + $notificationRepository->save($notification); + } + + $this->addFlash('success', 'Vaisseaux envoyés'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Accept.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Accept.php new file mode 100644 index 000000000..889ce09ad --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Accept.php @@ -0,0 +1,178 @@ +levelCommercialPlateforme) { + throw $this->createAccessDeniedException('YOu cannot accept offers without a trading platform'); + } + + $transaction = $transactionRepository->get($id) + ?? throw $this->createNotFoundException('Transaction not found'); + $commercialShipping = $commercialShippingRepository->getByTransaction($transaction) + ?? throw $this->createNotFoundException('Commercial shipping not found'); + + if (!$transaction->isProposed()) { + throw new ConflictHttpException('Transaction is not proposed'); + } + $transactionData = $transactionManager->getTransactionData($transaction, $currentBase); + + if (!$currentPlayer->canAfford($transactionData['total_price'])) { + throw new ConflictHttpException('vous n\'avez pas assez de crédits pour accepter cette proposition'); + } + // chargement des joueurs + $buyer = $currentPlayer; + $seller = $transaction->player; + + // The buyer pays the transaction price + the taxes + $playerManager->decreaseCredit($buyer, $transactionData['total_price']); + $playerManager->increaseCredit($seller, $transaction->price); + + // transfert des crédits aux alliances + if (null !== ($exportFaction = $transaction->base->place->system->sector->faction)) { + $exportFaction->increaseCredit($transactionData['export_tax']); + } + + if (null !== ($importFaction = $currentBase->place->system->sector->faction)) { + $importFaction->increaseCredit($transactionData['import_tax']); + } + + // gain d'expérience + $experience = $transaction->getExperienceEarned(); + $playerManager->increaseExperience($seller, $experience); + + // update commercialShipping + $commercialShipping->destinationBase = $currentBase; + $commercialShipping->departureDate = new \DateTimeImmutable(); + $commercialShipping->arrivalDate = $getTravelDuration( + $commercialShipping->originBase->place, + $currentBase->place, + $commercialShipping->departureDate, + TravelType::CommercialShipping, + $commercialShipping->player, + ); + $commercialShipping->statement = CommercialShipping::ST_GOING; + + // update transaction statement + $transaction->statement = Transaction::ST_COMPLETED; + $transaction->validatedAt = new \DateTimeImmutable(); + $transaction->buyer = $currentPlayer; + $transaction->sellerFactionFees = $transactionData['export_price']; + $transaction->sellerFactionTaxRate = $transactionData['export_tax']; + $transaction->buyerFactionFees = $transactionData['import_price']; + $transaction->buyerFactionTaxRate = $transactionData['import_tax']; + + // update exchange rate + $transaction->currentRate = Game::calculateCurrentRate( + $transactionRepository->getExchangeRate($transaction->type), + $transaction->type, + $transaction->quantity, + $transaction->identifier, + $transaction->price, + ); + + // notif pour le proposeur + $n = NotificationBuilder::new() + ->setTitle('Transaction validée') + ->setContent(NotificationBuilder::paragraph( + NotificationBuilder::link($this->generateUrl('embassy', ['player' => $currentPlayer->id]), $currentPlayer->name), + ' a accepté une de vos propositions dans le marché. Des vaisseaux commerciaux viennent de partir de votre ', + NotificationBuilder::link($this->generateUrl('map', ['place' => $commercialShipping->originBase->place->id]), 'base'), + ' et se dirigent vers ', + NotificationBuilder::link($this->generateUrl('map', ['place' => $currentBase->place->id]), $currentBase->name), + ' pour acheminer la marchandise. ', + NotificationBuilder::divider(), + sprintf( + 'Vous gagnez %s crédits et %s points d\'expérience.', + Format::numberFormat($transaction->price), + Format::numberFormat($experience), + ), + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('switchbase', ['baseId' => $commercialShipping->originBase->id, 'page' => 'sell']), + 'En savoir plus ?', + ), + )) + ->for($transaction->player); + $notificationRepository->save($n); + + // if (true === $this->getContainer()->getParameter('data_analysis')) { + // $qr = $database->prepare('INSERT INTO + // DA_CommercialRelation(`from`, `to`, type, weight, dAction) + // VALUES(?, ?, ?, ?, ?)' + // ); + // $qr->execute([$transaction->rPlayer, $session->get('playerId'), $transaction->type, DataAnalysis::creditToStdUnit($transaction->price), Utils::now()]); + // } + $entityManager->flush(); + + $messageBus->dispatch( + new CommercialShippingMessage($commercialShipping->id), + [DateTimeConverter::to_delay_stamp($commercialShipping->getArrivalDate())], + ); + + $this->addFlash('market_success', 'Proposition acceptée. Les vaisseaux commerciaux sont en route vers votre base orbitale.'); + + $mercure->publish(new Update( + '/trade-offers', + $this->renderView('components/base/trade/turbo/broadcast/remove_transaction.stream.html.twig', [ + 'transaction' => $transaction, + ]), + )); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Cancel.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Cancel.php new file mode 100644 index 000000000..6f5168c8e --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Cancel.php @@ -0,0 +1,121 @@ +get($id) + ?? throw $this->createNotFoundException('Transaction not found'); + + $commercialShipping = $commercialShippingRepository->getByTransaction($transaction) + ?? throw $this->createNotFoundException('Commercial shipping not found'); + + if (!$transaction->isProposed()) { + throw new ConflictHttpException('This transaction is not currently proposed on the market'); + } + + if ($transaction->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('This transaction does not belong to you'); + } + + $base = $transaction->base; + + if (!$currentPlayer->canAfford($transaction->getPriceToCancelOffer())) { + throw new ConflictHttpException('You cannot afford the cancellation fee'); + } + + switch ($transaction->type) { + case Transaction::TYP_RESOURCE: + $storageSpace = $getMaxStorage($base) - $base->resourcesStorage; + + if ($storageSpace < $transaction->quantity) { + throw new ConflictHttpException('Vous n\'avez pas assez de place dans votre Stockage pour stocker les ressources. Videz un peu le hangar et revenez plus tard pour annuler cette offre.'); + } + $orbitalBaseManager->increaseResources($base, $transaction->quantity, true); + break; + case Transaction::TYP_SHIP: + $base->addShips($transaction->identifier, $transaction->quantity); + break; + case Transaction::TYP_COMMANDER: + $transaction->commander->statement = Commander::RESERVE; + break; + default: + throw new \LogicException('Invalid transaction type'); + } + // débit des crédits au joueur + $playerManager->decreaseCredit($currentPlayer, $transaction->getPriceToCancelOffer()); + + // annulation de l'envoi commercial (libération des vaisseaux de commerce) + $commercialShippingRepository->remove($commercialShipping); + + // update transaction statement + $transaction->statement = Transaction::ST_CANCELED; + $transaction->validatedAt = new \DateTimeImmutable(); + + $this->addFlash('market_success', match ($transaction->type) { + Transaction::TYP_RESOURCE => 'Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et vous récupérez vos ressources.', + Transaction::TYP_SHIP => 'Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et vous récupérez vos vaisseaux de combat.', + Transaction::TYP_COMMANDER => 'Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et votre commandant est placé à l\'école de commandement.', + }); + + $transactionRepository->save($transaction); + + $mercure->publish(new Update( + '/trade-offers', + $this->renderView('components/base/trade/turbo/broadcast/remove_transaction.stream.html.twig', [ + 'transaction' => $transaction, + ]), + )); + + if (TurboBundle::STREAM_FORMAT === $request->getPreferredFormat()) { + $request->setRequestFormat(TurboBundle::STREAM_FORMAT); + + return $this->render('components/base/trade/turbo/remove_transaction.stream.html.twig', [ + 'commercial_shipping' => $commercialShipping, + 'used_ships' => $getBaseCommercialShippingData($base)['used_ships'], + 'max_ships' => $orbitalBaseHelper->getInfo( + OrbitalBaseResource::COMMERCIAL_PLATEFORME, + 'level', + $base->levelCommercialPlateforme, + 'nbCommercialShip', + ), + ]); + } + + return $this->redirectToRoute('trade_market'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Propose.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Propose.php new file mode 100644 index 000000000..ba1c035d1 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Offer/Propose.php @@ -0,0 +1,193 @@ +query->get('type') ?? throw new BadRequestHttpException('Missing type'); + $quantity = $request->request->getInt('quantity'); + // TODO ATM the identifier contains ship number or commander UUID. Modify the form to keep only ship number + $identifier = $request->query->get('identifier'); + $price = $request->request->get('price') ?? throw new BadRequestHttpException('Missing price'); + + // TODO Move to validator component constraint + switch ($type) { + case Transaction::TYP_RESOURCE: + if ($quantity === 0) { + throw new BadRequestHttpException('Invalid quantity'); + } + if ($currentBase->resourcesStorage < $quantity) { + throw new ConflictHttpException('The current base has not enough resources to make that sale'); + } + $identifier = 0; + break; + case Transaction::TYP_SHIP: + if (null === $identifier || (!ShipResource::isAShipFromDock1($identifier) && !ShipResource::isAShipFromDock2($identifier))) { + throw new BadRequestHttpException('Invalid ship identifier'); + } + + if ($quantity === 0) { + throw new BadRequestHttpException('Invalid quantity'); + } + + if ($currentBase->getShipStorage()[$identifier] < $quantity) { + throw new ConflictHttpException('The current base has not enough ships to make that sale'); + } + + break; + case Transaction::TYP_COMMANDER: + if (null === $identifier || $identifier < 1) { + throw new BadRequestHttpException('Invalid commander ID'); + } + break; + default: + throw new \LogicException('Invalid transaction type'); + } + // TODO transform into service + $minPrice = Game::getMinPriceRelativeToRate($type, $quantity, $identifier); + $maxPrice = Game::getMaxPriceRelativeToRate($type, $quantity, $identifier); + + // TODO Move to a validator constraint (same as above ?) + if ($price < $minPrice) { + throw new BadRequestHttpException('Le prix que vous avez fixé est trop bas. Une limite inférieure est fixée selon la catégorie de la vente.'); + } elseif ($price > $maxPrice) { + throw new BadRequestHttpException('Le prix que vous avez fixé est trop haut. Une limite supérieure est fixée selon la catégorie de la vente.'); + } + + $remainingShips = $countAvailableCommercialShips($currentBase); + // determine commercialShipQuantity needed + $commercialShipQuantity = $countNeededCommercialShips($type, $quantity, $identifier); + + if ($remainingShips < $commercialShipQuantity) { + throw new ConflictHttpException('Vous n\'avez pas assez de vaisseaux de transport disponibles.'); + } + switch ($type) { + case Transaction::TYP_RESOURCE: + $orbitalBaseManager->decreaseResources($currentBase, $quantity); + break; + case Transaction::TYP_SHIP: + $currentBase->removeShips($identifier, $quantity); + break; + case Transaction::TYP_COMMANDER: + $commander = $commanderRepository->get(Uuid::fromString($identifier)) + ?? throw $this->createNotFoundException('Commander not found'); + + // TODO replace with Voter + if ($commander->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('This commander does not belong to you'); + } + + if ($commander->isOnSale()) { + throw new ConflictHttpException('This commander is already on sale'); + } + $identifier = 0; + $commander->statement = Commander::ONSALE; + $commanderManager->emptySquadrons($commander); + break; + } + // création de la transaction + $tr = new Transaction( + id: Uuid::v4(), + player: $currentPlayer, + base: $currentBase, + type: $type, + quantity: $quantity, + identifier: $identifier, + publishedAt: new \DateTimeImmutable(), + currentRate: $transactionRepository->getLastCompletedTransaction($type)->currentRate, + commander: $commander ?? null, + price: $price, + commercialShipQuantity: $commercialShipQuantity, + statement: Transaction::ST_PROPOSED, + ); + + $validator->validate($tr); + + $transactionRepository->save($tr); + + // création du convoi + $cs = new CommercialShipping( + id: Uuid::v4(), + player: $currentPlayer, + originBase: $currentBase, + transaction: $tr, + shipQuantity: $commercialShipQuantity, + statement: CommercialShipping::ST_WAITING, + ); + $commercialShippingRepository->save($cs); + + $transactionRepository->save($tr); + + $mercureHub->publish(new Update( + '/trade-offers', + $this->renderView('components/base/trade/turbo/broadcast/new_transaction.stream.html.twig', [ + 'transaction' => $tr, + ]), + )); + + $this->addFlash('market_success', 'Votre proposition a été envoyée sur le marché.'); + + if (TurboBundle::STREAM_FORMAT === $request->getPreferredFormat()) { + $request->setRequestFormat(TurboBundle::STREAM_FORMAT); + + return $this->render('components/base/trade/turbo/new_transaction.stream.html.twig', [ + 'commercial_shipping' => $cs, + 'used_ships' => $getBaseCommercialShippingData($currentBase)['used_ships'], + 'max_ships' => $orbitalBaseHelper->getInfo( + OrbitalBaseResource::COMMERCIAL_PLATEFORME, + 'level', + $currentBase->levelCommercialPlateforme, + 'nbCommercialShip', + ), + ]); + } + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Accept.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Accept.php new file mode 100644 index 000000000..f0d7bfbb8 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Accept.php @@ -0,0 +1,136 @@ +getParameter('athena.trade.experience_coeff'); + + if (null === ($cr = $commercialRouteRepository->getByIdAndDistantBase($id, $currentBase))) { + throw $this->createNotFoundException('Commercial route not found'); + } + + if (!$cr->isProposed()) { + throw new ConflictHttpException('Commercial route has already been established'); + } + + $proposerFaction = $cr->originBase->player->faction; + $acceptorFaction = $cr->destinationBase->player->faction; + + if ($proposerFaction->identifier !== $acceptorFaction->identifier && (Color::ENEMY === $proposerFaction->relations[$acceptorFaction->identifier] || Color::ENEMY === $acceptorFaction->relations[$proposerFaction->identifier])) { + throw new ConflictHttpException('You cannot accept this route: your two factions are at war'); + } + $proposerBase = $cr->originBase; + $acceptorBase = $cr->destinationBase; + + $nbrMaxCommercialRoute = $orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::SPATIOPORT, + 'level', + $acceptorBase->levelSpatioport, + 'nbRoutesMax', + ); + + if ($commercialRouteRepository->countBaseRoutes($acceptorBase, [CommercialRoute::STANDBY, CommercialRoute::ACTIVE]) > $nbrMaxCommercialRoute) { + throw new ConflictHttpException('You do not have any slot left for a new route'); + } + // compute bonus if the player is from Negore + // TODO move to BonusApplier logic + $distance = $getDistanceBetweenPlaces($proposerBase->place, $acceptorBase->place); + $price = $getCommercialRoutePrice($distance, $currentPlayer); + if (ColorResource::NEGORA === $currentPlayer->faction->identifier) { + $bonus = PercentageApplier::toFloat($price, ColorResource::BONUS_NEGORA_ROUTE); + $price = round($price - $bonus); + } + + if ($currentPlayer->credit < $price) { + throw new ConflictHttpException('You do not have enough credits'); + } + $playerManager->decreaseCredit($currentPlayer, $price); + + // augmentation de l'expérience des deux joueurs + $exp = round($cr->income * $routeExperienceCoeff); + $playerManager->increaseExperience($currentPlayer, $exp); + $playerManager->increaseExperience($proposerBase->player, $exp); + + // activation de la route + $cr->statement = CommercialRoute::ACTIVE; + $cr->acceptedAt = new \DateTimeImmutable(); + + $notification = NotificationBuilder::new() + ->setTitle('Route commerciale acceptée') + ->setContent( + NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' a accepté la route commerciale proposée entre ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $acceptorBase->place->id]), + $acceptorBase->name, + ), + ' et ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $proposerBase->place->id]), + $proposerBase->name, + ), + '.', + NotificationBuilder::divider(), + 'Cette route vous rapporte ', + Format::numberFormat($cr->income), + ' crédits par relève.', + ), + NotificationBuilder::paragraph( + NotificationBuilder::resourceBox('xp', $exp, 'expérience gagnée'), + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('switchbase', ['baseId' => $proposerBase->id, 'page' => 'spatioport']), + 'En savoir plus ?', + ) + ) + ) + ->for($proposerBase->player); + $notificationRepository->save($notification); + + $entityManager->flush(); + + $this->addFlash('success', 'Route commerciale acceptée, vous gagnez '.$exp.' points d\'expérience'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Cancel.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Cancel.php new file mode 100644 index 000000000..514fd2df7 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Cancel.php @@ -0,0 +1,77 @@ +getByIdAndBase($id, $currentBase); + if (null === $cr) { + throw $this->createNotFoundException('Commercial route not found'); + } + if (!$cr->isProposed()) { + throw new ConflictHttpException('Commercial route has already been established'); + } + $routeCancelRefund = $this->getParameter('athena.trade.route.cancellation_refund'); + $proposerBase = $cr->originBase; + $linkedBase = $cr->destinationBase; + + // rend 80% des crédits investis + $commercialRoutePrice = $getCommercialRoutePrice($getDistanceBetweenPlaces($cr->originBase->place, $cr->destinationBase->place), $currentPlayer); + $playerManager->increaseCredit($currentPlayer, round($commercialRoutePrice * $routeCancelRefund)); + + // notification + $notification = NotificationBuilder::new() + ->setTitle('Route commerciale annulée') + ->setContent(NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' a finalement retiré la proposition de route commerciale faite entre ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $linkedBase->place->id]), + $linkedBase->name, + ), + ' et ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $proposerBase->place->id]), + $proposerBase->name, + ), + )) + ->for($linkedBase->player); + $notificationRepository->save($notification); + + // destruction de la route + $commercialRouteRepository->remove($cr); + + $this->addFlash('success', 'Route commerciale annulée. Vous récupérez les '.$routeCancelRefund * 100 .'% du montant investi.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Delete.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Delete.php new file mode 100644 index 000000000..719f39e28 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Delete.php @@ -0,0 +1,94 @@ +get($id) + ?? throw $this->createNotFoundException('Commercial route not found'); + + if ($cr->isProposed()) { + throw new ConflictHttpException('Commercial route has not been established yet'); + } + + if ($cr->originBase->player->id !== $currentPlayer->id && $cr->destinationBase->player->id === $currentPlayer->id) { + throw $this->createAccessDeniedException('This Commercial route does not belong to you'); + } + $proposerBase = $cr->originBase; + $linkedBase = $cr->destinationBase; + + if ($cr->originBase->id->equals($currentBase->id)) { + $notifReceiver = $linkedBase->player; + $myBaseName = $proposerBase->name; + $otherBaseName = $linkedBase->name; + $myBaseId = $proposerBase->place->id; + $otherBaseId = $linkedBase->place->id; + } elseif ($cr->destinationBase->id->equals($currentBase->id)) { + $notifReceiver = $proposerBase->player; + $myBaseName = $linkedBase->name; + $otherBaseName = $proposerBase->name; + $myBaseId = $linkedBase->place->id; + $otherBaseId = $proposerBase->place->id; + } else { + throw new ConflictHttpException('Commercial route does not belong to the current base'); + } + + // perte du prestige pour les joueurs Négoriens + // @TODO check if this code is used somewhere or not + // $S_PAM1 = $playerManager->getCurrentSession(); + // $playerManager->newSession(); + // $playerManager->load(array('id' => array($cr->playerId1, $cr->playerId2))); + // $exp = round($cr->getIncome() * $routeExperienceCoeff); +// + // $playerManager->changeSession($S_PAM1); + + $n = NotificationBuilder::new() + ->setTitle('Route commerciale détruite') + ->setContent( + NotificationBuilder::paragraph( + NotificationBuilder::link($this->generateUrl('embassy', ['player' => $currentPlayer->id]), $currentPlayer->name), + ' annule les accords commerciaux entre ', + NotificationBuilder::link($this->generateUrl('map', ['place' => $myBaseId]), $myBaseName), + ' et ', + NotificationBuilder::link($this->generateUrl('map', ['place' => $otherBaseId]), $otherBaseName), + '.', + NotificationBuilder::divider(), + 'La route commerciale qui liait les deux bases orbitales est détruite, elle ne vous rapporte donc plus rien !', + ) + ) + ->for($notifReceiver); + + $notificationRepository->save($n); + + // destruction de la route + $commercialRouteRepository->remove($cr); + + $this->addFlash('success', 'Route commerciale détruite'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Propose.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Propose.php new file mode 100644 index 000000000..9a818c867 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Propose.php @@ -0,0 +1,151 @@ +levelSpatioport) { + throw $this->createAccessDeniedException('You cannot propose a trading route without a spatioport'); + } + + $baseTo = $request->query->get('destinationBase') + ?? throw new BadRequestHttpException('Missing destination base'); + + if (!Uuid::isValid($baseTo)) { + throw new BadRequestHttpException('Invalid destination base ID'); + } + + $otherBase = $orbitalBaseRepository->get(Uuid::fromString($baseTo)) + ?? throw $this->createNotFoundException('Destination base not found'); + + $nbrMaxCommercialRoute = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $currentBase->levelSpatioport, 'nbRoutesMax'); + + // Check if a route already exists between these two bases + $alreadyARoute = null !== $commercialRouteRepository->getExistingRoute($currentBase, $otherBase); + + // TODO transform into validation constraint + if (($commercialRouteRepository->countBaseRoutes($currentBase) >= $nbrMaxCommercialRoute) || $alreadyARoute || $otherBase->levelSpatioport === 0) { + throw new ConflictHttpException('Impossible de proposer une route commerciale'); + } + $player = $otherBase->player; + + $playerFaction = $currentPlayer->faction; + $otherFaction = $player->faction; + + // TODO move to validation constraint + if ($playerFaction->identifier !== $otherFaction->identifier && (Color::ENEMY === $playerFaction->relations[$otherFaction->identifier] || Color::ENEMY === $otherFaction->relations[$playerFaction->identifier])) { + throw new ConflictHttpException('impossible de proposer une route commerciale à ce joueur, vos factions sont en guerre.'); + } + // TODO move to validation constraint + if ($currentBase->player->id === $otherBase->player->id) { + throw new ConflictHttpException('Vous ne pouvez pas créer de route commerciale avec votre propre planète'); + } + $distance = $getDistanceBetweenPlaces($currentBase->place, $otherBase->place); + + $price = $getCommercialRoutePrice($distance, $currentPlayer); + + if (1 == $distance) { + $imageLink = '1-'.random_int(1, 3); + } elseif ($distance < 26) { + $imageLink = '2-'.random_int(1, 3); + } elseif ($distance < 126) { + $imageLink = '3-'.random_int(1, 3); + } else { + $imageLink = '4-'.random_int(1, 3); + } + + if (!$currentPlayer->canAfford($price)) { + throw new ConflictHttpException('impossible de proposer une route commerciale - vous n\'avez pas assez de crédits'); + } + // création de la route + $cr = new CommercialRoute( + id: Uuid::v4(), + originBase: $currentBase, + destinationBase: $otherBase, + imageLink: $imageLink, + // Store the income without bonuses to avoid incorrect data in player|faction financial reports + income: $getCommercialRouteIncome($currentBase, $otherBase), + proposedAt: new \DateTimeImmutable(), + acceptedAt: null, + statement: CommercialRoute::PROPOSED, + ); + $commercialRouteRepository->save($cr); + + // débit des crédits au joueur + $playerManager->decreaseCredit($currentPlayer, $price); + + $notification = NotificationBuilder::new() + ->setTitle('Proposition de route commerciale') + ->setContent(NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' vous propose une route commerciale liant ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $currentBase->place->id]), + $currentBase->name, + ), + ' et ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $otherBase->place->id]), + $otherBase->name, + ), + '.', + NotificationBuilder::divider(), + 'Les frais de l\'opération vous coûteraient ', + Format::numberFormat($price), + ' crédits; Les gains estimés pour cette route sont de ', + Format::numberFormat($getCommercialRouteIncome($currentBase, $otherBase, $player)), + ' crédits par relève.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('switchbase', ['baseId' => $otherBase->id, 'page' => 'spatioport']), + 'En savoir plus ?', + ), + )) + ->for($player); + $notificationRepository->save($notification); + + $this->addFlash('success', 'Route commerciale proposée'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Refuse.php b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Refuse.php new file mode 100644 index 000000000..590b25fa1 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Controller/Trade/Route/Refuse.php @@ -0,0 +1,87 @@ +getByIdAndDistantBase($id, $currentBase) + ?? throw $this->createNotFoundException('Commercial route not found'); + + if (!$cr->isProposed()) { + throw new ConflictHttpException('Commercial route has already been established'); + } + $proposerBase = $cr->originBase; + $refusingBase = $cr->destinationBase; + + // rend les crédits au proposant + $price = $getCommercialRoutePrice( + $getDistanceBetweenPlaces($proposerBase->place, $refusingBase->place), + $proposerBase->player, + ); + $playerManager->increaseCredit($proposerBase->player, $price); + + // notification + $notification = NotificationBuilder::new() + ->setTitle('Route commerciale refusée') + ->setContent(NotificationBuilder::paragraph( + NotificationBuilder::link( + $this->generateUrl('embassy', ['player' => $currentPlayer->id]), + $currentPlayer->name, + ), + ' a refusé la route commerciale proposée entre ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $refusingBase->place->id]), + $refusingBase->name, + ), + ' et ', + NotificationBuilder::link( + $this->generateUrl('map', ['place' => $proposerBase->place->id]), + $proposerBase->name, + ), + '.', + NotificationBuilder::divider(), + 'Les ', + Format::numberFormat($price), + ' crédits bloqués sont à nouveau disponibles.', + )) + ->for($proposerBase->player); + + $notificationRepository->save($notification); + + // destruction de la route + $commercialRouteRepository->remove($cr); + + $this->addFlash('success', 'Route commerciale refusée'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Athena/Infrastructure/DataFixtures/Factory/OrbitalBaseFactory.php b/src/Modules/Athena/Infrastructure/DataFixtures/Factory/OrbitalBaseFactory.php new file mode 100644 index 000000000..dff89f2c1 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/DataFixtures/Factory/OrbitalBaseFactory.php @@ -0,0 +1,48 @@ + Uuid::v4(), + 'place' => PlaceFactory::randomOrCreate(), + 'player' => PlayerFactory::randomOrCreate(), + 'name' => 'Colonie', + 'typeOfBase' => OrbitalBase::TYP_NEUTRAL, + 'levelGenerator' => 1, + 'levelRefinery' => 1, + 'levelDock1' => 1, + 'levelDock2' => 0, + 'levelDock3' => 0, + 'levelTechnosphere' => 1, + 'levelCommercialPlateforme' => 0, + 'levelStorage' => 1, + 'levelRecycling' => 0, + 'levelSpatioport' => 0, + 'points' => 0, + 'iSchool' => 1000, + 'iAntiSpy' => 0, + 'antiSpyAverage' => 0, + 'shipStorage' => [], + 'resourcesStorage' => 5000, + 'createdAt' => new \DateTimeImmutable(), + 'updatedAt' => new \DateTimeImmutable(), + ]; + } + + protected static function getClass(): string + { + return OrbitalBase::class; + } +} diff --git a/src/Modules/Athena/Infrastructure/DataFixtures/OrbitalBaseFixtures.php b/src/Modules/Athena/Infrastructure/DataFixtures/OrbitalBaseFixtures.php new file mode 100644 index 000000000..93b6fd818 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/DataFixtures/OrbitalBaseFixtures.php @@ -0,0 +1,26 @@ + Transaction::getResourcesIcon($commercialShipping->transaction?->quantity ?? $commercialShipping->resourceTransported)), + new TwigFilter('transaction_picto', fn (Transaction $transaction) => Transaction::getResourcesIcon($transaction->quantity)), + ]; + } + + #[\Override] + public function getFunctions(): array + { + return [ + new TwigFunction('get_min_price', fn (string $transactionType, int $quantity, ?int $identifier = null) => Game::getMinPriceRelativeToRate($transactionType, 1, $identifier)), + new TwigFunction('get_transaction_class', fn (CommercialShipping $commercialShipping) => match ($commercialShipping->transaction?->type) { + Transaction::TYP_RESOURCE => 'resources', + Transaction::TYP_COMMANDER => 'commander', + Transaction::TYP_SHIP => 'ship', + default => null, + }), + new TwigFunction('get_transaction_type', fn (Transaction $transaction) => match ($transaction->type) { + Transaction::TYP_RESOURCE => 'resources', + Transaction::TYP_COMMANDER => 'commander', + Transaction::TYP_SHIP => 'ship', + default => null, + }), + new TwigFunction('get_cancellation_price', fn (CommercialShipping $commercialShipping) => Format::number(floor($commercialShipping->transaction->price * Transaction::PERCENTAGE_TO_CANCEL / 100))), + new TwigFunction('get_transaction_data', fn (Transaction $transaction, OrbitalBase $orbitalBase, float $currentRate) => $this->transactionManager->getTransactionData($transaction, $orbitalBase, $currentRate)), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BaseTypeChoice.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BaseTypeChoice.php new file mode 100644 index 000000000..9c809c0ae --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BaseTypeChoice.php @@ -0,0 +1,32 @@ +type, 'name'); + } + + public function getFleetQuantity(): int + { + return PlaceResource::get($this->type, 'l-line') + PlaceResource::get($this->type, 'r-line'); + } + + public function getTaxToll(): int + { + return intval(PlaceResource::get($this->type, 'tax') * 100); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingCard.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingCard.php new file mode 100644 index 000000000..5541b1b4e --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingCard.php @@ -0,0 +1,107 @@ + */ + public array $buildingQueues; + public int $buildingQueuesCount; + public int $level; + public int $realLevel; + public ConstraintViolationListInterface $requirements; + + public function __construct( + private readonly BuildingDataHandler $buildingDataHandler, + private readonly GetTimeCost $getTimeCost, + private readonly BuildingLevelHandler $buildingLevelHandler, + private readonly OrbitalBaseHelper $orbitalBaseHelper, + private readonly ValidatorInterface $validator, + ) { + + } + + public function mount(OrbitalBase $base, Technology $technology, int $buildingIdentifier, array $buildingQueues, int $buildingQueuesCount): void + { + $this->base = $base; + $this->technology = $technology; + $this->buildingIdentifier = $buildingIdentifier; + $this->buildingQueues = $buildingQueues; + $this->buildingQueuesCount = $buildingQueuesCount; + $this->level = $this->buildingLevelHandler->getBuildingLevel($base, $buildingIdentifier); + $this->realLevel = $this->buildingLevelHandler->getBuildingRealLevel( + $base, + $buildingIdentifier, + $buildingQueues, + ); + + $buildingConstructionOrder = new BuildingConstructionOrder( + orbitalBase: $base, + targetLevel: $this->getNextLevel(), + buildingIdentifier: $buildingIdentifier, + technology: $technology, + ); + + $this->requirements = $this->validator->validate($buildingConstructionOrder, new CanMakeBuilding($buildingQueuesCount)); + } + + #[\Override] + public function isDisabled(): bool + { + // TODO investigate this condition. Previously `not realLevel` \_()_/ in `ViewGenerator` Controller + return false; + } + + public function getLevel(): int + { + return $this->level; + } + + public function getNextLevel(): int + { + return $this->realLevel + 1; + } + + public function getMaxLevel(): int + { + return $this->orbitalBaseHelper->getBuildingInfo($this->buildingIdentifier, 'maxLevel', $this->base->typeOfBase); + } + + public function getName(): string + { + return $this->orbitalBaseHelper->getBuildingInfo($this->buildingIdentifier, 'frenchName'); + } + + public function getResourceCost(): int|null + { + return $this->buildingDataHandler->getBuildingResourceCost($this->buildingIdentifier, $this->realLevel + 1); + } + + public function getTimeCost(): int|null + { + return ($this->getTimeCost)($this->buildingIdentifier, $this->realLevel + 1); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingQueue.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingQueue.php new file mode 100644 index 000000000..71725a543 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/BuildingQueue.php @@ -0,0 +1,72 @@ +queue) { + throw new \LogicException('You cannot use name property on an empty queue'); + } + + return $this->orbitalBaseHelper->getBuildingInfo($this->queue->buildingNumber, 'frenchName'); + } + + public function getSubTitle(): string + { + if (null === $this->queue) { + throw new \LogicException('You cannot use name property on an empty queue'); + } + + return sprintf('niv. %s', $this->queue->targetLevel); + } + + public function getCancelRoute(): string + { + return Cancel::ROUTE_NAME; + } + + public function getCancelParameters(): array + { + return [ + 'identifier' => $this->getIdentifier(), + ]; + } + + public function getPicto(): string + { + return ''; + } + + public function getIdentifier(): int + { + return $this->queue->buildingNumber + ?? throw new \LogicException('You cannot use identifier property on an empty queue'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipCard.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipCard.php new file mode 100644 index 000000000..a42615283 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipCard.php @@ -0,0 +1,68 @@ + $shipQueues + */ + public function mount(int $shipIdentifier, OrbitalBase $base, DockType $dockType, Technology $technology, array $shipQueues, int $queuesCount): void + { + $this->dockType = $dockType; + $this->shipIdentifier = $shipIdentifier; + $this->isHeavyShipyard = $dockType === DockType::Shipyard; + + $this->maxShips = ($this->countAffordableShips)( + shipIdentifier: $shipIdentifier, + base: $base, + dockType: $dockType, + shipQueues: $shipQueues, + ); + $technologyRights = $this->shipHelper->haveRights($shipIdentifier, 'techno', $technology); + $this->hasTechnologyRequirements = $technologyRights; + $this->missingTechnology = (true !== $technologyRights) ? $technologyRights : null; + $this->hasShipTreeRequirements = $this->shipHelper->haveRights($shipIdentifier, 'shipTree', $base); + $this->dockNeededLevel = $this->shipHelper->dockLevelNeededFor($shipIdentifier); + $this->hasShipQueueRequirements = $this->shipHelper->haveRights($shipIdentifier, 'queue', $base, $queuesCount); + + $this->resourceCost = ($this->countShipResourceCost)($this->shipIdentifier, 1); + $this->timeCost = ($this->countShipTimeCost)($this->shipIdentifier, $this->dockType, 1); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipQueue.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipQueue.php new file mode 100644 index 000000000..9c8d66992 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/ShipQueue.php @@ -0,0 +1,61 @@ +queue->quantity, + ShipResource::getInfo($this->queue->shipNumber, 'codeName'), + Format::plural($this->queue->quantity), + ); + } + + public function getSubTitle(): string + { + return ''; + } + + public function getCancelRoute(): string + { + return CancelQueue::ROUTE_NAME; + } + + public function getCancelParameters(): array + { + return [ + 'id' => $this->queue->id, + ]; + } + + public function getPicto(): string + { + return sprintf( + 'images/legacy/picto/ships/types/%s.svg', + ShipResource::getInfo($this->getIdentifier(), 'picto'), + ); + } + + public function getIdentifier(): int + { + return $this->queue->shipNumber + ?? throw new \LogicException('You cannot use identifier property on an empty queue'); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/Trade/CommercialShippingAvailableShipsCount.php b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/Trade/CommercialShippingAvailableShipsCount.php new file mode 100644 index 000000000..9e6099940 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Molecules/Trade/CommercialShippingAvailableShipsCount.php @@ -0,0 +1,17 @@ + */ + public array $buildingQueues; + /** @var list */ + public array $technologyQueues; + /** @var list */ + public array $dock1ShipQueues; + /** @var list */ + public array $dock2ShipQueues; + /** @var array */ + public array $commercialRoutesData; + public int $index; + public bool $isProfileView; + + public function __construct( + private readonly BuildingQueueRepository $buildingQueueRepository, + private readonly TechnologyQueueRepositoryInterface $technologyQueueRepository, + private readonly ShipQueueRepositoryInterface $shipQueueRepository, + private readonly CommercialRouteManager $commercialRouteManager, + #[Autowire('%athena.building.building_queue_resource_refund%')] + public float $buildingQueueResourceRefund, + ) { + } + + public function mount(OrbitalBase $orbitalBase): void + { + $this->orbitalBase = $orbitalBase; + $this->buildingQueues = $this->buildingQueueRepository->getBaseQueues($orbitalBase); + $this->technologyQueues = $this->technologyQueueRepository->getPlaceQueues($orbitalBase->place); + $this->dock1ShipQueues = $this->shipQueueRepository->getByBaseAndDockType($orbitalBase, 1); + $this->dock2ShipQueues = $this->shipQueueRepository->getByBaseAndDockType($orbitalBase, 2); + + // @TODO: move it to the using part of the code and remove useless data + if ($orbitalBase->levelSpatioport > 0) { + $this->commercialRoutesData = $this->commercialRouteManager->getBaseCommercialData($orbitalBase); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/CommanderSalesForm.php b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/CommanderSalesForm.php new file mode 100644 index 000000000..663a88c2b --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/CommanderSalesForm.php @@ -0,0 +1,43 @@ +currentRate = $currentRate; + + $this->commanders = $this->commanderRepository->getBaseCommanders( + $this->currentPlayerBasesRegistry->current(), + [Commander::INSCHOOL, Commander::RESERVE], + ['experience' => 'DESC'], + ); + } + + public function getCommanderPrice(Commander $commander) + { + return intval(ceil($commander->experience * $this->currentRate)); + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ResourceSalesForm.php b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ResourceSalesForm.php new file mode 100644 index 000000000..daf01f0f5 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ResourceSalesForm.php @@ -0,0 +1,34 @@ +quantity > 0 ? intval(ceil($this->quantity * Transaction::MIN_RATE_RESOURCE)) : null; + } + + public function getRequiredShipsCount(): int|null + { + return $this->quantity > 0 ? intval(ceil($this->quantity / CommercialShipping::WEDGE)) : null; + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ShipsSalesForm.php b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ShipsSalesForm.php new file mode 100644 index 000000000..d3b928e37 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/Components/Organisms/Trade/ShipsSalesForm.php @@ -0,0 +1,39 @@ +quantity * $minPrice)); + } + + public function getRequiredShipsCount($rate): int|null + { + return $this->quantity > 0 ? intval(ceil($this->quantity / CommercialShipping::WEDGE)) : null; + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/OrbitalBaseExtension.php b/src/Modules/Athena/Infrastructure/Twig/OrbitalBaseExtension.php new file mode 100644 index 000000000..8f4313e22 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/OrbitalBaseExtension.php @@ -0,0 +1,101 @@ + Game::getSizeOfPlanet($orbitalBase->place->population)), + new TwigFilter('base_type', fn (OrbitalBase $orbitalBase) => PlaceResource::get($orbitalBase->typeOfBase, 'name')), + new TwigFilter('scalar_base_type', fn (string $type) => PlaceResource::get($type, 'name')), + new TwigFilter('base_storage_percent', fn (OrbitalBase $orbitalBase) => Format::numberFormat($orbitalBase->resourcesStorage / ($this->getMaxStorage)($orbitalBase) * 100)), + new TwigFilter('base_coords', fn (OrbitalBase $orbitalBase) => Game::formatCoord( + $orbitalBase->place->system->xPosition, + $orbitalBase->place->system->yPosition, + $orbitalBase->place->position, + $orbitalBase->place->system->sector->identifier, + )), + // @TODO Factorize that coords call + new TwigFilter('spy_report_coords', fn (SpyReport $spyReport) => Game::formatCoord($spyReport->place->system->xPosition, $spyReport->place->system->yPosition, $spyReport->place->position, $spyReport->place->system->sector->identifier)), + ]; + } + + #[\Override] + public function getFunctions(): array + { + return [ + new TwigFunction('get_planet_size', fn (int|float $population) => Game::getSizeOfPlanet($population)), + new TwigFunction('get_base_type_info', fn (string $baseType, string $info) => PlaceResource::get($baseType, $info)), + // TODO Move to specification + new TwigFunction('can_leave_base', fn (OrbitalBase $orbitalBase) => $this->durationHandler->getHoursDiff(new \DateTimeImmutable(), $orbitalBase->createdAt) < ($this->getCoolDownBeforeLeavingBase)()), + new TwigFunction('get_time_until_cooldown_end', fn (OrbitalBase $orbitalBase) => ($this->getCoolDownBeforeLeavingBase)() - $this->durationHandler->getHoursDiff(new \DateTimeImmutable(), $orbitalBase->createdAt)), + new TwigFunction('get_cooldown_before_leaving_base', fn () => ($this->getCoolDownBeforeLeavingBase)()), + new TwigFunction('get_base_production', fn (OrbitalBase $orbitalBase, ?int $level = null) => Game::resourceProduction( + $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::REFINERY, + 'level', + $level ?? $orbitalBase->levelRefinery, + 'refiningCoefficient' + ), + $orbitalBase->place->coefResources, + )), + new TwigFunction('get_building_info', fn (int $buildingNumber, string $info, int $level = 0, string $sub = 'default') => $this->orbitalBaseHelper->getInfo($buildingNumber, $info, $level, $sub)), + new TwigFunction('get_building_resource_cost', fn (int $buildingNumber, int $level) => $this->buildingDataHandler->getBuildingResourceCost($buildingNumber, $level)), + new TwigFunction('get_building_time_cost', fn (int $buildingNumber, int $level) => ($this->getTimeCost)($buildingNumber, $level)), + new TwigFunction('get_building_level_range', fn (int $currentLevel) => \range( + ($currentLevel < 3) ? 1 : $currentLevel - 2, + (($currentLevel > 35) ? 41 : $currentLevel + 5) - 1, + )), + new TwigFunction('get_base_fleet_cost', fn (OrbitalBase $base) => Game::getFleetCost($base->shipStorage, false)), + // TODO check if bonus must be applied here (previously Game::getTaxFromPopulation without bonus applied) + new TwigFunction('get_base_tax', fn (OrbitalBase $base, int $taxCoeff) => $this->populationTaxHandler->getPopulationTax($base)), + // @TODO Improve that part + new TwigFunction('get_base_image', fn (OrbitalBase $base) => sprintf( + '1-%s', + Game::getSizeOfPlanet($base->place->population), + )), + // @TODO move to a rightful place + new TwigFunction('get_ship_transaction_cost', fn (Transaction $transaction) => ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity), + new TwigFunction('can_leave_orbital_base', function (OrbitalBase $orbitalBase) { + $canLeaveBase = new CanLeaveOrbitalBase(($this->getCoolDownBeforeLeavingBase)()); + + return $canLeaveBase->isSatisfiedBy($orbitalBase); + }), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/ShipExtension.php b/src/Modules/Athena/Infrastructure/Twig/ShipExtension.php new file mode 100644 index 000000000..026c785ec --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/ShipExtension.php @@ -0,0 +1,29 @@ + ShipResource::getInfo($shipNumber, $info)), + new TwigFunction('get_ship_time_cost', fn (int $shipNumber, int $dockType, int $quantity) => ($this->countShipTimeCost)($shipNumber, $dockType, $quantity)), + new TwigFunction('get_ship_resource_cost', fn (int $shipNumber, int $quantity) => ($this->countShipResourceCost)($shipNumber, $quantity)), + new TwigFunction('get_ship_price', fn (int $shipNumber, int|float $shipCurrentRate) => $shipCurrentRate * ShipResource::getInfo($shipNumber, 'resourcePrice')), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Twig/TradeRouteExtension.php b/src/Modules/Athena/Infrastructure/Twig/TradeRouteExtension.php new file mode 100644 index 000000000..2f34d5d56 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Twig/TradeRouteExtension.php @@ -0,0 +1,36 @@ + ($this->getCommercialRoutePrice)($distance, $this->currentPlayerRegistry->get())), + new TwigFunction('get_route_income', fn (OrbitalBase $from, OrbitalBase $to) => ($this->getCommercialRouteIncome)($from, $to, $this->currentPlayerRegistry->get())), + new TwigFunction('get_route_distance', fn (CommercialRoute $commercialRoute) => ($this->getDistanceBetweenPlaces)( + $commercialRoute->originBase->place, + $commercialRoute->destinationBase->place, + )), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/CanGetNewBase.php b/src/Modules/Athena/Infrastructure/Validator/CanGetNewBase.php new file mode 100644 index 000000000..05a42461b --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/CanGetNewBase.php @@ -0,0 +1,9 @@ +getTechnology(); + $basesCount = $value->getBasesCount(); + + $maxBasesQuantity = $technology->getTechnology(TechnologyId::BASE_QUANTITY) + 1; + + if ($basesCount >= $maxBasesQuantity) { + $this->context + ->buildViolation('Vous avez assez de conquête en cours ou un niveau d\'administration étendue trop faible.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/CanMakeBuilding.php b/src/Modules/Athena/Infrastructure/Validator/CanMakeBuilding.php new file mode 100644 index 000000000..a1a09834e --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/CanMakeBuilding.php @@ -0,0 +1,28 @@ + [ + new HasRightBaseType(), + new HasUnlockedBuilding(), + new IsValidTargetLevel(), + new CanOrderBuilding($buildingQueuesCount), + ], + ]); + } + + #[\Override] + public function validatedBy(): string + { + return SequentiallyValidator::class; + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/CanOrderBuilding.php b/src/Modules/Athena/Infrastructure/Validator/CanOrderBuilding.php new file mode 100644 index 000000000..3a0ad3f00 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/CanOrderBuilding.php @@ -0,0 +1,21 @@ +buildingQueuesCount), + ]; + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/DTO/BuildingConstructionOrder.php b/src/Modules/Athena/Infrastructure/Validator/DTO/BuildingConstructionOrder.php new file mode 100644 index 000000000..5e653de7c --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/DTO/BuildingConstructionOrder.php @@ -0,0 +1,39 @@ +orbitalBase; + } + + public function getBuildingIdentifier(): int + { + return $this->buildingIdentifier; + } + + public function getTargetLevel(): int + { + return $this->targetLevel; + } + + public function getTechnology(): Technology + { + return $this->technology; + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/DTO/HasBase.php b/src/Modules/Athena/Infrastructure/Validator/DTO/HasBase.php new file mode 100644 index 000000000..659165e70 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/DTO/HasBase.php @@ -0,0 +1,10 @@ +getBase(); + + $maxQueues = OrbitalBaseResource::$building[OrbitalBaseResource::GENERATOR]['level'][$orbitalBase->levelGenerator - 1][3]; + + if ($constraint->buildingQueuesCount >= $maxQueues) { + $this->context->buildViolation('La file d\'attente est pleine') + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/HasResourcesForBuilding.php b/src/Modules/Athena/Infrastructure/Validator/HasResourcesForBuilding.php new file mode 100644 index 000000000..afaaa37bd --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/HasResourcesForBuilding.php @@ -0,0 +1,9 @@ +getBase()->resourcesStorage < $this->getNeededResources($value)) { + $this->context + ->buildViolation('Cette base ne dispose pas de suffisamment de ressources') + ->addViolation(); + } + } + + public function __construct(private readonly OrbitalBaseHelper $orbitalBaseHelper) + { + } + + private function getNeededResources(BuildingConstructionOrder $buildingConstructionOrder): int + { + return $this->orbitalBaseHelper->getBuildingInfo( + $buildingConstructionOrder->getBuildingIdentifier(), + 'level', + $buildingConstructionOrder->getTargetLevel(), + 'resourcePrice', + ); + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/HasRightBaseType.php b/src/Modules/Athena/Infrastructure/Validator/HasRightBaseType.php new file mode 100644 index 000000000..2b69d2240 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/HasRightBaseType.php @@ -0,0 +1,10 @@ +getBase(); + $buildingId = $value->getBuildingIdentifier(); + $level = $value->getTargetLevel(); + + if (1 === $level && OrbitalBase::TYP_NEUTRAL === $orbitalBase->typeOfBase && in_array($buildingId, [OrbitalBaseResource::SPATIOPORT, OrbitalBaseResource::DOCK2])) { + $this->context + ->buildViolation('vous devez évoluer votre colonie pour débloquer ce bâtiment') + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/HasUnlockedBuilding.php b/src/Modules/Athena/Infrastructure/Validator/HasUnlockedBuilding.php new file mode 100644 index 000000000..f3391d3db --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/HasUnlockedBuilding.php @@ -0,0 +1,10 @@ +checkGeneratorRequirement($value); + $this->checkTechnologyRequirement($value); + } + + private function checkGeneratorRequirement(BuildingConstructionOrder $value): void + { + $neededGeneratorLevel = $this->buildingLevelHandler->getRequiredGeneratorLevel($value->getBuildingIdentifier()); + + if (!$neededGeneratorLevel > $value->getBase()->levelGenerator) { + $this->context->buildViolation('Le générateur n\'a pas le niveau requis') + ->addViolation(); + } + } + + private function checkTechnologyRequirement(BuildingConstructionOrder $buildingConstructionOrder): void + { + $data = OrbitalBaseResource::$building[$buildingConstructionOrder->getBuildingIdentifier()]; + + if (!array_key_exists('techno', $data)) { + return; + } + + + if (1 !== $buildingConstructionOrder->getTechnology()->getTechnology($data['techno'])) { + $this->context + ->buildViolation(sprintf( + 'il vous faut développer la technologie %s', + $this->technologyHelper->getInfo($data['techno'], 'name'), + )) + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/IsValidBuilding.php b/src/Modules/Athena/Infrastructure/Validator/IsValidBuilding.php new file mode 100644 index 000000000..7aec88137 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/IsValidBuilding.php @@ -0,0 +1,9 @@ +getBuildingIdentifier(), OrbitalBaseResource::BUILDINGS)) { + $this->context->buildViolation('Invalid building number') + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Infrastructure/Validator/IsValidTargetLevel.php b/src/Modules/Athena/Infrastructure/Validator/IsValidTargetLevel.php new file mode 100644 index 000000000..9af9c0f69 --- /dev/null +++ b/src/Modules/Athena/Infrastructure/Validator/IsValidTargetLevel.php @@ -0,0 +1,10 @@ +getBase(); + $buildingId = $value->getBuildingIdentifier(); + $level = $value->getTargetLevel(); + + if (OrbitalBaseResource::GENERATOR === $buildingId) { + if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$orbitalBase->typeOfBase]) { + $this->context + ->buildViolation('niveau maximum atteint') + ->addViolation(); + } + return; + } + $realGeneratorLevel = $this->buildingLevelHandler->getBuildingRealLevel( + $orbitalBase, + OrbitalBaseResource::GENERATOR, + $this->buildingQueueRepository->getBaseQueues($orbitalBase), + ); + $requiredGeneratorLevel = $this->buildingLevelHandler->getRequiredGeneratorLevel($buildingId); + + if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$orbitalBase->typeOfBase]) { + $this->context + ->buildViolation('niveau maximum atteint') + ->addViolation(); + } elseif ($level > ($realGeneratorLevel - $requiredGeneratorLevel)) { + $this->context + ->buildViolation('le niveau du générateur n\'est pas assez élevé') + ->addViolation(); + } + } +} diff --git a/src/Modules/Athena/Manager/BuildingQueueManager.php b/src/Modules/Athena/Manager/BuildingQueueManager.php new file mode 100644 index 000000000..7a23f651b --- /dev/null +++ b/src/Modules/Athena/Manager/BuildingQueueManager.php @@ -0,0 +1,34 @@ +buildingQueueRepository->getAll(); + + foreach ($buildingQueues as $buildingQueue) { + $this->messageBus->dispatch( + new BuildingQueueMessage($buildingQueue->id), + [DateTimeConverter::to_delay_stamp($buildingQueue->getEndDate())] + ); + } + } +} diff --git a/src/Modules/Athena/Manager/CommercialRouteManager.php b/src/Modules/Athena/Manager/CommercialRouteManager.php new file mode 100644 index 000000000..42b3a8c5e --- /dev/null +++ b/src/Modules/Athena/Manager/CommercialRouteManager.php @@ -0,0 +1,94 @@ +currentPlayerRegistry->get(); + $routes = $this->commercialRouteRepository->getBaseRoutes($orbitalBase); + // if (0 === count($routes)) { + // return []; + // } + + $nCRWaitingForOther = 0; + $nCRWaitingForMe = 0; + $nCROperational = 0; + $nCRInStandBy = 0; + $totalIncome = 0; + + foreach ($routes as $route) { + if ($route->isProposed() and $route->originBase->player->id == $currentPlayer->id) { + ++$nCRWaitingForOther; + } elseif ($route->isProposed() and $route->originBase->player->id != $currentPlayer->id) { + ++$nCRWaitingForMe; + } elseif ($route->isActive()) { + $totalIncome += $route->income; + ++$nCROperational; + } elseif ($route->isInStandBy()) { + ++$nCRInStandBy; + } + } + + return [ + 'waiting_for_me' => $nCRWaitingForMe, + 'waiting_for_other' => $nCRWaitingForOther, + 'operational' => $nCROperational, + 'stand_by' => $nCRInStandBy, + 'total' => $nCROperational + $nCRInStandBy + $nCRWaitingForOther, + 'total_income' => $totalIncome, + 'max' => $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::SPATIOPORT, + 'level', + $orbitalBase->levelSpatioport, + 'nbRoutesMax' + ), + ]; + } + + public function removeBaseRoutes(OrbitalBase $orbitalBase): void + { + $routes = $this->commercialRouteRepository->getBaseRoutes($orbitalBase); + + foreach ($routes as $route) { + $this->commercialRouteRepository->remove($route); + // @TODO notifications + } + } + + public function toggleRoutesFreeze(Color $faction, Color $otherFaction): void + { + $freeze = Color::ENEMY === $faction->relations[$otherFaction->identifier] + || Color::ENEMY === $otherFaction->relations[$faction->identifier]; + + $this->commercialRouteRepository->freezeRoutes($faction, $otherFaction, $freeze); + } +} diff --git a/src/Modules/Athena/Manager/CommercialShippingManager.php b/src/Modules/Athena/Manager/CommercialShippingManager.php new file mode 100644 index 000000000..c998411ba --- /dev/null +++ b/src/Modules/Athena/Manager/CommercialShippingManager.php @@ -0,0 +1,139 @@ +commercialShippingRepository->getMoving(); + + foreach ($shippings as $commercialShipping) { + $this->messageBus->dispatch( + new CommercialShippingMessage($commercialShipping->id), + [DateTimeConverter::to_delay_stamp($commercialShipping->arrivalDate)], + ); + } + } + + /** + * TODO: add more data and links in notifications. + */ + public function deliver( + CommercialShipping $commercialShipping, + Transaction|null $transaction, + OrbitalBase $destOB, + Commander|null $commander + ): void { + if (null !== $transaction && $transaction->isCompleted()) { + switch ($transaction->type) { + case Transaction::TYP_RESOURCE: + $this->orbitalBaseManager->increaseResources($destOB, $transaction->quantity, true); + + // notif pour l'acheteur + $notification = NotificationBuilder::new() + ->setTitle('Ressources reçues') + ->setContent(NotificationBuilder::paragraph( + 'Vous avez reçu les ', + $transaction->quantity, + ' ressources que vous avez achetées au marché.', + )) + ->for($destOB->player); + $this->notificationRepository->save($notification); + + break; + case Transaction::TYP_SHIP: + $destOB->addShips($transaction->identifier, $transaction->quantity); + + $pluralS = Format::plural($transaction->quantity); + $pluralX = Format::plural($transaction->quantity, 'x'); + // notif pour l'acheteur + $notification = NotificationBuilder::new() + ->setTitle('Vaisseau'.$pluralX.' reçu'.$pluralS) + ->setContent(NotificationBuilder::paragraph( + 'Vous avez reçu le', + $pluralS, + ' vaisseau', + $pluralX, + ' de type ', + ShipResource::getInfo($transaction->identifier, 'codeName'), + null === $commercialShipping->resourceTransported + ? ' que vous avez acheté au marché.' + : ' envoyé'.$pluralS.' par un marchand galactique.', + NotificationBuilder::divider(), + 1 === $transaction->quantity + ? 'Il a été ajouté à votre hangar.' + : 'Ils ont été ajoutés à votre hangar.', + )) + ->for($destOB->player); + $this->notificationRepository->save($notification); + break; + case Transaction::TYP_COMMANDER: + $commander->statement = Commander::RESERVE; + $commander->player = $destOB->player; + $commander->base = $destOB; + + // notif pour l'acheteur + $notification = NotificationBuilder::new() + ->setTitle('Commandant reçu') + ->setContent(NotificationBuilder::paragraph( + 'Le commandant ', + $commander->name, + ' que vous avez acheté au marché est bien arrivé.', + NotificationBuilder::divider(), + 'Il se trouve pour le moment dans votre école de commandement', + )) + ->for($destOB->player); + $this->notificationRepository->save($notification); + break; + default: + throw new \LogicException('type de transaction inconnue dans deliver()'); + } + + $commercialShipping->statement = CommercialShipping::ST_MOVING_BACK; + } elseif (null === $transaction && null === $commercialShipping->transaction && null !== $commercialShipping->resourceTransported) { + // resource sending + + $this->orbitalBaseManager->increaseResources($destOB, $commercialShipping->resourceTransported, true); + + // notif for the player who receive the resources + $notification = NotificationBuilder::new() + ->setTitle('Ressources reçues') + ->setContent(NotificationBuilder::paragraph( + 'Vous avez bien reçu les ', + $commercialShipping->resourceTransported, + ' ressources sur votre base orbitale ', + $destOB->name, + '.', + )) + ->for($destOB->player); + $this->notificationRepository->save($notification); + + $commercialShipping->statement = CommercialShipping::ST_MOVING_BACK; + } else { + throw new \RuntimeException('impossible de délivrer ce chargement'); + } + } +} diff --git a/src/Modules/Athena/Manager/OrbitalBaseManager.php b/src/Modules/Athena/Manager/OrbitalBaseManager.php new file mode 100644 index 000000000..6ace9e8ac --- /dev/null +++ b/src/Modules/Athena/Manager/OrbitalBaseManager.php @@ -0,0 +1,133 @@ + $movingCommanders + */ + public function getPlayerBasesCount(array $movingCommanders): int + { + $coloQuantity = \count(\array_filter( + $movingCommanders, + fn (Commander $commander) => CommanderMission::Colo === $commander->travelType, + )); + + return $coloQuantity + $this->currentPlayerBasesRegistry->count(); + } + + public function changeOwner(OrbitalBase $base, Player|null $newOwner): void + { + $baseCommanders = $this->commanderRepository->getBaseCommanders($base); + // changement de possesseur des offres du marché + $transactions = $this->transactionRepository->getBasePropositions($base); + + foreach ($transactions as $transaction) { + // change owner of transaction + $transaction->rPlayer = $newOwner; + + $commercialShipping = $this->commercialShippingRepository->getByTransaction($transaction); + // change owner of commercial shipping + $commercialShipping->player = $newOwner; + } + + // attribuer le rPlayer à la Base + $oldOwner = $base->player; + $base->player = $newOwner; + + // suppression des routes commerciales + $this->commercialRouteManager->removeBaseRoutes($base); + + // suppression des technologies en cours de développement + foreach ($this->technologyQueueRepository->getPlaceQueues($base->place) as $queue) { + $this->technologyQueueRepository->remove($queue); + } + + // suppression des missions de recyclages ainsi que des logs de recyclages + $this->recyclingMissionRepository->removeBaseMissions($base); + + // mise des investissements à 0 + $base->iSchool = 0; + $base->iAntiSpy = 0; + + // mise à jour de la date de création pour qu'elle soit dans l'ordre + $base->createdAt = new \DateTimeImmutable(); + // rendre déserteuses les flottes en voyage + foreach ($baseCommanders as $commander) { + if (in_array($commander->statement, [Commander::INSCHOOL, Commander::ONSALE, Commander::RESERVE])) { + $commander->player = $newOwner; + } elseif ($commander->isMoving()) { + // TODO replace "prise en vol" + $this->commanderManager->endTravel($commander, Commander::RETIRED); + // @TODO handle cancellation + // $this->realtimeActionScheduler->cancel($commander, $commander->getArrivalDate()); + } else { + $commander->statement = Commander::DEAD; + } + } + + $this->eventDispatcher->dispatch(new BaseOwnerChangeEvent($base, $oldOwner)); + + $this->entityManager->flush(); + } + + public function increaseResources( + OrbitalBase $orbitalBase, + int $resources, + bool $persist = true + ): void { + $orbitalBase->resourcesStorage = min( + $orbitalBase->resourcesStorage + $resources, + ($this->getMaxStorage)(base: $orbitalBase, offLimits: true), + ); + + if (true === $persist) { + $this->orbitalBaseRepository->save($orbitalBase); + } + } + + public function decreaseResources(OrbitalBase $orbitalBase, int $resources): void + { + $orbitalBase->resourcesStorage = max($orbitalBase->resourcesStorage - $resources, 0); + + $this->orbitalBaseRepository->save($orbitalBase); + } +} diff --git a/src/Modules/Athena/Manager/RecyclingMissionManager.php b/src/Modules/Athena/Manager/RecyclingMissionManager.php new file mode 100644 index 000000000..d063f55e3 --- /dev/null +++ b/src/Modules/Athena/Manager/RecyclingMissionManager.php @@ -0,0 +1,42 @@ +recyclingMissionRepository->getAll(); + + foreach ($missions as $mission) { + $this->messageBus->dispatch( + new RecyclingMissionMessage($mission->id), + [DateTimeConverter::to_delay_stamp($mission->endedAt)], + ); + } + } + + public function add(RecyclingMission $recyclingMission): void + { + $this->recyclingMissionRepository->save($recyclingMission); + + $this->messageBus->dispatch( + new RecyclingMissionMessage($recyclingMission->id), + [DateTimeConverter::to_delay_stamp($recyclingMission->endedAt)] + ); + } +} diff --git a/src/Modules/Athena/Manager/ShipQueueManager.php b/src/Modules/Athena/Manager/ShipQueueManager.php new file mode 100644 index 000000000..a1afdded7 --- /dev/null +++ b/src/Modules/Athena/Manager/ShipQueueManager.php @@ -0,0 +1,31 @@ +shipQueueRepository->getAll(); + + foreach ($queues as $queue) { + $this->messageBus->dispatch(new ShipQueueMessage($queue->id), [DateTimeConverter::to_delay_stamp($queue->getEndDate())]); + } + } +} diff --git a/src/Modules/Athena/Manager/TransactionManager.php b/src/Modules/Athena/Manager/TransactionManager.php new file mode 100644 index 000000000..50459fd08 --- /dev/null +++ b/src/Modules/Athena/Manager/TransactionManager.php @@ -0,0 +1,82 @@ +type, $transaction->quantity, $transaction->identifier, $transaction->price), 3); + if (null !== $currentRate) { + $rate = round(Game::calculateRate($transaction->type, $transaction->quantity, $transaction->identifier, $transaction->price) / $currentRate * 100); + } + $transactionSystem = $transaction->base->place->system; + $baseSystem = $ob->place->system; + + $departureDate = new \DateTimeImmutable(); + $arrivalDate = ($this->getTravelDuration)( + origin: $transaction->base->place, + destination: $ob->place, + departureDate: $departureDate, + travelType: TravelType::CommercialShipping, + player: $transaction->player, + ); + $time = $this->durationHandler->getDiff($departureDate, $arrivalDate); + + $transactionFaction = $transactionSystem->sector->faction; + $baseFaction = $baseSystem->sector->faction; + + $transactionFactionTax = $this->commercialTaxRepository->getFactionsTax($transactionFaction, $baseFaction); + $exportTax = $transactionFactionTax->exportTax; + $exportFaction = $transactionFactionTax->faction; + + $baseFactionTax = $this->commercialTaxRepository->getFactionsTax($baseFaction, $transactionFaction); + $importTax = $baseFactionTax->importTax; + $importFaction = $baseFactionTax->faction; + + $exportPrice = PercentageApplier::toInt($transaction->price, $exportTax); + $importPrice = PercentageApplier::toInt($transaction->price, $importTax); + + return [ + 'export_price' => $exportPrice, + 'export_tax' => $exportTax, + 'export_faction' => $exportFaction, + 'import_price' => $importPrice, + 'import_tax' => $importTax, + 'import_faction' => $importFaction, + 'total_price' => $transaction->price + $exportPrice + $importPrice, + 'time' => $time, + 'rate' => $rate ?? null, + ]; + } +} diff --git a/src/Modules/Athena/Message/Base/BaseUpdateMessage.php b/src/Modules/Athena/Message/Base/BaseUpdateMessage.php new file mode 100644 index 000000000..43d2f3475 --- /dev/null +++ b/src/Modules/Athena/Message/Base/BaseUpdateMessage.php @@ -0,0 +1,15 @@ +buildingQueueId; + } +} diff --git a/src/Modules/Athena/Message/RecyclingMissionMessage.php b/src/Modules/Athena/Message/RecyclingMissionMessage.php new file mode 100644 index 000000000..cfb879a08 --- /dev/null +++ b/src/Modules/Athena/Message/RecyclingMissionMessage.php @@ -0,0 +1,18 @@ +recyclingMissionId; + } +} diff --git a/src/Modules/Athena/Message/Ship/ShipQueueMessage.php b/src/Modules/Athena/Message/Ship/ShipQueueMessage.php new file mode 100644 index 000000000..2a9bc3ebb --- /dev/null +++ b/src/Modules/Athena/Message/Ship/ShipQueueMessage.php @@ -0,0 +1,18 @@ +shipQueueId; + } +} diff --git a/src/Modules/Athena/Message/Trade/CommercialShippingMessage.php b/src/Modules/Athena/Message/Trade/CommercialShippingMessage.php new file mode 100644 index 000000000..71fd47ae5 --- /dev/null +++ b/src/Modules/Athena/Message/Trade/CommercialShippingMessage.php @@ -0,0 +1,18 @@ +commercialShippingId; + } +} diff --git a/src/Modules/Athena/Model/BuildingQueue.php b/src/Modules/Athena/Model/BuildingQueue.php new file mode 100644 index 000000000..7d749f3aa --- /dev/null +++ b/src/Modules/Athena/Model/BuildingQueue.php @@ -0,0 +1,35 @@ +startedAt; + } + + public function getEndDate(): \DateTimeImmutable + { + return $this->endedAt ?? throw new \RuntimeException('Ending date cannot be null'); + } + + public function getResourceIdentifier(): int + { + return $this->buildingNumber; + } +} diff --git a/src/Modules/Athena/Model/CommercialRoute.php b/src/Modules/Athena/Model/CommercialRoute.php new file mode 100644 index 000000000..d096c5856 --- /dev/null +++ b/src/Modules/Athena/Model/CommercialRoute.php @@ -0,0 +1,45 @@ +statement; + } + + public function isActive(): bool + { + return self::ACTIVE === $this->statement; + } + + public function isInStandBy(): bool + { + return self::STANDBY === $this->statement; + } +} diff --git a/src/Modules/Athena/Model/CommercialShipping.php b/src/Modules/Athena/Model/CommercialShipping.php new file mode 100644 index 000000000..1d7e4ba31 --- /dev/null +++ b/src/Modules/Athena/Model/CommercialShipping.php @@ -0,0 +1,82 @@ +transaction) + ? Transaction::TYP_RESOURCE === $this->transaction->type + : $this->resourceTransported > 0; + } + + public function hasShips(): bool + { + // Ships sending actually creates a Transaction entity for now + return (null !== $this->transaction) + ? Transaction::TYP_SHIP === $this->transaction->type + : false; + } + + public function hasCommander(): bool + { + // Commander sending without transaction is not implemented + return (null !== $this->transaction) + ? Transaction::TYP_COMMANDER === $this->transaction->type + : false; + } + + public function isMoving(): bool + { + return self::ST_GOING === $this->statement; + } + + public function isMovingBack(): bool + { + return self::ST_MOVING_BACK === $this->statement; + } + + public function isWaiting(): bool + { + return self::ST_WAITING === $this->statement; + } + + public function getDepartureDate(): \DateTimeImmutable|null + { + return $this->departureDate; + } + + public function getArrivalDate(): \DateTimeImmutable|null + { + return $this->arrivalDate; + } +} diff --git a/src/Modules/Athena/Model/CommercialTax.php b/src/Modules/Athena/Model/CommercialTax.php new file mode 100644 index 000000000..c6f1dc0d1 --- /dev/null +++ b/src/Modules/Athena/Model/CommercialTax.php @@ -0,0 +1,28 @@ +shipStorage + array_fill(0, 12, 0); + } + + public function isCapital(): bool + { + return self::TYP_CAPITAL === $this->typeOfBase; + } + + public function isMilitaryBase(): bool + { + return self::TYP_MILITARY === $this->typeOfBase; + } + + public function isCommercialBase(): bool + { + return self::TYP_COMMERCIAL === $this->typeOfBase; + } + + public function isColony(): bool + { + return self::TYP_NEUTRAL === $this->typeOfBase; + } + + public function addShips(int $shipIdentifier, int $quantity): void + { + $currentQuantity = $this->shipStorage[$shipIdentifier] ?? 0; + + $this->shipStorage[$shipIdentifier] = $currentQuantity + $quantity; + } + + public function removeShips(int $shipIdentifier, int $quantity): void + { + $currentQuantity = $this->shipStorage[$shipIdentifier] ?? 0; + + $this->shipStorage[$shipIdentifier] = $currentQuantity - $quantity; + + if ($this->shipStorage[$shipIdentifier] <= 0) { + $this->shipStorage[$shipIdentifier] = 0; + } + } + + public function getBuildingLevel(int $key): int + { + return match ($key) { + OrbitalBaseResource::GENERATOR => $this->levelGenerator, + OrbitalBaseResource::REFINERY => $this->levelRefinery, + OrbitalBaseResource::DOCK1 => $this->levelDock1, + OrbitalBaseResource::DOCK2 => $this->levelDock2, + OrbitalBaseResource::DOCK3 => $this->levelDock3, + OrbitalBaseResource::TECHNOSPHERE => $this->levelTechnosphere, + OrbitalBaseResource::COMMERCIAL_PLATEFORME => $this->levelCommercialPlateforme, + OrbitalBaseResource::STORAGE => $this->levelStorage, + OrbitalBaseResource::RECYCLING => $this->levelRecycling, + OrbitalBaseResource::SPATIOPORT => $this->levelSpatioport, + }; + } + + public function setBuildingLevel(int $key, int $level): static + { + match ($key) { + OrbitalBaseResource::GENERATOR => $this->levelGenerator = $level, + OrbitalBaseResource::REFINERY => $this->levelRefinery = $level, + OrbitalBaseResource::DOCK1 => $this->levelDock1 = $level, + OrbitalBaseResource::DOCK2 => $this->levelDock2 = $level, + OrbitalBaseResource::DOCK3 => $this->levelDock3 = $level, + OrbitalBaseResource::TECHNOSPHERE => $this->levelTechnosphere = $level, + OrbitalBaseResource::COMMERCIAL_PLATEFORME => $this->levelCommercialPlateforme = $level, + OrbitalBaseResource::STORAGE => $this->levelStorage = $level, + OrbitalBaseResource::RECYCLING => $this->levelRecycling = $level, + OrbitalBaseResource::SPATIOPORT => $this->levelSpatioport = $level, + }; + + return $this; + } + + public function lastUpdatedBySystemAt(): \DateTimeImmutable + { + return $this->updatedAt; + } + + public function jsonSerialize(): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + ]; + } +} diff --git a/src/Modules/Athena/Model/RecyclingLog.php b/src/Modules/Athena/Model/RecyclingLog.php new file mode 100644 index 000000000..1b9ae8a6d --- /dev/null +++ b/src/Modules/Athena/Model/RecyclingLog.php @@ -0,0 +1,30 @@ +statement = static::ST_BEING_DELETED; + } + + public function stop(): void + { + $this->statement = static::ST_DELETED; + } + + public function isActive(): bool + { + return static::ST_ACTIVE === $this->statement; + } + + public function isBeingDeleted(): bool + { + return static::ST_BEING_DELETED === $this->statement; + } + + public function isDeleted(): bool + { + return static::ST_DELETED === $this->statement; + } +} diff --git a/src/Modules/Athena/Model/ShipQueue.php b/src/Modules/Athena/Model/ShipQueue.php new file mode 100644 index 000000000..91d8f0c97 --- /dev/null +++ b/src/Modules/Athena/Model/ShipQueue.php @@ -0,0 +1,44 @@ +startedAt; + } + + public function getEndDate(): \DateTimeImmutable + { + return $this->endedAt ?? throw new \RuntimeException('Ending date cannot be null'); + } + + public function getResourceIdentifier(): int + { + return $this->shipNumber; + } +} diff --git a/src/Modules/Athena/Model/Transaction.php b/src/Modules/Athena/Model/Transaction.php new file mode 100644 index 000000000..0fe75a0bf --- /dev/null +++ b/src/Modules/Athena/Model/Transaction.php @@ -0,0 +1,154 @@ + resource + // if ($type == TYP_SHIP) --> ship quantity + // if ($type == TYP_COMMANDER) --> experience + public int $identifier, // if ($type == TYP_RESOURCE) --> NULL + // if ($type == TYP_SHIP) --> shipId + // if ($type == TYP_COMMANDER) --> rCommander + public \DateTimeImmutable $publishedAt, + public float $currentRate, + #[Assert\Expression( + "this.type == " . self::TYP_COMMANDER . " and value == null", + message: 'A commander transaction must have a commander set', + )] + public Commander|null $commander = null, + public Player|null $buyer = null, + public int $sellerFactionFees = 0, + public int $sellerFactionTaxRate = 0, + public int $buyerFactionFees = 0, + public int $buyerFactionTaxRate = 0, + public int $price = 0, + public int $commercialShipQuantity = 0, // ship needed for the transport + public int $statement = 0, + public \DateTimeImmutable|null $validatedAt = null, + // date of acceptance or cancellation + // 1 resource = x credits (for resources et ships) + // 1 experience = x credits + ) { + } + + public function getPriceToCancelOffer(): int + { + return intval(floor($this->price * self::PERCENTAGE_TO_CANCEL / 100)); + } + + public function getExperienceEarned(): int + { + return 1 + intval(round($this->price / self::EXPERIENCE_DIVIDER)); + } + + public static function getResourcesIcon(int $quantity): int + { + if (1000000 <= $quantity && $quantity < 5000000) { + return 5; + } elseif (500000 <= $quantity && $quantity < 1000000) { + return 4; + } elseif (100000 <= $quantity && $quantity < 500000) { + return 3; + } elseif (10000 <= $quantity && $quantity < 100000) { + return 2; + } else { + return 1; + } + } + + public function hasResources(): bool + { + return self::TYP_RESOURCE === $this->type; + } + + public function hasShips(): bool + { + return self::TYP_SHIP === $this->type; + } + + public function hasCommander(): bool + { + return self::TYP_COMMANDER === $this->type; + } + + public function isProposed(): bool + { + return self::ST_PROPOSED === $this->statement; + } + + public function isCompleted(): bool + { + return self::ST_COMPLETED === $this->statement; + } + + public function isCancelled(): bool + { + return self::ST_CANCELED === $this->statement; + } + + public function getTotalPrice(): int + { + return $this->price + $this->sellerFactionFees + $this->buyerFactionFees; + } + + public function getTypeString(): string + { + return match ($this->type) { + self::TYP_RESOURCE => 'resources', + self::TYP_SHIP => 'ship', + self::TYP_COMMANDER => 'commander', + }; + } + + public function jsonSerialize(): array + { + return [ + 'id' => $this->id, + 'statement' => $this->statement, + 'player' => $this->player, + 'base' => $this->base, + 'type' => $this->type, + 'quantity' => $this->quantity, + 'identifier' => $this->identifier, + 'commander' => $this->commander, + 'publishedAt' => $this->publishedAt, + 'currentRate' => $this->currentRate, + ]; + } +} diff --git a/src/Modules/Athena/Repository/BuildingQueueRepository.php b/src/Modules/Athena/Repository/BuildingQueueRepository.php new file mode 100644 index 000000000..0db74d19b --- /dev/null +++ b/src/Modules/Athena/Repository/BuildingQueueRepository.php @@ -0,0 +1,39 @@ +find($id); + } + + public function getBaseQueues(OrbitalBase $orbitalBase): array + { + return $this->findBy([ + 'base' => $orbitalBase, + ], [ + 'startedAt' => 'ASC', + ]); + } + + public function getAll(): array + { + return $this->findAll(); + } +} diff --git a/src/Modules/Athena/Repository/CommercialRouteRepository.php b/src/Modules/Athena/Repository/CommercialRouteRepository.php new file mode 100644 index 000000000..02d04a86e --- /dev/null +++ b/src/Modules/Athena/Repository/CommercialRouteRepository.php @@ -0,0 +1,365 @@ +find($id); + } + + public function searchCandidates(Player $player, OrbitalBase $orbitalBase, array $factions, int $minDistance, int $maxDistance): array + { + $factionIdentifiers = sprintf("(%s)", implode(',', $factions)); + + return array_map( + fn (array $data) => array_merge($data, ['placeId' => Uuid::fromBinary($data['placeId'])]), + $this->getEntityManager()->getConnection()->fetchAllAssociative( + << 0 + AND (FLOOR(SQRT(POW(:system_x - s.xPosition, 2) + POW(:system_y - s.yPosition, 2)))) >= :min_distance + AND (FLOOR(SQRT(POW(:system_x - s.xPosition, 2) + POW(:system_y - s.yPosition, 2)))) <= :max_distance + AND faction.identifier IN $factionIdentifiers + ORDER BY distance DESC + LIMIT 40 + SQL, + [ + 'system_x' => $orbitalBase->place->system->xPosition, + 'system_y' => $orbitalBase->place->system->yPosition, + 'player_id' => $player->id, + 'min_distance' => $minDistance, + 'max_distance' => $maxDistance, + ], + ), + ); + } + + /** + * @throws Exception + */ + public function getAllPlayerRoutes(Player $player): array + { + $qb = $this->createQueryBuilder('cr'); + + $qb + ->select() + ->leftJoin('cr.originBase', 'ob') + ->join('ob.place', 'obp') + ->leftJoin('cr.destinationBase', 'db') + ->join('db.place', 'dbp') + ->where('db.player = :player') + ->orWhere('ob.player = :player') + ->setParameter('player', $player); + + return $qb->getQuery()->getResult(); + } + + /** + * @throws Exception + */ + public function countCommercialRoutesBetweenFactions(Color $faction, Color $otherFaction): int + { + $qb = $this->createQueryBuilder('cr'); + + $qb->select('COUNT(cr.id)') + ->join('cr.originBase', 'ob1') + ->join('ob1.player', 'p1') + ->join('cr.destinationBase', 'ob2') + ->join('ob2.player', 'p2') + ->where($qb->expr()->orX( + $qb->expr()->andX( + $qb->expr()->eq('p1.faction', ':faction'), + $qb->expr()->eq('p2.faction', ':other_faction'), + ), + $qb->expr()->andX( + $qb->expr()->eq('p1.faction', ':other_faction'), + $qb->expr()->eq('p2.faction', ':faction'), + ), + )) + ->andWhere('cr.statement = :statement') + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('other_faction', $otherFaction->id, UuidType::NAME) + ->setParameter('statement', CommercialRoute::ACTIVE) + ; + + return $qb->getQuery()->getSingleScalarResult(); + } + + public function getCommercialRouteFactionData(Color $faction): array + { + $qb = $this->createQueryBuilder('cr'); + + $qb->select( + 'COUNT(cr.id) AS nb', + 'SUM(cr.income) AS income', + ) + ->join('cr.originBase', 'ob1') + ->join('ob1.player', 'p1') + ->join('cr.destinationBase', 'ob2') + ->join('ob2.player', 'p2') + ->where($qb->expr()->orX( + $qb->expr()->eq('p1.faction', ':faction'), + $qb->expr()->eq('p2.faction', ':faction'), + )) + ->andWhere('cr.statement = :statement') + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('statement', CommercialRoute::ACTIVE) + ; + + return $qb->getQuery()->getSingleResult(); + } + + public function getInternalCommercialRouteFactionData(Color $faction): array + { + $qb = $this->createQueryBuilder('cr'); + + $qb->select( + 'COUNT(cr.id) AS nb', + 'SUM(cr.income) AS income', + ) + ->join('cr.originBase', 'ob1') + ->join('ob1.player', 'p1') + ->join('cr.destinationBase', 'ob2') + ->join('ob2.player', 'p2') + ->where($qb->expr()->andX( + $qb->expr()->eq('p1.faction', ':faction'), + $qb->expr()->eq('p2.faction', ':faction'), + )) + ->andWhere('cr.statement = :statement') + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('statement', CommercialRoute::ACTIVE) + ; + + return $qb->getQuery()->getSingleResult(); + } + + public function getByIdAndBase(Uuid $id, OrbitalBase $base): CommercialRoute|null + { + return $this->findOneBy([ + 'id' => $id, + 'originBase' => $base, + ]); + } + + public function getByIdAndDistantBase(Uuid $id, OrbitalBase $base): CommercialRoute|null + { + return $this->findOneBy([ + 'id' => $id, + 'destinationBase' => $base, + ]); + } + + /** + * @return list + */ + public function getByBase(OrbitalBase $base): array + { + return $this->findBy([ + 'originBase' => $base, + ]); + } + + /** + * @return list + */ + public function getByDistantBase(OrbitalBase $base): array + { + return $this->findBy([ + 'destinationBase' => $base, + ]); + } + + public function getBaseRoutes(OrbitalBase $base): array + { + $qb = $this->createQueryBuilder('cr'); + + return $qb + ->where($this->getBaseEndpointsExpr($qb)) + ->setParameter('base', $base->id, UuidType::NAME) + ->getQuery() + ->getResult(); + } + + public function getExistingRoute(OrbitalBase $base, OrbitalBase $distantBase): CommercialRoute|null + { + $qb = $this->createQueryBuilder('cr'); + + return $qb + ->where($this->getBoundBasesStatement($qb)) + ->setParameter('base', $base) + ->setParameter('distant_base', $distantBase) + ->getQuery() + ->getOneOrNullResult(); + } + + /** + * @throws NonUniqueResultException + * @throws NoResultException + */ + public function getBaseIncome(OrbitalBase $base): int + { + $qb = $this->createQueryBuilder('cr'); + + $qb + ->select('SUM(cr.income) AS total_income') + ->where( + $qb->expr()->andX( + $this->getBaseEndpointsExpr($qb), + $qb->expr()->eq('cr.statement', CommercialRoute::ACTIVE), + ), + ) + ->setParameter('base', $base->id, UuidType::NAME); + + return intval($qb->getQuery()->getSingleScalarResult() ?? 0); + } + + /** + * @throws NonUniqueResultException + * @throws NoResultException + */ + public function countBaseRoutes(Orbitalbase $base, array $statements = []): int + { + $qb = $this->createQueryBuilder('cr'); + + $qb + ->select('COUNT(cr.id) AS nb_routes') + ->where( + $qb->expr()->andX( + $this->getBaseEndpointsExpr($qb), + ([] !== $statements) ? $qb->expr()->in('cr.statement', $statements) : null, + ), + ) + ->setParameter('base', $base->id, UuidType::NAME); + + return intval($qb->getQuery()->getSingleScalarResult() ?? 0); + } + + public function freezeRoutes(Color $faction, Color $otherFaction, bool $freeze): void + { + $qb = $this->createQueryBuilder('cr'); + + $subQuery = $this->getEntityManager()->createQueryBuilder(); + $subQuery + ->select('cr.id') + ->from(CommercialRoute::class, 'cr') + ->leftJoin('cr.originBase', 'ob1') + ->leftJoin('ob1.player', 'pl1') + ->leftJoin('cr.destinationBase', 'ob2') + ->leftJoin('ob2.player', 'pl2') + ->where($subQuery->expr()->andX( + $subQuery->expr()->orX( + $subQuery->expr()->andX( + $subQuery->expr()->eq('pl1.faction', ':faction'), + $subQuery->expr()->eq('pl2.faction', ':other_faction'), + ), + $subQuery->expr()->andX( + $subQuery->expr()->eq('pl1.faction', ':other_faction'), + $subQuery->expr()->eq('pl2.faction', ':faction'), + ), + ), + $subQuery->expr()->eq( + 'cr.statement', + (true === $freeze) ? CommercialRoute::ACTIVE : CommercialRoute::STANDBY, + ), + )) + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('other_faction', $otherFaction->id, UuidType::NAME) + ; + + $qb + ->update(CommercialRoute::class, 'commercial_route') + ->set('commercial_route.statement', (true === $freeze) ? CommercialRoute::STANDBY : CommercialRoute::ACTIVE) + ->where($qb->expr()->in('commercial_route.id', $subQuery->getDQL())) + ->getQuery()->execute([ + 'faction' => $faction, + 'other_faction' => $otherFaction, + ]); + } + + public function getPlayerConstructedRoutesSince(Player $player, \DateTimeImmutable $since): array + { + + $qb = $this->createQueryBuilder('cr'); + + $qb + ->select() + ->leftJoin('cr.originBase', 'ob') + ->join('ob.place', 'obp') + ->leftJoin('cr.destinationBase', 'db') + ->join('db.place', 'dbp') + ->where($qb->expr()->orX( + $qb->expr()->andX( + 'db.player = :player', + $qb->expr()->gte('cr.acceptedAt', ':since'), + ), + $qb->expr()->andX( + 'ob.player = :player', + $qb->expr()->gte('cr.proposedAt', ':since'), + ), + )) + ->setParameter('player', $player) + ->setParameter('since', $since); + + return $qb->getQuery()->getResult(); + } + + private function getBoundBasesStatement(QueryBuilder $qb): Expr\Orx + { + return $qb->expr()->orX( + $qb->expr()->andX( + $qb->expr()->eq('cr.originBase', ':base'), + $qb->expr()->eq('cr.destinationBase', ':distant_base'), + ), + $qb->expr()->andX( + $qb->expr()->eq('cr.originBase', ':distant_base'), + $qb->expr()->eq('cr.destinationBase', ':base'), + ), + ); + } + + private function getBaseEndpointsExpr(QueryBuilder $qb): Expr\Orx + { + return $qb->expr()->orX( + $qb->expr()->eq('cr.originBase', ':base'), + $qb->expr()->eq('cr.destinationBase', ':base'), + ); + } +} diff --git a/src/Modules/Athena/Repository/CommercialShippingRepository.php b/src/Modules/Athena/Repository/CommercialShippingRepository.php new file mode 100644 index 000000000..19272b01d --- /dev/null +++ b/src/Modules/Athena/Repository/CommercialShippingRepository.php @@ -0,0 +1,64 @@ +find($id); + } + + public function getByTransaction(Transaction $transaction): CommercialShipping|null + { + return $this->findOneBy([ + 'transaction' => $transaction, + ]); + } + + public function getAll(): array + { + return $this->findAll(); + } + + public function getMoving(): array + { + return $this->findBy([ + 'statement' => [CommercialShipping::ST_GOING, CommercialShipping::ST_MOVING_BACK], + ]); + } + + public function getByBase(OrbitalBase $orbitalBase): array + { + $qb = $this->createQueryBuilder('cs'); + + return $qb + ->innerJoin('cs.transaction', 't') + ->where( + $qb->expr()->orX( + $qb->expr()->eq('cs.originBase', ':base'), + $qb->expr()->eq('cs.destinationBase', ':base'), + ), + ) + ->addOrderBy('t.publishedAt', 'DESC') + ->setParameter('base', $orbitalBase->id, UuidType::NAME) + ->getQuery() + ->getResult(); + } +} diff --git a/src/Modules/Athena/Repository/CommercialTaxRepository.php b/src/Modules/Athena/Repository/CommercialTaxRepository.php new file mode 100644 index 000000000..a356e9504 --- /dev/null +++ b/src/Modules/Athena/Repository/CommercialTaxRepository.php @@ -0,0 +1,50 @@ +findOneBy([ + 'faction' => $faction, + 'relatedFaction' => $relatedFaction, + ]) ?? throw new NoResultException(); + } + + + public function getFactionTaxesByImport(Color $faction): array + { + return $this->findBy([ + 'faction' => $faction, + ], [ + 'importTax' => 'ASC', + ]); + } + + public function getFactionTaxesByExport(Color $faction): array + { + return $this->findBy([ + 'faction' => $faction, + ], [ + 'exportTax' => 'ASC', + ]); + } +} diff --git a/src/Modules/Athena/Repository/OrbitalBaseRepository.php b/src/Modules/Athena/Repository/OrbitalBaseRepository.php new file mode 100644 index 000000000..acdbbc509 --- /dev/null +++ b/src/Modules/Athena/Repository/OrbitalBaseRepository.php @@ -0,0 +1,81 @@ +find($id); + } + + public function getBySpecification(SelectorSpecification $specification): array + { + $qb = $this->createQueryBuilder('ob'); + + $qb->join('ob.player', 'p'); + + $specification->addMatchingCriteria($qb); + + return $qb->getQuery()->getResult(); + } + + public function getPlayerBases(Player $player): array + { + return $this->findBy([ + 'player' => $player, + ], [ + 'createdAt' => 'ASC', + ]); + } + + public function getPlayerBasesCount(Player $player): int + { + return $this->count([ + 'player' => $player, + ]); + } + + public function getSectorBases(Sector $sector): array + { + $qb = $this->createQueryBuilder('ob'); + + return $qb + ->join('ob.place', 'place') + ->join('place.system', 'system') + ->where('system.sector = :sector') + ->setParameter('sector', $sector->id, UuidType::NAME) + ->getQuery() + ->getResult(); + } + + public function getSystemBases(System $system): array + { + $qb = $this->createQueryBuilder('ob'); + + return $qb + ->join('ob.place', 'place') + ->where('place.system = :system') + ->setParameter('system', $system->id, UuidType::NAME) + ->getQuery() + ->getResult(); + } +} diff --git a/src/Modules/Athena/Repository/RecyclingLogRepository.php b/src/Modules/Athena/Repository/RecyclingLogRepository.php new file mode 100644 index 000000000..0b19cc9d4 --- /dev/null +++ b/src/Modules/Athena/Repository/RecyclingLogRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('rl'); + + $qb + ->join('rl.mission', 'rm') + ->where('rm.base = :base') + ->setParameter('base', $base->id, UuidType::NAME) + ->orderBy('rl.createdAt', 'DESC'); + + return $qb->getQuery()->getResult(); + } + + public function getPlayerRecycledCreditsSince(Player $player, \DateTimeImmutable $since): int + { + $qb = $this->createQueryBuilder('rl'); + + $qb + ->select('SUM(rl.credits)') + ->join('rl.mission', 'rm') + ->join('rm.base', 'ob') + ->where('ob.player = :player') + ->andWhere($qb->expr()->gte('rl.createdAt', ':since')) + ->setParameter('player', $player->id) + ->setParameter('since', $since); + + return intval($qb->getQuery()->getSingleScalarResult()); + } +} diff --git a/src/Modules/Athena/Repository/RecyclingMissionRepository.php b/src/Modules/Athena/Repository/RecyclingMissionRepository.php new file mode 100644 index 000000000..fb5efce0b --- /dev/null +++ b/src/Modules/Athena/Repository/RecyclingMissionRepository.php @@ -0,0 +1,55 @@ +find($id); + } + + public function getAll(): array + { + return $this->findAll(); + } + + public function getBaseMissions(OrbitalBase $base): array + { + return $this->findBy(['base' => $base]); + } + + public function getBaseActiveMissions(OrbitalBase $base): array + { + return $this->findBy([ + 'base' => $base, + 'statement' => [RecyclingMission::ST_ACTIVE, RecyclingMission::ST_BEING_DELETED], + ]); + } + + public function removeBaseMissions(OrbitalBase $base): void + { + $qb = $this->createQueryBuilder('rm'); + + $qb + ->delete() + ->where('rm.base = :base') + ->setParameter('base', $base); + + $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Athena/Repository/ShipQueueRepository.php b/src/Modules/Athena/Repository/ShipQueueRepository.php new file mode 100644 index 000000000..0df2a0b73 --- /dev/null +++ b/src/Modules/Athena/Repository/ShipQueueRepository.php @@ -0,0 +1,47 @@ +find($id); + } + + public function getAll(): array + { + return $this->findAll(); + } + + public function getBaseQueues(OrbitalBase $base): array + { + return $this->findBy([ + 'base' => $base, + ]); + } + + public function getByBaseAndDockType(OrbitalBase $base, int $dockType): array + { + return $this->findBy([ + 'base' => $base, + 'dockType' => $dockType, + ], [ + 'startedAt' => 'ASC', + ]); + } +} diff --git a/src/Modules/Athena/Repository/TransactionRepository.php b/src/Modules/Athena/Repository/TransactionRepository.php new file mode 100644 index 000000000..838b38d81 --- /dev/null +++ b/src/Modules/Athena/Repository/TransactionRepository.php @@ -0,0 +1,105 @@ +find($id); + } + + public function getLastCompletedTransaction(int $type): Transaction|null + { + return $this->findOneBy( + [ + 'type' => $type, + 'statement' => Transaction::ST_COMPLETED, + ], + [ + 'validatedAt' => 'DESC', + ], + ); + } + + public function getProposedTransactions(int $type): array + { + $qb = $this->createQueryBuilder('t'); + + $qb + ->join('t.player', 'p') + ->where($qb->expr()->andX( + $qb->expr()->neq('p.statement', Player::DEAD), + $qb->expr()->eq('t.statement', Transaction::ST_PROPOSED), + $qb->expr()->eq('t.type', $type), + )) + ->orderBy('t.publishedAt', 'DESC') + ->setMaxResults(20) + ; + + return $qb->getQuery()->getResult(); + } + + public function getPlayerPropositions(Player $player, int $type): array + { + return $this->findBy([ + 'player' => $player, + 'type' => $type, + 'statement' => Transaction::ST_PROPOSED, + ]); + } + + public function getBasePropositions(OrbitalBase $base): array + { + return $this->findBy([ + 'base' => $base, + 'statement' => Transaction::ST_PROPOSED, + ]); + } + + public function getExchangeRate(int $type): float + { + $qb = $this->createQueryBuilder('t'); + + $qb->select('t.currentRate') + ->where('t.type = :type') + ->andWhere('t.statement = :statement') + ->orderBy('t.validatedAt', 'DESC') + ->setMaxResults(1) + ->setParameter('type', $type) + ->setParameter('statement', Transaction::ST_COMPLETED); + + return $qb->getQuery()->getSingleScalarResult(); + } + + public function matchPlayerCompletedTransactionsSince(Player $player, \DateTimeImmutable $completedAt): Collection + { + return $this->matching(new Criteria( + Criteria::expr()->andX( + Criteria::expr()->orX( + Criteria::expr()->eq('player', $player), + Criteria::expr()->eq('buyer', $player), + ), + Criteria::expr()->eq('statement', Transaction::ST_COMPLETED), + Criteria::expr()->gte('validatedAt', $completedAt), + ) + )); + } +} diff --git a/src/Modules/Athena/Resource/OrbitalBaseResource.php b/src/Modules/Athena/Resource/OrbitalBaseResource.php new file mode 100644 index 000000000..d8a2670ad --- /dev/null +++ b/src/Modules/Athena/Resource/OrbitalBaseResource.php @@ -0,0 +1,486 @@ + + **/ + public const BUILDINGS = [ + self::GENERATOR, + self::REFINERY, + self::DOCK1, + self::DOCK2, + self::TECHNOSPHERE, + self::COMMERCIAL_PLATEFORME, + self::STORAGE, + self::RECYCLING, + self::SPATIOPORT, + ]; + + /** + * pegase = 0, satyre = 1, chimere = 2, sirene = 3, dryade = 4 and meduse = 5. + * @var list $dock1Ships + **/ + public static array $dock1Ships = [0, 1, 2, 3, 4, 5]; + + /** + * griffon = 6, cyclope = 7, minotaure = 8, hydre = 9, cerbere = 10, phenix = 11. + * @var list $dock2Ships + **/ + public static array $dock2Ships = [6, 7, 8, 9, 10, 11]; + + /** + * motherShip1 = 12, motherShip2 = 13, motherShip3 = 14. + * @var list $dock3Ships + **/ + public static array $dock3Ships = [12, 13, 14]; + + /** + * @var list> $building + */ + public static array $building = [ + [ + 'name' => 'generator', + 'column' => 'levelGenerator', + 'frenchName' => 'Générateur', + 'imageLink' => 'generator', + 'level' => [ + // (time, resourcePrice, points, queues) + [20, 100, 2, 2], + [28, 137, 2, 2], + [39, 188, 2, 2], + [55, 257, 3, 2], + [77, 352, 3, 2], + [108, 483, 3, 3], + [151, 661, 4, 3], + [211, 900, 4, 3], + [295, 1200, 5, 3], + [413, 1600, 5, 3], + [578, 2200, 6, 3], + [809, 3000, 6, 3], + [1133, 4100, 7, 3], + [1586, 5600, 8, 3], + [2220, 7700, 9, 3], + [3108, 10000, 10, 4], + [4351, 13000, 11, 4], + [6091, 16000, 12, 4], + [8527, 20000, 14, 4], + [9810, 25000, 15, 4], + [11280, 31000, 17, 4], + [12970, 39000, 19, 4], + [14920, 49000, 21, 4], + [17160, 61000, 23, 4], + [19730, 76000, 26, 4], + [22690, 87000, 28, 5], + [26090, 100000, 32, 5], + [30000, 115000, 35, 5], + [34500, 132000, 39, 5], + [39680, 152000, 43, 5], + [45630, 175000, 48, 5], + [52470, 201000, 54, 5], + [60340, 231000, 60, 5], + [69390, 266000, 66, 5], + [79800, 306000, 74, 5], + [91770, 352000, 82, 6], + [105540, 405000, 91, 6], + [121370, 466000, 102, 6], + [139580, 536000, 113, 6], + [160520, 616000, 126, 6], + ], + 'maxLevel' => [30, 40, 40, 40], + 'description' => 'le Générateur est le centre névralgique de votre base orbitale. C\'est la super-structure qui permet de construire les autres modules nécessaires à la bonne marche de votre planète. Il vous permet de construire les autres bâtiments ainsi que d\'avoir un aperçu rapide du développement de votre base. De plus, aucun bâtiment ne peut avoir un niveau supérieur à celui de votre générateur.

', + ], + [ + 'name' => 'refinery', + 'column' => 'levelRefinery', + 'frenchName' => 'Raffinerie', + 'imageLink' => 'refinery', + 'level' => [ + // (time, resourcePrice, points, refiningCoefficient) + [11, 50, 1, 8], + [15, 70, 1, 9], + [21, 100, 1, 10.2], + [29, 140, 1, 11.5], + [41, 200, 2, 13], + [57, 280, 2, 14.7], + [80, 390, 2, 16.7], + [110, 550, 2, 18.8], + [150, 770, 2, 21.3], + [210, 1080, 3, 24], + [290, 1510, 3, 27.2], + [410, 2110, 3, 30.7], + [570, 2950, 4, 34.7], + [800, 4130, 4, 39.2], + [1120, 5780, 5, 44.3], + [1570, 7200, 5, 50], + [2200, 9000, 6, 56.5], + [3080, 11000, 7, 63.9], + [4310, 14000, 8, 72.2], + [4960, 18000, 9, 81.6], + [5700, 23000, 10, 89.7], + [6560, 29000, 11, 98.3], + [7540, 36000, 12, 107.3], + [8670, 45000, 14, 116.9], + [9970, 56000, 15, 125.1], + [11470, 64000, 17, 134.9], + [13190, 74000, 19, 144.3], + [15170, 85000, 21, 153.5], + [17450, 98000, 24, 164.1], + [20070, 113000, 27, 173.5], + [23080, 130000, 30, 182.7], + [26540, 150000, 34, 191.8], + [30520, 173000, 38, 200.9], + [35100, 199000, 42, 210.3], + [40370, 229000, 47, 219.4], + [46430, 252000, 53, 228.6], + [53390, 277000, 59, 237.3], + [61400, 305000, 66, 246.9], + [70610, 336000, 74, 257.4], + [81200, 370000, 83, 267.3], + ], + 'maxLevel' => [30, 40, 30, 40], + 'description' => 'La Raffinerie est le bâtiment où l’on traite vos ressources pour en extraire les fractions utilisables. Chaque relève les ressources sont transférées dans le Stockage et sont utilisables. La capacité d’extraction de votre raffinerie dépend du niveau dans lequel elle se situe.

Aucune action directe ne peut être effectuée dans la raffinerie, cependant vous pouvez y voir toutes les informations concernant votre production actuelle et pour les niveaux suivants.', + ], + [ + 'name' => 'dock1', + 'column' => 'levelDock1', + 'frenchName' => 'Chantier Alpha', + 'imageLink' => 'dock1', + 'level' => [ + // (time, resourcePrice, points, queues, storageSpace[en PEV], releasedShip) + [12, 45, 1, 1, 56, 1], + [17, 60, 1, 1, 59, 1], + [24, 80, 1, 1, 62, 1], + [34, 110, 1, 1, 66, 1], + [48, 150, 2, 1, 70, 1], + [67, 210, 2, 2, 76, 1], + [94, 290, 2, 2, 81, 1], + [130, 410, 2, 2, 88, 1], + [180, 570, 2, 2, 95, 2], + [250, 800, 3, 2, 104, 2], + [350, 1120, 3, 3, 115, 2], + [490, 1570, 3, 3, 126, 2], + [690, 2200, 4, 3, 141, 2], + [970, 3080, 4, 3, 162, 2], + [1360, 4310, 5, 3, 183, 2], + [1900, 5400, 5, 4, 206, 2], + [2660, 6750, 6, 4, 230, 3], + [3720, 8000, 7, 4, 255, 3], + [5210, 10000, 8, 4, 280, 3], + [5990, 13000, 9, 4, 308, 3], + [6890, 16000, 10, 5, 336, 3], + [7920, 20000, 11, 5, 365, 3], + [9110, 25000, 12, 5, 396, 3], + [10480, 31000, 14, 5, 427, 3], + [12050, 39000, 15, 5, 459, 4], + [13860, 45000, 17, 6, 493, 4], + [15940, 52000, 19, 6, 528, 4], + [18330, 60000, 21, 6, 564, 4], + [21080, 69000, 24, 6, 601, 4], + [24240, 79000, 27, 6, 638, 4], + [27880, 91000, 30, 7, 678, 4], + [32060, 105000, 34, 7, 717, 4], + [36870, 121000, 38, 7, 757, 5], + [42400, 139000, 42, 7, 799, 5], + [48760, 160000, 47, 7, 843, 5], + [56070, 176000, 53, 8, 886, 5], + [64480, 194000, 59, 8, 931, 5], + [74150, 213000, 66, 8, 977, 5], + [85270, 234000, 74, 8, 1023, 5], + [98060, 257000, 83, 8, 1071, 6], + ], + 'maxLevel' => [30, 30, 40, 40], + 'description' => 'Le Chantier Alpha, zone de construction et de stockage des vaisseaux, est votre premier chantier d’assemblage de chasseurs et corvettes. Ces vaisseaux sont les plus petits que vous pourrez construire durant le jeu, mais pas forcément les moins puissants. Chaque type d’appareil dispose de qualités comme de défauts, pensez à bien prendre en compte les aptitudes de chacun.

Le nombre de vaisseaux en stock dans votre chantier est limité, tout comme votre file de construction. Seule l’augmentation du niveau de votre chantier vous donnera la possibilité de stocker et de construire d’avantage.

Le niveau de votre chantier Alpha et votre avancée technologique vous permettront de débloquer et de découvrir les vaisseaux.', + ], + [ + 'name' => 'dock2', + 'column' => 'levelDock2', + 'frenchName' => 'Chantier de Ligne', + 'imageLink' => 'dock2', + 'level' => [ + // (time, resourcePrice, points, queues, storageSpace[en PEV], releasedShip) + [1000, 2000, 20, 1, 100, 1], + [1300, 2750, 22, 1, 125, 1], + [1690, 3750, 25, 1, 150, 1], + [2197, 5200, 28, 1, 180, 2], + [2856, 7200, 31, 1, 215, 2], + [3713, 9800, 34, 2, 250, 2], + [4827, 13000, 38, 2, 290, 2], + [6275, 19000, 42, 2, 335, 3], + [8157, 26000, 47, 2, 385, 3], + [10604, 35000, 52, 2, 440, 3], + [15907, 48000, 58, 3, 500, 3], + [23860, 66000, 64, 3, 565, 4], + [35790, 91000, 71, 3, 635, 4], + [53685, 125000, 80, 3, 710, 4], + [80528, 173000, 88, 3, 790, 4], + [120792, 237000, 98, 4, 875, 5], + [181188, 326000, 109, 4, 965, 5], + [271782, 449000, 122, 4, 1060, 5], + [407673, 617000, 135, 4, 1160, 5], + [611509, 849000, 150, 4, 1265, 6], + ], + 'maxLevel' => [0, 10, 20, 20], + 'description' => 'Le Chantier de Ligne est le deuxième atelier de construction de vaisseaux à votre disposition. Plus grand et plus performant que son cadet le Chantier Alpha, il vous permettra de construire les navettes de type croiseur et destroyer. Ces vaisseaux, plus grands et plus lents que les corvettes et les chasseurs, servent à un autre type de stratégie. Comme pour les petits vaisseaux, les croiseurs et les destroyers disposent d’aptitude propre à certains types de combat, analysez correctement celles-ci pour peaufiner votre stratégie d’attaque ou de défense.

Le nombre de vaisseaux que vous pouvez stocker dans votre Chantier de Ligne est limité comme votre fil de construction. Pensez à former des commandants pour vider vos hangars et renforcer vos escadrilles.', + 'techno' => 1, + ], + [ + 'name' => 'dock3', + 'column' => 'levelDock3', + 'frenchName' => 'Colonne d\'Assemblage', + 'imageLink' => 'dock3', + 'level' => [ + // (time, resourcePrice, points, releasedShip) + [60000, 200000, 0, 1], + [78000, 240000, 0, 1], + [101000, 288000, 0, 1], + [131000, 346000, 0, 1], + [170000, 415000, 0, 2], + [221000, 498000, 0, 2], + [287000, 598000, 0, 2], + [373000, 718000, 0, 2], + [485000, 862000, 0, 2], + [631000, 1034000, 0, 3], + ], + 'maxLevel' => [0, 0, 0, 10], + 'description' => 'La Colonne d’Assemblage est le troisième atelier de construction d’appareils. Spécifique aux vaisseaux-mères, ce chantier spatial est indispensable à toute tentative de colonisation. Ce chantier titanesque conçu pour fabriquer des vaisseaux de taille quasi-planétaire, vous donnera la possibilité de construire trois types de vaisseaux-mères. Chacun de ces bâtiments spatiaux dispose de quasiment le même nombre d’aptitudes, excepté sa taille. En effet, lorsque vous créez un vaisseau mère de catégorie trois, il disposera de plus de place de construction que ses deux cadets.

La Colonne d’Assemblage est la plus grosse plateforme que vous pouvez construire sur votre base. Elle est également la plus couteuse.', + 'techno' => TechnologyId::DOCK3_UNBLOCK, + ], + [ + 'name' => 'technosphere', + 'column' => 'levelTechnosphere', + 'frenchName' => 'Technosphère', + 'imageLink' => 'technosphere', + 'level' => [ + // (time, resourcePrice, points, queues) + [10, 100, 1, 2], + [14, 140, 1, 2], + [20, 200, 1, 2], + [28, 280, 1, 2], + [39, 390, 2, 2], + [55, 550, 2, 3], + [77, 770, 2, 3], + [110, 1080, 2, 3], + [150, 1510, 2, 3], + [210, 2110, 3, 3], + [290, 2950, 3, 3], + [410, 4130, 3, 3], + [570, 5780, 4, 3], + [800, 8090, 4, 3], + [1120, 11330, 5, 3], + [1570, 14200, 5, 4], + [2200, 17750, 6, 4], + [3080, 22000, 7, 4], + [4310, 28000, 8, 4], + [4960, 35000, 9, 4], + [5700, 44000, 10, 4], + [6560, 55000, 11, 4], + [7540, 69000, 12, 4], + [8670, 86000, 14, 4], + [9970, 108000, 15, 4], + [11470, 124000, 17, 5], + [13190, 143000, 19, 5], + [15170, 164000, 21, 5], + [17450, 189000, 24, 5], + [20070, 217000, 27, 5], + [23080, 250000, 30, 5], + [26540, 288000, 34, 5], + [30520, 331000, 38, 5], + [35100, 381000, 42, 5], + [40370, 438000, 47, 5], + [46430, 482000, 53, 6], + [53390, 530000, 59, 6], + [61400, 583000, 66, 6], + [70610, 641000, 74, 6], + [81200, 705000, 83, 6], + ], + 'maxLevel' => [30, 40, 40, 40], + 'description' => 'La Technosphère, véritable forge de votre base orbitale, vous permettra de donner des bonus à vos bâtiments, vaisseaux et autre.

Cette bâtisse de forme arrondie obtiendra au fil du temps et en fonction du nombre de crédits investis dans votre université, un nombre de technologies à développer. Chaque technologie développée vous permettra d’une part de donner des bonus à certaines de vos constructions et d’autre part de débloquer vos vaisseaux et bâtiments.

Comme dans le chantier Alpha, le Générateur, etc… une liste de développement est en place. Cette liste de développement est, bien évidemment, limitée.', + ], + [ + 'name' => 'commercialPlateforme', + 'column' => 'levelCommercialPlateforme', + 'frenchName' => 'Plateforme Commerciale', + 'imageLink' => 'commercialplateforme', + 'level' => [ + // (time, resourcePrice, points, nbCommercialShip) + [60, 2000, 10, 5], + [84, 2460, 22, 10], + [118, 3000, 34, 25], + [165, 3700, 46, 45], + [231, 4600, 58, 100], + [323, 5600, 70, 180], + [452, 6900, 82, 250], + [630, 8500, 94, 400], + [880, 11000, 106, 570], + [1230, 13000, 118, 800], + [1720, 16000, 130, 1200], + [2410, 19000, 142, 1500], + [3370, 24000, 154, 1800], + [4720, 29000, 166, 2100], + [6610, 36000, 178, 2300], + [9250, 45000, 190, 2450], + [12950, 55000, 202, 2550], + [18130, 68000, 214, 2700], + [25380, 83000, 226, 2850], + [29190, 102000, 238, 3000], + [33570, 126000, 250, 3100], + [38610, 155000, 262, 3200], + [44400, 190000, 274, 3300], + [51060, 234000, 286, 3400], + [58720, 288000, 298, 3450], + [67530, 354000, 310, 3500], + [77660, 436000, 322, 3550], + [89310, 535000, 334, 3600], + [102710, 658000, 346, 3650], + [118120, 810000, 358, 3700], + ], + 'maxLevel' => [20, 30, 20, 30], + 'description' => 'La Plateforme Commerciale est véritablement la place de commerce entre les joueurs. En effet, cette plateforme vous permettra de vendre ou d’acheter des vaisseaux, des commandants ou encore des ressources.

Vous devrez fixer vous-même le prix des marchandises que vous souhaitez vendre, il faudra donc faire attention aux tendances du marché, de manière à être sûr de vendre vos produits. De plus, toute vente ou achat est soumis à deux taxes, une d\'achat et une de vente. Prenez donc ces taxes en compte en fixant vos prix. Le montant des taxes revient aux factions concernées.', + 'techno' => TechnologyId::COM_PLAT_UNBLOCK, + ], + [ + 'name' => 'storage', + 'column' => 'levelStorage', + 'frenchName' => 'Stockage', + 'imageLink' => 'storage', + 'level' => [ + // (time, resourcePrice, points, storageSpace) + [9, 45, 1, 3700], + [13, 60, 1, 3800], + [18, 80, 1, 4000], + [25, 110, 1, 4400], + [35, 150, 2, 5200], + [49, 210, 2, 6200], + [69, 290, 2, 7400], + [100, 410, 2, 8900], + [140, 570, 2, 10700], + [200, 800, 3, 12800], + [280, 1120, 3, 15400], + [390, 1570, 3, 18500], + [550, 2200, 4, 22200], + [770, 3080, 4, 26600], + [1080, 4310, 5, 31900], + [1510, 5400, 5, 38300], + [2110, 6750, 6, 46000], + [2950, 8000, 7, 55200], + [4130, 10000, 8, 66200], + [4750, 13000, 9, 79400], + [5460, 16000, 10, 95300], + [6280, 20000, 11, 114400], + [7220, 25000, 12, 137300], + [8300, 31000, 14, 164800], + [9550, 39000, 15, 197800], + [10980, 45000, 17, 237400], + [12630, 52000, 19, 284900], + [14520, 60000, 21, 341900], + [16700, 69000, 24, 410300], + [19210, 79000, 27, 492400], + [22090, 91000, 30, 590900], + [25400, 105000, 34, 709100], + [29210, 121000, 38, 850900], + [33590, 139000, 42, 1021100], + [38630, 160000, 47, 1225300], + [44420, 176000, 53, 1715400], + [51080, 194000, 59, 2401600], + [58740, 213000, 66, 3362200], + [67550, 234000, 74, 4707100], + [77680, 257000, 83, 6589900], + ], + 'maxLevel' => [30, 40, 40, 40], + 'description' => 'Comme son nom l’indique, le Stockage est le lieu où vous allez emmagasiner vos ressources. Il vous sera utile pour économiser des ressources dans le but de construire certains bâtiments ou vaisseaux. +

Notez qu\'il est possible de dépasser de 25\'000 le stockage maximal dans certains cas (comme la réception de ressources ou l\'annulation d\'une construction).', + ], + [ + 'name' => 'recycling', + 'column' => 'levelRecycling', + 'frenchName' => 'Centre de Recyclage', + 'imageLink' => 'recycling', + 'level' => [ + // (time, resourcePrice, points, nbRecyclers) + [55, 1600, 10, 1], + [77, 1970, 11, 2], + [108, 2420, 12, 4], + [151, 2980, 13, 7], + [211, 3660, 15, 11], + [295, 4500, 16, 16], + [413, 5500, 18, 22], + [580, 6820, 19, 29], + [810, 8380, 21, 37], + [1130, 10000, 24, 46], + [1580, 13000, 26, 56], + [2210, 16000, 29, 67], + [3090, 19000, 31, 79], + [4330, 24000, 35, 92], + [6060, 29000, 38, 106], + [8480, 36000, 42, 121], + [11870, 44000, 46, 137], + [16620, 54000, 51, 154], + [23270, 66000, 56, 172], + [26760, 82000, 61, 191], + [30770, 100000, 67, 211], + [35390, 124000, 74, 232], + [40700, 144000, 81, 254], + [46810, 167000, 90, 277], + [53830, 192000, 98, 301], + [61900, 233000, 108, 326], + [71190, 278000, 119, 352], + [81870, 328000, 131, 379], + [94150, 397000, 144, 407], + [108270, 487000, 159, 436], + ], + 'maxLevel' => [20, 20, 30, 30], + 'description' => 'Le Centre de Recyclage est un bâtiment très intéressant économiquement parlant. En effet, il vous permettra d\'avoir un revenu supplémentaire en recyclant des lieux autour de vous.

Il est possible de lancer des missions de recyclage composées de plusieurs recycleurs, ou collecteurs, sur des lieux tels que des champs de ruines, des ceintures d\'astéroïdes, des géantes gazeuses ou des poches de gaz. Le but étant l\'extraction et le forage de matériau pour en retirer des ressources, des crédits et même des vaisseaux.

Chaque type de lieu est riche en une ou plusieurs de ces denrées. Attention, les denrées sont épuisables.', + 'techno' => TechnologyId::RECYCLING_UNBLOCK, + ], + [ + 'name' => 'spatioport', + 'column' => 'levelSpatioport', + 'frenchName' => 'Spatioport', + 'imageLink' => 'spatioport', + 'level' => [ + // (time, resourcePrice, points, commercialRouteQuantity) + [100, 2500, 20, 1], + [140, 3250, 22, 1], + [196, 4220, 25, 1], + [274, 5490, 28, 2], + [384, 7140, 31, 2], + [538, 9280, 34, 2], + [753, 12000, 38, 3], + [1054, 16000, 42, 3], + [1476, 20000, 47, 3], + [2066, 27000, 52, 4], + [3099, 34000, 58, 5], + [4649, 45000, 64, 5], + [6973, 58000, 71, 6], + [10460, 76000, 80, 6], + [15689, 98000, 88, 7], + [23534, 128000, 98, 7], + [35301, 166000, 109, 8], + [52952, 216000, 122, 8], + [79428, 281000, 135, 9], + [119142, 365000, 150, 10], + ], + 'maxLevel' => [0, 20, 10, 20], + 'description' => 'Le Spatio-Port, véritable plaque tournante du commerce dans votre domaine, permet, en fonction de sa taille, de créer et de gérer des routes commerciales sur le long terme avec vos partenaires. Pour valider une route commerciale vous devez la proposer et l’autre joueur doit l’accepter.

Une route commerciale génère des revenus chez les deux parties. Plus la route est longue, plus le prix pour la mettre en place sera élevé. Le rendement d\'une route est également proportionnel à la distance, mais il est par contre plafonné aux environs de 100 années lumières. Il faudra donc plus de temps pour rentabiliser une très longue route.
Les routes commerciales entre deux secteurs différents ainsi qu’avec des joueurs non-alliés ont tendance à générer plus de revenus.', + 'techno' => TechnologyId::SPATIOPORT_UNBLOCK, + ], + ]; +} diff --git a/src/Modules/Athena/Resource/SchoolClassResource.php b/src/Modules/Athena/Resource/SchoolClassResource.php new file mode 100644 index 000000000..233ba53ef --- /dev/null +++ b/src/Modules/Athena/Resource/SchoolClassResource.php @@ -0,0 +1,55 @@ +> + */ + private static array $classes = [ + [ + 'credit' => 2500, + 'minSize' => 1, + 'maxSize' => 1, + 'minExp' => 100, + 'maxExp' => 210, + 'point' => 5, + 'title' => 'Engager un officier nul', + ], + [ + 'credit' => 2500, + 'minSize' => 1, + 'maxSize' => 1, + 'minExp' => 100, + 'maxExp' => 210, + 'point' => 5, + 'title' => 'Engager un officier nul', + ], + [ + 'credit' => 2500, + 'minSize' => 1, + 'maxSize' => 1, + 'minExp' => 100, + 'maxExp' => 210, + 'point' => 5, + 'title' => 'Engager un officier nul', + ], + ]; + + public static function getInfo(int $i, string $info): mixed + { + if (!in_array($info, ['credit', 'minSize', 'maxSize', 'minExp', 'maxExp', 'point', 'title'])) { + throw new \LogicException('info inconnue dans getInfo de SchoolClassResource'); + } + if ($i < self::size()) { + return self::$classes[$i][$info]; + } + return false; + } + + public static function size(): int + { + return count(self::$classes); + } +} diff --git a/src/Modules/Athena/Resource/ShipResource.php b/src/Modules/Athena/Resource/ShipResource.php new file mode 100644 index 000000000..a93dbdfca --- /dev/null +++ b/src/Modules/Athena/Resource/ShipResource.php @@ -0,0 +1,305 @@ + 'Pégase', + 'name' => 'Chasseur Léger', + 'class' => 0, + 'pev' => 2, + 'life' => 26, + 'speed' => 195, + 'defense' => 1, + 'attack' => [5], + 'cost' => 7, + 'time' => 500, + 'resourcePrice' => 2800, + 'points' => 3, + 'picto' => 'Intercepteur', + 'thumbnail' => 'light_hunter', + 'techno' => 5, + 'description' => 'Un Pégase (aussi appelé chasseur léger) est un petit vaisseau de combat très rapide et très efficace contre les frégates ioniques - Cyclope. Équipé de deux canons mitrailleurs placés sur les côtés de l’appareil, ce vaisseau monoplace est composé d’un alliage carbonique.

Utilisé en grand nombre, cette petite navette peut être décisive dans le déroulement d’une bataille. Cette technique de combat fut mise en place par le commandant Hagar Mosine lors de la célèbre mission K-7, sur Nessor.

Avec des coûts très faibles et une rapidité de production élevée, le Pégase est l’appareil le plus populaire de la galaxie de l’Œil.', + ], + [ + 'codeName' => 'Satyre', + 'name' => 'Chasseur lourd', + 'class' => 0, + 'pev' => 3, + 'life' => 30, + 'speed' => 185, + 'defense' => 5, + 'attack' => [7], + 'cost' => 5, + 'time' => 570, + 'resourcePrice' => 3500, + 'points' => 4, + 'picto' => 'fighter', + 'thumbnail' => 'battle_runner', + 'techno' => 6, + 'description' => 'Grace à sa polyvalence issue d’une construction modulaire, le Satyre est très utile comme vaisseau d’appui. En effet, ce chasseur lourd, mariant vitesse et maniabilité, procure une défense idéale contre les frégates lors de gros combats. Cependant, il est fortement vulnérable contre la puissance de feu des destroyers, nettement plus précise que celle des frégates.

Son fuselage est conçu en deux tronçons d’alliage carbonique. Le premier, allant de l’avant de l’appareil jusqu’à l’arrière du cockpit, est renforcé de manière à protéger au mieux le pilote. La deuxième, plus petite et moins épaisse, formant l’arrière de la navette, sert simplement de réservoir de carburant et de munition.', + ], + [ + 'codeName' => 'Chimère', + 'name' => 'Chasseur multi-tourelle', + 'class' => 0, + 'pev' => 3, + 'life' => 26, + 'speed' => 195, + 'defense' => 3, + 'attack' => [6, 6], + 'cost' => 25, + 'time' => 850, + 'resourcePrice' => 4420, + 'points' => 6, + 'picto' => 'bomber', + 'thumbnail' => 'zartanyas_eye', + 'techno' => 7, + 'description' => 'La Chimère est un vaisseau rapide disposant de trois types d’attaques. La première est un canon mitrailleur double disposé de chaque côté de l’appareil. La deuxième est un canon laser léger placé sur le sommet du cockpit. Le dernier est une pièce lance missile à tête chercheuse fixée sous la navette. Cet armement, pour le moins impressionnant, a été conçu pour lutter contre les vaisseaux de type frégate. Malheureusement, sa maniabilité très précaire n’en fait pas un appareil très efficace contre les vaisseaux du chantier de ligne.', + ], + [ + 'codeName' => 'Sirène', + 'name' => 'Corvette légère', + 'class' => 1, + 'pev' => 5, + 'life' => 65, + 'speed' => 190, + 'defense' => 6, + 'attack' => [20, 2, 2], + 'cost' => 100, + 'time' => 480, + 'resourcePrice' => 4000, + 'points' => 6, + 'picto' => 'corvette', + 'thumbnail' => 'sullern_terror', + 'techno' => 8, + 'description' => 'Disposant d’un canon lance missile, la Sirène est très utile pour les attaques rapides. Sa coque de protection avant, composée d’un alliage carbonique, lui offre une forte résistance contre toutes les armes de type canon mitrailleur. En revanche, cet appareil est très vulnérable contre les attaques de type missile.

Cette corvette légère, composé d’un superstrato-réacteur disposé au-dessous de l’appareil, est la plus économique en termes de carburant.', + ], + [ + 'codeName' => 'Dryade', + 'name' => 'Corvette lourde', + 'class' => 1, + 'pev' => 7, + 'life' => 90, + 'speed' => 165, + 'defense' => 23, + 'attack' => [30], + 'cost' => 58, + 'time' => 1880, + 'resourcePrice' => 8350, + 'points' => 8, + 'picto' => 'ChasseurSW', + 'thumbnail' => 'sullern_terror', + 'techno' => 9, + 'description' => 'La Dryade est un vaisseau de type corvette lourde, armé d’un canon lance missile. Cette appareil puissant et résistant, est particulièrement efficace contre les petits vaisseaux. Composé d’un équipage de trois personnes, la Dryade est également capable de transporter un commando pour toutes missions spéciales ou tentative de colonisations.

Cette navette de débarquement fut utilisée par les forces rebelles Kovhakarh durant la bataille pour la prise de la planète Guaména.', + ], + [ + 'codeName' => 'Méduse', + 'name' => 'Corvette multi-tourelle', + 'class' => 1, + 'pev' => 9, + 'life' => 75, + 'speed' => 145, + 'defense' => 8, + 'attack' => [20, 12, 12, 12, 12, 7, 7, 7], + 'cost' => 80, + 'time' => 2500, + 'resourcePrice' => 15300, + 'points' => 15, + 'picto' => 'frigate', + 'thumbnail' => 'sullern_terror', + 'techno' => 10, + 'description' => 'Disposant de deux canons lance missile, d’un canon laser et d’un canon mitrailleur arrière, la Méduse est l’un des seuls vaisseaux légers à disposer d’autant d’armement. Conçu pour lutter contre les attaques massives de chasseurs légers, la Méduse est également redoutable contre les frégates.

La coque protectrice avant de la Méduse est particulièrement résistante, mais cela n’en fait pas un vaisseau invulnérable. Un certain nombre de faiblesses sont facilement distinctes à l’arrière de l’appareil.

Cette navette fut créée à la fin de la grande période de trouble, elle ne fut donc jamais utilisée à grande échelle dans une guerre.', + ], + [ + 'codeName' => 'Griffon', + 'name' => 'Frégate d\'attaque', + 'class' => 2, + 'pev' => 23, + 'life' => 250, + 'speed' => 100, + 'defense' => 40, + 'attack' => [15, 15, 15, 15], + 'cost' => 68, + 'time' => 3600, + 'resourcePrice' => 40000, + 'points' => 30, + 'picto' => 'freighter', + 'thumbnail' => 'tenium_bane', + 'techno' => 11, + 'description' => 'La frégate d’attaque Griffon est un vaisseau de guerre de taille moyenne, capable d’assurer plusieurs types de mission : protection de vaisseau mère, surveillance spatiale et défense planétaire. Plus grand et plus puissant que les appareils fabriqués dans le Chantier Alpha, le Griffon dispose de quatre canons laser disposés à chaque extrémité du cockpit.', + ], + [ + 'codeName' => 'Cyclope', + 'name' => 'Frégate ionique', + 'class' => 2, + 'pev' => 45, + 'life' => 320, + 'speed' => 90, + 'defense' => 40, + 'attack' => [225], + 'cost' => 500, + 'time' => 7200, + 'resourcePrice' => 80000, + 'points' => 80, + 'picto' => 'freighter', + 'thumbnail' => 'tenium_bane', + 'techno' => 12, + 'description' => 'Disposant de quatre canons ioniques convergeant en un seul faisceau dans le but d’amplifier la puissance du tir, le Cyclope est le vaisseau, toute catégorie confondue, le plus dévastateur de la galaxie de l’Œil.

Cette frégate légère et rapide fut longtemps utilisée par l’ancien Empire pour imposer et asseoir son pouvoir sur les planètes contrebandières. Elle fut également sujet à controverse pour la population impériale de par sa puissance de feu et le nombre de victimes civiles lors de la plupart de ces nombreuses attaques.', + ], + [ + 'codeName' => 'Minotaure', + 'name' => 'Destroyer', + 'class' => 3, + 'pev' => 75, + 'life' => 1200, + 'speed' => 88, + 'defense' => 120, + 'attack' => [35, 35, 35, 35, 25, 10, 10], + 'cost' => 250, + 'time' => 11400, + 'resourcePrice' => 112000, + 'points' => 70, + 'picto' => 'freighter', + 'thumbnail' => 'tenium_bane', + 'techno' => 13, + 'description' => 'Le Minotaure, un destroyer de première ligne, est composé d’une coque avant en alliage carbonique capable de résister à la plupart des attaques frontales. Son armement comprend un canon laser de 30 tonnes sur le sommet et de trois tubes lance missile, deux latéraux et un en dessous. Capable de se déplacer à une grande vitesse et disposant d’une coque de protection épaisse, le Minotaure est le vaisseau qui convient le mieux aux attaques de colonisation ou à tous types de défense.

Fleuron de la flotte des Kovahkarh lors des périodes de trouble, il fut malheureusement très vite dépassé durant l’essor du nouvel Empire par le Cerbère.', + ], + [ + 'codeName' => 'Hydre', + 'name' => 'Destroyer missile', + 'class' => 3, + 'pev' => 86, + 'life' => 1050, + 'speed' => 75, + 'defense' => 100, + 'attack' => [21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21], + 'cost' => 600, + 'time' => 17400, + 'resourcePrice' => 150000, + 'points' => 80, + 'picto' => 'cruiser', + 'thumbnail' => 'fray_breaker', + 'techno' => 14, + 'description' => 'Plus petit que le Minotaure et moins rapide, l’Hydre fut créée dans le but de défendre les populations prudes Cardanienne contre les frappes massives de Pégase Kovahk. En effet, ses vingt canons lance missile disposés sur sa face avant lui donnent un avantage certain dans les attaques compactes de chasseurs. Doté d’une excellente manœuvrabilité pour ce type de vaisseau, l’Hydre est sans doute le destroyer le mieux conçu de l’histoire de la galaxie de l’Œil.', + ], + [ + 'codeName' => 'Cerbère', + 'name' => 'Croiseur', + 'class' => 3, + 'pev' => 82, + 'life' => 1220, + 'speed' => 80, + 'defense' => 135, + 'attack' => [175, 50, 50, 25, 25, 25, 25, 6, 6, 6], + 'cost' => 700, + 'time' => 15960, + 'resourcePrice' => 208000, + 'points' => 120, + 'picto' => 'cruiser', + 'thumbnail' => 'fray_breaker', + 'techno' => 15, + 'description' => 'Le Cerbère est un grand vaisseau de guerre doté d’un épais blindage, dont l’artillerie principale est composée de deux pièces d’artilleries des plus gros calibres existants. Conçu pour les destructions de masse, les deux principaux canons du Cerbère sont accompagnés de cinq canons lasers longue portée. Ces défenses gargantuesques ont été mises en place dans un premier temps pour assurer une défense planétaire. Cependant, les gouvernements remarquèrent vite que l’utilisation du Cerbère pour les attaques massives était loin d’être inutile.', + ], + [ + 'codeName' => 'Phénix', + 'name' => 'Croiseur lourd', + 'class' => 3, + 'pev' => 84, + 'life' => 1350, + 'speed' => 75, + 'defense' => 150, + 'attack' => [200, 50, 50, 50, 50, 25, 25, 25, 25, 6, 6, 6], + 'cost' => 950, + 'time' => 18000, + 'resourcePrice' => 300000, + 'points' => 200, + 'picto' => 'cruiser', + 'thumbnail' => 'fray_breaker', + 'techno' => 16, + 'description' => 'Le Phénix est le type prédominant de croiseur de la galaxie de l’Œil. Conçu par le vieil Empire pour mettre un terme à la rébellion des périodes de troubles, il est le vaisseau de combat le plus massif du chantier de ligne. En effet, sa construction nécessite énormément de matériel et de main-d’œuvre. De plus, le Phénix est piloté par un équipage de plus de 300 personnes.

Cet appareil, très gros, est difficile à manœuvrer dans les combats de mêlée. Cependant il est d’une efficacité redoutable en dernière ligne de vos escadrilles.', + ], + ]; +} diff --git a/src/Modules/Athena/Resource/config/config.yml b/src/Modules/Athena/Resource/config/config.yml new file mode 100644 index 000000000..887e4b5e8 --- /dev/null +++ b/src/Modules/Athena/Resource/config/config.yml @@ -0,0 +1,41 @@ +--- +parameters: + # routes commerciales + athena.trade.route.cancellation_refund: 0.8 # 80% de crédits rendu si on annule la route avant qu'elle soit acceptée + athena.trade.route.sector_bonus: 1.1 + athena.trade.route.color_bonus: 1.5 + athena.trade.experience_coeff: 0.1 + + # pourcentage de ressources rendues lors + # de l'annulation d'une construction de batiment ou de vaisseau + athena.building.building_queue_resource_refund: 0.5 # 50% + athena.building.ship_queue_resource_refund: 0.5 # 50% + + # commercialRoute statement + athena.trade.route.proposed: 0 + athena.trade.route.active: 1 + athena.trade.route.stand_by: 2 + + # type of base constants + athena.obm.change_type_min_level: 20 # minimal generator level + athena.obm.capital_min_level: 35 # minimal generator level to build a capital base + +services: + _defaults: + autowire: true + autoconfigure: true + + _instanceof: + App\Shared\Application\SchedulerInterface: + tags: [ 'app.scheduler' ] + + App\Modules\Athena\: + resource: '%kernel.project_dir%/src/Modules/Athena/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Athena\Infrastructure\ArgumentResolver\CurrentBaseValueResolver: + tags: + - { name: 'controller.argument_value_resolver', priority: 150 } diff --git a/src/Modules/Atlas/Application/Handler/RankingCreationHandler.php b/src/Modules/Atlas/Application/Handler/RankingCreationHandler.php new file mode 100644 index 000000000..f34bd05e1 --- /dev/null +++ b/src/Modules/Atlas/Application/Handler/RankingCreationHandler.php @@ -0,0 +1,37 @@ +rankingRepository->save($ranking); + + $this->playerRoutineHandler->process($ranking); + $this->factionRoutineHandler->process($ranking); + } +} diff --git a/src/Modules/Atlas/Application/Message/RankingCreationMessage.php b/src/Modules/Atlas/Application/Message/RankingCreationMessage.php new file mode 100644 index 000000000..9edcb2117 --- /dev/null +++ b/src/Modules/Atlas/Application/Message/RankingCreationMessage.php @@ -0,0 +1,10 @@ + + */ +interface FactionRankingRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return array{nb: int, income: int} + */ + public function getRoutesIncome(Color $faction): array; + + public function getLastRanking(Color $faction): FactionRanking|null; + + /** + * @return list + */ + public function getRankingsByField(Ranking $ranking, string $field): array; + + /** + * @return list + */ + public function getFactionRankings(Color $faction): array; +} diff --git a/src/Modules/Atlas/Domain/Repository/PlayerRankingRepositoryInterface.php b/src/Modules/Atlas/Domain/Repository/PlayerRankingRepositoryInterface.php new file mode 100644 index 000000000..2074a5072 --- /dev/null +++ b/src/Modules/Atlas/Domain/Repository/PlayerRankingRepositoryInterface.php @@ -0,0 +1,48 @@ + + */ +interface PlayerRankingRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return list + */ + public function getFactionPlayerRankings(Ranking $ranking, Color $faction): array; + + public function getPlayerLastRanking(Player $player): PlayerRanking|null; + + public function getBestPlayerRanking(): PlayerRanking|null; + + /** + * @return list + */ + public function getRankingsByRange(Ranking $ranking, string $field, int $offset, int $limit): array; + + public function getPlayersResources(): Result; + + public function getPlayersResourcesData(): Result; + + public function getPlayersGeneralData(): Result; + + public function getPlayersArmiesData(): Result; + + public function getPlayersPlanetData(): Result; + + public function getPlayersTradeRoutes(): Result; + + public function getPlayersLinkedTradeRoutes(): Result; + + public function getAttackersButcherRanking(): Result; + + public function getDefendersButcherRanking(): Result; +} diff --git a/src/Modules/Atlas/Domain/Repository/RankingRepositoryInterface.php b/src/Modules/Atlas/Domain/Repository/RankingRepositoryInterface.php new file mode 100644 index 000000000..d62f2327b --- /dev/null +++ b/src/Modules/Atlas/Domain/Repository/RankingRepositoryInterface.php @@ -0,0 +1,16 @@ + + */ +interface RankingRepositoryInterface extends EntityRepositoryInterface +{ + public function getLastRanking(): Ranking|null; +} diff --git a/src/Modules/Atlas/Infrastructure/Command/ProcessRankingsCommand.php b/src/Modules/Atlas/Infrastructure/Command/ProcessRankingsCommand.php new file mode 100644 index 000000000..673c80d83 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Command/ProcessRankingsCommand.php @@ -0,0 +1,61 @@ +style = new SymfonyStyle($input, $output); + } + + public function execute(InputInterface $input, OutputInterface $output): int + { + $ranking = new Ranking( + id: Uuid::v4(), + createdAt: new \DateTimeImmutable(), + ); + + $this->entityManager->persist($ranking); + $this->entityManager->flush(); + + $this->style->info('Processing player rankings'); + + $this->playerRoutineHandler->process($ranking); + + $this->style->info('Processing faction rankings'); + + $this->factionRoutineHandler->process($ranking); + + $this->style->success('Ranking has been successfully generated'); + + return self::SUCCESS; + } +} diff --git a/src/Modules/Atlas/Infrastructure/Controller/MapController.php b/src/Modules/Atlas/Infrastructure/Controller/MapController.php new file mode 100644 index 000000000..e112d6ac2 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Controller/MapController.php @@ -0,0 +1,142 @@ +getDefaultPosition($request, $currentBase); + $selectedSystemData = []; + $movingCommanders = $commanderRepository->getPlayerCommanders($currentPlayer, [Commander::MOVING]); + + if (null !== $defaultPosition['system']) { + $system = $defaultPosition['system']; + $places = $this->placeRepository->getSystemPlaces($system); + $placesIds = array_map(fn (Place $place) => $place->id, $places); + + $basesCount = $orbitalBaseManager->getPlayerBasesCount($movingCommanders); + + $selectedSystemData = [ + 'system' => $defaultPosition['system'], + 'places' => $places, + 'technologies' => $technologyRepository->getPlayerTechnology($currentPlayer), + 'recycling_missions' => $recyclingMissionRepository->getBaseActiveMissions($currentBase), + 'spy_reports' => $spyReportRepository->getSystemReports($currentPlayer, $placesIds), + 'combat_reports' => $reportRepository->getAttackReportsByPlaces($currentPlayer, $placesIds), + 'colonization_cost' => $conquestManager->getColonizationCost($currentPlayer, $basesCount), + 'conquest_cost' => $conquestManager->getConquestCost($currentPlayer, $basesCount), + ]; + } + + return $this->render('pages/atlas/map.html.twig', array_merge([ + 'sectors' => $sectorRepository->getAll(), + 'systems' => $this->systemRepository->getAll(), + 'player_bases' => $orbitalBaseRepository->getPlayerBases($currentPlayer), + 'default_position' => $defaultPosition, + 'default_map_parameters' => Params::$params, + 'galaxy_configuration' => $galaxyConfiguration, + 'commercial_routes' => $commercialRouteRepository->getAllPlayerRoutes($currentPlayer), + 'local_commanders' => $commanderRepository->getBaseCommanders( + $currentBase, + [Commander::AFFECTED, Commander::MOVING], + ['line' => 'DESC'], + ), + 'moving_commanders' => $movingCommanders, + 'attacking_commanders' => array_merge( + $commanderManager->getVisibleIncomingAttacks($currentPlayer), + $commanderRepository->getOutcomingAttacks($currentPlayer) + ), + ], $selectedSystemData)); + } + + /** + * @return array{ x: int, y: int, system: System|null, place: Place|null, system_id: Uuid|null } + */ + protected function getDefaultPosition( + Request $request, + OrbitalBase $currentBase, + ): array { + // map default position + $x = $currentBase->place->system->xPosition; + $y = $currentBase->place->system->yPosition; + $systemId = null; + $system = $place = null; + + // other default location + // par place + if ($request->query->has('place')) { + if (($place = $this->placeRepository->get(Uuid::fromString($request->query->get('place')))) !== null) { + $system = $place->system; + $x = $system->xPosition; + $y = $system->yPosition; + $systemId = $system->id; + } + // par système + } elseif ($request->query->has('systemid')) { + if (($system = $this->systemRepository->get(Uuid::fromString($request->query->get('systemid')))) !== null) { + $x = $system->xPosition; + $y = $system->yPosition; + $systemId = $system->id; + } + // par coordonnée + } elseif ($request->query->has('x') && $request->query->has('y')) { + $x = $request->query->get('x'); + $y = $request->query->get('y'); + } + + return [ + 'x' => $x, + 'y' => $y, + 'system_id' => $systemId, + 'system' => $system, + 'place' => $place, + ]; + } +} diff --git a/src/Modules/Atlas/Infrastructure/Controller/ViewFactionRankings.php b/src/Modules/Atlas/Infrastructure/Controller/ViewFactionRankings.php new file mode 100644 index 000000000..c6b788037 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Controller/ViewFactionRankings.php @@ -0,0 +1,51 @@ +getParameter('server_start_time')); + $hoursBeforeRankingStart = intval($this->getParameter('hours_before_start_of_ranking')); + + $ranking = $rankingRepository->getLastRanking(); + + if (null !== $ranking) { + $pointsRankings = $factionRankingRepository->getRankingsByField($ranking, 'pointsPosition'); + $generalRankings = $factionRankingRepository->getRankingsByField($ranking, 'generalPosition'); + } + + return $this->render( + 'pages/atlas/faction_rankings.html.twig', + null !== $ranking + ? [ + 'has_ranking' => true, + 'best_faction' => ($durationHandler->getHoursDiff($serverStartTime, $clock->now()) > $hoursBeforeRankingStart) + ? $pointsRankings[0] ?? null + : $generalRankings[0] ?? null, + 'points_rankings' => $pointsRankings, + 'general_rankings' => $generalRankings, + 'wealth_rankings' => $factionRankingRepository->getRankingsByField($ranking, 'wealthPosition'), + 'territorial_rankings' => $factionRankingRepository->getRankingsByField($ranking, 'territorialPosition'), + 'points_to_win' => $this->getParameter('points_to_win'), + ] : [ + 'has_ranking' => false, + ], + ); + } +} diff --git a/src/Modules/Atlas/Infrastructure/Controller/ViewMore.php b/src/Modules/Atlas/Infrastructure/Controller/ViewMore.php new file mode 100644 index 000000000..4ed28498a --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Controller/ViewMore.php @@ -0,0 +1,64 @@ +query->get('direction') ?? throw new BadRequestHttpException('Missing direction'); + $current = $request->query->get('current') ?? throw new BadRequestHttpException('Missing current'); + $type = $request->query->get('type') ?? throw new BadRequestHttpException('Missing type'); + + if (!in_array($direction, ['next', 'prev'])) { + throw new BadRequestHttpException('Invalid direction'); + } + + if (!in_array($type, ['general', 'resources', 'xp', 'fight', 'armies', 'butcher', 'trader'])) { + throw new BadRequestHttpException('Invalid type'); + } + + $ranking = $rankingRepository->getLastRanking() ?? throw new ConflictHttpException('No ranking available yet'); + + // var + $fty = ('xp' == $type) + ? 'experience' + : $type; + + $bot = ('next' == $direction) + ? (($current - PlayerRanking::PAGE > 1) ? $current - PlayerRanking::PAGE : 1) + : $current + 1; + + $size = (1 == $bot) + ? $current - 1 + : PlayerRanking::PAGE; + + $playerRankings = $playerRankingRepository->getRankingsByRange($ranking, $fty.'Position', $bot - 1, $size); + + return $this->render('components/rankings/player/rankings_part.html.twig', [ + 'current_player' => $currentPlayer, + 'player_rankings' => $playerRankings, + 'direction' => $direction, + 'type' => $type, + 'bot' => $bot, + 'fty' => $fty, + ]); + } +} diff --git a/src/Modules/Atlas/Infrastructure/Controller/ViewPlayerRankings.php b/src/Modules/Atlas/Infrastructure/Controller/ViewPlayerRankings.php new file mode 100644 index 000000000..0541ea8e7 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Controller/ViewPlayerRankings.php @@ -0,0 +1,66 @@ +getPlayerLastRanking($currentPlayer); + + // TDO refactor with property accessor + $positionGetter = fn (PlayerRanking|null $p, callable $positionFieldGetter) => ( + null === $p || + 'top' === $request->query->get('mode') || + $positionFieldGetter($p) - PlayerRanking::PREV < 0 + ) ? 0 : $positionFieldGetter($p) - PlayerRanking::PREV; + + $generalPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->generalPosition); + $resourcesPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->resourcesPosition); + $experiencePosition = $positionGetter($p, fn (PlayerRanking $p) => $p->experiencePosition); + $fightPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->fightPosition); + $armiesPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->armiesPosition); + $butcherPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->butcherPosition); + $traderPosition = $positionGetter($p, fn (PlayerRanking $p) => $p->traderPosition); + + $ranking = $rankingRepository->getLastRanking(); + + return $this->render( + 'pages/atlas/player_rankings.html.twig', + null !== $ranking + ? [ + 'has_ranking' => true, + 'best_player' => $playerRankingRepository->getBestPlayerRanking()?->player, + // TODO Refactor with a closure + 'general_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'generalPosition', $generalPosition, PlayerRanking::STEP), + 'experience_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'experiencePosition', $experiencePosition, PlayerRanking::STEP), + 'fight_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'fightPosition', $fightPosition, PlayerRanking::STEP), + 'resources_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'resourcesPosition', $resourcesPosition, PlayerRanking::STEP), + 'armies_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'armiesPosition', $armiesPosition, PlayerRanking::STEP), + 'butcher_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'butcherPosition', $butcherPosition, PlayerRanking::STEP), + 'trader_rankings' => $playerRankingRepository->getRankingsByRange($ranking, 'traderPosition', $traderPosition, PlayerRanking::STEP), + 'active_players_count' => $playerRepository->countActivePlayers(), + 'all_players_count' => $playerRepository->countAllPlayers(), + ] : [ + 'has_ranking' => false, + ], + ); + } +} diff --git a/src/Modules/Atlas/Infrastructure/Twig/MapExtension.php b/src/Modules/Atlas/Infrastructure/Twig/MapExtension.php new file mode 100644 index 000000000..ad41c7cb2 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Twig/MapExtension.php @@ -0,0 +1,137 @@ + Game::formatCoord($system->xPosition, $system->yPosition)), + ]; + } + + #[\Override] + public function getFunctions(): array + { + return [ + new TwigFunction('get_base_antispy_radius', fn (OrbitalBase $base) => $this->antiSpyHandler->getAntiSpyRadius($base->antiSpyAverage)), + new TwigFunction('get_travel_time', function (OrbitalBase $defaultBase, Place $place) { + $departureDate = new \DateTimeImmutable(); + $arrivalDate = ($this->getTravelDuration)( + origin: $defaultBase->place, + destination: $place, + departureDate: $departureDate, + player: $this->currentPlayerRegistry->get(), + ); + + return $this->durationHandler->getDiff($departureDate, $arrivalDate); + }), + new TwigFunction('get_place_type', fn (string $type) => Game::convertPlaceType($type)), + new TwigFunction('get_system_info', fn (int $systemType, string $info) => SystemResource::getInfo($systemType, $info)), + new TwigFunction('get_place_distance', fn (OrbitalBase $defaultBase, Place $place) => ($this->getDistanceBetweenPlaces)( + $defaultBase->place, + $place, + )), + new TwigFunction('get_max_travel_distance', fn () => Game::getMaxTravelDistance($this->currentPlayerBonusRegistry->getPlayerBonus())), + new TwigFunction('get_place_demography', fn (Place $place) => Game::getSizeOfPlanet($place->population)), + new TwigFunction('get_place_technosphere_improvement_coeff', fn (Place $place) => Game::getImprovementFromScientificCoef($place->coefHistory)), + new TwigFunction('get_commercial_route_data', fn (OrbitalBase $defaultBase, Place $place) => $this->getCommercialRouteData($defaultBase, $place)), + + new TwigFunction('can_player_attack_place', function (Player $player, Place $place) { + $specification = new CanPlayerAttackPlace($player); + + return $specification->isSatisfiedBy($place); + }), + new TwigFunction('can_player_move_to_place', function (Player $player, Place $place, OrbitalBase $orbitalBase) { + $specification = new CanPlayerMoveToPlace($player, $orbitalBase); + + return $specification->isSatisfiedBy($place); + }), + new TwigFunction('can_orbital_base_trade_with_place', function (OrbitalBase $orbitalBase, Place $place) { + $specification = new CanOrbitalBaseTradeWithPlace($orbitalBase); + + return $specification->isSatisfiedBy($place); + }), + new TwigFunction('can_spy', function (Player $player, Place $place) { + $specification = new CanSpyPlace($player); + + return $specification->isSatisfiedBy($place); + }), + new TwigFunction('can_recycle', function (Player $player, Place $place) { + $specification = new CanRecycle($player); + + return $specification->isSatisfiedBy($place); + }), + new TwigFunction('get_recycling_mission_time', fn (OrbitalBase $orbitalBase, Place $place) => ($this->getMissionTime)($orbitalBase->place, $place, $this->currentPlayerRegistry->get())), + ]; + } + + private function getCommercialRouteData(OrbitalBase $defaultBase, Place $place): array + { + $routes = $this->commercialRouteRepository->getBaseRoutes($defaultBase); + + $data = [ + 'proposed' => false, + 'not_accepted' => false, + 'stand_by' => false, + 'send_resources' => false, + 'slots' => \count($routes), + ]; + + foreach ($routes as $route) { + if ($route->destinationBase->id->equals($defaultBase->id) && CommercialRoute::PROPOSED == $route->statement) { + --$data['slots']; + } + if (!$place->id->equals($route->originBase->place->id) && !$place->id->equals($route->destinationBase->place->id)) { + continue; + } + $data = array_merge($data, match ($route->statement) { + CommercialRoute::PROPOSED => ($defaultBase->id->equals($route->originBase->id)) + ? ['proposed' => true] + : ['not_accepted' => true], + CommercialRoute::ACTIVE => ['send_resources' => true], + CommercialRoute::STANDBY => ['stand_by' => true], + }); + } + + return $data; + } +} diff --git a/src/Modules/Atlas/Infrastructure/Twig/RankingExtension.php b/src/Modules/Atlas/Infrastructure/Twig/RankingExtension.php new file mode 100644 index 000000000..937f3ee25 --- /dev/null +++ b/src/Modules/Atlas/Infrastructure/Twig/RankingExtension.php @@ -0,0 +1,57 @@ + match ($type) { + 'general' => [ + 'value' => $playerRanking->general, + 'position' => $playerRanking->generalPosition, + 'variation' => $playerRanking->generalVariation, + ], + 'resources' => [ + 'value' => $playerRanking->resources, + 'position' => $playerRanking->resourcesPosition, + 'variation' => $playerRanking->resourcesVariation, + ], + 'xp' => [ + 'value' => $playerRanking->experience, + 'position' => $playerRanking->experiencePosition, + 'variation' => $playerRanking->experienceVariation, + ], + 'fight' => [ + 'value' => $playerRanking->fight, + 'position' => $playerRanking->fightPosition, + 'variation' => $playerRanking->fightVariation, + ], + 'armies' => [ + 'value' => $playerRanking->armies, + 'position' => $playerRanking->armiesPosition, + 'variation' => $playerRanking->armiesVariation, + ], + 'butcher' => [ + 'value' => $playerRanking->butcher, + 'position' => $playerRanking->butcherPosition, + 'variation' => $playerRanking->butcherVariation, + ], + 'trader' => [ + 'value' => $playerRanking->trader, + 'position' => $playerRanking->traderPosition, + 'variation' => $playerRanking->traderVariation, + ], + default => throw new \InvalidArgumentException(sprintf('%s is not a valid ranking type', $type)), + }) + ]; + } +} diff --git a/src/Modules/Atlas/Manager/RankingManager.php b/src/Modules/Atlas/Manager/RankingManager.php new file mode 100644 index 000000000..4378c85a7 --- /dev/null +++ b/src/Modules/Atlas/Manager/RankingManager.php @@ -0,0 +1,68 @@ +colorRepository->get($factionId); + $faction->isWinner = Color::WIN; + + // @TODO refactor below + return; + + // envoyer un message de Jean-Mi + $winnerName = ColorResource::getInfo($faction->id, 'officialName'); + $content = 'Salut,

La victoire vient d\'être remportée par :
'.$winnerName.'
'; + $content .= 'Cette faction a atteint les '.$this->pointsToWin.' points, la partie est donc terminée.

Bravo et un grand merci à tous les participants !'; + + $S_CVM1 = $this->conversationManager->getCurrentSession(); + $this->conversationManager->newSession(); + $this->conversationManager->load( + ['cu.rPlayer' => $this->jeanMiId] + ); + + if (1 == $this->conversationManager->size()) { + $conv = $this->conversationManager->get(); + + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + + // désarchiver tous les users + $users = $conv->players; + foreach ($users as $user) { + $user->convStatement = ConversationUser::CS_DISPLAY; + } + + // création du message + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $this->jeanMiId; + $message->type = ConversationMessage::TY_STD; + $message->content = $content; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $this->conversationMessageManager->add($message); + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + $this->conversationManager->changeSession($S_CVM1); + } +} diff --git a/src/Modules/Atlas/Model/FactionRanking.php b/src/Modules/Atlas/Model/FactionRanking.php new file mode 100644 index 000000000..e99e3cd64 --- /dev/null +++ b/src/Modules/Atlas/Model/FactionRanking.php @@ -0,0 +1,35 @@ +createQueryBuilder('fr'); + + $qb->select('COUNT(cr.id) as nb, SUM(cr.income) as income') + ->from(CommercialRoute::class, 'cr') + ->join('cr.originBase', 'ob') + ->join('ob.player', 'obp') + ->join('cr.destinationBase', 'db') + ->join('db.player', 'dbp') + ->where($qb->expr()->orX( + $qb->expr()->eq('obp.faction', ':faction'), + $qb->expr()->eq('dbp.faction', ':faction'), + )) + ->andWhere('cr.statement = :statement') + ->setParameter('faction', $faction) + ->setParameter('statement', CommercialRoute::ACTIVE); + + return $qb->getQuery()->getSingleResult(); + } + + public function getLastRanking(Color $faction): FactionRanking|null + { + $qb = $this->createQueryBuilder('fr'); + + $qb + ->where('fr.faction = :faction') + ->orderBy('fr.createdAt', 'DESC') + ->setParameter('faction', $faction) + ->setMaxResults(1); + + return $qb->getQuery()->getOneOrNullResult(); + } + + public function getRankingsByField(Ranking $ranking, string $field): array + { + return $this->findBy(['ranking' => $ranking], [$field => 'DESC']); + } + + public function getFactionRankings(Color $faction): array + { + return $this->findBy([ + 'faction' => $faction, + ], [ + 'createdAt' => 'DESC', + ], 20, 0); + } +} diff --git a/src/Modules/Atlas/Repository/PlayerRankingRepository.php b/src/Modules/Atlas/Repository/PlayerRankingRepository.php new file mode 100644 index 000000000..7b0b1559e --- /dev/null +++ b/src/Modules/Atlas/Repository/PlayerRankingRepository.php @@ -0,0 +1,221 @@ +createQueryBuilder('pr'); + + $qb + ->join('pr.player', 'p') + ->where('p.faction = :faction') + ->andWhere('pr.ranking = :ranking') + ->setParameter('faction', $faction) + ->setParameter('ranking', $ranking); + + return $qb->getQuery()->getResult(); + } + + public function getPlayerLastRanking(Player $player): PlayerRanking|null + { + $qb = $this->createQueryBuilder('pr'); + + $qb + ->orderBy('pr.createdAt', 'DESC') + ->where('pr.player = :player') + ->setParameter('player', $player) + ->setMaxResults(1); + + return $qb->getQuery()->getOneOrNullResult(); + } + + public function getBestPlayerRanking(): PlayerRanking|null + { + return $this->findOneBy([], [ + 'generalPosition' => 'ASC', + ]); + } + + public function getAttackersButcherRanking(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + << implode(',',[Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY])], + ); + } + + public function getDefendersButcherRanking(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + << implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY])], + ); + } + + public function getRankingsByRange(Ranking $ranking, string $field, int $offset, int $limit): array + { + return $this->findBy([ + 'ranking' => $ranking, + ], [$field => 'ASC'], $limit, $offset); + } + + public function getPlayersResources(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT p.id AS player, + ob.levelRefinery AS levelRefinery, + pl.coefResources AS coefResources + FROM orbitalBase AS ob + LEFT JOIN place AS pl + ON pl.id = ob.place_id + LEFT JOIN player AS p + on p.id = ob.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).')' + ); + } + + public function getPlayersResourcesData(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + SUM(ob.resourcesStorage) AS sumResources + FROM orbitalBase AS ob + LEFT JOIN player AS p + on p.id = ob.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).') + GROUP BY ob.place_id' + ); + } + + public function getPlayersGeneralData(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + SUM(ob.points) AS points, + SUM(ob.resourcesStorage) AS resources, + ob.ship_storage + FROM orbitalBase AS ob + LEFT JOIN player AS p + ON p.id = ob.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).') + GROUP BY p.id' + ); + } + + public function getPlayersArmiesData(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + SUM(sq.ship0) as s0, + SUM(sq.ship1) as s1, + SUM(sq.ship2) as s2, + SUM(sq.ship3) as s3, + SUM(sq.ship4) as s4, + SUM(sq.ship5) as s5, + SUM(sq.ship6) as s6, + SUM(sq.ship7) as s7, + SUM(sq.ship8) as s8, + SUM(sq.ship9) as s9, + SUM(sq.ship10) as s10, + SUM(sq.ship11) as s11 + FROM squadron AS sq + LEFT JOIN commander AS c + ON c.id = sq.commander_id + LEFT JOIN player AS p + ON p.id = c.player_id + WHERE c.statement IN ('.implode(',', [Commander::AFFECTED, Commander::MOVING]).') + GROUP BY p.id' + ); + } + + public function getPlayersPlanetData(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + COUNT(ob.place_id) AS sumPlanets + FROM orbitalBase AS ob + LEFT JOIN player AS p + on p.id = ob.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).') + GROUP BY ob.place_id' + ); + } + + public function getPlayersTradeRoutes(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + SUM(c.income) AS income + FROM commercialRoute AS c + LEFT JOIN orbitalBase AS o ON o.id = c.origin_base_id + RIGHT JOIN player AS p ON p.id = o.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).') + GROUP BY p.id + ORDER BY p.id' + ); + } + + public function getPlayersLinkedTradeRoutes(): Result + { + return $this->getEntityManager()->getConnection()->executeQuery( + 'SELECT + p.id AS player, + SUM(income) AS income + FROM `commercialRoute` AS c + LEFT JOIN orbitalBase AS o + ON o.id = c.destination_base_id + RIGHT JOIN player AS p + ON p.id = o.player_id + WHERE p.statement IN ('.implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]).') + GROUP BY p.id + ORDER BY p.id' + ); + } +} diff --git a/src/Modules/Atlas/Repository/RankingRepository.php b/src/Modules/Atlas/Repository/RankingRepository.php new file mode 100644 index 000000000..e212ce4da --- /dev/null +++ b/src/Modules/Atlas/Repository/RankingRepository.php @@ -0,0 +1,23 @@ +findOneBy([], ['createdAt' => 'DESC']); + } +} diff --git a/src/Modules/Atlas/Resource/config/config.yml b/src/Modules/Atlas/Resource/config/config.yml new file mode 100644 index 000000000..9688545d0 --- /dev/null +++ b/src/Modules/Atlas/Resource/config/config.yml @@ -0,0 +1,17 @@ +--- +services: + _defaults: + autowire: true + autoconfigure: true + + App\Modules\Atlas\: + resource: '%kernel.project_dir%/src/Modules/Atlas/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Atlas\Manager\RankingManager: + arguments: + $pointsToWin: '%points_to_win%' + $jeanMiId: '%id_jeanmi%' diff --git a/src/Modules/Atlas/Routine/FactionRoutineHandler.php b/src/Modules/Atlas/Routine/FactionRoutineHandler.php new file mode 100644 index 000000000..fe7ca5ae2 --- /dev/null +++ b/src/Modules/Atlas/Routine/FactionRoutineHandler.php @@ -0,0 +1,291 @@ +> + */ + protected array $results = []; + protected bool $isGameOver = false; + + public function __construct( + private readonly ColorRepositoryInterface $colorRepository, + private readonly DurationHandler $durationHandler, + private readonly FactionRankingRepositoryInterface $factionRankingRepository, + private readonly SectorRepositoryInterface $sectorRepository, + private readonly PlayerRankingRepositoryInterface $playerRankingRepository, + private readonly RankingManager $rankingManager, + #[Autowire('%server_start_time%')] + private readonly string $serverStartTime, + #[Autowire('%hours_before_start_of_ranking%')] + private readonly int $hoursBeforeStartOfRanking, + #[Autowire('%points_to_win%')] + private readonly int $pointsToWin, + ) { + } + + public function process(Ranking $ranking): void + { + $factions = $this->colorRepository->getInGameFactions(); + $sectors = $this->sectorRepository->getAll(); + + foreach ($factions as $faction) { + $routesIncome = $this->factionRankingRepository->getRoutesIncome($faction); + $playerRankings = $this->playerRankingRepository->getFactionPlayerRankings($ranking, $faction); + + $this->execute($faction, $playerRankings, $routesIncome, $sectors); + } + + $winningFactionId = $this->processResults($ranking, $factions); + + if (null !== $winningFactionId) { + $this->rankingManager->processWinningFaction($winningFactionId); + } + } + + public function execute(Color $faction, array $playerRankings, array $routesIncome, array $sectors): void + { + $this->results[$faction->identifier] = [ + 'general' => 0, + 'wealth' => 0, + 'territorial' => 0, + 'points' => $faction->rankingPoints, + ]; + if (1 == $faction->isWinner) { + $this->isGameOver = true; + } + $this->calculateGeneralRanking($playerRankings); + $this->calculateWealthRanking($faction, $routesIncome); + $this->calculateTerritorialRanking($faction, $sectors); + } + + /** + * @param list $factions + */ + public function processResults( + Ranking $ranking, + array $factions, + ): Color|null { + // ---------------- COMPUTING -------------------# + + // copy the arrays + $listG = $this->results; + $listW = $this->results; + $listT = $this->results; + + // sort all the copies + uasort($listG, [$this, 'cmpFactionGeneral']); + uasort($listW, [$this, 'cmpWealth']); + uasort($listT, [$this, 'cmpTerritorial']); + + /*foreach ($list as $key => $value) { + echo $key . ' => ' . $value['general'] . '
'; + }*/ + + // put the position in each array + $listG = $this->setPositions($listG, 'general'); + $listW = $this->setPositions($listW, 'wealth'); + $listT = $this->setPositions($listT, 'territorial'); + + // -------------------------------- POINTS RANKING -----------------------------# + + // faire ce classement uniquement après x jours de jeu + if ($this->durationHandler->getHoursDiff(new \DateTimeImmutable($this->serverStartTime), new \DateTimeImmutable()) > $this->hoursBeforeStartOfRanking) { + // points qu'on gagne en fonction de sa place dans le classement + $pointsToEarn = [40, 30, 20, 10, 0, 0, 0, 0, 0, 0, 0]; + $coefG = 0.1; // 4 3 2 1 0 ... + $coefW = 0.4; // 16 12 8 4 0 ... + $coefT = 0.5; // 20 15 10 5 0 ... + + foreach ($factions as $faction) { + $factionId = $faction->identifier; + $generalPosition = $listG[$factionId]['position']; + $wealthPosition = $listW[$factionId]['position']; + $territorialPosition = $listT[$factionId]['position']; + $additionalPoints = 0; + + // general + $additionalPoints += intval(floor($pointsToEarn[$generalPosition - 1] * $coefG)); + + // wealth + $additionalPoints += intval(floor($pointsToEarn[$wealthPosition - 1] * $coefW)); + + // territorial + $additionalPoints += intval(floor($pointsToEarn[$territorialPosition - 1] * $coefT)); + + $this->results[$factionId]['points'] += $additionalPoints; + } + } + + // ---------------- LAST COMPUTING -------------------# + + $listP = $this->results; + uasort($listP, [$this, 'cmpPoints']); + + $position = 1; + foreach ($listP as $key => $value) { + $listP[$key]['position'] = $position++; + } + + // ---------------- SAVING -------------------# + + $rankings = []; + + foreach ($factions as $faction) { + $factionId = $faction->identifier; + /** @var FactionRanking|null $oldRanking */ + $oldRanking = $this->factionRankingRepository->getLastRanking($faction); + $generalPosition = $listG[$factionId]['position']; + $wealthPosition = $listW[$factionId]['position']; + $territorialPosition = $listT[$factionId]['position']; + + if (true === $this->isGameOver) { + $points = $oldRanking->points; + $pointsPosition = $oldRanking->pointsPosition; + $pointsVariation = 0; + $newPoints = 0; + } else { + $points = $listP[$factionId]['points']; + $pointsPosition = $listP[$factionId]['position']; + $pointsVariation = $oldRanking ? $oldRanking->pointsPosition - $pointsPosition : 0; + $newPoints = $oldRanking ? $points - $oldRanking->points : $points; + } + + $fr = new FactionRanking( + id: Uuid::v4(), + ranking: $ranking, + faction: $faction, + points: $points, + pointsPosition: $pointsPosition, + pointsVariation: $pointsVariation, + newPoints: $newPoints, + general: $listG[$factionId]['general'], + generalPosition: $generalPosition, + generalVariation: $oldRanking ? $oldRanking->generalPosition - $generalPosition : 0, + wealth: $listW[$factionId]['wealth'], + wealthPosition: $wealthPosition, + wealthVariation: $oldRanking ? $oldRanking->wealthPosition - $wealthPosition : 0, + territorial: $listT[$factionId]['territorial'], + territorialPosition: $territorialPosition, + territorialVariation: $oldRanking ? $oldRanking->territorialPosition - $territorialPosition : 0, + createdAt: new \DateTimeImmutable(), + ); + + $rankings[] = $fr; + $this->factionRankingRepository->save($fr); + } + + if (false === $this->isGameOver) { + // check if a faction wins the game + $winRanking = null; + foreach ($rankings as $ranking) { + if ($ranking->points >= $this->pointsToWin) { + if (null !== $winRanking) { + if ($winRanking->points < $ranking->points) { + return $ranking->faction; + } + } else { + return $ranking->faction; + } + } + } + } + + return null; + } + + /** + * @param list $playerRankings + */ + protected function calculateGeneralRanking(array $playerRankings): void + { + foreach ($playerRankings as $playerRanking) { + $player = $playerRanking->player; + + $this->results[$player->faction->identifier]['general'] += $playerRanking->general; + } + } + + /** + * @param array{income: int|null} $routesIncome + */ + protected function calculateWealthRanking(Color $faction, array $routesIncome): void + { + $this->results[$faction->identifier]['wealth'] = $routesIncome['income'] ?? 0; + } + + /** + * @param list $sectors + */ + protected function calculateTerritorialRanking(Color $faction, array $sectors): void + { + foreach ($sectors as $sector) { + if ($sector->faction?->id->equals($faction->id)) { + $this->results[$sector->faction->identifier]['territorial'] += $sector->points; + } + } + } + + protected function cmpFactionGeneral(array $a, array $b): int + { + return $b['general'] <=> $a['general']; + } + + protected function cmpWealth(array $a, array $b): int + { + return $b['wealth'] <=> $a['wealth']; + } + + protected function cmpTerritorial(array $a, array $b): int + { + return $b['territorial'] <=> $a['territorial']; + } + + protected function cmpPoints(array $a, array $b): int + { + return $b['points'] <=> $a['points']; + } + + protected function setPositions(array $list, $attribute): array + { + $position = 1; + $index = 1; + $previous = PHP_INT_MAX; + foreach ($list as $key => $value) { + if ($previous > $value[$attribute]) { + $position = $index; + } + $list[$key]['position'] = $position; + ++$index; + $previous = $list[$key][$attribute]; + } + + return $list; + } + + /** + * @return array> + */ + public function getResults(): array + { + return $this->results; + } +} diff --git a/src/Modules/Atlas/Routine/PlayerRoutineHandler.php b/src/Modules/Atlas/Routine/PlayerRoutineHandler.php new file mode 100644 index 000000000..825373c87 --- /dev/null +++ b/src/Modules/Atlas/Routine/PlayerRoutineHandler.php @@ -0,0 +1,412 @@ +playerRepository->getByStatements([Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); + + $this->execute( + $players, + $this->playerRankingRepository->getPlayersResources(), + $this->playerRankingRepository->getPlayersResourcesData(), + $this->playerRankingRepository->getPlayersGeneralData(), + $this->playerRankingRepository->getPlayersArmiesData(), + $this->playerRankingRepository->getPlayersPlanetData(), + $this->playerRankingRepository->getPlayersTradeRoutes(), + $this->playerRankingRepository->getPlayersLinkedTradeRoutes(), + $this->playerRankingRepository->getAttackersButcherRanking(), + $this->playerRankingRepository->getDefendersButcherRanking(), + ); + + $this->processResults($ranking, $players); + } + + /** + * @param list $players + */ + private function execute( + array $players, + Result $resourcesStatement, + Result $resourcesDataStatement, + Result $generalStatement, + Result $armiesStatement, + Result $planetStatement, + Result $tradeRoutesStatement, + Result $linkedTradeRoutesStatement, + Result $attackersStatement, + Result $defendersStatement, + ): void { + $this->results = []; + // create an array with all the players + foreach ($players as $player) { + $this->results[$player->id] = [ + 'general' => 0, + 'resources' => 0, + 'experience' => 0, + 'victory' => 0, + 'defeat' => 0, + 'fight' => 0, + 'armies' => 0, + 'butcher' => 0, + 'butcherDestroyedPEV' => 0, + 'butcherLostPEV' => 0, + 'trader' => 0, + + 'DA_Resources' => 0, + 'DA_PlanetNumber' => 0, + ]; + } + $this->calculateResources($resourcesStatement); + $this->calculateDataResources($resourcesDataStatement); + $this->calculatePlanetRanking($planetStatement); + $this->calculateGeneralRanking($generalStatement); + $this->calculateArmiesRanking($armiesStatement); + $this->calculateTradeRanking($tradeRoutesStatement, $linkedTradeRoutesStatement); + $this->calculateButcherRanking($attackersStatement, $defendersStatement); + } + + /** + * @param list $players + */ + private function processResults(Ranking $ranking, $players): void + { + foreach ($players as $player) { + if (isset($this->results[$player->id])) { + // add the points to the list + $this->results[$player->id]['experience'] += $player->experience; + $this->results[$player->id]['victory'] += $player->victory; + $this->results[$player->id]['defeat'] += $player->defeat; + $this->results[$player->id]['fight'] += $player->victory - $player->defeat; + } + } + + // copy the arrays + $listG = $this->results; + $listR = $this->results; + $listE = $this->results; + $listF = $this->results; + $listA = $this->results; + $listB = $this->results; + $listT = $this->results; + + // sort all the copies + uasort($listG, [$this, 'cmpGeneral']); + uasort($listR, [$this, 'cmpResources']); + uasort($listE, [$this, 'cmpExperience']); + uasort($listF, [$this, 'cmpFight']); + uasort($listA, [$this, 'cmpArmies']); + uasort($listB, [$this, 'cmpButcher']); + uasort($listT, [$this, 'cmpTrader']); + + /*foreach ($list as $key => $value) { + echo $key . ' => ' . $value['general'] . '
'; + }*/ + + // put the position in each array + $position = 1; + foreach ($listG as $key => $value) { + $listG[$key]['position'] = $position++; + } + $position = 1; + foreach ($listR as $key => $value) { + $listR[$key]['position'] = $position++; + } + $position = 1; + foreach ($listE as $key => $value) { + $listE[$key]['position'] = $position++; + } + $position = 1; + foreach ($listF as $key => $value) { + $listF[$key]['position'] = $position++; + } + $position = 1; + foreach ($listA as $key => $value) { + $listA[$key]['position'] = $position++; + } + $position = 1; + foreach ($listB as $key => $value) { + $listB[$key]['position'] = $position++; + } + $position = 1; + foreach ($listT as $key => $value) { + $listT[$key]['position'] = $position++; + } + + foreach ($players as $player) { + $playerId = $player->id; + + /** @var PlayerRanking|null $oldRanking */ + $oldRanking = $this->playerRankingRepository->getPlayerLastRanking($player); + $generalPosition = $listG[$playerId]['position']; + $resourcesPosition = $listR[$playerId]['position']; + $fightPosition = $listF[$playerId]['position']; + $traderPosition = $listT[$playerId]['position']; + $butcherPosition = $listB[$playerId]['position']; + $armiesPosition = $listA[$playerId]['position']; + $experiencePosition = $listE[$playerId]['position']; + + $pr = new PlayerRanking( + id: Uuid::v4(), + ranking: $ranking, + player: $player, + general: $listG[$playerId]['general'], + generalPosition: $generalPosition, + generalVariation: $oldRanking ? $oldRanking->generalPosition - $generalPosition : 0, + experience: $listE[$playerId]['experience'], + experiencePosition: $experiencePosition, + experienceVariation: $oldRanking ? $oldRanking->experiencePosition - $experiencePosition : 0, + butcher: ($listB[$playerId]['butcher'] >= 0) ? $listB[$playerId]['butcher'] : 0, + butcherDestroyedPEV: $listB[$playerId]['butcherDestroyedPEV'], + butcherLostPEV: $listB[$playerId]['butcherLostPEV'], + butcherPosition: $butcherPosition, + butcherVariation: $oldRanking ? $oldRanking->butcherPosition - $butcherPosition : 0, + trader: $listT[$playerId]['trader'], + traderPosition: $traderPosition, + traderVariation: $oldRanking ? $oldRanking->traderPosition - $traderPosition : 0, + fight: ($listF[$playerId]['fight'] >= 0) ? $listF[$playerId]['fight'] : 0, + victories: $listF[$playerId]['victory'], + defeat: $listF[$playerId]['defeat'], + fightPosition: $fightPosition, + fightVariation: $oldRanking ? $oldRanking->fightPosition - $fightPosition : 0, + armies: $listA[$playerId]['armies'], + armiesPosition: $armiesPosition, + armiesVariation: $oldRanking ? $oldRanking->armiesPosition - $armiesPosition : 0, + resources: intval(round($listR[$playerId]['resources'])), + resourcesPosition: $resourcesPosition, + resourcesVariation: $oldRanking ? $oldRanking->resourcesPosition - $resourcesPosition : 0, + createdAt: new \DateTimeImmutable(), + ); + + $this->playerRankingRepository->save($pr); + } + } + + protected function calculateResources(Result $statement): void + { + while ($row = $statement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $resourcesProd = Game::resourceProduction($this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'level', $row['levelRefinery'], 'refiningCoefficient'), $row['coefResources']); + $this->results[$row['player']]['resources'] += $resourcesProd; + } + } + } + + protected function calculateDataResources(Result $statement): void + { + while ($row = $statement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $this->results[$row['player']]['DA_Resources'] += $row['sumResources']; + } + } + } + + protected function calculatePlanetRanking(Result $statement): void + { + while ($row = $statement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $this->results[$row['player']]['DA_PlanetNumber'] += $row['sumPlanets']; + } + } + } + + protected function calculateGeneralRanking(Result $statement): void + { + while ($row = $statement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $shipStorage = json_decode($row['ship_storage'], true, flags: JSON_THROW_ON_ERROR); + + $shipPrice = 0; + $shipPrice += ShipResource::getInfo(0, 'resourcePrice') * ($shipStorage[0] ?? 0); + $shipPrice += ShipResource::getInfo(1, 'resourcePrice') * ($shipStorage[1] ?? 0); + $shipPrice += ShipResource::getInfo(2, 'resourcePrice') * ($shipStorage[2] ?? 0); + $shipPrice += ShipResource::getInfo(3, 'resourcePrice') * ($shipStorage[3] ?? 0); + $shipPrice += ShipResource::getInfo(4, 'resourcePrice') * ($shipStorage[4] ?? 0); + $shipPrice += ShipResource::getInfo(5, 'resourcePrice') * ($shipStorage[5] ?? 0); + $shipPrice += ShipResource::getInfo(6, 'resourcePrice') * ($shipStorage[6] ?? 0); + $shipPrice += ShipResource::getInfo(7, 'resourcePrice') * ($shipStorage[7] ?? 0); + $shipPrice += ShipResource::getInfo(8, 'resourcePrice') * ($shipStorage[8] ?? 0); + $shipPrice += ShipResource::getInfo(9, 'resourcePrice') * ($shipStorage[9] ?? 0); + $shipPrice += ShipResource::getInfo(10, 'resourcePrice') * ($shipStorage[10] ?? 0); + $shipPrice += ShipResource::getInfo(11, 'resourcePrice') * ($shipStorage[11] ?? 0); + $points = round($shipPrice * self::COEF_RESOURCE); + $points += $row['points']; + $points += round($row['resources'] * self::COEF_RESOURCE); + $this->results[$row['player']]['general'] += $points; + + $pevQuantity = 0; + $pevQuantity += ShipResource::getInfo(0, 'pev') * ($shipStorage[0] ?? 0); + $pevQuantity += ShipResource::getInfo(1, 'pev') * ($shipStorage[1] ?? 0); + $pevQuantity += ShipResource::getInfo(2, 'pev') * ($shipStorage[2] ?? 0); + $pevQuantity += ShipResource::getInfo(3, 'pev') * ($shipStorage[3] ?? 0); + $pevQuantity += ShipResource::getInfo(4, 'pev') * ($shipStorage[4] ?? 0); + $pevQuantity += ShipResource::getInfo(5, 'pev') * ($shipStorage[5] ?? 0); + $pevQuantity += ShipResource::getInfo(6, 'pev') * ($shipStorage[6] ?? 0); + $pevQuantity += ShipResource::getInfo(7, 'pev') * ($shipStorage[7] ?? 0); + $pevQuantity += ShipResource::getInfo(8, 'pev') * ($shipStorage[8] ?? 0); + $pevQuantity += ShipResource::getInfo(9, 'pev') * ($shipStorage[9] ?? 0); + $pevQuantity += ShipResource::getInfo(10, 'pev') * ($shipStorage[10] ?? 0); + $pevQuantity += ShipResource::getInfo(11, 'pev') * ($shipStorage[11] ?? 0); + $this->results[$row['player']]['armies'] += $pevQuantity; + } + } + } + + protected function calculateArmiesRanking(Result $statement): void + { + while ($row = $statement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $shipPrice = 0; + $shipPrice += ShipResource::getInfo(0, 'resourcePrice') * $row['s0']; + $shipPrice += ShipResource::getInfo(1, 'resourcePrice') * $row['s1']; + $shipPrice += ShipResource::getInfo(2, 'resourcePrice') * $row['s2']; + $shipPrice += ShipResource::getInfo(3, 'resourcePrice') * $row['s3']; + $shipPrice += ShipResource::getInfo(4, 'resourcePrice') * $row['s4']; + $shipPrice += ShipResource::getInfo(5, 'resourcePrice') * $row['s5']; + $shipPrice += ShipResource::getInfo(6, 'resourcePrice') * $row['s6']; + $shipPrice += ShipResource::getInfo(7, 'resourcePrice') * $row['s7']; + $shipPrice += ShipResource::getInfo(8, 'resourcePrice') * $row['s8']; + $shipPrice += ShipResource::getInfo(9, 'resourcePrice') * $row['s9']; + $shipPrice += ShipResource::getInfo(10, 'resourcePrice') * $row['s10']; + $shipPrice += ShipResource::getInfo(11, 'resourcePrice') * $row['s11']; + $points = round($shipPrice * self::COEF_RESOURCE); + $this->results[$row['player']]['general'] += $points; + + $pevQuantity = 0; + $pevQuantity += ShipResource::getInfo(0, 'pev') * $row['s0']; + $pevQuantity += ShipResource::getInfo(1, 'pev') * $row['s1']; + $pevQuantity += ShipResource::getInfo(2, 'pev') * $row['s2']; + $pevQuantity += ShipResource::getInfo(3, 'pev') * $row['s3']; + $pevQuantity += ShipResource::getInfo(4, 'pev') * $row['s4']; + $pevQuantity += ShipResource::getInfo(5, 'pev') * $row['s5']; + $pevQuantity += ShipResource::getInfo(6, 'pev') * $row['s6']; + $pevQuantity += ShipResource::getInfo(7, 'pev') * $row['s7']; + $pevQuantity += ShipResource::getInfo(8, 'pev') * $row['s8']; + $pevQuantity += ShipResource::getInfo(9, 'pev') * $row['s9']; + $pevQuantity += ShipResource::getInfo(10, 'pev') * $row['s10']; + $pevQuantity += ShipResource::getInfo(11, 'pev') * $row['s11']; + $this->results[$row['player']]['armies'] += $pevQuantity; + } + } + } + + protected function calculateTradeRanking(Result $routesStatement, Result $linkedRoutesStatement): void + { + while ($row = $routesStatement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $this->results[$row['player']]['trader'] += $row['income']; + } + } + while ($row = $linkedRoutesStatement->fetchAssociative()) { + if (isset($this->results[$row['player']])) { + $this->results[$row['player']]['trader'] += $row['income']; + } + } + } + + protected function calculateButcherRanking(Result $attackerStatement, Result $defenderStatement): void + { + while ($row = $attackerStatement->fetchAssociative()) { + if (isset($this->results[$row['player_id']])) { + $this->results[$row['player_id']]['butcherDestroyedPEV'] += $row['destroyedPEV']; + $this->results[$row['player_id']]['butcherLostPEV'] += $row['lostPEV']; + $this->results[$row['player_id']]['butcher'] += $row['destroyedPEV'] - $row['lostPEV']; + } + } + while ($row = $defenderStatement->fetchAssociative()) { + if (isset($this->results[$row['player_id']])) { + $this->results[$row['player_id']]['butcherDestroyedPEV'] += $row['destroyedPEV']; + $this->results[$row['player_id']]['butcherLostPEV'] += $row['lostPEV']; + $this->results[$row['player_id']]['butcher'] += $row['destroyedPEV'] - $row['lostPEV']; + } + } + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpGeneral(array $a, array $b): int + { + return $b['general'] <=> $a['general']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpResources(array $a, array $b): int + { + return $b['resources'] <=> $a['resources']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpExperience(array $a, array $b): int + { + return $b['experience'] <=> $a['experience']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpFight(array $a, array $b): int + { + return $b['fight'] <=> $a['fight']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpArmies(array $a, array $b): int + { + return $b['armies'] <=> $a['armies']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpButcher(array $a, array $b): int + { + return $b['butcher'] <=> $a['butcher']; + } + + /** + * @param array $a + * @param array $b + */ + protected function cmpTrader(array $a, array $b): int + { + return $b['trader'] <=> $a['trader']; + } +} diff --git a/src/Modules/Demeter/Application/Election/NextElectionDateCalculator.php b/src/Modules/Demeter/Application/Election/NextElectionDateCalculator.php new file mode 100644 index 000000000..62a317630 --- /dev/null +++ b/src/Modules/Demeter/Application/Election/NextElectionDateCalculator.php @@ -0,0 +1,117 @@ +calculate($faction, $this->getElectionDuration() + $this->getCampaignDuration()); + } + + public function getSenateUpdateMessage(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction); + } + + public function getNextElectionDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction, addMandateDuration: false); + } + + public function getStartDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction, $this->getElectionDuration(), false); + } + + public function getEndDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction); + } + + public function getPutschEndDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction, $this->getPutschDuration(), false); + } + + public function getCampaignStartDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction); + } + + public function getCampaignEndDate(Color $faction): \DateTimeImmutable + { + return $this->calculate($faction, $this->getCampaignDuration()); + } + + public function getMandateDuration(Color $faction): int + { + return $this->timeMode->isStandard() ? + ColorResource::getInfo($faction->identifier, 'mandateDuration') + : 60 * 40; + } + + private function calculate(Color $faction, int $duration = 0, bool $addMandateDuration = true): \DateTimeImmutable + { + $lastElection = $this->electionRepository->getFactionLastElection($faction); + $durationEnd = null; + + if ($addMandateDuration) { + $duration += $this->getMandateDuration($faction); + } + + if (0 === $duration) { + return $lastElection->dElection ?? new \DateTimeImmutable($this->serverStartTime); + } + + do { + $durationStart = $durationEnd ?? $lastElection->dElection ?? new \DateTimeImmutable($this->serverStartTime); + + $durationEnd = $this->durationHandler->getDurationEnd($durationStart, $duration); + } while ($durationEnd < $this->clock->now()); + + return $durationEnd; + } + + private function getElectionDuration(): int + { + return $this->timeMode->isStandard() ? $this->electionDuration : 1200; + } + + private function getCampaignDuration(): int + { + return $this->timeMode->isStandard() ? $this->campaignDuration : 300; + } + + private function getPutschDuration(): int + { + return $this->timeMode->isStandard() ? $this->putschDuration : 1200; + } +} diff --git a/src/Modules/Demeter/Application/Handler/Forum/UpsertTopicLastView.php b/src/Modules/Demeter/Application/Handler/Forum/UpsertTopicLastView.php new file mode 100644 index 000000000..7b844f020 --- /dev/null +++ b/src/Modules/Demeter/Application/Handler/Forum/UpsertTopicLastView.php @@ -0,0 +1,40 @@ +forumTopicLastViewRepository->getByTopicAndPlayer($forumTopic, $player))) { + $topicLastView->viewedAt = $this->clock->now(); + + $this->forumTopicLastViewRepository->save($topicLastView); + + return $topicLastView; + } + $topicLastView = new ForumTopicLastView( + player: $player, + forumTopic: $forumTopic, + viewedAt: $this->clock->now(), + ); + + $this->forumTopicLastViewRepository->save($topicLastView); + + return $topicLastView; + } +} diff --git a/src/Modules/Demeter/Application/Handler/LawEffectivenessScheduler.php b/src/Modules/Demeter/Application/Handler/LawEffectivenessScheduler.php new file mode 100644 index 000000000..34105a94a --- /dev/null +++ b/src/Modules/Demeter/Application/Handler/LawEffectivenessScheduler.php @@ -0,0 +1,78 @@ +factionRepository->getInGameFactions() as $faction) { + $this->scheduleFactionLaws($faction); + } + } + + private function scheduleFactionLaws(Color $faction): void + { + $laws = $this->lawRepository->getByFactionAndStatements($faction, [Law::VOTATION, Law::EFFECTIVE]); + + $now = new \DateTimeImmutable(); + + foreach ($laws as $law) { + if ($law->isBeingVoted() && $law->voteEndedAt < $now) { + $this->messageBus->dispatch( + new VoteMessage($law->id), + [DateTimeConverter::to_delay_stamp($law->voteEndedAt)], + ); + } elseif ($law->isEffective() && $law->endedAt < $now) { + $messageClass = match (LawResources::getInfo($law->type, 'bonusLaw')) { + true => BonusEndMessage::class, + false => match ($law->type) { + Law::SECTORTAX => SectorTaxesResultMessage::class, + Law::SECTORNAME => SectorNameResultMessage::class, + Law::COMTAXEXPORT => ExportCommercialTaxesResultMessage::class, + Law::COMTAXIMPORT => ImportCommercialTaxesResultMessage::class, + Law::PEACEPACT => PeaceDeclarationResultMessage::class, + Law::WARDECLARATION => WarDeclarationResultMessage::class, + Law::TOTALALLIANCE => AllianceDeclarationResultMessage::class, + Law::NEUTRALPACT => NonAgressionPactDeclarationResultMessage::class, + Law::PUNITION => SanctionResultMessage::class, + } + }; + $this->messageBus->dispatch( + new $messageClass($law->id), + [DateTimeConverter::to_delay_stamp($law->endedAt)], + ); + } + } + } +} diff --git a/src/Modules/Demeter/DemeterModule.php b/src/Modules/Demeter/DemeterModule.php new file mode 100644 index 000000000..ad92437c3 --- /dev/null +++ b/src/Modules/Demeter/DemeterModule.php @@ -0,0 +1,13 @@ +faction; + $isRulerLaw = Player::CHIEF === LawResources::getInfo($type, 'department'); + $statement = $isRulerLaw ? Law::EFFECTIVE : Law::VOTATION; + + $voteEndedAt = $isRulerLaw + ? $this->clock->now() + : new DatePoint('+' . ($this->getVotationTime)() . ' seconds'); + + $applicationMode = LawResources::getInfo($type, 'application_mode'); + $lawName = LawResources::getInfo($type, 'name'); + + if (LawResources::APPLICATION_MODE_INSTANTANEOUS === $applicationMode && null !== $duration) { + throw new \InvalidArgumentException(sprintf('Law "%s" cannot have a custom duration', $lawName)); + } + + if (LawResources::APPLICATION_MODE_CUSTOM_DURATION === $applicationMode && null === $duration) { + throw new \InvalidArgumentException(sprintf('Law "%s" must have a custom duration', $lawName)); + } + + // TODO replace bonusLaw with application_mode + if (LawResources::getInfo($type, 'bonusLaw')) { + $options = []; + + if ($this->lawRepository->lawExists($player->faction, $type)) { + throw new \DomainException('Cette loi est déjà proposée ou en vigueur.'); + } + + return new Law( + id: Uuid::v4(), + faction: $faction, + type: $type, + voteEndedAt: $voteEndedAt, + endedAt: ($this->getApplicationDuration)($type, $duration), + createdAt: new \DateTimeImmutable(), + options: $options, + statement: $statement, + ); + } + + $options = match ($type) { + Law::SECTORTAX => $this->createSectorTaxLaw($player, $payload), + Law::SECTORNAME => $this->createSectorNameLaw($player, $payload), + Law::COMTAXEXPORT => $this->createCommercialExportTaxLaw($player, $payload), + Law::COMTAXIMPORT => $this->createCommercialImportTaxLaw($player, $payload), + Law::NEUTRALPACT => $this->createNeutralPactLaw($faction, $payload), + Law::PEACEPACT => $this->createPeacePactLaw($faction, $payload), + Law::TOTALALLIANCE => $this->createTotalAllianceLaw($faction, $payload), + Law::WARDECLARATION => $this->createWarDeclarationLaw($faction, $payload), + Law::PUNITION => $this->createPunitionLaw($player, $payload), + default => throw new \InvalidArgumentException(sprintf('La loi %s n\'est pas enregistrée.', $type)), + }; + + return new Law( + id: Uuid::v4(), + faction: $faction, + type: $type, + voteEndedAt: $voteEndedAt, + endedAt: ($this->getApplicationDuration)($type, $duration), + createdAt: new \DateTimeImmutable(), + options: $options, + statement: $statement, + ); + } + + /** + * @param array $payload + * @return array + */ + private function createSectorTaxLaw(Player $currentPlayer, array $payload): array + { + $taxes = $payload['taxes'] + ?? throw new \InvalidArgumentException('Missing taxes amount'); + $rSector = $payload['rsector'] + ?? throw new \InvalidArgumentException('Missing sector id'); + // TODO replace with specification + if ($taxes < 2 || $taxes > 15) { + throw new \DomainException('La taxe doit être entre 2 et 15 %.'); + } + $sector = $this->sectorRepository->get(Uuid::fromString($rSector)) + ?? throw new \InvalidArgumentException('Sector not found'); + // TODO Replace with Voter + if (!$sector->faction->id->equals($currentPlayer->faction->id)) { + // TODO Replace with custom exception + throw new \UnexpectedValueException('Ce secteur n\'est pas sous votre contrôle.'); + } + return [ + 'taxes' => $taxes, + 'rSector' => $rSector, + 'display' => [ + 'Secteur' => $sector->name, + 'Taxe actuelle' => $sector->tax . ' %', + 'Taxe proposée' => $taxes . ' %' + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createSectorNameLaw(Player $currentPlayer, array $payload): array + { + $rSector = $payload['rsector'] ?? throw new \InvalidArgumentException('Missing sector'); + $name = $payload['name'] ?? throw new \InvalidArgumentException('Missing name'); + // Replace with specification + if (strlen($name) < 1 and strlen($name) > 50) { + throw new \DomainException('Le nom doit faire entre 1 et 50 caractères.'); + } + $name = $this->parser->protect($name); + $sector = $this->sectorRepository->get(Uuid::fromString($rSector)) + ?? throw new \InvalidArgumentException('Ce secteur n\'existe pas.'); + if (!$sector->faction->id->equals($currentPlayer->faction->id)) { + throw new \UnexpectedValueException('Ce secteur n\'est pas sous votre contrôle.'); + } + return [ + 'name' => $name, + 'rSector' => $rSector, + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createCommercialExportTaxLaw(Player $currentPlayer, array $payload): array + { + $taxes = $payload['taxes'] + ?? throw new \InvalidArgumentException('Missing taxes'); + $rColor = $payload['rcolor'] + ?? throw new \InvalidArgumentException('Missing related faction'); + $relatedFaction = $this->colorRepository->get(Uuid::fromString($rColor)) + ?? throw new \InvalidArgumentException('Faction not found'); + + $commercialTaxes = $this->commercialTaxRepository->getFactionsTax($currentPlayer->faction, $relatedFaction); + + if ($relatedFaction->id->equals($currentPlayer->faction->id) && $taxes > 15) { + throw new \DomainException('Pas plus que 15.'); + } elseif ($taxes > 15 || $taxes < 2) { + throw new \DomainException('Entre 2 et 15.'); + } + + return [ + 'taxes' => $taxes, + 'rColor' => $rColor, + 'display' => [ + 'Faction' => ColorResource::getInfo($rColor, 'officialName'), + 'Taxe actuelle' => $commercialTaxes->exportTax . ' %', + 'Taxe proposée' => $taxes . ' %', + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createCommercialImportTaxLaw(Player $currentPlayer, array $payload): array + { + $taxes = $payload['taxes'] + ?? throw new \InvalidArgumentException('Missing taxes'); + $rColor = $payload['rcolor'] + ?? throw new \InvalidArgumentException('Missing related faction'); + $relatedFaction = $this->colorRepository->get(Uuid::fromString($rColor)) + ?? throw new \InvalidArgumentException('Faction not found'); + + $commercialTaxes = $this->commercialTaxRepository->getFactionsTax($currentPlayer->faction, $relatedFaction); + + if ($relatedFaction->id->equals($currentPlayer->faction->id) && $taxes > 15) { + throw new \DomainException('Pas plus que 15.'); + } elseif ($taxes > 15 || $taxes < 2) { + throw new \DomainException('Entre 2 et 15.'); + } + return [ + 'taxes' => $taxes, + 'rColor' => $rColor, + 'display' => [ + 'Faction' => ColorResource::getInfo($rColor, 'officialName'), + 'Taxe actuelle' => $commercialTaxes->importTax . ' %', + 'Taxe proposée' => $taxes . ' %', + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createNeutralPactLaw(Color|null $faction, array $payload): array + { + $factionIdentifier = intval($payload['rcolor'] + ?? throw new \InvalidArgumentException('Informations manquantes.')); + + if ($factionIdentifier < 1 || $factionIdentifier > (ColorResource::size() - 1) || $factionIdentifier === $faction->identifier) { + throw new \InvalidArgumentException('Cette faction n\'existe pas ou il s\'agit de la votre.'); + } + + if (Color::NEUTRAL === $faction->relations[$factionIdentifier]) { + throw new \DomainException('Vous considérez déjà cette faction comme neutre.'); + } + + return [ + 'rColor' => $factionIdentifier, + 'display' => [ + 'Faction' => ColorResource::getInfo($factionIdentifier, 'officialName'), + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createPeacePactLaw(Color|null $faction, array $payload): array + { + $factionIdentifier = intval($payload['rcolor'] + ?? throw new \InvalidArgumentException('Informations manquantes.')); + if ($factionIdentifier < 1 || $factionIdentifier > (ColorResource::size() - 1) || $factionIdentifier === $faction->identifier) { + throw new \InvalidArgumentException('Cette faction n\'existe pas ou il s\'agit de la votre.'); + } + $nbrPact = 0; + foreach ($faction->relations as $relation) { + if (Color::PEACE == $relation) { + ++$nbrPact; + } + } + if ($nbrPact >= 2) { + throw new \DomainException('Vous ne pouvez faire que 2 pactes de ce type.'); + } + + if (Color::PEACE === $faction->relations[$factionIdentifier]) { + throw new \DomainException('Vous considérez déjà cette faction comme votre alliée.'); + } + + return [ + 'rColor' => $factionIdentifier, + 'display' => [ + 'Faction' => ColorResource::getInfo($factionIdentifier, 'officialName'), + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createTotalAllianceLaw(Color|null $faction, array $payload): array + { + $factionIdentifier = intval($payload['rcolor'] + ?? throw new \InvalidArgumentException('Informations manquantes.')); + if ($factionIdentifier < 1 || $factionIdentifier > (ColorResource::size() - 1) || $factionIdentifier === $faction->identifier) { + throw new \InvalidArgumentException('Cette faction n\'existe pas ou il s\'agit de la votre.'); + } + $allyYet = false; + foreach ($faction->relations as $relation) { + if (Color::ALLY === $relation) { + $allyYet = true; + } + } + if ($allyYet) { + throw new \DomainException('Vous ne pouvez considérez qu\'une seule faction comme alliée.'); + } + + if (Color::ALLY === $faction->relations[$factionIdentifier]) { + throw new \DomainException('Vous considérez déjà cette faction comme votre alliée.'); + } + + return [ + 'rColor' => $factionIdentifier, + 'display' => [ + 'Faction' => ColorResource::getInfo($factionIdentifier, 'officialName'), + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createWarDeclarationLaw(Color|null $faction, array $payload): array + { + $factionIdentifier = intval($payload['rcolor'] + ?? throw new \InvalidArgumentException('Informations manquantes.')); + + if ($factionIdentifier < 1 || $factionIdentifier > (ColorResource::size() - 1) || $factionIdentifier === $faction->identifier) { + throw new \DomainException('Cette faction n\'existe pas ou il s\'agit de la votre.'); + } + if (Color::ENEMY === $faction->relations[$factionIdentifier]) { + throw new \DomainException('Vous considérez déjà cette faction comme votre ennemie.'); + } + + return [ + 'rColor' => $factionIdentifier, + 'display' => [ + 'Faction' => ColorResource::getInfo($factionIdentifier, 'officialName') + ], + ]; + } + + /** + * @param array $payload + * @return array + */ + public function createPunitionLaw(Player $currentPlayer, array $payload): array + { + $rPlayer = $payload['rplayer'] + ?? throw new \InvalidArgumentException('Missing player id'); + $credits = intval($payload['credits'] + ?? throw new \InvalidArgumentException('Missing fine amount')); + + if ($credits <= 0) { + throw new \InvalidArgumentException('l\'amende doit être un entier positif.'); + } + $targetPlayer = $this->playerRepository->get($rPlayer); + if (!$targetPlayer->faction->id->equals($currentPlayer->faction->id)) { + throw new \UnexpectedValueException('Ce joueur n\'est pas de votre faction.'); + } + + return [ + 'rPlayer' => $rPlayer, + 'credits' => $credits, + 'display' => [ + 'Joueur' => $targetPlayer->name, + 'amende' => $credits, + ], + ]; + } +} diff --git a/src/Modules/Demeter/Domain/Repository/ColorRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/ColorRepositoryInterface.php new file mode 100644 index 000000000..165430a0a --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/ColorRepositoryInterface.php @@ -0,0 +1,39 @@ + + */ + public function getAll(): array; + + /** + * @return list + */ + public function getInGameFactions(): array; + + /** + * @return list + */ + public function getOpenFactions(): array; + + /** + * @return list + */ + public function getAllByActivePlayersNumber(): array; + + /** + * @return list + */ + public function getByRegimeAndElectionStatement($regimes, $electionStatements): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Election/CandidateRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Election/CandidateRepositoryInterface.php new file mode 100644 index 000000000..cd6d1aa3e --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Election/CandidateRepositoryInterface.php @@ -0,0 +1,24 @@ + + */ +interface CandidateRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Candidate|null; + + public function getByElectionAndPlayer(Election $election, Player $player): Candidate|null; + + /** + * @return list + */ + public function getByElection(Election $election): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Election/ElectionRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Election/ElectionRepositoryInterface.php new file mode 100644 index 000000000..1b280b91b --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Election/ElectionRepositoryInterface.php @@ -0,0 +1,18 @@ + + */ +interface ElectionRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Election|null; + + public function getFactionLastElection(Color $faction): Election|null; +} diff --git a/src/Modules/Demeter/Domain/Repository/Election/VoteRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Election/VoteRepositoryInterface.php new file mode 100644 index 000000000..8dba2f16d --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Election/VoteRepositoryInterface.php @@ -0,0 +1,21 @@ + + */ +interface VoteRepositoryInterface extends EntityRepositoryInterface +{ + public function getPlayerVote(Player $player, Election $election): Vote|null; + + /** + * @return list + */ + public function getElectionVotes(Election $election): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Forum/FactionNewsRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Forum/FactionNewsRepositoryInterface.php new file mode 100644 index 000000000..98a52880e --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Forum/FactionNewsRepositoryInterface.php @@ -0,0 +1,28 @@ + + */ +interface FactionNewsRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): FactionNews|null; + + public function getPinnedNew(Color $faction): FactionNews|null; + + /** + * @return list + */ + public function getFactionNews(Color $faction): array; + + /** + * @return list + */ + public function getFactionBasicNews(Color $faction): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Forum/ForumMessageRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Forum/ForumMessageRepositoryInterface.php new file mode 100644 index 000000000..fef220c6e --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Forum/ForumMessageRepositoryInterface.php @@ -0,0 +1,23 @@ + + */ +interface ForumMessageRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): ForumMessage|null; + + /** + * @return list + */ + public function getTopicMessages(ForumTopic $topic, int $limit = 20, int $offset = 0): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicLastViewRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicLastViewRepositoryInterface.php new file mode 100644 index 000000000..735b1b59e --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicLastViewRepositoryInterface.php @@ -0,0 +1,18 @@ + + */ +interface ForumTopicLastViewRepositoryInterface extends EntityRepositoryInterface +{ + public function getByTopicAndPlayer(ForumTopic $forumTopic, Player $player): ForumTopicLastView|null; +} diff --git a/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicRepositoryInterface.php new file mode 100644 index 000000000..58003285d --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Forum/ForumTopicRepositoryInterface.php @@ -0,0 +1,46 @@ + + */ +interface ForumTopicRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): ForumTopic|null; + + public function getByForumAndPlayer(int $forum, Player $player): ForumTopic|null; + + /** + * @return list + */ + public function getByForumAndFaction(int $forum, Color $faction, int $limit = 10, int $offset = 0, bool $archived = false): array; + + /** + * @return list + */ + public function getByForumAndFactionWithLastViews(int $forum, Color $faction, Player $player, int $limit = 10, int $offset = 0, bool $archived = false): array; + + /** + * @return list + */ + public function getByForum(int $forum, int $limit = 10, int $offset = 0, bool $archived = false): array; + + /** + * @return list + */ + public function getByForumWithLastViews(int $forum, Player $player, int $limit = 10, int $offset = 0, bool $archived = false): array; +} diff --git a/src/Modules/Demeter/Domain/Repository/Law/LawRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Law/LawRepositoryInterface.php new file mode 100644 index 000000000..aad08cdb7 --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Law/LawRepositoryInterface.php @@ -0,0 +1,24 @@ + + */ +interface LawRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Law|null; + + /** + * @param list $statements + * @return list + */ + public function getByFactionAndStatements(Color $faction, array $statements = []): array; + + public function lawExists(Color $faction, int $type): bool; +} diff --git a/src/Modules/Demeter/Domain/Repository/Law/VoteLawRepositoryInterface.php b/src/Modules/Demeter/Domain/Repository/Law/VoteLawRepositoryInterface.php new file mode 100644 index 000000000..20c39a3cc --- /dev/null +++ b/src/Modules/Demeter/Domain/Repository/Law/VoteLawRepositoryInterface.php @@ -0,0 +1,21 @@ + + */ +interface VoteLawRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return list + */ + public function getLawVotes(Law $law): array; + + public function hasVoted(Player $player, Law $law): bool; +} diff --git a/src/Modules/Demeter/Domain/Service/Law/GetApplicationDuration.php b/src/Modules/Demeter/Domain/Service/Law/GetApplicationDuration.php new file mode 100644 index 000000000..5263f51a7 --- /dev/null +++ b/src/Modules/Demeter/Domain/Service/Law/GetApplicationDuration.php @@ -0,0 +1,29 @@ +clock->now(); + } + + $seconds = $this->gameTimeConverter->convertGameCyclesToSeconds(max(1, $cycles)); + + return new DatePoint('+' . $seconds . ' seconds'); + } +} diff --git a/src/Modules/Demeter/Domain/Service/Law/GetPrice.php b/src/Modules/Demeter/Domain/Service/Law/GetPrice.php new file mode 100644 index 000000000..ac5863651 --- /dev/null +++ b/src/Modules/Demeter/Domain/Service/Law/GetPrice.php @@ -0,0 +1,31 @@ +playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]); + + return $baseLawPrice * $gameCycles * $activePlayers; + } +} diff --git a/src/Modules/Demeter/Domain/Service/Law/GetVotationTime.php b/src/Modules/Demeter/Domain/Service/Law/GetVotationTime.php new file mode 100644 index 000000000..644be750a --- /dev/null +++ b/src/Modules/Demeter/Domain/Service/Law/GetVotationTime.php @@ -0,0 +1,25 @@ +timeMode) { + TimeMode::Standard => 86400, + TimeMode::Fast => 3600, + }; + } +} diff --git a/src/Modules/Demeter/Handler/BallotHandler.php b/src/Modules/Demeter/Handler/BallotHandler.php new file mode 100644 index 000000000..54c09a762 --- /dev/null +++ b/src/Modules/Demeter/Handler/BallotHandler.php @@ -0,0 +1,411 @@ +colorRepository->get($message->factionId) + ?? throw new \RuntimeException(sprintf('Faction %s not found', $message->factionId)); + if (null === ($election = $this->electionRepository->getFactionLastElection($faction))) { + return; + } + + $currentLeader = $this->playerRepository->getFactionLeader($faction); + + $votes = $this->voteRepository->getElectionVotes($election); + /** @var array $ballot */ + $ballot = []; + + foreach ($votes as $vote) { + $candidateId = $vote->candidate->id->toBase32(); + if (!array_key_exists($candidateId, $ballot)) { + $ballot[$candidateId] = [ + 'candidate' => $vote->candidate, + 'votes_count' => 0, + ]; + } + ++$ballot[$candidateId]['votes_count']; + } + + uasort($ballot, fn($a, $b) => $b['votes_count'] <=> $a['votes_count']); + + $convPlayer = $this->playerRepository->getFactionAccount($faction); + + $conv = $this->conversationRepository->getOneByPlayer($convPlayer); + + if ($faction->isDemocratic()) { + if (count($ballot) > 0) { + arsort($ballot); + + $governmentMembers = $this->playerRepository->getBySpecification(new IsGovernmentMember($faction)); + + $newChief = current($ballot)['candidate']->player; + + $this->mandate($faction, $governmentMembers, $newChief, $currentLeader, true, $conv, $convPlayer, $ballot); + } else { + $this->mandate($faction, [], null, $currentLeader, false, $conv, $convPlayer, $ballot); + } + } elseif ($faction->isRoyalistic()) { + if (count($ballot) > 0) { + arsort($ballot); + + if (current($ballot)['candidate']->player->id === $currentLeader?->id) { + next($ballot); + } + + // TODO replace by count by IsActiveFactionPlayer specification + $factionActivePlayers = $this->playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]); + + if (((current($ballot)['votes_count'] / ($factionActivePlayers + 1)) * 100) >= Color::PUTSCHPERCENTAGE) { + $governmentMembers = $this->playerRepository->getBySpecification(new IsGovernmentMember($faction)); + $newChief = current($ballot)['candidate']->player; + $this->mandate($faction, $governmentMembers, $newChief, $currentLeader, true, $conv, $convPlayer, $ballot); + } else { + $looser = current($ballot)['candidate']->player; + $this->mandate($faction, [], $looser, $currentLeader, false, $conv, $convPlayer, $ballot); + } + } + } else { + if (($leader = $this->playerRepository->getFactionLeader($faction)) !== null) { + if (($candidate = $this->candidateRepository->getByElectionAndPlayer($election, $leader)) !== null) { + if (0 == random_int(0, 1)) { + $ballot = []; + } + } + } + if (count($ballot) > 0) { + $aleaNbr = random_int(0, count($ballot) - 1); + + for ($i = 0; $i < $aleaNbr; ++$i) { + next($ballot); + } + + $governmentMembers = $this->playerRepository->getBySpecification(new IsGovernmentMember($faction)); + $newChief = current($ballot)['candidate']->player; + + $this->mandate($faction, $governmentMembers, $newChief, $currentLeader, true, $conv, $convPlayer, $ballot); + } else { + $this->mandate($faction, [], null, $currentLeader, false, $conv, $convPlayer, $ballot); + } + } + } + + /** + * @param list $governmentMembers + * @param ($hadVoted is true ? Player : Player|null) $newChief + * @param array $candidates + * @throws \Exception + */ + private function mandate( + Color $color, + array $governmentMembers, + Player|null $newChief, + Player|null $currentLeader, + bool $hadVoted, + Conversation $conv, + Player $convPlayer, + array $candidates, + ): void { + // préparation de la conversation + $conv->lastMessageAt = new \DateTimeImmutable(); + $conv->messagesCount++; + + // désarchiver tous les users + $users = $conv->players; + foreach ($users as $user) { + $user->conversationStatus = ConversationUser::CS_DISPLAY; + } + $mandateDuration = $this->nextElectionDateCalculator->getMandateDuration($color); + if ($hadVoted) { + /* $date = new DateTime($this->dLastElection); + $date->modify('+' . $this->mandateDuration + self::ELECTIONTIME + self::CAMPAIGNTIME . ' second'); + $date = $date->format('Y-m-d H:i:s'); + $this->dLastElection = $date;*/ + + foreach ($governmentMembers as $governmentMember) { + $governmentMember->status = Player::PARLIAMENT; + } + $newChief->status = Player::CHIEF; + + $color->lastElectionHeldAt = new \DateTimeImmutable(); + $color->electionStatement = Color::MANDATE; + + /** @var list $statusArray */ + $statusArray = ColorResource::getInfo($color->identifier, 'status'); + if ($color->isDemocratic()) { + $this->messageBus->dispatch( + new CampaignMessage($color->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getCampaignStartDate($color))], + ); + $notif = NotificationBuilder::new() + ->setTitle('Votre avez été élu') + ->setContent(NotificationBuilder::paragraph(sprintf( + 'Le peuple vous a soutenu, vous avez été élu %s de votre faction.', + $statusArray[Player::CHIEF - 1], + ))) + ->for($newChief); + $this->notificationRepository->save($notif); + + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: sprintf( + 'La période électorale est terminée. + Un nouveau dirigeant a été élu pour faire valoir la force de %s à travers la galaxie. + Longue vie à %s.

Voici les résultats des élections :

+ %s', + ColorResource::getPopularName($color), + current($candidates)['candidate']->player->name, + array_map( + /** @param array{candidate: Candidate, votes_count: int} $player */ + fn (array $player) => sprintf( + '%s a reçu %d vote%s
', + $player['candidate']->player->name, + $player['votes_count'], + Format::plural($player['votes_count']), + ), + $candidates, + ), + ), + createdAt: new \DateTimeImmutable(), + ); + $this->conversationRepository->save($message); + } elseif ($color->isRoyalistic()) { + $this->messageBus->dispatch( + new SenateUpdateMessage($color->id), + [DateTimeConverter::to_delay_stamp(new \DateTimeImmutable(sprintf('+%d seconds', $mandateDuration)))], + ); + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Votre coup d\'état a réussi') + ->setContent(NotificationBuilder::paragraph( + 'Le peuple vous a soutenu, vous avez renversé le ', + $statusArray[Player::CHIEF - 1], + ' de votre faction et avez pris sa place.', + )) + ->for($newChief) + ); + + if (null !== $currentLeader) { + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Un coup d\'état a réussi') + ->setContent(NotificationBuilder::paragraph( + 'Le joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $newChief->id]), + $newChief->name, + ), + ' a fait un coup d\'état, vous êtes évincé du pouvoir.', + )) + ->for($currentLeader)); + } + + // création du message + reset($candidates); + if (current($candidates)['candidate']->player->id === $currentLeader?->id) { + next($candidates); + } + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: 'Un putsch a réussi, un nouveau dirigeant va faire valoir la force de '. + ColorResource::getPopularName($color). + ' à travers la galaxie. Longue vie à '. + current($candidates)['candidate']->player->name. + '.

De nombreux membres de la faction ont soutenu le mouvement révolutionnaire :

'. + current($candidates)['candidate']->player->name. + ' a reçu le soutien de '. + Format::number((current($candidates)['votes_count'] / ($this->playerRepository->countByFactionAndStatements($color, [Player::ACTIVE]) + 1)) * 100). + '% de la population.
', + ); + $this->conversationMessageRepository->save($message); + } else { + $date = \DateTime::createFromImmutable($color->lastElectionHeldAt); + $date->modify('+'.$mandateDuration.' seconds'); + $this->messageBus->dispatch( + new CampaignMessage($color->id), + [DateTimeConverter::to_delay_stamp(\DateTimeImmutable::createFromMutable($date))], + ); + + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Vous avez été nommé Guide') + ->setContent(NotificationBuilder::paragraph( + 'Les Oracles ont parlé, vous êtes désigné par la Grande Lumière pour guider Cardan vers la Gloire.' + )) + ->for($newChief)); + + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: 'Les Oracles ont parlé, un nouveau dirigeant va faire valoir la force de '. + ColorResource::getPopularName($color). + ' à travers la galaxie. Longue vie à '. + current($candidates)['candidate']->player->name. + '.



', + ); + $this->conversationMessageRepository->save($message); + } + } else { + $noChief = false; + if ($currentLeader === null) { + $noChief = true; + $currentLeader = $this->playerRepository->getByName(ColorResource::getOfficialName($color)) + ?? throw new \RuntimeException(sprintf('Missing faction account for %d faction', $color->identifier)); + } + /* $date = new DateTime($this->dLastElection); + $date->modify('+' . $this->mandateDuration + self::ELECTIONTIME + self::CAMPAIGNTIME . ' second'); + $date = $date->format('Y-m-d H:i:s'); + $this->dLastElection = $date;*/ + $color->lastElectionHeldAt = new \DateTimeImmutable(); + $color->electionStatement = Color::MANDATE; + + switch ($color->regime) { + case Color::REGIME_DEMOCRATIC: + $date = \DateTime::createFromImmutable($color->lastElectionHeldAt); + $date->modify('+'.$mandateDuration.' second'); + $this->messageBus->dispatch( + new CampaignMessage($color->id), + [DateTimeConverter::to_delay_stamp(\DateTimeImmutable::createFromMutable($date))], + ); + + if (!$noChief) { + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Vous demeurez '.ColorResource::getStatuses($color)[Player::CHIEF - 1]) + ->setContent(NotificationBuilder::paragraph( + 'Aucun candidat ne s\'est présenté oour vous remplacer lors des dernières élections.', + 'Par conséquent, vous êtes toujours à la tête de ', + ColorResource::getPopularName($color), + )) + ->for($currentLeader)); + } + // création du message + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: 'La période électorale est terminée. Aucun candidat ne s\'est présenté pour prendre la tête de '. + ColorResource::getPopularName($color).'.'. + (false === $noChief) + ? '
Par conséquent, '.$currentLeader->name.' est toujours au pouvoir.' + : '
Par conséquent, le siège du pouvoir demeure vacant.', + ); + $this->conversationMessageRepository->save($message); + break; + case Color::REGIME_ROYALISTIC: + if (null === $newChief) { + throw new \LogicException('$newChief cannot be null'); + } + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Votre coup d\'état a échoué') + ->setContent(NotificationBuilder::paragraph( + 'Le peuple ne vous a pas soutenu, l\'ancien gouvernement reste en place.' + )) + ->for($newChief)); + + if (!$noChief) { + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Un coup d\'état a échoué') + ->setContent(NotificationBuilder::paragraph( + ' Le joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $newChief->id]), + $newChief->name, + ), + ' a tenté un coup d\'état, celui-ci a échoué.', + )) + ->for($currentLeader)); + } + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: 'Un coup d\'état a échoué. '. + $currentLeader->name. + ' demeure le dirigeant de '. + ColorResource::getPopularName($color), + + ); + $this->conversationMessageRepository->save($message); + break; + case Color::REGIME_THEOCRATIC: + $date = \DateTime::createFromImmutable($color->lastElectionHeldAt); + $date->modify('+'.$mandateDuration.' second'); + $this->messageBus->dispatch( + new CampaignMessage($color->id), + [DateTimeConverter::to_delay_stamp(\DateTimeImmutable::createFromMutable($date))], + ); + + if (!$noChief) { + $this->notificationRepository->save(NotificationBuilder::new() + ->setTitle('Vous avez été nommé Guide') + ->setContent(NotificationBuilder::paragraph( + 'Les Oracles ont parlé,', + ' vous êtes toujours désigné par la Grande Lumière pour guider Cardan vers la Gloire.', + )) + ->for($currentLeader)); + } + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $convPlayer, + content: 'Nul ne s\'est soumis au regard des dieux pour conduire '. + ColorResource::getPopularName($color). + ' vers sa gloire.'. + (false === $noChief) + ? $currentLeader->name.' demeure l\'élu des dieux pour accomplir leurs desseins dans la galaxie.' + : 'Par conséquent, le siège du pouvoir demeure vacant.', + ); + $this->conversationMessageRepository->save($message); + break; + } + } + } +} diff --git a/src/Modules/Demeter/Handler/CampaignHandler.php b/src/Modules/Demeter/Handler/CampaignHandler.php new file mode 100644 index 000000000..3cfa4c491 --- /dev/null +++ b/src/Modules/Demeter/Handler/CampaignHandler.php @@ -0,0 +1,60 @@ +colorRepository->get($message->getFactionId()) + ?? throw new \RuntimeException(sprintf('Faction %s not found', $message->getFactionId())); + + $this->colorManager->updateSenate($faction); + + $election = new Election( + id: Uuid::v4(), + faction: $faction, + dElection: $this->nextElectionDateCalculator->getCampaignEndDate($faction), + ); + + $this->electionRepository->save($election); + + $faction->electionStatement = Color::CAMPAIGN; + if ($faction->isDemocratic()) { + $this->messageBus->dispatch( + new ElectionMessage($faction->id), + [DateTimeConverter::to_delay_stamp($election->dElection)], + ); + } elseif ($faction->isTheocratic()) { + $this->messageBus->dispatch( + new BallotMessage($faction->id), + [DateTimeConverter::to_delay_stamp($election->dElection)], + ); + } + $this->electionRepository->save($election); + } +} diff --git a/src/Modules/Demeter/Handler/ElectionHandler.php b/src/Modules/Demeter/Handler/ElectionHandler.php new file mode 100644 index 000000000..df76f5178 --- /dev/null +++ b/src/Modules/Demeter/Handler/ElectionHandler.php @@ -0,0 +1,38 @@ +colorRepository->get($message->getFactionId()) + ?? throw new \RuntimeException(sprintf('Faction %s not found', $message->getFactionId())); + $faction->electionStatement = Color::ELECTION; + + $this->messageBus->dispatch( + new BallotMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getStartDate($faction))] + ); + + $this->colorRepository->save($faction); + } +} diff --git a/src/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php b/src/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php new file mode 100644 index 000000000..da4f40418 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php @@ -0,0 +1,38 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $this->colorRepository->refresh($color); + $enemyColor = $this->colorRepository->getOneByIdentifier($law->options['rColor']); + + $color->relations[$law->options['rColor']] = Color::ALLY; + + $law->statement = Law::OBSOLETE; + $this->commercialRouteManager->toggleRoutesFreeze($color, $enemyColor); + $this->colorRepository->save($color); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/BonusEndHandler.php b/src/Modules/Demeter/Handler/Law/BonusEndHandler.php new file mode 100644 index 000000000..4d0d4e076 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/BonusEndHandler.php @@ -0,0 +1,24 @@ +lawRepository->get($message->getLawId()); + $law->statement = Law::OBSOLETE; + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php b/src/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php new file mode 100644 index 000000000..95d8af312 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php @@ -0,0 +1,39 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $relatedFaction = $this->colorRepository->get($law->options['rColor']); + $tax = $this->commercialTaxRepository->getFactionsTax($color, $relatedFaction); + + $law->statement = Law::OBSOLETE; + if ($law->options['rColor'] == $color->id) { + $tax->exportTax = $law->options['taxes'] / 2; + $tax->importTax = $law->options['taxes'] / 2; + } else { + $tax->exportTax = $law->options['taxes']; + } + $this->lawRepository->save($law); + $this->commercialTaxRepository->save($tax); + } +} diff --git a/src/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php b/src/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php new file mode 100644 index 000000000..c6a5a7217 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php @@ -0,0 +1,39 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $relatedFaction = $this->colorRepository->get($law->options['rColor']); + $tax = $this->commercialTaxRepository->getFactionsTax($color, $relatedFaction); + + $law->statement = Law::OBSOLETE; + if ($law->options['rColor'] == $color->id) { + $tax->exportTax = $law->options['taxes'] / 2; + $tax->importTax = $law->options['taxes'] / 2; + } else { + $tax->importTax = $law->options['taxes']; + } + $this->lawRepository->save($law); + $this->commercialTaxRepository->save($tax); + } +} diff --git a/src/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php b/src/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php new file mode 100644 index 000000000..25fb811df --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php @@ -0,0 +1,36 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $this->colorRepository->refresh($color); + $enemyColor = $this->colorRepository->getOneByIdentifier($law->options['rColor']); + + $color->relations[$law->options['rColor']] = Color::NEUTRAL; + $law->statement = Law::OBSOLETE; + $this->commercialRouteManager->toggleRoutesFreeze($color, $enemyColor); + $this->colorRepository->save($color); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php b/src/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php new file mode 100644 index 000000000..92bcfa056 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php @@ -0,0 +1,36 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $this->colorRepository->refresh($color); + $enemyColor = $this->colorRepository->getOneByIdentifier($law->options['rColor']); + + $color->relations[$law->options['rColor']] = Color::PEACE; + $law->statement = Law::OBSOLETE; + $this->commercialRouteManager->toggleRoutesFreeze($color, $enemyColor); + $this->colorRepository->save($color); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/SanctionResultHandler.php b/src/Modules/Demeter/Handler/Law/SanctionResultHandler.php new file mode 100644 index 000000000..957a665f0 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/SanctionResultHandler.php @@ -0,0 +1,40 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $player = $this->playerRepository->get($law->options['rPlayer']); + + $toPay = $law->options['credits']; + if ($player->credit < $law->options['credits']) { + $toPay = $player->credit; + } + $this->playerManager->decreaseCredit($player, $toPay); + $color->credits += $toPay; + $law->statement = Law::OBSOLETE; + $this->colorRepository->save($color); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/SectorNameResultHandler.php b/src/Modules/Demeter/Handler/Law/SectorNameResultHandler.php new file mode 100644 index 000000000..a47c6b6ca --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/SectorNameResultHandler.php @@ -0,0 +1,35 @@ +lawRepository->get($message->getLawId()); + $faction = $law->faction; + $sector = $this->sectorRepository->get(Uuid::fromString($law->options['rSector'])); + + if ($sector->faction->id->equals($faction->id)) { + $sector->name = $law->options['name']; + } + $law->statement = Law::OBSOLETE; + + $this->sectorRepository->save($sector); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php b/src/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php new file mode 100644 index 000000000..e32dc1d09 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php @@ -0,0 +1,35 @@ +lawRepository->get($message->getLawId()); + $faction = $law->faction; + $sector = $this->sectorRepository->get(Uuid::fromString($law->options['rSector'])); + + if ($sector->faction->id->equals($faction->id)) { + $sector->tax = $law->options['taxes']; + } + $law->statement = Law::OBSOLETE; + + $this->lawRepository->save($law); + $this->sectorRepository->save($sector); + } +} diff --git a/src/Modules/Demeter/Handler/Law/VoteHandler.php b/src/Modules/Demeter/Handler/Law/VoteHandler.php new file mode 100644 index 000000000..22fc59160 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/VoteHandler.php @@ -0,0 +1,86 @@ +lawRepository->get($message->getLawId()) + ?? throw new \RuntimeException(sprintf('Law %s has not been found when processing the vote results', $message->getLawId()->toRfc4122())); + + $faction = $law->faction; + $ballot = $this->lawManager->ballot($law); + if ($ballot) { + // accepter la loi + $law->statement = Law::EFFECTIVE; + // envoyer un message + } else { + // refuser la loi + $law->statement = Law::REFUSED; + if (LawResources::getInfo($law->type, 'bonusLaw')) { + $activePlayers = $this->playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]); + $faction->credits += intval(round((LawResources::getInfo($law->type, 'price') * $this->durationHandler->getHoursDiff($law->voteEndedAt, $law->endedAt) * ($activePlayers + 1) * 90) / 100)); + } else { + $faction->credits += intval(round((LawResources::getInfo($law->type, 'price') * 90) / 100)); + } + // envoyer un message + } + $this->lawRepository->save($law); + $this->colorRepository->save($faction); + + $messageClass = match (LawResources::getInfo($law->type, 'bonusLaw')) { + true => BonusEndMessage::class, + false => match ($law->type) { + Law::SECTORTAX => SectorTaxesResultMessage::class, + Law::SECTORNAME => SectorNameResultMessage::class, + Law::COMTAXEXPORT => ExportCommercialTaxesResultMessage::class, + Law::COMTAXIMPORT => ImportCommercialTaxesResultMessage::class, + Law::PEACEPACT => PeaceDeclarationResultMessage::class, + Law::WARDECLARATION => WarDeclarationResultMessage::class, + Law::TOTALALLIANCE => AllianceDeclarationResultMessage::class, + Law::NEUTRALPACT => NonAgressionPactDeclarationResultMessage::class, + Law::PUNITION => SanctionResultMessage::class, + } + }; + $this->messageBus->dispatch( + new $messageClass($law->id), + [DateTimeConverter::to_delay_stamp($law->endedAt)], + ); + } +} diff --git a/src/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php b/src/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php new file mode 100644 index 000000000..736e1af46 --- /dev/null +++ b/src/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php @@ -0,0 +1,37 @@ +lawRepository->get($message->getLawId()); + $color = $law->faction; + $this->colorRepository->refresh($color); + $enemyColor = $this->colorRepository->getOneByIdentifier($law->options['rColor']); + + $enemyColor->relations[$color->identifier] = Color::ENEMY; + $color->relations[$law->options['rColor']] = Color::ENEMY; + $law->statement = Law::OBSOLETE; + $this->commercialRouteManager->toggleRoutesFreeze($color, $enemyColor); + $this->colorRepository->save($color); + $this->lawRepository->save($law); + } +} diff --git a/src/Modules/Demeter/Handler/SenateUpdateHandler.php b/src/Modules/Demeter/Handler/SenateUpdateHandler.php new file mode 100644 index 000000000..f3a683dc9 --- /dev/null +++ b/src/Modules/Demeter/Handler/SenateUpdateHandler.php @@ -0,0 +1,41 @@ +colorRepository->get($message->getFactionId()); + $this->colorManager->updateSenate($faction); + + if ($faction->isRoyalistic() && Color::MANDATE === $faction->isInMandate()) { + $date = $this->nextElectionDateCalculator->getSenateUpdateMessage($faction); + $faction->lastElectionHeldAt = $date; + + $this->messageBus->dispatch( + new SenateUpdateMessage($faction->id), + [DateTimeConverter::to_delay_stamp($date)], + ); + $this->colorRepository->save($faction); + } + } +} diff --git a/src/Modules/Demeter/Infrastructure/Command/DisplayElectionState.php b/src/Modules/Demeter/Infrastructure/Command/DisplayElectionState.php new file mode 100644 index 000000000..7181d49a6 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Command/DisplayElectionState.php @@ -0,0 +1,72 @@ +addArgument('faction-id', InputArgument::REQUIRED, 'The identifier of the desired faction'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $factionIdentifier = intval($input->getArgument('faction-id')); + $faction = $this->factionRepository->getOneByIdentifier($factionIdentifier) + ?? throw new \InvalidArgumentException('Faction not found'); + + $style = new SymfonyStyle($input, $output); + + $style->info(sprintf('Checking election state for %s', ColorResource::getInfo($faction->identifier, 'popularName'))); + + $lastElection = $this->electionRepository->getFactionLastElection($faction); + + $style->horizontalTable( + headers: [ + 'Last election date', + 'Election statement', + 'Next campaign start', + 'Next campaign end', + 'Next election', + 'Next Ballot', + ], + rows: [ + [ + $lastElection->dElection->format('Y-m-d H:i:s'), + $faction->electionStatement, + $this->nextElectionDateCalculator->getCampaignStartDate($faction)->format('Y-m-d H:i:s'), + $this->nextElectionDateCalculator->getCampaignEndDate($faction)->format('Y-m-d H:i:s'), + $this->nextElectionDateCalculator->getNextElectionDate($faction)->format('Y-m-d H:i:s'), + $this->nextElectionDateCalculator->getBallotDate($faction)->format('Y-m-d H:i:s'), + ], + ], + ); + + return self::SUCCESS; + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/CancelLaw.php b/src/Modules/Demeter/Infrastructure/Controller/CancelLaw.php new file mode 100644 index 000000000..f852d012a --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/CancelLaw.php @@ -0,0 +1,33 @@ +get($id)) === null) { + throw $this->createNotFoundException('Cette loi n\'existe pas.'); + } + // TODO replace with voter + if ($currentPlayer->status !== LawResources::getInfo($law->type, 'department')) { + throw $this->createAccessDeniedException('Vous n\'avez pas le droit d\'annuler cette loi.'); + } + // @TODO implement law cancellation + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Forum/CreateTopic.php b/src/Modules/Demeter/Infrastructure/Controller/Forum/CreateTopic.php new file mode 100644 index 000000000..980a6ec02 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Forum/CreateTopic.php @@ -0,0 +1,82 @@ +request->get('title') + ?? throw new BadRequestHttpException('Missing title'); + $content = $request->request->get('content') + ?? throw new BadRequestHttpException('Missing content'); + + $topic = new ForumTopic( + id: Uuid::v4(), + title: $title, + player: $currentPlayer, + forum: $forumId, + messagesCount: 1, + faction: $currentPlayer->faction, + createdAt: new \DateTimeImmutable(), + lastContributedAt: new \DateTimeImmutable(), + ); + + $forumTopicRepository->save($topic); + + $parser->parseBigTag = true; + + $pContent = $parser->parse($content); + + $message = new ForumMessage( + id: Uuid::v4(), + player: $currentPlayer, + topic: $topic, + oContent: $content, + pContent: $pContent, + statement: ForumMessage::PUBLISHED, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ); + + $forumMessageRepository->save($message); + + // tutorial + // TODO Move it to an event + if (!$currentPlayer->stepDone && TutorialResource::FACTION_FORUM === $currentPlayer->stepTutorial) { + $currentPlayer->stepDone = true; + + $playerRepository->save($currentPlayer); + } + + $this->addFlash('success', 'Topic créé.'); + + return $this->redirectToRoute('view_forum_topic', [ + 'forumId' => $forumId, + 'topicId' => $topic->id->toRfc4122(), + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Forum/EditMessage.php b/src/Modules/Demeter/Infrastructure/Controller/Forum/EditMessage.php new file mode 100644 index 000000000..49aa6ee16 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Forum/EditMessage.php @@ -0,0 +1,53 @@ +get($messageId) + ?? throw $this->createNotFoundException(); + + $content = $request->request->get('content') + ?? throw new BadRequestHttpException('Missing content'); + + // TODO Replace with Voter + if ($currentPlayer->id === $message->player->id || ($currentPlayer->isGovernmentMember() && 20 != $message->topic->forum)) { + $parser->parseBigTag = true; + + $message->oContent = $content; + $message->pContent = $parser->parse($content); + $message->updatedAt = new \DateTimeImmutable(); + + $forumMessageRepository->save($message); + + $this->addFlash('success', 'Message édité.'); + } else { + throw $this->createAccessDeniedException('Vous ne pouvez pas éditer ce message.'); + } + + return $this->redirectToRoute('view_forum_topic', [ + 'forumId' => $forumId, + 'topicId' => $topicId, + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Forum/ViewTopic.php b/src/Modules/Demeter/Infrastructure/Controller/Forum/ViewTopic.php new file mode 100644 index 000000000..f967d4730 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Forum/ViewTopic.php @@ -0,0 +1,68 @@ +get($topicId) + ?? throw $this->createNotFoundException('Topic not found'); + + $forumId = $forumTopic->forum; + + // TODO transform into Voter + if (($forumId >= 10 && !$currentPlayer->isGovernmentMember()) || ($forumId >= 20 && !$currentPlayer->isGovernmentMember())) { + throw $this->createAccessDeniedException('You do not have access to this forum'); + } + // TODO Implement forum topic last view + $upsertTopicLastView($forumTopic, $currentPlayer); + + $messages = $forumMessageRepository->getTopicMessages($forumTopic); + $archivedMode = false; + + $topicsWithLastViews = ($forumId < 20) + ? $forumTopicRepository->getByForumAndFactionWithLastViews($forumId, $currentPlayer->faction, $currentPlayer, archived: $archivedMode) + : $forumTopicRepository->getByForumWithLastViews($forumId, $currentPlayer, archived: $archivedMode); + + return $this->render('pages/demeter/faction/topic.html.twig', [ + 'faction' => $currentPlayer->faction, + 'topic' => $forumTopic, + 'topics_with_last_views' => $topicsWithLastViews, + 'messages' => $messages, + 'forum_ids' => array_filter( + array_map( + fn (int $index) => ForumResources::getInfo($index, 'id'), + range(1, ForumResources::size()) + ), + fn (int $forumId) => $this->canViewForum($currentPlayer, $forumId), + ), + ]); + } + + // TODO Move to a dedicated Voter + private function canViewForum(Player $player, int $forumId): bool + { + return $forumId < 10 + || ($forumId >= 10 && $forumId < 20 && $player->isGovernmentMember()) + || ($forumId >= 20 && $forumId < 30 && $player->isRuler()); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Forum/WriteMessage.php b/src/Modules/Demeter/Infrastructure/Controller/Forum/WriteMessage.php new file mode 100644 index 000000000..0b341b002 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Forum/WriteMessage.php @@ -0,0 +1,76 @@ +get($topicId) + ?? throw $this->createNotFoundException('Topic not found'); + + if ($topic->isClosed) { + throw new ConflictHttpException('Ce sujet est fermé.'); + } + + $content = $request->request->get('content'); + + $parser->parseBigTag = true; + + $pContent = $parser->parse($content); + $message = new ForumMessage( + id: Uuid::v4(), + topic: $topic, + player: $currentPlayer, + oContent: $content, + pContent: $pContent, + statement: ForumMessage::PUBLISHED, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ); + + $forumMessageRepository->save($message); + + $topic->messagesCount++; + $topic->lastContributedAt = new \DateTimeImmutable(); + + $forumTopicRepository->save($topic); + // tutorial + // TODO Move to event + if (!$currentPlayer->stepDone && TutorialResource::FACTION_FORUM === $currentPlayer->stepTutorial) { + $currentPlayer->stepDone = true; + + $playerRepository->save($currentPlayer); + } + + $this->addFlash('success', 'Message créé.'); + + return $this->redirectToRoute('view_forum_topic', [ + 'forumId' => $forumId, + 'topicId' => $topicId, + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/CreateLaw.php b/src/Modules/Demeter/Infrastructure/Controller/Government/CreateLaw.php new file mode 100644 index 000000000..de57d449d --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/CreateLaw.php @@ -0,0 +1,83 @@ +query->get('type') + ?? throw new BadRequestHttpException('Missing law type'); + $duration = $request->request->get('duration'); + + // TODO replace with Voter + if ($currentPlayer->status !== LawResources::getInfo($type, 'department')) { + throw $this->createAccessDeniedException('Vous n\' avez pas le droit de proposer cette loi.'); + } + + if (null !== $duration && $duration > $this->lawMaxDuration) { + throw new BadRequestHttpException(sprintf('Maximum law duration is %d cycles', $this->lawMaxDuration)); + } + $isRulerLaw = Player::CHIEF === LawResources::getInfo($type, 'department'); + + $lawPrice = $getPrice($type, $currentPlayer->faction, $duration); + if (!$currentPlayer->faction->canAfford($lawPrice)) { + throw new ConflictHttpException('Il n\'y a pas assez de crédits dans les caisses de l\'Etat.'); + } + + try { + $law = $lawFactory->createFromPayload($type, $duration, $currentPlayer, $request->request->all()); + } catch (\InvalidArgumentException $e) { + throw new BadRequestHttpException(message: $e->getMessage(), previous: $e); + } catch (\DomainException $e) { + throw new ConflictHttpException(message: $e->getMessage(), previous: $e); + } catch (\UnexpectedValueException $e) { + throw $this->createAccessDeniedException(message: $e->getMessage(), previous: $e); + } + + $currentPlayer->faction->credits -= $lawPrice; + + $colorRepository->save($currentPlayer->faction); + $lawRepository->save($law); + + $messageBus->dispatch( + new VoteMessage($law->id), + [DateTimeConverter::to_delay_stamp($law->voteEndedAt)], + ); + + $colorManager->sendSenateNotif($currentPlayer->faction, $isRulerLaw); + + return $this->redirectToRoute('faction_senate'); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/Resign.php b/src/Modules/Demeter/Infrastructure/Controller/Government/Resign.php new file mode 100644 index 000000000..c96aa2115 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/Resign.php @@ -0,0 +1,36 @@ +isGovernmentMember()) { + throw new ConflictHttpException('Vous n\'êtes pas dans le gouvernement de votre faction.'); + } + + if ($currentPlayer->isRuler()) { + throw new ConflictHttpException('Vous êtes le chef de votre faction.'); + } + $currentPlayer->status = Player::PARLIAMENT; + + $request->getSession()->get('playerInfo')->add('status', Player::PARLIAMENT); + + $this->addFlash('success', 'Vous n\'êtes plus membre du gouvernement.'); + + $playerRepository->save($currentPlayer); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/Abdicate.php b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/Abdicate.php new file mode 100644 index 000000000..b565a452b --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/Abdicate.php @@ -0,0 +1,82 @@ +faction; + + if (!$currentPlayer->isRuler()) { + throw $this->createAccessDeniedException('Vous n\'êtes pas le chef de votre faction.'); + } + + $mandateDuration = $nextElectionDateCalculator->getMandateDuration($faction); + + if ($faction->isDemocratic()) { + if (!$faction->isInMandate()) { + throw new ConflictHttpException('Des élections sont déjà en cours.'); + } + $faction->lastElectionHeldAt = new \DateTimeImmutable(sprintf('-%d seconds', $mandateDuration)); + $this->addFlash('success', 'Des élections anticipées vont être lancées.'); + + return $this->redirect($request->headers->get('referer')); + } + $playerId = $request->request->get('rplayer') ?? throw new BadRequestHttpException('Missing player ID'); + + $heir = $playerRepository->get($playerId) ?? throw $this->createNotFoundException('Player not found'); + + // TODO Replace with a voter + if (!$heir->faction->id->equals($faction->id)) { + throw new BadRequestHttpException('Selected player is from another faction'); + } + if (!$heir->isParliamentMember()) { + throw new ConflictHttpException('Vous ne pouvez choisir qu\'un membre du sénat ou du gouvernement.'); + } + if (!$faction->isInMandate()) { + throw new ConflictHttpException('vous ne pouvez pas abdiquer pendant un putsch.'); + } + $heir->status = Player::CHIEF; + // The player is now a member of Parliament + $currentPlayer->status = Player::PARLIAMENT; + $request->getSession()->get('playerInfo')->add('status', Player::PARLIAMENT); + + $entityManager->flush(); + + $statusArray = ColorResource::getInfo($heir->faction->identifier, 'status'); + + $notification = NotificationBuilder::new() + ->setTitle('Héritier du Trône.') + ->setContent(NotificationBuilder::paragraph( + 'Vous avez été choisi par le ', + $statusArray[5], + ' de votre faction pour être son successeur, vous prenez la tête du gouvernement immédiatement.', + )) + ->for($heir); + $notificationRepository->save($notification); + + $this->addFlash('success', $heir->name . ' est désigné comme votre successeur.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/ChooseMinister.php b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/ChooseMinister.php new file mode 100644 index 000000000..c2f133d0d --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/ChooseMinister.php @@ -0,0 +1,69 @@ +isRuler()) { + throw $this->createAccessDeniedException('Vous n\'êtes pas le chef de votre faction.'); + } + $minister = $playerRepository->getGovernmentMember($currentPlayer->faction, $department); + + if (null !== $minister) { + throw new ConflictHttpException(sprintf('This post is already occupied by %s', $minister->name)); + } + + $rPlayer = $request->request->get('rplayer') ?? throw new BadRequestHttpException('Missing player ID'); + + $appointee = $playerRepository->get($rPlayer) ?? throw $this->createNotFoundException('Player not found'); + if (!$appointee->faction->id->equals($currentPlayer->faction->id)) { + throw $this->createAccessDeniedException('This player is from another faction'); + } + if (!$appointee->isParliamentMember()) { + throw new ConflictHttpException('Vous ne pouvez choisir qu\'un membre du sénat.'); + } + if (!in_array($department, [Player::TREASURER, Player::WARLORD, Player::MINISTER])) { + throw new ConflictHttpException('Ce département est inconnu.'); + } + $appointee->status = $department; + + $statusArray = ColorResource::getInfo($appointee->faction->identifier, 'status'); + + $notification = NotificationBuilder::new() + ->setTitle('Nomination au gouvernement') + ->setContent(NotificationBuilder::paragraph( + 'Vous avez été choisi pour être le ', + $statusArray[$department - 1], + ' de votre faction.' + )) + ->for($appointee); + $notificationRepository->save($notification); + + $entityManager->flush(); + + $this->addFlash('success', $appointee->name . ' a rejoint votre gouvernement.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/FireMinister.php b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/FireMinister.php new file mode 100644 index 000000000..06f75df10 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/Ruler/FireMinister.php @@ -0,0 +1,60 @@ +isRuler()) { + throw $this->createAccessDeniedException('Vous n\'êtes pas le chef de votre faction.'); + } + + $minister = $playerRepository->get($id) ?? throw $this->createNotFoundException('Player not found'); + + if (!$minister->faction->id->equals($currentPlayer->faction->id)) { + throw new ConflictHttpException('Vous ne pouvez pas virer un joueur d\'une autre faction.'); + } + + if (!$minister->isGovernmentMember()) { + throw new ConflictHttpException('Vous ne pouvez choisir qu\'un membre du gouvernement.'); + } + + $statusArray = ColorResource::getInfo($minister->faction->identifier, 'status'); + + $notification = NotificationBuilder::new() + ->setTitle('Eviction du gouvernement') + ->setContent(NotificationBuilder::paragraph( + 'Vous avez été renvoyé du poste de ', + $statusArray[$minister->status - 1], + ' de votre faction.', + )) + ->for($minister); + + $notificationRepository->save($notification); + + $minister->status = Player::PARLIAMENT; + + $entityManager->flush(); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/SendCredits.php b/src/Modules/Demeter/Infrastructure/Controller/Government/SendCredits.php new file mode 100644 index 000000000..ffac95a3e --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/SendCredits.php @@ -0,0 +1,89 @@ +request->get('name') ?? throw new BadRequestHttpException('Missing receiver name'); + $credit = $request->request->getInt('quantity'); + $text = $request->request->getAlnum('text'); + + $name = $parser->protect($name); + $text = $parser->parse($text); + + if (!$currentPlayer->isTreasurer()) { + throw $this->createAccessDeniedException('Seul le responsable financier de votre faction peut faire cette action.'); + } + if (strlen($text) > 500) { + throw new BadRequestHttpException('le texte ne doit pas dépasser les 500 caractères'); + } + + if ($credit <= 0) { + throw new BadRequestHttpException('envoi de crédits impossible - il faut envoyer un nombre entier positif'); + } + $faction = $currentPlayer->faction; + $receiver = $playerRepository->getByName($name) ?? throw $this->createNotFoundException('Receiver not found'); + + if ($faction->credits < $credit) { + throw new BadRequestHttpException('Vous ne pouvez pas envoyer plus que ce que vous possédez'); + } + $faction->decreaseCredit($credit); + $playerManager->increaseCredit($receiver, $credit); + + // create the transaction + $ct = new CreditTransaction( + id: Uuid::v4(), + playerSender: null, + playerReceiver: $receiver, + factionSender: $faction, + factionReceiver: null, + amount: $credit, + createdAt: new \DateTimeImmutable(), + comment: $text, + ); + $creditTransactionRepository->save($ct); + + $notification = NotificationBuilder::new() + ->setTitle('Réception de crédits') + ->setContent(NotificationBuilder::paragraph( + 'Votre faction vous a envoyé des crédits', + ('' !== $text) + ? sprintf(' avec le message suivant : %s%s', NotificationBuilder::divider(), $text) + : '.', + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_CREDIT, + $credit, + 1 == $credit ? 'crédit reçu' : 'crédits reçus', + ), + )) + ->for($receiver); + $notificationRepository->save($notification); + + $this->addFlash('success', 'Crédits envoyés'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/UpdateDescription.php b/src/Modules/Demeter/Infrastructure/Controller/Government/UpdateDescription.php new file mode 100644 index 000000000..f0d35f387 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/UpdateDescription.php @@ -0,0 +1,37 @@ +request->get('description') + ?? throw new BadRequestHttpException('Missing description'); + + // TODO Replace with a voter + if (!$currentPlayer->isGovernmentMember()) { + throw $this->createAccessDeniedException('Vous n\'avez pas les droits pour poster une description'); + } + // TODO Replace with validation component + if ('' === $description || strlen($description) > 25000) { + throw new BadRequestHttpException('La description est vide ou trop longue'); + } + $faction = $currentPlayer->faction; + $faction->description = $description; + + $colorRepository->save($faction); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Government/WriteToFaction.php b/src/Modules/Demeter/Infrastructure/Controller/Government/WriteToFaction.php new file mode 100644 index 000000000..c1acb990c --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Government/WriteToFaction.php @@ -0,0 +1,73 @@ +request->get('message') ?? throw new BadRequestHttpException('Missing message body'); + // @TODO fix empty check + $content = $parser->parse($message); + + // @TODO replace with voter + if (!$currentPlayer->isGovernmentMember()) { + throw $this->createAccessDeniedException('Vous n\'avez pas les droits pour poster un message officiel'); + } + + // TODO Replace with validator component + if ('' === $content || strlen($content) > 25000) { + throw new BadRequestHttpException('Le message est vide ou trop long'); + } + + $factionAccount = $playerRepository->getFactionAccount($currentPlayer->faction) + ?? throw $this->createNotFoundException('Faction account not found'); + + $conversation = $conversationRepository->getOneByPlayer($factionAccount) + ?? throw $this->createNotFoundException('Faction conversation not found'); + + $conversation->messagesCount++; + $conversation->lastMessageAt = new \DateTimeImmutable(); + + // désarchiver tout les users + foreach ($conversation->players as $user) { + $user->conversationStatus = ConversationUser::CS_DISPLAY; + } + + // création du message + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conversation, + player: $currentPlayer, + content: $content, + createdAt: new \DateTimeImmutable(), + type: ConversationMessage::TY_STD, + ); + + $conversationMessageRepository->save($message); + $entityManager->flush(); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/MakeACoup.php b/src/Modules/Demeter/Infrastructure/Controller/MakeACoup.php new file mode 100644 index 000000000..14a0cbe10 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/MakeACoup.php @@ -0,0 +1,137 @@ +request->get('program') ?? throw new BadRequestHttpException('Missing program'); + $chiefChoice = $request->request->get('chiefchoice'); + $treasurerChoice = $request->request->get('treasurerchoice'); + $warlordChoice = $request->request->get('warlordchoice'); + $ministerChoice = $request->request->get('ministerchoice'); + + // TODO Replace with voter + if (!$currentPlayer->isParliamentMember() || $currentPlayer->isRuler()) { + throw $this->createAccessDeniedException('Vous ne pouvez pas vous présenter, vous ne faite pas partie de l\'élite ou vous êtes déjà le hef de la faction.'); + } + $faction = $currentPlayer->faction; + + if (Color::MANDATE !== $faction->electionStatement) { + throw new ConflictHttpException('Un coup d\'état est déjà en cours.'); + } + // TODO allow coups for democratic factions + if (!$faction->isRoyalistic()) { + throw new ConflictHttpException('Vous vivez dans une faction démocratique.'); + } + $election = new Election( + id: Uuid::v4(), + faction: $faction, + dElection: new \DateTimeImmutable(), + ); + + $electionRepository->save($election); + + $candidate = new Candidate( + id: Uuid::v4(), + election: $election, + player: $currentPlayer, + chiefChoice: $chiefChoice, + treasurerChoice: $treasurerChoice, + warlordChoice: $warlordChoice, + ministerChoice: $ministerChoice, + program: $program, + createdAt: new \DateTimeImmutable(), + ); + $candidateRepository->save($candidate); + + $topic = new ForumTopic( + id: Uuid::v4(), + // TODO genders + title: sprintf('Candidat %s', $currentPlayer->name), + player: $currentPlayer, + // TODO transform into constant + forum: 30, + faction: $currentPlayer->faction, + ); + $forumTopicRepository->save($topic); + + $faction->electionStatement = Color::ELECTION; + $faction->lastElectionHeldAt = new \DateTimeImmutable(); + + $vote = new Vote( + id: Uuid::v4(), + candidate: $candidate, + player: $currentPlayer, + hasApproved: true, + votedAt: new \DateTimeImmutable(), + ); + $voteRepository->save($vote); + + $factionPlayers = $playerRepository->getBySpecification(new IsFromFaction($faction)); + + $notificationBuilder = NotificationBuilder::new() + ->setTitle('Coup d\'Etat.') + ->setContent(NotificationBuilder::paragraph( + 'Un membre de votre Faction soulève une partie du peuple et tente un coup d\'état contre le gouvernement.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->generateUrl('view_faction_election'), + 'prendre parti sur le coup d\'état.', + ), + )); + + foreach ($factionPlayers as $factionPlayer) { + if (Player::ACTIVE !== $factionPlayer->statement) { + continue; + } + $notificationRepository->save($notificationBuilder->for($factionPlayer)); + } + $this->addFlash('success', 'Coup d\'état lancé.'); + + $messageBus->dispatch( + new BallotMessage($faction->id), + [DateTimeConverter::to_delay_stamp($nextElectionDateCalculator->getPutschEndDate($faction))], + ); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/News/Create.php b/src/Modules/Demeter/Infrastructure/Controller/News/Create.php new file mode 100644 index 000000000..50bfbacc0 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/News/Create.php @@ -0,0 +1,43 @@ +request->get('content') ?? throw new BadRequestHttpException('Missing content'); + $title = $request->request->get('title') ?? throw new BadRequestHttpException('Missing title'); + + if (!$currentPlayer->isGovernmentMember()) { + throw $this->createAccessDeniedException('Vous n\'avez pas le droit de créer une annonce.'); + } + + $news = new FactionNews( + id: Uuid::v4(), + faction: $currentPlayer->faction, + title: $title, + oContent: '', + pContent: '', + pinned: false, // TODO Don't know what is it for + statement: 0, + createdAt: new \DateTimeImmutable(), + ); + // TODO replace with a handler to retrieve formatted content + $factionNewsManager->edit($news, $content); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/News/Delete.php b/src/Modules/Demeter/Infrastructure/Controller/News/Delete.php new file mode 100644 index 000000000..4b234ecf9 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/News/Delete.php @@ -0,0 +1,34 @@ +get($id)) === null) { + throw $this->createNotFoundException('Cette annonce n\'existe pas.'); + } + // TODO replace with voter + if (!$currentPlayer->isGovernmentMember() || !$currentPlayer->faction->id->equals($factionNew->faction->id)) { + throw $this->createAccessDeniedException('Vous n\'avez pas le droit de supprimer cette annonce'); + } + + $factionNewsRepository->remove($factionNew); + + $this->addFlash('success', 'L\'annonce a bien été supprimée.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/News/Edit.php b/src/Modules/Demeter/Infrastructure/Controller/News/Edit.php new file mode 100644 index 000000000..38d428b22 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/News/Edit.php @@ -0,0 +1,39 @@ +request->get('content') ?? throw new BadRequestHttpException('Missing content'); + $title = $request->request->get('title') ?? throw new BadRequestHttpException('Missing title'); + + $factionNew = $factionNewsRepository->get($id) + ?? throw $this->createNotFoundException('Faction news not found'); + + // TODO Replace with voter + if (!$currentPlayer->isGovernmentMember() || !$currentPlayer->faction->id->equals($factionNew->faction->id)) { + throw $this->createAccessDeniedException('Vous n\'avez pas le droit pour créer une annonce.'); + } + + $factionNew->title = $title; + $factionNewsManager->edit($factionNew, $content); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/News/Pin.php b/src/Modules/Demeter/Infrastructure/Controller/News/Pin.php new file mode 100644 index 000000000..5b9549298 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/News/Pin.php @@ -0,0 +1,46 @@ +getFactionNews($currentPlayer->faction); + $newExists = false; + // This way of doing things remove all previous pins + foreach ($factionNews as $factionNew) { + if ($factionNew->id->equals($id)) { + $newExists = true; + $factionNew->pinned = true; + } else { + $factionNew->pinned = false; + } + } + if (true !== $newExists) { + throw new NotFoundHttpException('Cette annonce n\'existe pas.'); + } + + $entityManager->flush(); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/Postulate.php b/src/Modules/Demeter/Infrastructure/Controller/Postulate.php new file mode 100644 index 000000000..0ace4f0b0 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/Postulate.php @@ -0,0 +1,100 @@ +request->get('program') + ?? throw new BadRequestHttpException('Missing program'); +// $chiefChoice = $request->request->get('chiefchoice'); +// $treasurerChoice = $request->request->get('treasurerchoice'); +// $warlordChoice = $request->request->get('warlordchoice'); +// $ministerChoice = $request->request->get('ministerchoice'); + + $election = $electionRepository->get($id) + ?? throw $this->createNotFoundException(sprintf('Election %s not found', $id->toBase32())); + + if ($election->faction->id->equals($currentPlayer->faction->id)) { + throw $this->createAccessDeniedException('You do not belong to this faction'); + } + + if (!$currentPlayer->isParliamentMember()) { + throw new ConflictHttpException('Vous ne pouvez pas vous présenter, vous ne faite pas partie de l\'élite.'); + } + $faction = $currentPlayer->faction; + + if (!$faction->isInCampaign()) { + throw new ConflictHttpException('Vous ne pouvez présenter ou retirer votre candidature qu\'en période de campagne.'); + } + + if (($candidate = $candidateRepository->getByElectionAndPlayer($election, $currentPlayer)) !== null) { + $candidateRepository->remove($candidate); + + $this->addFlash('success', 'Candidature retirée.'); + + return $this->redirect($request->headers->get('referer')); + } + $candidate = new Candidate( + id: Uuid::v4(), + election: $election, + player: $currentPlayer, + program: $program, + ); + + $candidateRepository->save($candidate); + + $topic = new ForumTopic( + id: Uuid::v4(), + title: 'Candidat '.$currentPlayer->name, + player: $currentPlayer, + forum: 30, + faction: $currentPlayer->faction, + ); + + $forumTopicRepository->save($topic); + + if (ColorResource::CARDAN === $currentPlayer->faction->identifier) { + $vote = new \App\Modules\Demeter\Model\Election\Vote( + id: Uuid::v4(), + player: $currentPlayer, + candidate: $candidate, + hasApproved: true, + votedAt: new \DateTimeImmutable(), + ); + + $voteRepository->save($vote); + } + $this->addFlash('success', 'Candidature déposée.'); + + return $this->redirectToRoute('view_faction_election', ['candidate' => $candidate->id]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewData.php b/src/Modules/Demeter/Infrastructure/Controller/ViewData.php new file mode 100644 index 000000000..cccc58067 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewData.php @@ -0,0 +1,212 @@ +faction + ?? throw new \LogicException('Player must have a faction'); + + $rankings = $factionRankingRepository->getFactionRankings($faction); + + $creditBase = 0; + + foreach ($rankings as $ranking) { + if ($creditBase < $ranking->wealth) { + $creditBase = $ranking->wealth; + } + } + // @TODO factoriser cette formule + $creditBase += $creditBase * 12 / 100; + + $membersDonations = $creditTransactionRepository->getAllByFactionReceiverFromMembers($faction); + + $factionDonations = $creditTransactionRepository->getAllBySender($faction); + + $importaxes = $commercialTaxRepository->getFactionTaxesByImport($faction); + + $exportTaxes = $commercialTaxRepository->getFactionTaxesByExport($faction); + + $commanderStats = $commanderRepository->getFactionCommanderStats($faction); + + $fleetStats = $squadronRepository->getFactionFleetStats($faction); + + $totalPEV = 0; + for ($i = 0; $i < 12; ++$i) { + $totalPEV += ($fleetStats['nbs'.$i]) * ShipResource::getInfo($i, 'pev'); + } + + $factions = $this->colorRepository->getAll(); + $sectors = $sectorRepository->getAll(); + $mapData = $this->getTacticalMapData($faction, $factions, $sectors); + + return $this->render('pages/demeter/faction/data.html.twig', [ + 'faction' => $faction, + 'credit_base' => $creditBase, + 'faction_rankings' => $rankings, + 'members_donations' => $membersDonations, + 'faction_donations' => $factionDonations, + 'faction_sectors' => $sectorRepository->getFactionSectors($faction), + 'rc_data' => $this->commercialRouteRepository->getCommercialRouteFactionData($faction), + 'faction_internal_commercial_routes_data' => $this->commercialRouteRepository->getInternalCommercialRouteFactionData($faction), + 'rc_diplomatic_data' => $this->getCommercialRoutesDiplomaticData($faction), + 'import_taxes' => $importaxes, + 'export_taxes' => $exportTaxes, + 'commanders_ranks_count' => CommanderResources::size(), + 'base_commander_level' => Commander::CMDBASELVL, + 'commander_stats' => $commanderStats, + 'fleet_stats' => $fleetStats, + 'total_pev' => $totalPEV, + 'attack_reports' => $reportRepository->getFactionAttackReports($faction), + 'defense_reports' => $reportRepository->getFactionDefenseReports($faction), + 'sectors' => $sectors, + 'map_scale' => 750 / $galaxyConfiguration->galaxy['size'], + 'map_data_types' => $mapData['types'], + 'map_data_scores' => $mapData['scores'], + 'map_data_percents' => $mapData['percents'], + 'galaxy_configuration' => $galaxyConfiguration, + 'factions' => $factions, + 'points_to_win' => $this->getParameter('points_to_win'), + 'diplomacy_statements' => [ + Color::ENEMY => 'En guerre', + Color::ALLY => 'Allié', + Color::PEACE => 'Pacte de non-agression', + Color::NEUTRAL => 'Neutre', + ], + 'laws_count' => LawResources::size(), + ]); + } + + /** + * @param list $factions + * @param list $sectors + * @return array{ + * types: array>, + * scores: array, + * percents: array, + * } + * @throws \RedisException + */ + private function getTacticalMapData(Color $faction, array $factions, array $sectors): array + { + $scores = $percents = []; + + $types = [ + 'Secteurs conquis' => [], + 'Secteurs en balance' => [], + ]; + + foreach (array_keys($types) as $type) { + foreach ($sectors as $key => $sector) { + $percents = ['color'.$faction->identifier => 0]; + $sectorOwnershipScores = $this->redisManager->getConnection()->get('sector:' . $sector->id); + if (!is_string($sectorOwnershipScores)) { + throw new \LogicException(sprintf('Missing ownership data for sector %s', $sector->id)); + } + + /** @var array $scores */ + $scores = unserialize($sectorOwnershipScores); + + if (!isset($scores[$faction->identifier]) && !$sector->faction?->id->equals($faction->id)) { + unset($sectors[$key]); + continue; + } + if ('Secteurs conquis' === $type && !$sector->faction?->id->equals($faction->id)) { + continue; + } + + foreach ($factions as $f) { + if (0 === $f->identifier || !isset($scores[$f->identifier])) { + continue; + } + $percents['color'.$f->identifier] = round(Format::percent($scores[$f->identifier], array_sum($scores), false)); + } + + arsort($percents); + + if (null === $sector->faction) { + continue; + } + + if ($sector->faction->id->equals($faction->id) || ($scores[$faction->identifier] > 0)) { + $types[$type][] = $sector; + } + } + } + + return [ + 'types' => $types, + 'scores' => $scores, + 'percents' => $percents, + ]; + } + + /** + * @return array + */ + private function getCommercialRoutesDiplomaticData(Color $faction): array + { + return array_reduce( + array_filter(array_keys($faction->relations), fn (int $factionId) => !in_array($factionId, [0, $faction->identifier])), + function ($acc, $factionId) use ($faction) { + $acc[$factionId] = $this->commercialRouteRepository->countCommercialRoutesBetweenFactions( + $faction, + $this->colorRepository->getOneByIdentifier($factionId), + ); + + return $acc; + }, + [], + ); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewElection.php b/src/Modules/Demeter/Infrastructure/Controller/ViewElection.php new file mode 100644 index 000000000..7838ad73f --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewElection.php @@ -0,0 +1,90 @@ +faction; + + $election = $electionRepository->getFactionLastElection($faction); + + $data = [ + 'faction' => $faction, + 'election' => $election, + ]; + + if (null !== $election) { + $candidates = $candidateRepository->getByElection($election); + + $data['candidates'] = $candidates; + $data['is_candidate'] = 1 <= count(array_filter( + $candidates, + fn (Candidate $candidate) => $candidate->player->id === $currentPlayer->id + )); + + if ($faction->hasOngoingElectionCampaign()) { + $votes = $voteRepository->getElectionVotes($election); + + $data['player_vote'] = $voteRepository->getPlayerVote($currentPlayer, $election); + $data['votes'] = $votes; + $data['faction_members_count'] = $playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]); + + $candidate = ($request->query->has('candidate') && ($candidate = $candidateRepository->get(Uuid::fromString($request->query->get('candidate')))) !== null) + ? $candidate + : ([] !== $candidates ? $candidates[0] : null); + + $data['candidate'] = $candidate; + + if (null !== $candidate) { + if ($faction->isRoyalistic()) { + $data['putsch_supporters_count'] = count(array_filter($votes, fn (Vote $vote) => $vote->hasApproved)); + $data['remaining_putsch_time'] = $durationHandler->getRemainingTime( + $nextElectionDateCalculator->getPutschEndDate($faction) + ); + } + + $topic = $forumTopicRepository->getByForumAndPlayer(30, $candidate->player); + // TODO Handle forum topic views + // $forumTopicManager->updateLastView($topic, $currentPlayer->getId()); + + $data['topic'] = $topic; + $data['topic_messages'] = $forumMessageRepository->getTopicMessages($topic); + } + } + } + + return $this->render('pages/demeter/faction/election.html.twig', $data); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewEmbassy.php b/src/Modules/Demeter/Infrastructure/Controller/ViewEmbassy.php new file mode 100644 index 000000000..dee195396 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewEmbassy.php @@ -0,0 +1,72 @@ +query->get('player'))) { + if (null === ($player = $playerRepository->get($playerId)) || !$player->isInGame()) { + throw new NotFoundHttpException('Player not found'); + } + + $data = [ + 'player' => $player, + 'player_bases' => $orbitalBaseRepository->getPlayerBases($player), + 'is_current_player' => $playerId === $currentPlayer->id, + ]; + } + + if (null !== ($factionId = $request->query->get('faction')) || null === $playerId) { + $factionId ??= $currentPlayer->faction->identifier; + + if (null !== ($faction = $colorRepository->getOneByIdentifier($factionId)) && $faction->isInGame) { + $data = [ + 'faction' => $faction, + 'government_members' => $playerRepository->getBySpecification(new IsGovernmentMember($faction)), + 'diplomacy_statements' => [ + Color::ENEMY => 'En guerre', + Color::ALLY => 'Allié', + Color::PEACE => 'Pacte de non-agression', + Color::NEUTRAL => 'Neutre', + ], + 'sectors_count' => $sectorRepository->countFactionSectors($faction), + 'active_players_count' => $playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]), + ]; + } else { + throw new NotFoundHttpException('Faction not found'); + } + } + + return $this->render('pages/demeter/embassy.html.twig', array_merge($data, [ + 'factions' => $colorRepository->getInGameFactions(), + ])); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewForum.php b/src/Modules/Demeter/Infrastructure/Controller/ViewForum.php new file mode 100644 index 000000000..b67e97156 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewForum.php @@ -0,0 +1,75 @@ +canViewForum($currentPlayer, $forumId)) { + $topicsByForum[$forumId] = ($forumId < 20) + ? $forumTopicRepository->getByForumAndFactionWithLastViews($forumId, $currentPlayer->faction, $currentPlayer) + : $forumTopicRepository->getByForumWithLastViews($forumId, $currentPlayer); + } + } + } else { + $showHome = false; + $selectedForumId = $forumId; + $archivedMode = $request->query->get('mode') === 'archived' && $currentPlayer->isGovernmentMember(); + // TODO move this to a Voter + if ($this->canViewForum($currentPlayer, $forumId)) { + $topicsByForum[$forumId] = ($forumId < 20) + ? $forumTopicRepository->getByForumAndFactionWithLastViews($forumId, $currentPlayer->faction, $currentPlayer, archived: $archivedMode) + : $forumTopicRepository->getByForumWithLastViews($forumId, $currentPlayer, archived: $archivedMode); + + $isStandard_topics = TRUE; + } else { + throw $this->createAccessDeniedException('You cannot access this forum'); + } + } + + return $this->render('pages/demeter/faction/forum.html.twig', [ + 'faction' => $currentPlayer->faction, + 'topics_by_forum' => $topicsByForum, + 'selected_forum_id' => $selectedForumId ?? null, + 'show_home' => $showHome, + 'display_standard_topics' => $isStandard_topics, + 'is_archived' => $archivedMode ?? false, + 'forum_ids' => array_filter( + array_map( + fn (int $index) => ForumResources::getInfo($index, 'id'), + range(1, ForumResources::size()) + ), + fn (int $forumId) => $this->canViewForum($currentPlayer, $forumId), + ), + ]); + } + + private function canViewForum(Player $player, int $forumId): bool + { + return $forumId < 10 + || ($forumId >= 10 && $forumId < 20 && $player->isGovernmentMember()) + || ($forumId >= 20 && $forumId < 30 && $player->isRuler()); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewGovernment.php b/src/Modules/Demeter/Infrastructure/Controller/ViewGovernment.php new file mode 100644 index 000000000..e00922714 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewGovernment.php @@ -0,0 +1,51 @@ +isGovernmentMember()) { + throw $this->createAccessDeniedException(); + } + $faction = $currentPlayer->faction; + + return $this->render('pages/demeter/faction/government.html.twig', [ + 'faction' => $faction, + 'credit_transactions' => $creditTransactionRepository->getAllBySender($faction), + 'senators' => $playerRepository->getBySpecification(new IsParliamentMember($faction)), + 'faction_sectors' => $sectorRepository->getFactionSectors($faction), + 'faction_news' => $factionNewsRepository->getFactionNews($faction), + 'faction_news_to_edit' => $request->query->has('news') ? $factionNewsRepository->get(Uuid::fromString($request->query->get('news'))) : null, + 'faction_members' => $playerRepository->getFactionPlayersByName($faction), + 'members_count' => $playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]), + 'government_members' => $playerRepository->getBySpecification(new IsGovernmentMember($faction)), + 'total_laws_count' => LawResources::size(), + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewMembers.php b/src/Modules/Demeter/Infrastructure/Controller/ViewMembers.php new file mode 100644 index 000000000..6d62359ee --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewMembers.php @@ -0,0 +1,70 @@ +faction; + + $onlinePlayersCount = 0; + $offlinePlayersCount = 0; + + $victoriesCount = 0; + $defeatsCount = 0; + $pointsCount = 0; + $playersCount = 0; + + $playersByType = [ + 'Gouvernement' => [], + 'Sénat' => [], + 'Peuple' => [], + ]; + $factionPlayers = $playerRepository->getFactionPlayersByRanking($faction); + + foreach ($factionPlayers as $factionPlayer) { + if ($durationHandler->getDiff(new \DateTimeImmutable(), $factionPlayer->dLastActivity) < 600) { + ++$onlinePlayersCount; + } else { + ++$offlinePlayersCount; + } + + ++$playersCount; + $victoriesCount += $factionPlayer->victory; + $defeatsCount += $factionPlayer->defeat; + $pointsCount += $factionPlayer->experience; + + $type = match ($factionPlayer->status) { + Player::STANDARD => 'Peuple', + Player::PARLIAMENT => 'Sénat', + default => 'Gouvernement', + }; + $playersByType[$type][] = $factionPlayer; + } + + return $this->render('pages/demeter/faction/members.html.twig', [ + 'faction' => $faction, + 'players_by_type' => $playersByType, + 'players_count' => $playersCount, + 'last_faction_players' => $playerRepository->getLastFactionPlayers($faction), + 'online_players_count' => $onlinePlayersCount, + 'offline_players_count' => $offlinePlayersCount, + 'victories_average' => $victoriesCount, + 'defeats_average' => $defeatsCount, + 'points_average' => $pointsCount, + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewOverview.php b/src/Modules/Demeter/Infrastructure/Controller/ViewOverview.php new file mode 100644 index 000000000..ca18e7e0e --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewOverview.php @@ -0,0 +1,104 @@ +faction; + if ('list' === $request->query->get('news')) { + $factionNews = $factionNewsRepository->getFactionBasicNews($faction); + $mode = 'all'; + } else { + $factionNews = $factionNewsRepository->getPinnedNew($faction); + $mode = 'pin'; + } + + $data = [ + 'faction_ranking' => $this->factionRankingRepository->getLastRanking($faction), + 'faction' => $faction, + 'news' => $factionNews, + 'news_mode' => $mode, + 'government_members' => $playerRepository->getBySpecification(new IsGovernmentMember($faction)), + 'effective_laws' => $lawRepository->getByFactionAndStatements($faction, [Law::EFFECTIVE]), + 'voting_laws' => $lawRepository->getByFactionAndStatements($faction, [Law::VOTATION]), + 'sectors_count' => $sectorRepository->countFactionSectors($faction), + 'active_players_count' => $playerRepository->countByFactionAndStatements($faction, [Player::ACTIVE]), + ]; + + if ($faction->hasElections()) { + $data = array_merge($data, $this->getElectionsData($faction)); + } elseif ($faction->isInElection()) { + $endPutsch = $this->nextElectionDateCalculator->getPutschEndDate($faction); + + $data['remaining_coup_time'] = $this->durationHandler->getRemainingTime($endPutsch); + } + + return $this->render('pages/demeter/faction/overview.html.twig', $data); + } + + private function getElectionsData(Color $faction): array + { + // time variables + $startCampaign = $this->nextElectionDateCalculator->getCampaignStartDate($faction); + $endCampaign = $this->nextElectionDateCalculator->getCampaignEndDate($faction); + $endElection = $this->nextElectionDateCalculator->getBallotDate($faction); + + $startMandate = $this->nextElectionDateCalculator->getNextElectionDate($faction); + $endMandate = $faction->isDemocratic() + ? $endElection + : $endCampaign; + + $now = new \DateTimeImmutable(); + $totalCampaignElection = $this->durationHandler->getDiff($startCampaign, $endElection); + $remainingCampaignElection = $this->durationHandler->getDiff($now, $startCampaign); + + // @TODO Rename these keys to give more meaning + return [ + 'total_mandate' => $this->durationHandler->getDiff($startMandate, $endMandate), + 'remaining_mandate' => $this->durationHandler->getDiff($startMandate, $now), + 'total_before_campaign' => $this->durationHandler->getDiff($startMandate, $startCampaign), + 'total_campaign_election' => $totalCampaignElection, + 'total_campaign' => $this->durationHandler->getDiff($startCampaign, $endCampaign), + 'remaining_campaign_election' => $remainingCampaignElection, + 'election_progress' => $now > $startCampaign + ? Format::percent($remainingCampaignElection, $totalCampaignElection, false) + : '0', + ]; + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/ViewSenate.php b/src/Modules/Demeter/Infrastructure/Controller/ViewSenate.php new file mode 100644 index 000000000..90d60c979 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/ViewSenate.php @@ -0,0 +1,32 @@ +isParliamentMember()) { + throw $this->createAccessDeniedException('You must be a parliament member'); + } + + return $this->render('pages/demeter/faction/senate.html.twig', [ + 'faction' => $currentPlayer->faction, + 'active_players_count' => $playerRepository->countByFactionAndStatements($currentPlayer->faction, [Player::ACTIVE]), + 'voting_laws' => $lawRepository->getByFactionAndStatements($currentPlayer->faction, [Law::VOTATION]), + 'voted_laws' => $lawRepository->getByFactionAndStatements($currentPlayer->faction, [Law::EFFECTIVE, Law::OBSOLETE, Law::REFUSED]), + ]); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/VoteForCandidate.php b/src/Modules/Demeter/Infrastructure/Controller/VoteForCandidate.php new file mode 100644 index 000000000..793c3af86 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/VoteForCandidate.php @@ -0,0 +1,66 @@ +get($electionId) ?? throw new NotFoundHttpException('Election not found'); + $candidate = $this->candidateRepository->get($candidateId) ?? throw new NotFoundHttpException('Candidate not found'); + $hasApproved = $request->query->getBoolean('hasApproved'); + + if (!$election->faction->id->equals($currentPlayer->faction->id)) { + throw new ConflictHttpException('Cette election ne se déroule pas dans votre faction.'); + } + + if (null !== $voteRepository->getPlayerVote($currentPlayer, $election)) { + throw new ConflictHttpException('Vous avez déjà voté.'); + } + + if (Color::ELECTION !== $election->faction->electionStatement) { + throw new ConflictHttpException('Vous ne pouvez voter pour un candidat qu\'en période d\'élection.'); + } + + $vote = new Vote( + id: Uuid::v4(), + player: $currentPlayer, + candidate: $candidate, + hasApproved: $hasApproved, + votedAt: new \DateTimeImmutable(), + ); + + $voteRepository->save($vote); + + $this->addFlash('success', 'Vous avez voté.'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Controller/VoteForLaw.php b/src/Modules/Demeter/Infrastructure/Controller/VoteForLaw.php new file mode 100644 index 000000000..765b01cf3 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Controller/VoteForLaw.php @@ -0,0 +1,57 @@ +query->get('choice') + ?? throw new BadRequestHttpException('Informations manquantes.'); + + if (!$currentPlayer->isSenator()) { + throw $this->createAccessDeniedException('Vous n\'avez pas le droit de voter.'); + } + + $law = $lawRepository->get($id) + ?? throw $this->createNotFoundException('Cette loi n\'existe pas.'); + + + if (Law::VOTATION !== $law->isBeingVoted()) { + throw new ConflictHttpException('Cette loi est déjà votée.'); + } + if ($voteLawRepository->hasVoted($currentPlayer, $law)) { + throw new ConflictHttpException('Vous avez déjà voté.'); + } + $vote = new VoteLaw( + id: Uuid::v4(), + player: $currentPlayer, + law: $law, + vote: $choice, + votedAt: new \DateTimeImmutable(), + ); + + $voteLawRepository->save($vote); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Demeter/Infrastructure/DataFixtures/FactionFixtures.php b/src/Modules/Demeter/Infrastructure/DataFixtures/FactionFixtures.php new file mode 100644 index 000000000..930c02cc1 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/DataFixtures/FactionFixtures.php @@ -0,0 +1,17 @@ + Uuid::v4(), + 'faction' => FactionFactory::random(), + 'dElection' => new \DateTimeImmutable(), + ]; + } + + protected static function getClass(): string + { + return Election::class; + } +} diff --git a/src/Modules/Demeter/Infrastructure/DataFixtures/Factory/FactionFactory.php b/src/Modules/Demeter/Infrastructure/DataFixtures/Factory/FactionFactory.php new file mode 100644 index 000000000..8fcf27dc6 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/DataFixtures/Factory/FactionFactory.php @@ -0,0 +1,46 @@ + + */ +class FactionFactory extends ModelFactory +{ + protected function getDefaults(): array + { + $identifier = self::faker()->unique()->numberBetween(1, 11); + + return [ + 'id' => Uuid::v4(), + 'identifier' => $identifier, + 'alive' => true, + 'isWinner' => false, + 'credits' => 0, + 'rankingPoints' => 0, + 'points' => 0, + 'electionStatement' => Color::MANDATE, + 'regime' => ColorResource::getInfo($identifier, 'regime'), + 'isClosed' => false, + 'description' => null, + 'isInGame' => true, + 'relations' => [], + // @TODO move that field to the future Server entity + 'victoryClaimedAt' => null, + // @TODO get that field from the Election table + 'lastElectionHeldAt' => null, + ]; + } + + protected static function getClass(): string + { + return Color::class; + } +} diff --git a/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Banner.php b/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Banner.php new file mode 100644 index 000000000..3501111b8 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Banner.php @@ -0,0 +1,32 @@ +faction->identifier) { + ColorResource::EMPIRE => 'Adranites.png', + ColorResource::NEGORA => 'Dores_Blason_500px.png', + default => 'Azures_Blason_500px.png', + }; + } + + public function getName(): string + { + return ColorResource::getOfficialName($this->faction); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Motto.php b/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Motto.php new file mode 100644 index 000000000..dee315b51 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Twig/Components/Atoms/Motto.php @@ -0,0 +1,17 @@ + $this->getFactionStatuses($factionId)), + new TwigFunction('get_faction_name', fn (int $factionId) => $this->getFactionName($factionId)), + new TwigFunction('get_faction_bonuses', fn (int $factionIdentifier) => ColorResource::getInfo($factionIdentifier, 'bonus')), + new TwigFunction('get_law_info', fn (int $lawType, string $info) => LawResources::getInfo($lawType, $info)), + new TwigFunction('has_voted_law', fn (Law $law, Player $player) => $this->voteLawRepository->hasVoted($player, $law)), + new TwigFunction('get_law_duration', function (Law $law): int { + $seconds = $this->durationHandler->getDiff($law->voteEndedAt, $law->endedAt); + + return $this->gameTimeConverter->convertSecondsToGameCycles($seconds); + }), + new TwigFunction('get_bonus_text', fn (int $bonusIdentifier) => ColorResource::getBonus($bonusIdentifier)), + ]; + } + + protected function getFactionStatuses(int $factionId): array + { + return ColorResource::getInfo($factionId, 'status'); + } + + protected function getFactionName(int $factionId): string + { + return ColorResource::getInfo($factionId, 'popularName'); + } +} diff --git a/src/Modules/Demeter/Infrastructure/Twig/ForumExtension.php b/src/Modules/Demeter/Infrastructure/Twig/ForumExtension.php new file mode 100644 index 000000000..6442eec68 --- /dev/null +++ b/src/Modules/Demeter/Infrastructure/Twig/ForumExtension.php @@ -0,0 +1,23 @@ + ForumResources::getInfoForId($forumId, $info)), + ]; + } +} diff --git a/src/Modules/Demeter/Manager/ColorManager.php b/src/Modules/Demeter/Manager/ColorManager.php new file mode 100644 index 000000000..94406c794 --- /dev/null +++ b/src/Modules/Demeter/Manager/ColorManager.php @@ -0,0 +1,190 @@ +scheduleSenateUpdate(); + $this->scheduleElections(); + $this->scheduleCampaigns(); + $this->scheduleBallot(); + } + + public function scheduleSenateUpdate(): void + { + $factions = $this->colorRepository->getByRegimeAndElectionStatement([Color::REGIME_ROYALISTIC], [Color::MANDATE]); + + foreach ($factions as $faction) { + $this->messageBus->dispatch( + new SenateUpdateMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getSenateUpdateMessage($faction))], + ); + } + } + + public function scheduleCampaigns(): void + { + $factions = $this->colorRepository->getByRegimeAndElectionStatement( + [Color::REGIME_DEMOCRATIC, Color::REGIME_THEOCRATIC], + [Color::MANDATE] + ); + + foreach ($factions as $faction) { + $this->messageBus->dispatch( + new CampaignMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getCampaignStartDate($faction))], + ); + } + $factions = $this->colorRepository->getByRegimeAndElectionStatement( + [Color::REGIME_ROYALISTIC], + [Color::ELECTION], + ); + foreach ($factions as $faction) { + $this->messageBus->dispatch( + new BallotMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getPutschEndDate($faction))], + ); + } + } + + public function scheduleElections(): void + { + $factions = $this->colorRepository->getByRegimeAndElectionStatement( + [Color::REGIME_DEMOCRATIC], + [Color::CAMPAIGN], + ); + foreach ($factions as $faction) { + $this->messageBus->dispatch( + new ElectionMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getNextElectionDate($faction))], + ); + } + } + + public function scheduleBallot(): void + { + $factions = array_merge( + $this->colorRepository->getByRegimeAndElectionStatement( + [Color::REGIME_DEMOCRATIC], + [Color::ELECTION], + ), + $this->colorRepository->getByRegimeAndElectionStatement( + [Color::REGIME_THEOCRATIC], + [Color::CAMPAIGN, Color::ELECTION], + ) + ); + foreach ($factions as $faction) { + $this->messageBus->dispatch( + new BallotMessage($faction->id), + [DateTimeConverter::to_delay_stamp($this->nextElectionDateCalculator->getBallotDate($faction))], + ); + } + } + + public function sendSenateNotif(Color $faction, bool $isFromChief = false): void + { + $parliamentMembers = $this->playerRepository->getBySpecification(new IsParliamentMember($faction)); + + $notificationBuilder = NotificationBuilder::new() + ->setTitle($isFromChief ? 'Loi appliquée' : 'Loi proposée') + ->setContent(NotificationBuilder::paragraph( + $isFromChief + ? sprintf( + 'Votre %s a appliqué une loi.', + ColorResource::getInfo($faction->identifier, 'status')[5] + ) + : 'Votre gouvernement a proposé un projet de loi, en tant que membre du sénat, + il est de votre devoir de voter pour l\'acceptation ou non de ladite loi.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('faction_senate'), + $isFromChief ? 'voir les lois appliquées' : 'voir les lois en cours de vote', + ), + )); + + foreach ($parliamentMembers as $parliamentMember) { + $this->notificationRepository->save($notificationBuilder->for($parliamentMember)); + } + } + + public function updateSenate(Color $faction): void + { + $factionPlayers = $this->playerRepository->getFactionPlayersByRanking($faction); + $limit = round(count($factionPlayers) / 4); + // If there is less than 40 players in a faction, the limit is up to 10 senators + if ($limit < 10) { + $limit = 10; + } + // If there is more than 120 players in a faction, the limit is up to 40 senators + if ($limit > 40) { + $limit = 40; + } + + $senatePromoteNotificationBuilder = NotificationBuilder::new() + // TODO genders + ->setTitle('Vous êtes sénateur') + ->setContent(NotificationBuilder::paragraph( + 'Vos actions vous ont fait gagner assez de prestige pour faire partie du sénat.', + )); + + $senateDemoteNotificationBuilder = NotificationBuilder::new() + ->setTitle('Vous n\'êtes plus sénateur') + ->setContent(NotificationBuilder::paragraph( + 'Vous n\'avez plus assez de prestige pour rester dans le sénat.' + )); + + foreach ($factionPlayers as $key => $factionPlayer) { + if ($factionPlayer->isGovernmentMember()) { + continue; + } + if ($key < $limit) { + if (!$factionPlayer->isParliamentMember()) { + $this->notificationRepository->save($senatePromoteNotificationBuilder->for($factionPlayer)); + } + $factionPlayer->status = Player::PARLIAMENT; + } else { + if ($factionPlayer->isParliamentMember()) { + $this->notificationRepository->save($senateDemoteNotificationBuilder->for($factionPlayer)); + } + // TODO handle ministers + $factionPlayer->status = Player::STANDARD; + } + } + $this->entityManager->flush(); + } +} diff --git a/src/Modules/Demeter/Manager/Forum/FactionNewsManager.php b/src/Modules/Demeter/Manager/Forum/FactionNewsManager.php new file mode 100644 index 000000000..e680eb378 --- /dev/null +++ b/src/Modules/Demeter/Manager/Forum/FactionNewsManager.php @@ -0,0 +1,27 @@ +oContent = $content; + + $this->parser->parseBigTag = true; + + $factionNews->pContent = $this->parser->parse($content); + + $this->factionNewsRepository->save($factionNews); + } +} diff --git a/src/Modules/Demeter/Manager/Forum/ForumMessageManager.php b/src/Modules/Demeter/Manager/Forum/ForumMessageManager.php new file mode 100644 index 000000000..2f0539306 --- /dev/null +++ b/src/Modules/Demeter/Manager/Forum/ForumMessageManager.php @@ -0,0 +1,23 @@ +oContent = $content; + + $this->parser->parseBigTag = true; + + $message->pContent = $this->parser->parse($content); + } +} diff --git a/src/Modules/Demeter/Manager/Law/LawManager.php b/src/Modules/Demeter/Manager/Law/LawManager.php new file mode 100644 index 000000000..292f91d1e --- /dev/null +++ b/src/Modules/Demeter/Manager/Law/LawManager.php @@ -0,0 +1,31 @@ +voteLawRepository->getLawVotes($law); + + $ballot = 0; + + foreach ($votes as $vote) { + if ($vote->vote) { + ++$ballot; + } else { + --$ballot; + } + } + + return $ballot >= 0; + } +} diff --git a/src/Modules/Demeter/Message/BallotMessage.php b/src/Modules/Demeter/Message/BallotMessage.php new file mode 100644 index 000000000..450e16198 --- /dev/null +++ b/src/Modules/Demeter/Message/BallotMessage.php @@ -0,0 +1,15 @@ +factionId; + } +} diff --git a/src/Modules/Demeter/Message/ElectionMessage.php b/src/Modules/Demeter/Message/ElectionMessage.php new file mode 100644 index 000000000..95b65fbfd --- /dev/null +++ b/src/Modules/Demeter/Message/ElectionMessage.php @@ -0,0 +1,18 @@ +factionId; + } +} diff --git a/src/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php b/src/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php new file mode 100644 index 000000000..4ae911d7b --- /dev/null +++ b/src/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/BonusEndMessage.php b/src/Modules/Demeter/Message/Law/BonusEndMessage.php new file mode 100644 index 000000000..922e0bd50 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/BonusEndMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php b/src/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php new file mode 100644 index 000000000..88928d020 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php b/src/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php new file mode 100644 index 000000000..c443b9ab8 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php b/src/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php new file mode 100644 index 000000000..f62611db8 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php b/src/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php new file mode 100644 index 000000000..3ab73a586 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/SanctionResultMessage.php b/src/Modules/Demeter/Message/Law/SanctionResultMessage.php new file mode 100644 index 000000000..496b6ada5 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/SanctionResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/SectorNameResultMessage.php b/src/Modules/Demeter/Message/Law/SectorNameResultMessage.php new file mode 100644 index 000000000..76935c0a1 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/SectorNameResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php b/src/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php new file mode 100644 index 000000000..773a9838b --- /dev/null +++ b/src/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/VoteMessage.php b/src/Modules/Demeter/Message/Law/VoteMessage.php new file mode 100644 index 000000000..e24b97e91 --- /dev/null +++ b/src/Modules/Demeter/Message/Law/VoteMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php b/src/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php new file mode 100644 index 000000000..b35f5b55e --- /dev/null +++ b/src/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php @@ -0,0 +1,18 @@ +lawId; + } +} diff --git a/src/Modules/Demeter/Message/SenateUpdateMessage.php b/src/Modules/Demeter/Message/SenateUpdateMessage.php new file mode 100644 index 000000000..b39bc3f6d --- /dev/null +++ b/src/Modules/Demeter/Message/SenateUpdateMessage.php @@ -0,0 +1,18 @@ +factionId; + } +} diff --git a/src/Modules/Demeter/Model/Color.php b/src/Modules/Demeter/Model/Color.php new file mode 100644 index 000000000..dc117aee3 --- /dev/null +++ b/src/Modules/Demeter/Model/Color.php @@ -0,0 +1,175 @@ +electionStatement, [self::CAMPAIGN, self::ELECTION]); + } + + public function isInCampaign(): bool + { + return self::CAMPAIGN === $this->electionStatement; + } + + public function isInElection(): bool + { + return self::ELECTION === $this->electionStatement; + } + + public function isInMandate(): bool + { + return self::MANDATE === $this->electionStatement; + } + + public function hasElections(): bool + { + return in_array($this->getRegime(), [self::REGIME_DEMOCRATIC, self::REGIME_THEOCRATIC]); + } + + public function isDemocratic(): bool + { + return self::REGIME_DEMOCRATIC === $this->getRegime(); + } + + public function isRoyalistic(): bool + { + return self::REGIME_ROYALISTIC === $this->getRegime(); + } + + public function isTheocratic(): bool + { + return self::REGIME_THEOCRATIC === $this->getRegime(); + } + + public function getRegime(): int + { + return ColorResource::getInfo($this->identifier, 'regime'); + } + + public function getCredits(): int + { + return $this->credits; + } + + public function setCredits(int $credits): static + { + $this->credits = $credits; + + return $this; + } + + public function increaseCredit(int $credits): int + { + $this->credits += $credits; + + return $this->credits; + } + + public function decreaseCredit(int $credits): int + { + $this->credits -= $credits; + + return $this->credits; + } + + public function canAfford(int $amount): bool + { + return $this->credits >= $amount; + } + + public function canAttackLegally(Color $faction): bool + { + return !in_array($this->relations[$faction->identifier], [static::PEACE, static::ALLY]); + } +} diff --git a/src/Modules/Demeter/Model/Election/Candidate.php b/src/Modules/Demeter/Model/Election/Candidate.php new file mode 100644 index 000000000..2e84ec460 --- /dev/null +++ b/src/Modules/Demeter/Model/Election/Candidate.php @@ -0,0 +1,22 @@ +statement; + } + + public function isEffective(): bool + { + return self::EFFECTIVE === $this->statement; + } + + public function isObsolete(): bool + { + return self::OBSOLETE === $this->statement; + } + + public function isRefused(): bool + { + return self::REFUSED === $this->statement; + } +} diff --git a/src/Modules/Demeter/Model/Law/VoteLaw.php b/src/Modules/Demeter/Model/Law/VoteLaw.php new file mode 100644 index 000000000..7d6515fc7 --- /dev/null +++ b/src/Modules/Demeter/Model/Law/VoteLaw.php @@ -0,0 +1,19 @@ +find($id); + } + + public function getOneByIdentifier(int $identifier): Color|null + { + return $this->findOneBy([ + 'identifier' => $identifier, + ]); + } + + /** + * @return list + */ + public function getAll(): array + { + return $this->findAll(); + } + + /** + * @return list + */ + public function getInGameFactions(): array + { + return $this->findBy(['isInGame' => 1, 'alive' => 1]); + } + + /** + * @return list + */ + public function getOpenFactions(): array + { + return $this->findBy(['isClosed' => 0]); + } + + /** + * @return list + */ + public function getAllByActivePlayersNumber(): array + { + $qb = $this->createQueryBuilder('f'); + + $qb + ->select('f AS faction, COUNT(p.id) AS active_players') + ->leftJoin(Player::class, 'p', Join::WITH, 'IDENTITY(p.faction) = f.id AND p.status = :active_status') + ->groupBy('f.id') + ->orderBy('active_players', 'ASC') + ->setParameter('active_status', Player::ACTIVE); + + return $qb->getQuery()->getResult(); + } + + /** + * @return list + */ + public function getByRegimeAndElectionStatement($regimes, $electionStatements): array + { + return $this->findBy([ + 'regime' => $regimes, + 'electionStatement' => $electionStatements, + ]); + } +} diff --git a/src/Modules/Demeter/Repository/Election/CandidateRepository.php b/src/Modules/Demeter/Repository/Election/CandidateRepository.php new file mode 100644 index 000000000..e98e8a466 --- /dev/null +++ b/src/Modules/Demeter/Repository/Election/CandidateRepository.php @@ -0,0 +1,41 @@ +find($id); + } + + public function getByElectionAndPlayer(Election $election, Player $player): Candidate|null + { + return $this->findOneBy([ + 'player' => $player, + 'election' => $election, + ]); + } + + public function getByElection(Election $election): array + { + return $this->findBy([ + 'election' => $election, + ]); + } +} diff --git a/src/Modules/Demeter/Repository/Election/ElectionRepository.php b/src/Modules/Demeter/Repository/Election/ElectionRepository.php new file mode 100644 index 000000000..0e6d5a20d --- /dev/null +++ b/src/Modules/Demeter/Repository/Election/ElectionRepository.php @@ -0,0 +1,34 @@ +find($id); + } + + public function getFactionLastElection(Color $faction): Election|null + { + return $this->findOneBy([ + 'faction' => $faction, + ], [ + 'dElection' => 'DESC', + ]); + } +} diff --git a/src/Modules/Demeter/Repository/Election/VoteRepository.php b/src/Modules/Demeter/Repository/Election/VoteRepository.php new file mode 100644 index 000000000..a26fad44f --- /dev/null +++ b/src/Modules/Demeter/Repository/Election/VoteRepository.php @@ -0,0 +1,45 @@ +createQueryBuilder('v'); + + $qb->join('v.candidate', 'c') + ->where('c.election = :election') + ->andWhere('v.player = :player') + ->setParameter('election', $election->id, UuidType::NAME) + ->setParameter('player', $player); + + return $qb->getQuery()->getOneOrNullResult(); + } + + public function getElectionVotes(Election $election): array + { + $qb = $this->createQueryBuilder('v'); + + $qb->join('v.candidate', 'c') + ->where('c.election = :election') + ->setParameter('election', $election->id, UuidType::NAME); + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Demeter/Repository/Forum/FactionNewsRepository.php b/src/Modules/Demeter/Repository/Forum/FactionNewsRepository.php new file mode 100644 index 000000000..c768aa6cc --- /dev/null +++ b/src/Modules/Demeter/Repository/Forum/FactionNewsRepository.php @@ -0,0 +1,49 @@ +find($id); + } + + public function getPinnedNew(Color $faction): FactionNews|null + { + return $this->findOneBy([ + 'faction' => $faction, + 'pinned' => true, + ]); + } + + public function getFactionNews(Color $faction): array + { + return $this->findBY([ + 'faction' => $faction, + ]); + } + + public function getFactionBasicNews(Color $faction): array + { + return $this->findBy([ + 'faction' => $faction, + 'pinned' => false, + ]); + } +} diff --git a/src/Modules/Demeter/Repository/Forum/ForumMessageRepository.php b/src/Modules/Demeter/Repository/Forum/ForumMessageRepository.php new file mode 100644 index 000000000..e3e2b8bff --- /dev/null +++ b/src/Modules/Demeter/Repository/Forum/ForumMessageRepository.php @@ -0,0 +1,34 @@ +find($id); + } + + public function getTopicMessages(ForumTopic $topic, int $limit = 20, int $offset = 0): array + { + return $this->findBy([ + 'topic' => $topic, + ], [ + 'createdAt' => 'DESC', + ], $limit, $offset); + } +} diff --git a/src/Modules/Demeter/Repository/Forum/ForumTopicLastViewRepository.php b/src/Modules/Demeter/Repository/Forum/ForumTopicLastViewRepository.php new file mode 100644 index 000000000..3041b2446 --- /dev/null +++ b/src/Modules/Demeter/Repository/Forum/ForumTopicLastViewRepository.php @@ -0,0 +1,28 @@ +findOneBy([ + 'forumTopic' => $forumTopic, + 'player' => $player, + ]); + } +} diff --git a/src/Modules/Demeter/Repository/Forum/ForumTopicRepository.php b/src/Modules/Demeter/Repository/Forum/ForumTopicRepository.php new file mode 100644 index 000000000..5eecb29f5 --- /dev/null +++ b/src/Modules/Demeter/Repository/Forum/ForumTopicRepository.php @@ -0,0 +1,119 @@ +find($id); + } + + public function getByForumAndPlayer(int $forum, Player $player): ForumTopic|null + { + return $this->findOneBy( + [ + 'forum' => $forum, + 'player' => $player, + ], + [ + 'createdAt' => 'DESC', + ], + ); + } + + public function getByForumAndFaction(int $forum, Color $faction, int $limit = 10, int $offset = 0, bool $archived = false): array + { + return $this->findBy( + [ + 'forum' => $forum, + 'faction' => $faction, + 'isArchived' => $archived, + ], + [ + 'isUp' => 'DESC', + 'lastContributedAt' => 'DESC', + ], + $limit, + $offset, + ); + } + + public function getByForumAndFactionWithLastViews(int $forum, Color $faction, Player $player, int $limit = 10, int $offset = 0, bool $archived = false): array + { + $qb = $this->createQueryBuilder('t'); + + $qb + ->select('t', 'lv') + ->leftJoin(ForumTopicLastView::class, 'lv', Join::WITH, 'lv.forumTopic = t AND lv.player = :player') + ->where('t.forum = :forum') + ->andWhere('t.faction = :faction') + ->setParameter('player', $player->id) + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('forum', $forum) + ; + + return array_map( + fn (array $chunk) => [ + 'topic' => $chunk[0], + 'last_view' => $chunk[1], + ], + array_chunk($qb->getQuery()->getResult(), 2) + ); + } + + public function getByForum(int $forum, int $limit = 10, int $offset = 0, bool $archived = false): array + { + return $this->findBy( + [ + 'forum' => $forum, + 'isArchived' => $archived, + ], + [ + 'isUp' => 'DESC', + 'lastContributedAt' => 'DESC', + ], + $limit, + $offset, + ); + } + + public function getByForumWithLastViews(int $forum, Player $player, int $limit = 10, int $offset = 0, bool $archived = false): array + { + $qb = $this->createQueryBuilder('t'); + + $qb + ->select('t', 'lv') + ->leftJoin(ForumTopicLastView::class, 'lv', Join::WITH, 'lv.forumTopic = t AND lv.player = :player') + ->where('t.forum = :forum') + ->setParameter('player', $player->id) + ->setParameter('forum', $forum) + ; + + return array_map( + fn (array $chunk) => [ + 'topic' => $chunk[0], + 'last_view' => $chunk[1], + ], + array_chunk($qb->getQuery()->getResult(), 2) + ); + } +} diff --git a/src/Modules/Demeter/Repository/Law/LawRepository.php b/src/Modules/Demeter/Repository/Law/LawRepository.php new file mode 100644 index 000000000..6f3d3d89c --- /dev/null +++ b/src/Modules/Demeter/Repository/Law/LawRepository.php @@ -0,0 +1,44 @@ +find($id); + } + + public function getByFactionAndStatements(Color $faction, array $statements = []): array + { + return $this->findBy([ + 'faction' => $faction, + 'statement' => $statements, + ], [ + 'createdAt' => 'DESC', + ]); + } + + public function lawExists(Color $faction, int $type): bool + { + return $this->count([ + 'faction' => $faction, + 'type' => $type, + 'statement' => [Law::EFFECTIVE, Law::VOTATION], + ]) > 0; + } +} diff --git a/src/Modules/Demeter/Repository/Law/VoteLawRepository.php b/src/Modules/Demeter/Repository/Law/VoteLawRepository.php new file mode 100644 index 000000000..bb41500e0 --- /dev/null +++ b/src/Modules/Demeter/Repository/Law/VoteLawRepository.php @@ -0,0 +1,35 @@ +findBy([ + 'law' => $law, + ]); + } + + public function hasVoted(Player $player, Law $law): bool + { + return $this->count([ + 'law' => $law, + 'player' => $player, + ]) > 0; + } +} diff --git a/system/Modules/Demeter/Resource/ColorResource.php b/src/Modules/Demeter/Resource/ColorResource.php similarity index 79% rename from system/Modules/Demeter/Resource/ColorResource.php rename to src/Modules/Demeter/Resource/ColorResource.php index 6c3878a48..2269497bc 100644 --- a/system/Modules/Demeter/Resource/ColorResource.php +++ b/src/Modules/Demeter/Resource/ColorResource.php @@ -1,110 +1,134 @@ identifier, 'popularName'); + } + + public static function getOfficialName(Color $faction): string + { + return self::getInfo($faction->identifier, 'officialName'); + } + + /** + * @return list + */ + public static function getStatuses(Color $faction): array + { + return self::getInfo($faction->identifier, 'status'); + } + + public static function getInfo(int $id, string $info): mixed + { if ($id <= count(self::$colors)) { if (in_array($info, [ - 'id', + 'id', 'officialName', - 'popularName', - 'government', - 'demonym', - 'factionPoint', + 'popularName', + 'government', + 'demonym', + 'factionPoint', 'status', 'regime', - 'devise', - 'desc1', - 'desc2', + 'devise', + 'desc1', + 'desc2', 'desc3', 'desc4', 'bonus', 'mandateDuration', 'senateDesc', - 'campaignDesc'])) { + 'campaignDesc', ])) { return self::$colors[$id][$info]; } else { - return FALSE; + return false; } } else { - return FALSE; + return false; } } - public static function getBonus($i) { + public static function getBonus($i) + { return self::$bonus[$i]; } - public static function size() { + public static function size() + { return count(self::$colors); } private static $bonus = [ - # 0 - ['path' => 'faction/bonus/bonus1-2.png', 'title' => '+ 5% de défense', 'desc' => 'Vos vaisseaux gagnent en défense'], # DONE - ['path' => 'faction/bonus/bonus1-3.png', 'title' => '- 5% prix', 'desc' => 'Les croiseurs et croiseurs-lourds sont moins chers'], # DONE - ['path' => 'faction/bonus/bonus2-2.png', 'title' => '+ 10% de maniabilité', 'desc' => 'Vos vaisseaux du Chantier Alpha gagnent en maniabilité'], # DONE - ['path' => 'faction/bonus/bonus2-3.png', 'title' => '- 5% de défense', 'desc' => 'Vos vaisseaux du Chantier de Ligne perdent en défense'], # DONE - ['path' => 'faction/bonus/bonus3-2.png', 'title' => '+ 5% production', 'desc' => 'Vos routes commerciales produisent plus de crédits'], # DONE - # 5 - ['path' => 'faction/bonus/bonus3-3.png', 'title' => '- 3% prix', 'desc' => 'Vos routes commerciales coûtent moins de crédits'], # DONE - ['path' => 'faction/bonus/bonus4-2.png', 'title' => '+ 3% de crédits', 'desc' => 'Vos impôts vous amènent plus de crédits'], # DONE - ['path' => 'faction/bonus/bonus4-3.png', 'title' => '- 10% prix', 'desc' => 'Vos colonisations et conquêtes sont moins chères'], # DONE - ['path' => 'faction/bonus/bonus4-4.png', 'title' => '- 5% de ressources', 'desc' => 'Une partie des ressources pillées sont offertes aux Dieux'], # DONE - ['path' => 'faction/bonus/bonus5-2.png', 'title' => '+ 4% production', 'desc' => 'Votre Raffinerie produit plus de ressources'], # DONDE - #10 - ['path' => 'faction/bonus/bonus5-3.png', 'title' => '+ 4% stockage', 'desc' => 'Votre Raffinerie stocke plus de ressources'], # DONE - ['path' => 'faction/bonus/bonus6-2.png', 'title' => '+ 4% efficacité', 'desc' => 'Votre Université est plus efficace'], # DONE - ['path' => 'faction/bonus/bonus6-3.png', 'title' => '- 2% temps', 'desc' => 'Vos technologies se développent plus rapidement'], # DONE - ['path' => 'faction/bonus/bonus7-2.png', 'title' => '+ 6% efficacité', 'desc' => 'Votre Ecole de Commandement est plus efficace'], # DONE - ['path' => 'faction/bonus/bonus7-3.png', 'title' => '+ 2% efficacité', 'desc' => 'Votre Université est plus efficace'] # DONE - #15 + // 0 + ['path' => 'faction/bonus/bonus1-2.png', 'title' => '+ 5% de défense', 'desc' => 'Vos vaisseaux gagnent en défense'], // DONE + ['path' => 'faction/bonus/bonus1-3.png', 'title' => '- 5% prix', 'desc' => 'Les croiseurs et croiseurs-lourds sont moins chers'], // DONE + ['path' => 'faction/bonus/bonus2-2.png', 'title' => '+ 10% de maniabilité', 'desc' => 'Vos vaisseaux du Chantier Alpha gagnent en maniabilité'], // DONE + ['path' => 'faction/bonus/bonus2-3.png', 'title' => '- 5% de défense', 'desc' => 'Vos vaisseaux du Chantier de Ligne perdent en défense'], // DONE + ['path' => 'faction/bonus/bonus3-2.png', 'title' => '+ 5% production', 'desc' => 'Vos routes commerciales produisent plus de crédits'], // DONE + // 5 + ['path' => 'faction/bonus/bonus3-3.png', 'title' => '- 3% prix', 'desc' => 'Vos routes commerciales coûtent moins de crédits'], // DONE + ['path' => 'faction/bonus/bonus4-2.png', 'title' => '+ 3% de crédits', 'desc' => 'Vos impôts vous amènent plus de crédits'], // DONE + ['path' => 'faction/bonus/bonus4-3.png', 'title' => '- 10% prix', 'desc' => 'Vos colonisations et conquêtes sont moins chères'], // DONE + ['path' => 'faction/bonus/bonus4-4.png', 'title' => '- 5% de ressources', 'desc' => 'Une partie des ressources pillées sont offertes aux Dieux'], // DONE + ['path' => 'faction/bonus/bonus5-2.png', 'title' => '+ 4% production', 'desc' => 'Votre Raffinerie produit plus de ressources'], // DONDE + // 10 + ['path' => 'faction/bonus/bonus5-3.png', 'title' => '+ 4% stockage', 'desc' => 'Votre Raffinerie stocke plus de ressources'], // DONE + ['path' => 'faction/bonus/bonus6-2.png', 'title' => '+ 4% efficacité', 'desc' => 'Votre Université est plus efficace'], // DONE + ['path' => 'faction/bonus/bonus6-3.png', 'title' => '- 2% temps', 'desc' => 'Vos technologies se développent plus rapidement'], // DONE + ['path' => 'faction/bonus/bonus7-2.png', 'title' => '+ 6% efficacité', 'desc' => 'Votre Ecole de Commandement est plus efficace'], // DONE + ['path' => 'faction/bonus/bonus7-3.png', 'title' => '+ 2% efficacité', 'desc' => 'Votre Université est plus efficace'], // DONE + // 15 ]; private static $colors = [ [ - 'id' => 0, - 'officialName' => 'Sans Faction', - 'popularName' => '', - 'government' => '', - 'demonym' => 'Sans Faction', - 'factionPoint' => '', - 'status' => ['', '', '', '', '', ''], - 'regime' => 1, - 'devise' => '', + 'id' => 0, + 'officialName' => 'Sans Faction', + 'popularName' => '', + 'government' => '', + 'demonym' => 'Sans Faction', + 'factionPoint' => '', + 'status' => ['', '', '', '', '', ''], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => '', 'desc1' => '', 'desc2' => '', 'desc3' => '', @@ -112,17 +136,17 @@ public static function size() { 'bonus' => [], 'mandateDuration' => 0, 'senateDesc' => '', - 'campaignDesc' => '' + 'campaignDesc' => '', ], [ - 'id' => 1, - 'officialName' => 'Empire Akhénien', - 'popularName' => 'l’Empire', - 'government' => 'Maison Akhénienne', - 'demonym' => 'impériaux', - 'factionPoint' => 'Points de Prestige', - 'status' => ['Citoyen', 'Sénateur', 'Gardien des Coffres', 'Premier Général', 'Intendant', 'Empereur'], - 'regime' => 1, - 'devise' => 'Des nefs d’acier,
Naquit l’équilibre', + 'id' => 1, + 'officialName' => 'Empire Akhénien', + 'popularName' => 'l’Empire', + 'government' => 'Maison Akhénienne', + 'demonym' => 'impériaux', + 'factionPoint' => 'Points de Prestige', + 'status' => ['Citoyen', 'Sénateur', 'Gardien des Coffres', 'Premier Général', 'Intendant', 'Empereur'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Des nefs d’acier,
Naquit l’équilibre', /* 'desc1' => 'Faction centrale de la Galaxie de l’Œil, l’Ordre Impérial cherche à bâtir un empire puissant, dont les ramifications mèneraient jusqu’aux confins de la Galaxie. Un empire sous l’égide de la Maison Akhénienne, totalitaire et immuable.', 'desc2' => 'Ordre à la forte puissance militaire, la Maison Akhénienne ne croit qu’en une chose, la suprématie de l’Empereur, seul et unique guide de cette Faction.', 'desc3' => 'Leur technologie, fiable et robuste, repose sur de longues strates de savoir-faire et sur une base solide d’expérience en matière d’armement et d’aérospatial. Industriellement très développée, l’économie Akhénienne est une machine bien rodée, pouvant allègrement soutenir l’effort de guerre.', @@ -131,20 +155,20 @@ public static function size() { 'desc2' => 'L’empire est un état pétrit de contradiction, héritier d’une tradition de domination des populations sur son territoire, il se proclame désormais héraut de la Liberté et la justice dans la galaxie. Mais il sait aussi que l’ancienne oligarchie, balayée par les dernières réformes du sénat, ne veulent pas de sa parole et qu’elle chercheront par tous les moyens à faire taire ce message d’espoir.', 'desc3' => 'Depuis que les provinces de Kovahk et leurs alliés ont fait sécession l’empire se prépare à une attaque imminente et prépare son arsenal en conséquence. L’empire refuse également de voir ses provinces périphérique prendre leur indépendance pour tomber dans des régimes rétrogrades.', 'desc4' => 'Ayant conservé les planètes les plus prospère et les plateforme commerciale les plus florissante, l’empire est la plus grande puissance économique de la galaxie. Leurs diverses concessions leur apportent des ressources de qualités et en grand nombre. Les différents accords, traités et taxes commerciales ainsi que leur situation centrale dans la Galaxie, leur apportent également des revenus stables et constants.', - 'bonus' => [0, 1], + 'bonus' => [self::DEFENSELITTLESHIPBONUS, self::PRICEBIGSHIPBONUS], 'mandateDuration' => 604800, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', - 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.' + 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.', ], [ - 'id' => 2, - 'officialName' => 'Empire de Kovahk', - 'popularName' => 'l’Essaim', - 'government' => 'Maison des Kovahkarh', - 'demonym' => 'kovahkarhs', - 'factionPoint' => 'Points de Bataille', - 'status' => ['Guerrier', 'Dignitaire', 'Trésorier', 'Maréchal', 'Chambellan', 'Empereur'], - 'regime' => 2, - 'devise' => 'Eclats de métal dans le ciel', + 'id' => 2, + 'officialName' => 'Empire de Kovahk', + 'popularName' => 'l’Essaim', + 'government' => 'Maison des Kovahkarh', + 'demonym' => 'kovahkarhs', + 'factionPoint' => 'Points de Bataille', + 'status' => ['Guerrier', 'Dignitaire', 'Trésorier', 'Maréchal', 'Chambellan', 'Empereur'], + 'regime' => Color::REGIME_ROYALISTIC, + 'devise' => 'Eclats de métal dans le ciel', /* 'desc1' => 'Fiers sont les soldats Kovahkarh, sans pareil est leur honneur dans la Galaxie de l’Oeil. Kovahk est une faction guerrière aux moeurs parfois brutales et au caractère bien trempé tel l’acier qu’ils vénèrent et adulent.', 'desc2' => 'Libérateur des populations oppressées de l’Ancien Empire, Kovahk vénère le pouvoir du métal rarissime et infaillible, un métal qui résisterai à toutes attaques ennemies. Habiles forgerons capables de créer les alliages les plus robustes, l’essaim Kovahkarh étend son influence sur la Galaxie.', 'desc3' => 'Leur longue tradition de pillage et d’exploration de la Galaxie, leur a amené de très grandes richesses ainsi qu’une habilté hors du commun pour la construction de vaisseaux de combat rapides et puissants.', @@ -153,20 +177,20 @@ public static function size() { 'desc2' => 'Kovahk vénère le pouvoir du métal rarissime et infaillible, un métal qui résisterait à toute attaque ennemie. Composé d\'habiles forgerons capables de créer les alliages les plus robustes et de redoutables militaires, l’Empire kovahkarh étend son influence sur la Galaxie.', 'desc3' => 'Leur longue tradition de pillage et d’exploration de la Galaxie leur a amené de très grandes richesses ainsi qu’une habileté hors du commun pour la construction de vaisseaux de combat rapides et puissants. Elle a les moyens de produire un grand nombre de forces spatiales. Portée sur un combat en essaim, d\'où son surnom, de milliers de chasseurs et de corvettes, elle peut dévaster un système solaire en quelques jours... puis repartir.', 'desc4' => 'Basée sur système politique très martial et militaire dirigé les anciens généraux de l’Empire Akhénien, la société kovahkarh fait preuve d’une grande discipline et d’une rigueur sans égal. Unie dans un même idéal de restauration du régime Impérial, cette faction est une des plus solide de la Galaxie.', - 'bonus' => [2, 3], + 'bonus' => [self::SPEEDLITTLESHIPBONUS, self::DEFENSELITTLESHIPMALUS], 'mandateDuration' => 604800, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.', ], [ - 'id' => 3, - 'officialName' => 'Maison de Négore', - 'popularName' => 'Négore', - 'government' => 'Maison Négienne', - 'demonym' => 'négiens', - 'factionPoint' => 'Points de Marchandage', - 'status' => ['Commerçant', 'Mécène', 'Grand Argentier', 'Condottiere', 'Intendant', 'Doge'], - 'regime' => 2, - 'devise' => 'Toutes les richesses,
Passent par Négore', + 'id' => 3, + 'officialName' => 'Maison de Négore', + 'popularName' => 'Négore', + 'government' => 'Maison Négienne', + 'demonym' => 'négiens', + 'factionPoint' => 'Points de Marchandage', + 'status' => ['Commerçant', 'Mécène', 'Grand Argentier', 'Condottiere', 'Intendant', 'Doge'], + 'regime' => Color::REGIME_ROYALISTIC, + 'devise' => 'Toutes les richesses,
Passent par Négore', // old description /* 'desc1' => 'La maison Négienne, la plus riche de la Galaxie de l’Œil, est composée essentiellement de grands marchands et de financiers expérimentés. Considérée comme la banque de la galaxie depuis très longtemps, son économie est basée sur les échanges et le commerce.', 'desc2' => 'Parfois peu regardant sur la provenance des marchandises, les Négiens sont d’adroits négociateurs n’hésitant pas à profiter des opportunités qu’offrent la contre-bande, le trafic d’armes ainsi que la vente d’esclaves au détriment des accords et traités commerciaux.', @@ -178,20 +202,20 @@ public static function size() { 'desc3' => 'Dotée de moyens militaires fastueux, la flotte Négienne est rutilante et dissuasive, disposant d’une prodigieuse armada de vaisseaux destinés à assurer sa prospérité et son avenir économique dans la Galaxie.', 'desc4' => 'Vivant dans le luxe et l’opulence, les Vizirs de Négore sont à la tête de fortunes faramineuses permettant les caprices les plus fous; Orgies, casinos, courses et paris sont le quotidien de cette province aux moeurs débridés.', - 'bonus' => [4, 5], + 'bonus' => [self::COMMERCIALROUTEINCOMEBONUS, self::COMMERCIALROUTEPRICEBONUS], 'mandateDuration' => 604800, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', - 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.' + 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.', ], [ - 'id' => 4, - 'officialName' => 'Confrérie d\'Ahriman', - 'popularName' => 'la Confrérie', - 'government' => 'Eglise Cardanienne', - 'demonym' => 'cardaniens', - 'factionPoint' => 'Points de Foi', - 'status' => ['Initié', 'Frère', 'Frère Trésorier', 'Frère Commandeur', 'Père', 'Grand Maître'], - 'regime' => 3, - 'devise' => 'De gré ou de force, nous serons votre salut', + 'id' => 4, + 'officialName' => 'Confrérie d\'Ahriman', + 'popularName' => 'la Confrérie', + 'government' => 'Eglise Cardanienne', + 'demonym' => 'cardaniens', + 'factionPoint' => 'Points de Foi', + 'status' => ['Initié', 'Frère', 'Frère Trésorier', 'Frère Commandeur', 'Père', 'Grand Maître'], + 'regime' => Color::REGIME_THEOCRATIC, + 'devise' => 'De gré ou de force, nous serons votre salut', /* 'desc1' => 'L’Eglise Cardanienne est la seule faction théocratique de la Galaxie. Elle fût pendant de longues années un mouvement discriminé, peuplé uniquement par des moines et des hommes pieux. Mais des dérives fanatiques ont poussé la Marche de Cardan à devenir une faction belliqueuse et extrémiste, éblouie par un pouvoir suprême et divin qui les mènera à la victoire.', 'desc2' => 'Les rites prennent une place très importante dans le mode de vie des Cardaniens. Nombreux sacrifices et rituels sont faits à chaque Segment en l’honneur des Dieux. Les fidèles se doivent de se plier à la loi cardanienne et respecter les ordres du Guide Suprême.', 'desc3' => 'Une grande armée de puissants guerriers voués au culte de Cardan, fanatiques experts dans le maniement des armes, les combattants de Cardan n’ont peur que d’une seule chose : ne pas mourir en martyre et décevoir l’Ordre Suprême.', @@ -200,63 +224,63 @@ public static function size() { 'desc2' => 'Interdits sous l’occupation impériale, les rites cardaniens sont de nouveau suivis dans les Cardamines. De nombreux sacrifices et rituels sont faits à chaque segment en l’honneur des Dieux. Les fidèles se doivent de se plier à la loi cardanienne et respecter la volonté divine.', 'desc3' => 'En quelques segments, la Confrérie a réussi à rassembler une puissante flotte de guerre. Héritiers d’une antique tradition militaire, les guerriers voués au culte de Karn, dieu du fer et des trous noirs, et suivants les enseignement de Magoth sont des fanatiques experts dans le maniement des armes et des vaisseaux de guerre. Ils ne vivent que pour une chose, se sacrifier aux dieux et mourir en martyres.', 'desc4' => 'Si elle n’a pas réussi à effacer les traditions cardaniennes, l’occupation impériale a néanmoins provoqué l’ouverture économique de la Marche. Désormais devenue la Confrérie, elle peut s’appuyer sur une industrie remarquable et sur de nombreux fidèles, des marchands, des ouvriers et des militaires, bien formés et unis dans la vénération d’Ahriman.', - 'bonus' => [6, 7, 8], + 'bonus' => [self::TAXBONUS, self::COLOPRICEBONUS, self::LOOTRESOURCESMALUS], 'mandateDuration' => 1209600, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se proposer devant les Oracles pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, la Grande Lumière, via les Oracles décide de la personne la plus apte à la représenter dans le monde physique. Cet personne reçoit le titre de Guide Suprême. -

Le Guide Suprême va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Camerlingue, l\'Inquisiteur et l\'Archiprêtre de la faction. ' +

Le Guide Suprême va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Camerlingue, l\'Inquisiteur et l\'Archiprêtre de la faction. ', ], [ - 'id' => 5, - 'officialName' => 'Province de Nerve', - 'popularName' => 'la Nerve', - 'government' => 'République Nervéenne', - 'demonym' => 'nervéens', - 'factionPoint' => 'Points d\'industrie', - 'status' => ['Citoyen', 'Député', 'Ministre des Finances', 'Ministre de la Défense', 'Premier Ministre', 'Président'], - 'regime' => 1, - 'devise' => 'Jamais ne tombera,
La ville aux Mille Sous-sols', + 'id' => 5, + 'officialName' => 'Province de Nerve', + 'popularName' => 'la Nerve', + 'government' => 'République Nervéenne', + 'demonym' => 'nervéens', + 'factionPoint' => 'Points d\'industrie', + 'status' => ['Citoyen', 'Député', 'Ministre des Finances', 'Ministre de la Défense', 'Premier Ministre', 'Président'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Jamais ne tombera,
La ville aux Mille Sous-sols', 'desc1' => 'La république Nervéenne est composée d’une grande communauté préférant vivre à l’écart, cachée dans d’incroyables labyrinthes souterrains. Elle est connue principalement pour sa capacité à camoufler la quasi-totalité de ses infrastructures à ses ennemis ainsi que pour ses qualités de bâtisseurs hors-normes.', 'desc2' => 'Communauté soudée autour de son Président, la Nerve est une faction de grands travailleurs et de bâtisseurs parmi les plus fameux de toute la Galaxie. Ils réalisent des édifices enfouis d’une finesse et d’une complexité incroyable.', 'desc3' => 'N’ayant pas une grande connaissance de l’art de la guerre, mais contraints de lutter pour la préservation de leur mode de vie, ils se sont adaptés et ont formé de redoutables forteresses défensives.', 'desc4' => 'Grâce à un dédale de culture hydroponique et une grande connaissance en agro-alchimie mais également en extraction de minerai, l’industriel Nervéen produit une grande quantité de ressources attirant ainsi les marchands les plus riches de la galaxie, leur permettant ainsi un essor prospère.', - 'bonus' => [9, 10], + 'bonus' => [self::RAFINERYBONUS, self::STORAGEBONUS], 'mandateDuration' => 950400, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se présenter aux élections pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, chaque membre de la Nerve peut voter pour le candidat de son choix. À la fin de la période de vote, la personne ayant reçu le plus de voix est élue Président. -

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ' +

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ', ], [ - 'id' => 6, - 'officialName' => 'Province d’Aphéra', - 'popularName' => 'Aphéra', - 'government' => 'République Aphéréenne', - 'demonym' => 'aphéréens', - 'factionPoint' => 'Points de Technologie', - 'status' => ['Citoyen', 'Technocrate', 'Algorithmicien', 'Tacticien', 'Archiviste', 'Autarque'], - 'regime' => 1, - 'devise' => 'Au travers du vide,
Nos oiseaux percent,
Levez les yeux', + 'id' => 6, + 'officialName' => 'Province d’Aphéra', + 'popularName' => 'Aphéra', + 'government' => 'République Aphéréenne', + 'demonym' => 'aphéréens', + 'factionPoint' => 'Points de Technologie', + 'status' => ['Citoyen', 'Technocrate', 'Algorithmicien', 'Tacticien', 'Archiviste', 'Autarque'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Au travers du vide,
Nos oiseaux percent,
Levez les yeux', 'desc1' => 'La république d’Aphéra, réputée pour son potentiel scientifique, est une faction composée des plus grands chercheurs. Avides de technologie et de progrès, les cités d’Aphéra s’étendent au-dessus des nuages, créant de fantastiques villes volantes.', 'desc2' => 'Consciente des bienfaits de la nature, Aphéra vit en harmonie avec son environnement dont elle tire la majorité de ses ressources énergétiques. Développement durable, énergies renouvelables, cette faction fait preuve d’une conscience écologique très importante, préférant la technologie de pointe à une industrie de masse.', 'desc3' => 'Entrainés depuis leur plus jeune âge, les pilotes aphéréens sont de fins tacticiens et des as du pilotage. Ils font preuve d’une maitrise quasi absolue aux commandes de leurs vaisseaux. Le ciel est leur terrain de jeu.', 'desc4' => 'N’appréciant pas d’être à l’écart des décisions politiques, les Aphéréens savent faire preuve de poigne lors que cela est nécessaire, déployant des moyens militaires impressionnants pour faire valoir leur idéologie démocratique au travers de toute la Galaxie.', - 'bonus' => [11, 12], + 'bonus' => [self::BIGACADEMICBONUS, self::TECHNOLOGYBONUS], 'mandateDuration' => 518400, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se présenter aux élections pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, chaque membre d\'Aphéra peut voter pour le candidat de son choix. À la fin de la période de vote, la personne ayant reçu le plus de voix est élue Autarque. -

L\'Autarque va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer l\'Algorithmicien, le Tacticien et l\'Archiviste de la faction. ' +

L\'Autarque va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer l\'Algorithmicien, le Tacticien et l\'Archiviste de la faction. ', ], [ - 'id' => 7, - 'officialName' => 'Marche de Synelle', - 'popularName' => 'Synelle', - 'government' => 'Fédération Synélectique', - 'demonym' => 'syns', - 'factionPoint' => 'Points de Sagesse', - 'status' => ['Fédéré', 'Conseiller', 'Consul des Finances', 'Consul de la Défense', 'Premier Consul', 'Chancelier'], - 'regime' => 1, - 'devise' => 'Au plus loin des Guerres,
La vie prend racine', - /* + 'id' => 7, + 'officialName' => 'Marche de Synelle', + 'popularName' => 'Synelle', + 'government' => 'Fédération Synélectique', + 'demonym' => 'syns', + 'factionPoint' => 'Points de Sagesse', + 'status' => ['Fédéré', 'Conseiller', 'Consul des Finances', 'Consul de la Défense', 'Premier Consul', 'Chancelier'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Au plus loin des Guerres,
La vie prend racine', + /* 'desc1' => 'La fédération Synélectique, basée sur la connaissance et le savoir, est une faction composée de libres penseurs, de diplomates, d’érudits et de philosophes. Préférant une stratégie plus réfléchie à des attaques éclairs, le système militaire de Synelle est puissant et méthodique.', 'desc2' => 'Le cursus académique et la formation prennent une place extrêmement importante dans le mode de vie des Syns. Vivant selon les principes du Premier Consul, cette société calme et autarcique renferme une très grande partie du patrimoine historique de la Galaxie dans de gigantesques bibliothèques.', 'desc3' => 'Fière de son indépendance, Synelle la sage dispose d’un important arsenal militaire prêt à défendre ses richesses contre quiconque viendra à les défier. Synelle aime rester en de bons termes avec les différentes alliances peuplant la galaxie, préfèrant la diplomatie à la guerre.', @@ -264,109 +288,109 @@ public static function size() { 'desc1' => 'La fédération Synélectique, basée sur la connaissance et le savoir, est une faction composée de libres penseurs, de diplomates, d’érudits et de philosophes. Préférant une stratégie plus réfléchie à des attaques éclairs, le système militaire de Synelle est puissant et méthodique. Grâce à l’influence que son statut de république vassale lui procurait, elle est à la base des récentes réformes qui ont fait de l’Empire une démocratie.', 'desc2' => 'La société Syn a connu de nombreuses mutation depuis sa fondation en SEG. Elle qui fut une société calme et autarcique, Synelle est désormais le cœur cosmopolite de la galaxie.', 'desc3' => 'En tant que principal allié de l’empire Akhénien, Synelle la Sage ne peut se passer d’un important arsenal militaire, construit dans l’éventualité d’une confrontation avec les ennemis de la démocratie. Bien qu’elle partage un passé commun avec Négore, Synelle constate que les dernières réformes qu’elle a mené dans l’empire déplaisent au Doge. Elle devine, désormais, qu’elle ne peut plus compter sur le soutien indéfectible de Négore.', - 'desc4' => 'Consciente des guerres qu’a causé les élans nationalistes de ses élites lors des guerres d’influence, Synelle s’est depuis repentie. Elle souhaite redevenir aux yeux de tous la faction incarnant la paix galactique préférant la diplomatie et le commerce à a l’art militaire.', - 'bonus' => [0, 13, 14], + 'desc4' => 'Consciente des guerres qu’a causé les élans nationalistes de ses élites lors des guerres d’influence, Synelle s’est depuis repentie. Elle souhaite redevenir aux yeux de tous la faction incarnant la paix galactique préférant la diplomatie et le commerce à a l’art militaire.', + 'bonus' => [self::DEFENSELITTLESHIPBONUS, self::COMMANDERSCHOOLBONUS, self::LITTLEACADEMICBONUS], 'mandateDuration' => 1382400, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se présenter aux élections pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, chaque membre de Synelle peut voter pour le candidat de son choix. À la fin de la période de vote, la personne ayant reçu le plus de voix est élue Chancelier. -

Le Chancelier va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Consul de la défense, le Consul des finances et le Premier Consul de la faction. ' +

Le Chancelier va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Consul de la défense, le Consul des finances et le Premier Consul de la faction. ', ], [ - 'id' => 8, - 'officialName' => 'Ligue Seldarine', - 'popularName' => 'la Ligue', - 'government' => 'Conseil de la Ligue', - 'demonym' => 'seldarins', - 'factionPoint' => 'Points de Courage', - 'status' => ['Bourgeois', 'Électeur', 'Grand Argentier', 'Champion', 'Licteur', 'Chancelier'], - 'regime' => 2, - 'devise' => 'Brisons nos chaînes et marchons libres', + 'id' => 8, + 'officialName' => 'Ligue Seldarine', + 'popularName' => 'la Ligue', + 'government' => 'Conseil de la Ligue', + 'demonym' => 'seldarins', + 'factionPoint' => 'Points de Courage', + 'status' => ['Bourgeois', 'Électeur', 'Grand Argentier', 'Champion', 'Licteur', 'Chancelier'], + 'regime' => Color::REGIME_ROYALISTIC, + 'devise' => 'Brisons nos chaînes et marchons libres', 'desc1' => 'En 260 après Akhéna, l\'Empire a le contrôle de la presque totalité de la galaxie, hormis les quelques territoires occupés par Cardan.

Profitant de ce désordre politique et d\'un règne sans force de l\'héritier de l\'impératrice Akhénattia, des industriels et financiers impériaux avec l\'appui de nombreuses maisons mineures, passent à l\'action. Un traité est signé sur la planète Seldare pour affirmer leur indépendance et faire tomber l\'Empereur de son trône : la Ligue Seldarine est créée. Elle n\'aura de cesse de vouloir se substituer au pouvoir en place.', 'desc2' => 'Esprit très libéraux mais néanmoins attaché à la hiérarchisation de la société, ceux qu\'on appelle communément les Seldarins rêve de devenir les maître d\'un immense Empire où banquiers et entrepreneurs se partageraient le pouvoir, régnant chacun leur tour pour assurer l\'équilibre.', 'desc3' => 'La ligue peut s\'appuyer sur une économie florissante et d\'énormes moyens de production. Si elle n\'est pas maîtresse dans l\'art de la guerre, elle ne manquera pas de vaisseaux pour s\'entraîner.', 'desc4' => 'Majoritairement marchands et industriels, leur idéologie repose sur la méritocratie. Les familles noble et bourgeoise cohabitent sans encombre tant que leurs libertés financières et économiques sont garanties.', - 'bonus' => [1, 5], + 'bonus' => [self::PRICEBIGSHIPBONUS, self::COMMERCIALROUTEPRICEBONUS], 'mandateDuration' => 604800, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', - 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.' + 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.', ], [ - 'id' => 9, - 'officialName' => 'Nouvelle-Nerve', - 'popularName' => 'la Nouvelle-Nerve', - 'government' => 'République Nervéenne', - 'demonym' => 'néo-nervéens', - 'factionPoint' => 'Points d\'industrie', - 'status' => ['Citoyen', 'Député', 'Ministre des Finances', 'Ministre de la Défense', 'Premier Ministre', 'Président'], - 'regime' => 1, - 'devise' => 'Au fond des gouffres,
finiront les valses du ciel', + 'id' => 9, + 'officialName' => 'Nouvelle-Nerve', + 'popularName' => 'la Nouvelle-Nerve', + 'government' => 'République Nervéenne', + 'demonym' => 'néo-nervéens', + 'factionPoint' => 'Points d\'industrie', + 'status' => ['Citoyen', 'Député', 'Ministre des Finances', 'Ministre de la Défense', 'Premier Ministre', 'Président'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Au fond des gouffres,
finiront les valses du ciel', 'desc1' => 'Décimés puis déportés en 27 par la Grande Amirale Alba Valseciel, les Nervéens ont toujours été nourri d’un sentiment patriote très fort. Grâce à leurs efforts conjoints, ils achevèrent la restauration de la citadelle aux mille sous-sols en 75. Militant avec vigueur pour plus d’indépendance, Nerve obtient, enfin, en 89, un statut d’autonomie. Elle jouit alors d’une grande liberté sous Valerio et prospéra. Mais le règne sévère d’Akhénattia vint lui retirer de nombreux privilèges ce qui ternit à nouveau les relations avec l’Empire duquel les Nervéens s’étaient pourtant rapprochés au fil des ans. Lorsqu’Eris monta sur le trône et mena son règne sans autorité, les Nervéens firent sécession et déclarèrent leur indépendance en temps que Nouvelle Nerve.', 'desc2' => 'Les Néo-Nervéens sont très fiers. Attachés à leur liberté et à la démocratie comme nul autre, ils méprisent la grande majorité des peuples de la galaxie. Qui plus est, ils vouent une haine dévorante à la Maison Valseciel, responsable de la chute de la Première Nerve.', 'desc3' => 'Les Néo-Nervéens sont emprunt d’un tel amour pour leur Mère Patrie, qu’ils sont considérés comme des soldats sans peur et téméraires. Contrairement à leurs ancêtres, leur stratégie n’est plus uniquement basée sur la défense de forteresses. En effet, ils ne rechignent pas à prendre les devants et à combattre en orbite. Cependant, la force de la Nouvelle Nerve repose sur un savoir faire ancestrale et sur des matériaux de qualité. Les sous-sols des mondes nervéens sont extrêmement riches et consistent en leur plus précieux atout.', 'desc4' => 'Tous frères dans la République, les Néo-Nervéens sont comme leurs prédécesseurs, amoureux des arts, de l’ingénierie et des matières nobles. Les monuments les plus fantastiques de la galaxie sont souvent l’ouvrage d’architectes et d’artistes de Nerve. Il faut dire que la citadelle est un chef d’oeuvre en soi, bien que les stigmates des Valseciel soient encore par endroit visibles.', - 'bonus' => [9, 10], + 'bonus' => [self::RAFINERYBONUS, self::STORAGEBONUS], 'mandateDuration' => 950400, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se présenter aux élections pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, chaque membre de la Nouvelle-Nerve peut voter pour le candidat de son choix. À la fin de la période de vote, la personne ayant reçu le plus de voix est élue Président. -

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ' +

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ', ], [ - 'id' => 10, - 'officialName' => 'Culte Magothique', - 'popularName' => 'le Culte', - 'government' => 'Assemblée de Magoth', - 'demonym' => 'magoths', - 'factionPoint' => 'Points d\'industrie', - 'status' => ['Disciple', 'Oracle', 'Gardien des coffres', 'Chef inquisiteur', 'Patriarche', 'Grand dignitaire'], - 'regime' => 3, - 'devise' => 'Point de vraie foi en dehors du sang et des larmes', + 'id' => 10, + 'officialName' => 'Culte Magothique', + 'popularName' => 'le Culte', + 'government' => 'Assemblée de Magoth', + 'demonym' => 'magoths', + 'factionPoint' => 'Points d\'industrie', + 'status' => ['Disciple', 'Oracle', 'Gardien des coffres', 'Chef inquisiteur', 'Patriarche', 'Grand dignitaire'], + 'regime' => Color::REGIME_THEOCRATIC, + 'devise' => 'Point de vraie foi en dehors du sang et des larmes', 'desc1' => 'Les Magothistes, persuadés de posséder la vraie foi se fondent sur la parole de Magoth uniquement. Celle-ci demande un maximum de sacrifices et de souffrance. Ils sont prêts à tout pour que la Galaxie voue un culte aux vrais Dieux. Seuls les élus et les personnes baptisées exclusivement par le triumvirat religieux peuvent prétendre à la vie. Leur extrémisme et leur vision bornée de la foi ont fait qu’ils ont été banni du coeur de Cardan.', 'desc2' => 'Les Magothistes possèdent la seule et unique vérité, la parole de Magoth. Leur existence est tourné vers ces préceptes qui excluent évidemment la tolérance envers les non-croyants. Les hérétiques aiment dire que la vie d’un Magothiste est ponctuée de prières, de purification, de châtiments corporels et d’expiation de pêchés. A cela s’ajoutent la méditation, la recherche du geste parfait, la conscience aiguë du partage entre initiés, le don de soi et l’amour inconditionnel de son prochain. C’est pour cette dernière raison qu’il est primordial que les Magothistes fassent comprendre à la galaxie l’erreur dans laquelle elle s’embourbe. Pour le bien de l’humanité, il est de leur devoir divin de délivrer les populations des hérétiques afin de les ramener dans la lumière et sauver leurs âmes.', 'desc3' => 'Il serait une erreur de penser que les Magothistes se contentent de foncer sur leurs ennemis sans réfléchir. Leur stratégie inclut le sacrifice des troupes mais seulement en cas de nécessité. Leur principal objectif est de couper les têtes des gouverneurs des planètes mais d’épargner les populations afin de les sauver en les convertissant à la parole de Magoth. Ainsi, leur armée est faite des guerriers les plus courageux et sans peur qu’on puisse trouver dans la galaxie, mais est aussi composée d’une logistique à toute épreuve pour s’occuper des civils.', 'desc4' => 'Que ferait un magoth sans sa cinquantaine d’icônes ? Il est certain que leur dévotion nécessite le support de ces oeuvres sublimes. Le titre de peintre d’icône est réservé à quelques élus seulement qui, de ce fait, sont admirés et bénis par le reste des Magothistes. Nul autre personne n’a le droit d’en peindre sans la bénédiction du clergé. L’écriture des textes sacrés est aussi relayée au rang d’art. Les enluminures sont aussi précises que finement décorées. Enfin, la musique est au centre des méditations. Chaque magoth connaît plusieurs chants religieux qui l\'amèneront dans un état de transe nécessaire pour entendre la voix des Dieux. ', - 'bonus' => [8, 2, 6], + 'bonus' => [self::LOOTRESOURCESMALUS, self::SPEEDLITTLESHIPBONUS, self::TAXBONUS], 'mandateDuration' => 1209600, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se proposer devant les Oracles pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, la Grande Lumière, via les Oracles décide de la personne la plus apte à la représenter dans le monde physique. Cet personne reçoit le titre de Guide Suprême. -

Le Guide Suprême va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Camerlingue, l\'Inquisiteur et l\'Archiprêtre de la faction. ' +

Le Guide Suprême va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Camerlingue, l\'Inquisiteur et l\'Archiprêtre de la faction. ', ], [ - 'id' => 11, - 'officialName' => 'Néo-Humaniste', - 'popularName' => 'Néo-Humaniste', - 'government' => 'Nouvelle Eglise Cardanienne', - 'demonym' => 'néo-humanistes', - 'factionPoint' => 'Points d\'industrie', - 'status' => ['Éveillé', 'Philosophe', 'Drapier', 'Grand Général', 'Sénéchal', 'Primat'], - 'regime' => 1, - 'devise' => 'Le vrai chemin est celui de la mesure et de la subtilité', + 'id' => 11, + 'officialName' => 'Néo-Humaniste', + 'popularName' => 'Néo-Humaniste', + 'government' => 'Nouvelle Eglise Cardanienne', + 'demonym' => 'néo-humanistes', + 'factionPoint' => 'Points d\'industrie', + 'status' => ['Éveillé', 'Philosophe', 'Drapier', 'Grand Général', 'Sénéchal', 'Primat'], + 'regime' => Color::REGIME_DEMOCRATIC, + 'devise' => 'Le vrai chemin est celui de la mesure et de la subtilité', 'desc1' => 'Les Néo-Humanistes, majoritairement issus des descendants des Néo-Nervéens vivant sur les territoires conquis en SEG280. Ils prônent une foi plus ouverte et plus progressiste que la doctrine orthodoxe. Ils cherchent avant tout à sortir Cardan de son autarcie séculaire et défendent ainsi une politique plus ouverte au commerce avec le reste de la galaxie tout en restant indépendants faces aux autres grandes puissances.', 'desc2' => 'Si l’on devait choisir un adjectif qui décrirait les néo-humanistes, celui qui conviendrait le mieux serait probablement “mesuré”. Partant du pragmatisme quasiment matérialiste des néo-nervéens, les néo-humanistes y ont ajouté une touche de religion qui désormais éclaire leur morale. Très vite, ils se sont intéressés aux nouvelles sciences qui avaient été interdites par les décrets magothistes. Ils disposent désormais d’universités parmi les plus performantes de la galaxie.', 'desc3' => 'Préférant la diplomatie à la guerre, les néo-humanistes ne disposaient il y a peu que d’une force armée très limitée. Mais lors des premiers troubles qui secouèrent Cardan, un nouveau groupe politique beaucoup moins pacifique fit son apparition. Les généraux Cardaniens s’étant prononcés pour une réforme politique de la faction et donc contre le clergé Magothiste, ont massivement rejoint la Nouvelle Église Cardanienne. Désormais il y a nombre de bons stratèges néo-humanistes qui ont commencé à militariser certaines bases orbitales stratégiques dans la possibilité d’une attaque magothe sur les terres que contrôlent la Nouvelle Église Cardanienne.', 'desc4' => 'Les néo-humanistes, tout comme chez leurs prédécesseurs, ont un certain goût pour l’esthétisme, l’ingénierie et les matières nobles. Aimant la simplicité que l’on retrouve dans les arts immémoriaux telles que la peinture ou la sculpture, ils trouvent parfois surfaits les héritages des anciens monuments de la Nerve. Ils préfèrent bâtir des cathédrales exposées à la lumière des astres plutôt que dans de longues galeries souterraines.', - 'bonus' => [6, 12], + 'bonus' => [self::TAXBONUS, self::TECHNOLOGYBONUS], 'mandateDuration' => 950400, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', 'campaignDesc' => 'Les membres du Sénat peuvent se présenter aux élections pour prendre une place politiquement importante dans la faction.

Une fois que toutes les candidatures ont été déposées, chaque membre de la Nerve peut voter pour le candidat de son choix. À la fin de la période de vote, la personne ayant reçu le plus de voix est élue Président. -

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ' +

Le Président va ensuite choisir trois personnes parmi les membres du Sénat pour le seconder dans la Faction. Il va devoir déterminer le Ministre de la défense, le Ministre des finances et le Premier Ministre de la faction. ', ], [ - 'id' => 12, - 'officialName' => 'Impérialiste', - 'popularName' => 'Impérialiste', - 'government' => 'Maison de Dhase', - 'demonym' => 'impérialistes', - 'factionPoint' => 'Points d\'industrie', - 'status' => ['Noble', 'Prince', 'Vidôme', 'Maréchal', 'Préfet', 'Gouverneur Général'], - 'regime' => 2, - 'devise' => 'Pour l’honneur, la vertu et la foi !', + 'id' => 12, + 'officialName' => 'Impérialiste', + 'popularName' => 'Impérialiste', + 'government' => 'Maison de Dhase', + 'demonym' => 'impérialistes', + 'factionPoint' => 'Points d\'industrie', + 'status' => ['Noble', 'Prince', 'Vidôme', 'Maréchal', 'Préfet', 'Gouverneur Général'], + 'regime' => Color::REGIME_ROYALISTIC, + 'devise' => 'Pour l’honneur, la vertu et la foi !', 'desc1' => 'Les Impérialistes, regroupés derrière la maison de Dhase, ancienne famille de souches impériales et néo-nervéennes gouvernant la province de Cardan avant son indépendance, ont aussi pris les armes contre les autres factions. Ils recherchent à rattacher leurs territoires à l’Empire et rejettent désormais la foi cardanienne orthodoxe au profit d’un culte lié à l’empereur.', 'desc2' => 'Depuis l’indépendance de Cardan, les anciens nobles qui travaillaient pour l’administration de la marche ont été forcés d’abandonner leur privilèges. Si beaucoup d’entre eux ont quitté Cardan pour la Ligue ou l’Empire, la minorité qui est restée dans les Cardamines ont développé des coutumes hybrides combinant celles de la haute noblesse impériale et la ferveur cardanienne. Simple dans leur quotidien mais aimant le faste des grandes réceptions, les impérialistes sont un curieux mélange de deux sociétés opposées que peu auraient imaginé possible.', 'desc3' => 'Inspirés par les conquêtes d’Akhéna, les impérialistes sont de grands stratèges dans l’âme. Aimant les combats et la guerre, les soldats impérialistes ne jurent que par et pour l’honneur. Le culte des anciens empereurs glorifie l’héroïsme et le sacrifice, ce qui rend les guerriers de cette faction redoutables. Ils sont convaincus que leur courage combiné à leur technologie récemment achetée à l’Empire les feront maître des Cardamines.', 'desc4' => 'Ils aiment les arts raffinés, comme la peinture, la sculpture et les holoreportages. Ils sont friands de rassemblements où des pièces antiques en théâtre ou en musique sont rejouées. La littérature ainsi que le sport, car comme tout le monde le sait, le sport est la base d’une âme pure, est au coeur des loisirs des impérialistes.', - 'bonus' => [0, 1], + 'bonus' => [self::DEFENSELITTLESHIPBONUS, self::PRICEBIGSHIPBONUS], 'mandateDuration' => 604800, 'senateDesc' => 'Le sénat est composé des membres de la faction qui possèdent le plus de points. Ces points sont consultables dans le classement général.', - 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.' - ] + 'campaignDesc' => 'À tout moment, un membre du sénat ou du gouvernement peut tenter un coup d\'état. Il aura alors 7 relèves pour attirer des partisans. Il aura réussi son putsch s\'il arrive à recruter suffisemment de partisans.', + ], ]; -} \ No newline at end of file +} diff --git a/src/Modules/Demeter/Resource/ForumResources.php b/src/Modules/Demeter/Resource/ForumResources.php new file mode 100755 index 000000000..2eefb29eb --- /dev/null +++ b/src/Modules/Demeter/Resource/ForumResources.php @@ -0,0 +1,106 @@ += 10 < 20 = pour le gouvernement d'une fac, >= 20 pour les chefs de toutes les factions +class ForumResources +{ + private static $idLink = [1, 2, 3, 4, 5, 10, 20]; + + private static $forums = [ + [ + 'id' => 1, + 'devName' => 'war', + 'name' => 'Plans de bataille', + 'shortDescription' => 'Planifiez vos batailles, écrasez vos ennemis', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 2, + 'devName' => 'noob', + 'name' => 'Commerce', + 'shortDescription' => 'Proposition de route commerciale, offre sur le marché', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 3, + 'devName' => 'politic', + 'name' => 'Politique', + 'shortDescription' => 'Présentez votre programme, votre vision de l\'avenir', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 4, + 'devName' => 'flood', + 'name' => 'Biastro', + 'shortDescription' => 'Buvez de la bière et racontez n\'importe quoi', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 5, + 'devName' => 'op', + 'name' => 'Opération Spéciale', + 'shortDescription' => 'Pour les guerres éclaires ou pour une défense efficace', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 10, + 'devName' => 'government', + 'name' => 'Salle du Conseil', + 'shortDescription' => 'Ici se déroulent les débats du conseil restreint de la faction', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 20, + 'devName' => 'chiefes', + 'name' => 'Ambassade', + 'shortDescription' => 'Seuls les chefs de chaque faction ont accès à l\'Ambassade', + 'longDescription' => '', + 'image' => '', ], + [ + 'id' => 30, + 'devName' => 'campaign', + 'name' => 'campaign', + 'shortDescription' => '', + 'longDescription' => '', + 'image' => '', ], + ]; + + public static function getInfo($id, $info) + { + if ($id <= self::size()) { + if (in_array($info, ['id', 'devName', 'name', 'shortDescription', 'longDescription', 'image'])) { + return self::$forums[$id - 1][$info]; + } else { + return false; + } + } else { + return false; + } + } + + public static function getInfoForId($id, $info) + { + if (in_array($info, ['id', 'devName', 'name', 'shortDescription', 'longDescription', 'image'])) { + $tmp = array_keys(self::$idLink, $id); + + return self::$forums[$tmp[0]][$info]; + } else { + return false; + } + } + + public static function size() + { + return count(self::$forums); + } +} diff --git a/src/Modules/Demeter/Resource/LawResources.php b/src/Modules/Demeter/Resource/LawResources.php new file mode 100755 index 000000000..7707b929f --- /dev/null +++ b/src/Modules/Demeter/Resource/LawResources.php @@ -0,0 +1,190 @@ += 10 < 20 = pour le gouvernement d'une fac, >= 20 pour les chefs de toutes les factions +class LawResources +{ + public const APPLICATION_MODE_INSTANTANEOUS = 'instantaneous'; + public const APPLICATION_MODE_CUSTOM_DURATION = 'custom_duration'; + + private static array $laws = [ + [ + 'id' => 1, + 'bonusLaw' => false, + 'devName' => 'sector taxes', + 'name' => 'Ajustement de l\'imposition sectorielle', + 'department' => 3, + 'price' => 50000, + 'bonus' => 0, + 'shortDescription' => 'Les planètes dans les secteurs sous votre contrôle vous paient un impôt et c\'est à la faction de choisir ce dernier.', + 'longDescription' => 'Cette loi modifie le taux d\'imposition appliqué aux planètes d\'un secteur en votre possession. La redevance perçue provient autant des bases de votre faction que de celles de factions ennemies.

Un impôt faible dans vos secteurs faibles renforcera votre faction et un impôt fort dans les secteurs partagés permettra de prendre plus de crédits de joueurs ennemis.

L\'impôt peut varier de 2% à 15%.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 2, + 'bonusLaw' => false, + 'devName' => 'secteurName', + 'name' => 'Décret de revendication', + 'department' => 6, + 'price' => 250000, + 'bonus' => 0, + 'shortDescription' => 'Afin de montrer à tous la puissance de votre faction et d\'asseoir la conquête d\'un nouveau territoire, ce décret permet de modifier le nom d\'un secteur.', + 'longDescription' => 'Permet de modifier le nom d\'un secteur que vous possédez.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 3, + 'bonusLaw' => false, + 'devName' => 'commercial taxes export', + 'name' => 'Ajustement des taxes de vente', + 'department' => 3, + 'price' => 50000, + 'bonus' => 0, + 'shortDescription' => 'Cette loi permet de modifier les taxes sur les ventes dans le marché. Elle permet de régler finement la taxe perçue par la faction lors de la vente d\'un bien en fonction de sa destination.', + 'longDescription' => 'Modifie le taux de la taxe à la vente de produit pour une faction précise.

Un taux bas favorisera le commerce entre deux factions.

L\'impôt peut varier de 2% à 15% entre deux factions différentes et de 0% à 15% au sein de la même faction.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 4, + 'bonusLaw' => false, + 'devName' => 'commercial taxes import', + 'name' => 'Ajustement des taxes d\'achat', + 'department' => 3, + 'price' => 50000, + 'bonus' => 0, + 'shortDescription' => 'Cette loi permet de modifier les taxes sur les achats dans le marché. Elle permet de régler finement la taxe perçue par la faction lors de l\'achat d\'un bien en fonction de sa provenance.', + 'longDescription' => 'Modifie le taux de la taxe à l\'achat de produit d\'une faction précise.

Un taux bas favorisera le commerce entre deux factions.

L\'impôt peut varier de 2% à 15% entre deux factions différentes et de 0% à 15% au sein de la même faction.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 5, + 'bonusLaw' => true, + 'devName' => 'military subvention', + 'name' => 'Effort de guerre', + 'department' => 4, + 'price' => 1000, + 'bonus' => 20, + 'shortDescription' => 'Lorsque la faction est menacée, concentrez vos forces dans la production de vaisseaux dans l\'espoir de chasser l\'envahisseur. Les autres pans de votre économie en souffriront certainement.', + 'longDescription' => 'La production des vaisseaux est accélérée de 20% mais la production de ressource diminue de 10%.

Le prix de cette loi est indiqué pour une relève et varie en fonction du nombre de joueurs.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_CUSTOM_DURATION, + ], + [ + 'id' => 6, + 'bonusLaw' => true, + 'devName' => 'technology', + 'name' => 'Transfert technologique', + 'department' => 5, + 'price' => 1250, + 'bonus' => 10, + 'shortDescription' => 'Donnez des subventions à vos centre de recherche et mettez sur pied un programme d\'échange d\'informations entre les membres de votre faction afin d\'améliorer les méthodes de travail de vos scientifiques.', + 'longDescription' => 'Cette loi offre à tous les membres de la faction un bonus dans le développement de leurs technologies de 10% (cumulé avec les autres bonus).

Seules les recherches lancées lorsque le bonus est actif seront impactées.

Le prix de cette loi est indiqué pour une relève et varie en fonction du nombre de joueurs.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_CUSTOM_DURATION, + ], + [ + 'id' => 7, + 'bonusLaw' => false, + 'devName' => 'peace pact', + 'name' => 'Traité de paix', + 'department' => 6, + 'price' => 10000, + 'bonus' => 0, + 'shortDescription' => 'Un pacte de non-agression n\'est pas contraignant mais garantit que les membres des deux factions ne s\'attaquent pas entre eux. Les attaques violant ce pacte sont notifiées dans les registres de guerre de la faction.

Ce type de pacte est limité à deux par faction.', + 'longDescription' => '', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 8, + 'bonusLaw' => false, + 'devName' => 'war declaration', + 'name' => 'Déclaration de guerre', + 'department' => 6, + 'price' => 10000, + 'bonus' => 0, + 'shortDescription' => 'Lors de la déclaration de guerre, toutes les routes commerciales entre les deux factions belligérantes sont coupées. Durant toute la durée de la guerre, aucun lien commercial ne sera possible.', + 'longDescription' => 'Ce traité gèle les routes commerciales entre les deux factions concernées et empêche d\'en construire de nouvelles.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 9, + 'bonusLaw' => false, + 'devName' => 'total alliance', + 'name' => 'Alliance totale', + 'department' => 6, + 'price' => 10000, + 'bonus' => 0, + 'shortDescription' => 'Une alliance totale est un fort lien entre deux factions. Ce traité n\'est pas contraignant mais les attaques le violant sont notifiées dans les registres de guerre de la faction.

Un seul pacte de ce type peut être rédigé par faction.', + 'longDescription' => '', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 10, + 'bonusLaw' => false, + 'devName' => 'neutrality', + 'name' => 'Neutralité', + 'department' => 6, + 'price' => 10000, + 'bonus' => 0, + 'shortDescription' => 'Une faction n\'a ni affinités ni problèmes avec une autre faction neutre. De petits problèmes territoriaux peuvent exister sans remettre en cause ce statut.', + 'longDescription' => '', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + [ + 'id' => 11, + 'bonusLaw' => false, + 'devName' => 'punition', + 'name' => 'Amende', + 'department' => 5, + 'price' => 2000, + 'bonus' => 0, + 'shortDescription' => 'Permet d\'amender un joueur si celui-ci n\'obéit pas aux directives du gouvernement.', + 'longDescription' => 'Il n\'y a aucune limite quant à l\'utilisation de cette loi, vous pouvez en faire un usage abusif.', + 'image' => '', + 'isImplemented' => true, + 'application_mode' => self::APPLICATION_MODE_INSTANTANEOUS, + ], + ]; + + public static function getInfo(int $id, string $info): mixed + { + $index = $id - 1; + if (!array_key_exists($index, self::$laws)) { + throw new \InvalidArgumentException('Invalid Law id'); + } + return self::$laws[$index][$info] ?? throw new \InvalidArgumentException('Invalid law data key'); + } + + public static function size(): int + { + return count(self::$laws); + } +} diff --git a/src/Modules/Demeter/Resource/config/config.yml b/src/Modules/Demeter/Resource/config/config.yml new file mode 100644 index 000000000..c4182c192 --- /dev/null +++ b/src/Modules/Demeter/Resource/config/config.yml @@ -0,0 +1,23 @@ +--- +parameters: + politics_campaign_duration: 345600 + politics_election_duration: 172800 + politics_putsch_duration: 25200 + + politics_law_max_duration: 2400 # 100 days in standard mode, 16 and a half in fast mode + +services: + _defaults: + autowire: true + autoconfigure: true + + _instanceof: + App\Shared\Application\SchedulerInterface: + tags: ['app.scheduler'] + + App\Modules\Demeter\: + resource: '%kernel.project_dir%/src/Modules/Demeter/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' diff --git a/src/Modules/Gaia/Application/Handler/GetDistanceBetweenPlaces.php b/src/Modules/Gaia/Application/Handler/GetDistanceBetweenPlaces.php new file mode 100644 index 000000000..b33f4ea3f --- /dev/null +++ b/src/Modules/Gaia/Application/Handler/GetDistanceBetweenPlaces.php @@ -0,0 +1,27 @@ +getDistance( + $from->system->xPosition, + $to->system->xPosition, + $from->system->yPosition, + $to->system->yPosition, + ); + } + + private function getDistance(int $xa, int $xb, int $ya, int $yb): int + { + $distance = intval(floor(sqrt(($xa - $xb) ** 2 + ($ya - $yb) ** 2))); + + return max(1, $distance); + } +} diff --git a/src/Modules/Gaia/Application/Handler/IsAlliedFactionSector.php b/src/Modules/Gaia/Application/Handler/IsAlliedFactionSector.php new file mode 100644 index 000000000..224bc9340 --- /dev/null +++ b/src/Modules/Gaia/Application/Handler/IsAlliedFactionSector.php @@ -0,0 +1,17 @@ +faction?->id->equals($faction->id) + || Color::ALLY === $sector->faction?->relations[$faction->identifier]; + } +} diff --git a/src/Modules/Gaia/Domain/Repository/PlaceRepositoryInterface.php b/src/Modules/Gaia/Domain/Repository/PlaceRepositoryInterface.php new file mode 100644 index 000000000..0f28dd8fd --- /dev/null +++ b/src/Modules/Gaia/Domain/Repository/PlaceRepositoryInterface.php @@ -0,0 +1,46 @@ + + */ +interface PlaceRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Place|null; + + /** + * @param list $ids + * @return list + */ + public function getByIds(array $ids): array; + + /** + * @return list + */ + public function getSystemPlaces(System $system): array; + + /** + * @return Collection + */ + public function getAll(): Collection; + + /** + * @return list + */ + public function findPlacesIdsForANewBase(Sector $sector): array; + + /** + * @return list + */ + public function search(string $search): array; + + public function npcQuickfix(): void; +} diff --git a/src/Modules/Gaia/Domain/Repository/SectorRepositoryInterface.php b/src/Modules/Gaia/Domain/Repository/SectorRepositoryInterface.php new file mode 100644 index 000000000..0aa1444a0 --- /dev/null +++ b/src/Modules/Gaia/Domain/Repository/SectorRepositoryInterface.php @@ -0,0 +1,30 @@ + + */ +interface SectorRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Sector|null; + + public function getOneByIdentifier(int $identifier): Sector|null; + + /** + * @return list + */ + public function getFactionSectors(Color $faction): array; + + public function countFactionSectors(Color $faction): int; + + /** + * @return list + */ + public function getAll(): array; +} diff --git a/src/Modules/Gaia/Domain/Repository/SystemRepositoryInterface.php b/src/Modules/Gaia/Domain/Repository/SystemRepositoryInterface.php new file mode 100644 index 000000000..7b3dce4e2 --- /dev/null +++ b/src/Modules/Gaia/Domain/Repository/SystemRepositoryInterface.php @@ -0,0 +1,26 @@ + + */ +interface SystemRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): System|null; + + /** + * @return list + */ + public function getAll(): array; + + /** + * @return list + */ + public function getSectorSystems(Sector $sector): array; +} diff --git a/src/Modules/Gaia/Event/PlaceOwnerChangeEvent.php b/src/Modules/Gaia/Event/PlaceOwnerChangeEvent.php new file mode 100644 index 000000000..a02b7eb9d --- /dev/null +++ b/src/Modules/Gaia/Event/PlaceOwnerChangeEvent.php @@ -0,0 +1,26 @@ +place = $place; + } + + /** + * @return Place + */ + public function getPlace() + { + return $this->place; + } +} diff --git a/src/Modules/Gaia/EventListener/SectorListener.php b/src/Modules/Gaia/EventListener/SectorListener.php new file mode 100644 index 000000000..b813cfc18 --- /dev/null +++ b/src/Modules/Gaia/EventListener/SectorListener.php @@ -0,0 +1,25 @@ +getPlace()->system; + + $this->sectorManager->calculateOwnership($system->sector); + } +} diff --git a/src/Modules/Gaia/EventListener/SystemListener.php b/src/Modules/Gaia/EventListener/SystemListener.php new file mode 100644 index 000000000..2495f9632 --- /dev/null +++ b/src/Modules/Gaia/EventListener/SystemListener.php @@ -0,0 +1,50 @@ +getPlace()->system; + $bases = $this->orbitalBaseRepository->getSystemBases($system); + + foreach ($bases as $base) { + $factionIdentifier = $base->player?->faction?->identifier; + + if (null === $factionIdentifier) { + continue; + } + + $scores[$factionIdentifier] = ($scores[$factionIdentifier] ?? 0) + $this->scores[$base->typeOfBase]; + } + arsort($scores); + $newColor = array_key_first($scores); + $currentFactionIdentifier = $system->faction?->identifier; + + if (null === $currentFactionIdentifier || ( + $scores[$newColor] > 0 + && $currentFactionIdentifier !== $newColor + && $scores[$newColor] > $scores[$currentFactionIdentifier] + )) { + $system->faction = $this->colorRepository->getOneByIdentifier($newColor); + } elseif (0 === $scores[$newColor]) { + $system->faction = null; + } + $this->systemRepository->save($system); + } +} diff --git a/src/Modules/Gaia/GaiaModule.php b/src/Modules/Gaia/GaiaModule.php new file mode 100644 index 000000000..ff07eda34 --- /dev/null +++ b/src/Modules/Gaia/GaiaModule.php @@ -0,0 +1,13 @@ +, + * systemPosition: list|null, + * lineSystemPosition: list, + * circleSystemPosition: list, + * population: list, + * } + */ + public array $galaxy; + /** + * @var list, + * barycentre: array{0: int, 1: int}, + * display: array{0: int, 1: int}, + * name: string, + * danger: int, + * points: int, + * }> + */ + public array $sectors; + /** + * @var list + */ + public array $systems; + /** + * @var list + */ + public array $places; + + public int $scale = 20; + + public const DNG_CASUAL = 1; + public const DNG_EASY = 2; + public const DNG_MEDIUM = 3; + public const DNG_HARD = 4; + public const DNG_VERY_HARD = 5; + + public function getSectorCoord(int $i, int $scale = 1, int $xTranslate = 0): string + { + $sector = $this->sectors[$i - 1]['vertices']; + + foreach ($sector as $k => $v) { + $sector[$k] = (($v * $scale) + $xTranslate); + } + + return implode(', ', $sector); + } + + /** + * @return array{ + * x: float, + * y: float, + * } + */ + public function getSectorCentroid(Sector $sector, int $scale): array + { + // Convert string to array of integers + $vertices = array_map('intval', explode(',', $this->getSectorCoord($sector->identifier, $scale))); + + $num_points = count($vertices) / 2; + $cx = 0; + $cy = 0; + $area = 0; + + for ($i = 0; $i < $num_points; ++$i) { + $x1 = $vertices[2 * $i]; + $y1 = $vertices[2 * $i + 1]; + $x2 = $vertices[2 * (($i + 1) % $num_points)]; + $y2 = $vertices[2 * (($i + 1) % $num_points) + 1]; + + $factor = ($x1 * $y2 - $x2 * $y1); + $cx += ($x1 + $x2) * $factor; + $cy += ($y1 + $y2) * $factor; + $area += $factor; + } + + $area *= 0.5; + $cx /= (6 * $area); + $cy /= (6 * $area); + + return ['x' => $cx, 'y' => $cy]; + } +} diff --git a/src/Modules/Gaia/Galaxy/GalaxyConfigurationV1.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV1.php new file mode 100644 index 000000000..80e85adfe --- /dev/null +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV1.php @@ -0,0 +1,503 @@ + 250, + 'diag' => 177, + 'mask' => 15, + 'systemProportion' => [3, 8, 9, 25, 55], +// 'systemPosition' => [0, 1, 2, 4, 6, 8, 10, 15, 20, 30, 40, 60, 80, 40, 2, 20, 50, 90, 95, 100], + 'systemPosition' => [0, 0, 0, 0, 0, 5, 10, 60, 80, 60, 0, 0, 0, 0, 40, 50, 60, 70, 80, 80], + 'lineSystemPosition' => [ + [[177, 125], [213, 125], 6, 6], + [[157, 166], [180, 194], 6, 6], + [[113, 176], [105, 211], 6, 6], + [[78, 148], [46, 163], 6, 6], + [[78, 102], [46, 87], 6, 6], + [[113, 74], [105, 39], 6, 6], + [[157, 84], [180, 56], 6, 6], + ], + 'circleSystemPosition' => [], + 'population' => [700, 25000], + ]; + + public array $sectors = [ + [ + 'id' => 1, + 'beginColor' => 1, + 'vertices' => [120, 105, 138, 108, 145, 125, 138, 142, 120, 145, 107, 133, 107, 117], + 'barycentre' => [125, 125], + 'display' => [125, 125], + 'name' => 'Secteur 1', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 2, + 'beginColor' => 0, + 'vertices' => [138, 108, 120, 105, 115, 85, 124, 70, 148, 75, 150, 94], + 'barycentre' => [133, 90], + 'display' => [133, 90], + 'name' => 'Secteur 2', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 3, + 'beginColor' => 0, + 'vertices' => [145, 125, 138, 108, 150, 94, 168, 92, 178, 113, 165, 125], + 'barycentre' => [157, 110], + 'display' => [157, 110], + 'name' => 'Secteur 3', + 'danger' => self::DNG_HARD, + 'points' => 1, + ], + [ + 'id' => 4, + 'beginColor' => 0, + 'vertices' => [138, 142, 145, 125, 165, 125, 178, 137, 168, 158, 150, 156], + 'barycentre' => [157, 141], + 'display' => [157, 141], + 'name' => 'Secteur 4', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 5, + 'beginColor' => 0, + 'vertices' => [120, 145, 138, 142, 150, 156, 148, 175, 124, 180, 115, 165], + 'barycentre' => [133, 161], + 'display' => [133, 161], + 'name' => 'Secteur 5', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 6, + 'beginColor' => 1, + 'vertices' => [107, 133, 120, 145, 115, 165, 102, 175, 82, 158, 88, 141], + 'barycentre' => [102, 153], + 'display' => [102, 153], + 'name' => 'Secteur 6', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 7, + 'beginColor' => 0, + 'vertices' => [107, 117, 107, 133, 88, 141, 71, 137, 71, 113, 88, 109], + 'barycentre' => [89, 125], + 'display' => [89, 125], + 'name' => 'Secteur 7', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 8, + 'beginColor' => 0, + 'vertices' => [120, 105, 107, 117, 88, 109, 82, 92, 102, 75, 115, 85], + 'barycentre' => [102, 97], + 'display' => [102, 97], + 'name' => 'Secteur 8', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 9, + 'beginColor' => 0, + 'vertices' => [124, 70, 115, 85, 102, 75, 94, 48, 103, 33, 118, 42], + 'barycentre' => [109, 59], + 'display' => [109, 59], + 'name' => 'Secteur 9', + 'danger' => self::DNG_VERY_HARD, + 'points' => 2, + ], + [ + 'id' => 10, + 'beginColor' => 0, + 'vertices' => [168, 92, 150, 94, 148, 75, 167, 52, 184, 50, 186, 68], + 'barycentre' => [167, 72], + 'display' => [167, 72], + 'name' => 'Secteur 10', + 'danger' => self::DNG_HARD, + 'points' => 2, + ], + [ + 'id' => 11, + 'beginColor' => 0, + 'vertices' => [178, 137, 165, 125, 178, 113, 208, 113, 220, 125, 208, 137], + 'barycentre' => [193, 125], + 'display' => [193, 125], + 'name' => 'Secteur 11', + 'danger' => self::DNG_VERY_HARD, + 'points' => 2, + ], + [ + 'id' => 12, + 'beginColor' => 0, + 'vertices' => [148, 175, 150, 156, 168, 158, 186, 182, 184, 200, 167, 198], + 'barycentre' => [167, 178], + 'display' => [167, 178], + 'name' => 'Secteur 12', + 'danger' => self::DNG_HARD, + 'points' => 2, + ], + [ + 'id' => 13, + 'beginColor' => 0, + 'vertices' => [102, 175, 115, 165, 124, 180, 118, 208, 103, 217, 94, 202], + 'barycentre' => [109, 191], + 'display' => [109, 191], + 'name' => 'Secteur 13', + 'danger' => self::DNG_VERY_HARD, + 'points' => 2, + ], + [ + 'id' => 14, + 'beginColor' => 0, + 'vertices' => [71, 137, 88, 141, 82, 158, 56, 172, 40, 171, 44, 150], + 'barycentre' => [64, 155], + 'display' => [64, 155], + 'name' => 'Secteur 14', + 'danger' => self::DNG_VERY_HARD, + 'points' => 2, + ], + [ + 'id' => 15, + 'beginColor' => 0, + 'vertices' => [82, 92, 88, 109, 71, 113, 44, 100, 40, 79, 56, 78], + 'barycentre' => [64, 95], + 'display' => [64, 95], + 'name' => 'Secteur 15', + 'danger' => self::DNG_HARD, + 'points' => 2, + ], + [ + 'id' => 16, + 'beginColor' => 0, + 'vertices' => [63, 70, 56, 78, 40, 79, 0, 65, 0, 13], + 'barycentre' => [32, 61], + 'display' => [32, 61], + 'name' => 'Secteur 16', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 17, + 'beginColor' => 0, + 'vertices' => [84, 50, 63, 70, 0, 13, 0, 0, 55, 0], + 'barycentre' => [40, 27], + 'display' => [40, 27], + 'name' => 'Secteur 17', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 18, + 'beginColor' => 0, + 'vertices' => [103, 33, 94, 48, 84, 50, 55, 0, 96, 0], + 'barycentre' => [86, 26], + 'display' => [86, 26], + 'name' => 'Secteur 18', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 19, + 'beginColor' => 0, + 'vertices' => [130, 40, 118, 42, 103, 33, 96, 0, 130, 0], + 'barycentre' => [115, 23], + 'display' => [115, 23], + 'name' => 'Secteur 19', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 20, + 'beginColor' => 2, + 'vertices' => [156, 48, 130, 40, 130, 0, 175, 0], + 'barycentre' => [148, 22], + 'display' => [148, 22], + 'name' => 'Secteur 20', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 21, + 'beginColor' => 2, + 'vertices' => [184, 50, 167, 52, 156, 48, 175, 0, 223, 0], + 'barycentre' => [181, 30], + 'display' => [181, 30], + 'name' => 'Secteur 21', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 22, + 'beginColor' => 11, + 'vertices' => [194, 75, 186, 68, 184, 50, 223, 0, 250, 0, 250, 35], + 'barycentre' => [215, 38], + 'display' => [215, 38], + 'name' => 'Secteur 22', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 23, + 'beginColor' => 11, + 'vertices' => [206, 100, 194, 75, 250, 35, 250, 87], + 'barycentre' => [225, 74], + 'display' => [225, 74], + 'name' => 'Secteur 23', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 24, + 'beginColor' => 0, + 'vertices' => [220, 125, 208, 113, 206, 100, 250, 87, 250, 125], + 'barycentre' => [227, 110], + 'display' => [227, 110], + 'name' => 'Secteur 24', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 25, + 'beginColor' => 0, + 'vertices' => [206, 150, 208, 137, 220, 125, 250, 125, 250, 163], + 'barycentre' => [227, 140], + 'display' => [227, 140], + 'name' => 'Secteur 25', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 26, + 'beginColor' => 0, + 'vertices' => [194, 175, 206, 150, 250, 163, 250, 215], + 'barycentre' => [225, 176], + 'display' => [225, 176], + 'name' => 'Secteur 26', + 'danger' => self::DNG_HARD, + 'points' => 1, + ], + [ + 'id' => 27, + 'beginColor' => 0, + 'vertices' => [184, 200, 186, 182, 194, 175, 250, 215, 250, 250, 223, 250], + 'barycentre' => [215, 212], + 'display' => [215, 212], + 'name' => 'Secteur 27', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 28, + 'beginColor' => 6, + 'vertices' => [156, 202, 167, 198, 184, 200, 223, 250, 175, 250], + 'barycentre' => [181, 220], + 'display' => [181, 220], + 'name' => 'Secteur 28', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 29, + 'beginColor' => 6, + 'vertices' => [130, 210, 156, 202, 175, 250, 130, 250], + 'barycentre' => [148, 228], + 'display' => [148, 228], + 'name' => 'Secteur 29', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 30, + 'beginColor' => 0, + 'vertices' => [103, 217, 118, 208, 130, 210, 130, 250, 96, 250], + 'barycentre' => [115, 227], + 'display' => [115, 227], + 'name' => 'Secteur 30', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 31, + 'beginColor' => 0, + 'vertices' => [84, 200, 94, 202, 103, 217, 96, 250, 55, 250], + 'barycentre' => [86, 224], + 'display' => [86, 224], + 'name' => 'Secteur 31', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 32, + 'beginColor' => 0, + 'vertices' => [63, 180, 84, 200, 55, 250, 0, 250, 0, 237], + 'barycentre' => [40, 223], + 'display' => [40, 223], + 'name' => 'Secteur 32', + 'danger' => self::DNG_HARD, + 'points' => 2, + ], + [ + 'id' => 33, + 'beginColor' => 0, + 'vertices' => [40, 171, 56, 172, 63, 180, 0, 237, 0, 185], + 'barycentre' => [32, 189], + 'display' => [32, 189], + 'name' => 'Secteur 33', + 'danger' => self::DNG_MEDIUM, + 'points' => 1, + ], + [ + 'id' => 34, + 'beginColor' => 0, + 'vertices' => [38, 140, 44, 150, 40, 171, 0, 185, 0, 145], + 'barycentre' => [24, 158], + 'display' => [24, 158], + 'name' => 'Secteur 34', + 'danger' => self::DNG_EASY, + 'points' => 1, + ], + [ + 'id' => 35, + 'beginColor' => 7, + 'vertices' => [38, 110, 38, 140, 0, 145, 0, 105], + 'barycentre' => [19, 125], + 'display' => [19, 125], + 'name' => 'Secteur 35', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + [ + 'id' => 36, + 'beginColor' => 7, + 'vertices' => [40, 79, 44, 100, 38, 110, 0, 105, 0, 65], + 'barycentre' => [24, 92], + 'display' => [24, 92], + 'name' => 'Secteur 36', + 'danger' => self::DNG_CASUAL, + 'points' => 1, + ], + ]; + + public function fillSectorsData() + { + $k = 1; + + echo '
';
+		foreach ($this->sectors as $key => $sector) {
+			// calculate barycentre
+			$strArray = $this->getSectorCoord($key + 1);
+			$array = explode(', ', $strArray);
+
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
+			$lenght = count($array) / 2;
+
+			for ($j = 0; $j < count($array); $j += 2) {
+				$vx += $array[$j];
+				$vy += $array[$j + 1];
+			}
+
+			$gx = round($vx / $lenght);
+			$gy = round($vy / $lenght);
+
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => 0,'."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => self::DNG_CASUAL,'."\r\n";
+			echo '	\'points\' => 1'."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
+		}
+		echo '
'; + } + + public array $systems = [ + [ + 'id' => 1, + 'name' => 'ruine', + 'placesPropotion' => [0, 0, 85, 10, 0, 5], + 'nbrPlaces' => [2, 6], + ], [ + 'id' => 2, + 'name' => 'nébuleuse', + 'placesPropotion' => [0, 0, 5, 90, 0, 5], + 'nbrPlaces' => [2, 8], + ], [ + 'id' => 3, + 'name' => 'géante bleue', + 'placesPropotion' => [60, 20, 2, 0, 15, 3], + 'nbrPlaces' => [8, 12], + ], [ + 'id' => 4, + 'name' => 'naine jaune', + 'placesPropotion' => [65, 15, 3, 0, 15, 2], + 'nbrPlaces' => [6, 10], + ], [ + 'id' => 5, + 'name' => 'naine rouge', + 'placesPropotion' => [75, 10, 3, 0, 10, 2], + 'nbrPlaces' => [3, 6], + ], + ]; + + public array $places = [ + [ + 'id' => 1, + 'name' => 'planète tellurique', + 'resources' => 0, + 'credits' => 0, + 'history' => 0, + ], [ + 'id' => 2, + 'name' => 'planète gazeuse', + 'resources' => 38, + 'credits' => 52, + 'history' => 10, + ], [ + 'id' => 3, + 'name' => 'ruine', + 'resources' => 5, + 'credits' => 0, + 'history' => 95, + ], [ + 'id' => 4, + 'name' => 'poches de gaz', + 'resources' => 0, + 'credits' => 96, + 'history' => 4, + ], [ + 'id' => 5, + 'name' => 'ceinture d\'astéroides', + 'resources' => 98, + 'credits' => 0, + 'history' => 2, + ], [ + 'id' => 6, + 'name' => 'lieu vide', + 'resources' => 0, + 'credits' => 0, + 'history' => 0, + ], + ]; + + // display params + public int $scale = 20; +} diff --git a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php similarity index 85% rename from system/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php rename to src/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php index f5acc5804..2319bf49d 100644 --- a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV2.php @@ -1,21 +1,24 @@ 250, 'diag' => 177, 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], - 'systemPosition' => NULL, + 'systemProportion' => [3, 8, 9, 25, 55], + 'systemPosition' => null, 'lineSystemPosition' => [ - # [[pA], [pB], EPAISSEUR, INTENSITE], + // [[pA], [pB], EPAISSEUR, INTENSITE], [[20, 170], [40, 118], 12, 8], [[80, 230], [137, 210], 12, 8], ], 'circleSystemPosition' => [ - # [[X1], RAYON, EPAISSEUR, INTENSITE], + // [[X1], RAYON, EPAISSEUR, INTENSITE], [[-50, 300], 70, 20, 9], [[-50, 300], 90, 20, 9], [[-50, 300], 110, 20, 9], @@ -26,7 +29,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'population' => [700, 25000], ]; - public $sectors = [ + public array $sectors = [ [ 'id' => 1, 'beginColor' => 1, @@ -35,7 +38,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [23, 232], 'name' => 'Secteur 1', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 2, 'beginColor' => 1, @@ -44,7 +47,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [53, 227], 'name' => 'Secteur 2', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 3, 'beginColor' => 1, @@ -53,7 +56,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [29, 195], 'name' => 'Secteur 3', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 4, 'beginColor' => 0, @@ -62,7 +65,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [20, 164], 'name' => 'Secteur 4', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 5, 'beginColor' => 0, @@ -71,7 +74,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [25, 147], 'name' => 'Secteur 5', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 6, 'beginColor' => 0, @@ -80,7 +83,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [33, 130], 'name' => 'Secteur 6', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 7, 'beginColor' => 0, @@ -89,7 +92,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [35, 104], 'name' => 'Secteur 7', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 8, 'beginColor' => 0, @@ -98,7 +101,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [36, 78], 'name' => 'Secteur 8', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 9, 'beginColor' => 0, @@ -107,7 +110,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [18, 66], 'name' => 'Secteur 9', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 10, 'beginColor' => 8, @@ -116,7 +119,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [11, 11], 'name' => 'Secteur 10', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 11, 'beginColor' => 8, @@ -125,7 +128,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [30, 33], 'name' => 'Secteur 11', 'danger' => self::DNG_CASUAL, - 'points' => 2 + 'points' => 2, ], [ 'id' => 12, 'beginColor' => 0, @@ -134,7 +137,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [67, 16], 'name' => 'Secteur 12', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 13, 'beginColor' => 0, @@ -143,7 +146,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [51, 50], 'name' => 'Secteur 13', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 14, 'beginColor' => 0, @@ -152,7 +155,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [63, 77], 'name' => 'Secteur 14', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 15, 'beginColor' => 0, @@ -161,7 +164,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [83, 40], 'name' => 'Secteur 15', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 16, 'beginColor' => 0, @@ -170,7 +173,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [100, 20], 'name' => 'Secteur 16', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 17, 'beginColor' => 0, @@ -179,7 +182,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [135, 30], 'name' => 'Secteur 17', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 18, 'beginColor' => 0, @@ -188,7 +191,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [100, 60], 'name' => 'Secteur 18', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 19, 'beginColor' => 0, @@ -197,7 +200,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [74, 110], 'name' => 'Secteur 19', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 + 'points' => 5, ], [ 'id' => 20, 'beginColor' => 0, @@ -206,7 +209,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [78, 130], 'name' => 'Secteur 20', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 21, 'beginColor' => 0, @@ -215,7 +218,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [95, 93], 'name' => 'Secteur 21', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 22, 'beginColor' => 0, @@ -224,7 +227,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [115, 98], 'name' => 'Secteur 22', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 23, 'beginColor' => 0, @@ -233,7 +236,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [137, 103], 'name' => 'Secteur 23', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 24, 'beginColor' => 4, @@ -242,7 +245,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [150, 66], 'name' => 'Secteur 24', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 25, 'beginColor' => 4, @@ -251,7 +254,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [177, 70], 'name' => 'Secteur 25', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 26, 'beginColor' => 4, @@ -260,7 +263,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [170, 108], 'name' => 'Secteur 26', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 27, 'beginColor' => 0, @@ -269,7 +272,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [105, 133], 'name' => 'Secteur 27', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 28, 'beginColor' => 0, @@ -278,7 +281,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [117, 154], 'name' => 'Secteur 28', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 29, 'beginColor' => 0, @@ -287,7 +290,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [117, 178], 'name' => 'Secteur 29', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 30, 'beginColor' => 0, @@ -296,7 +299,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [130, 170], 'name' => 'Secteur 30', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 + 'points' => 5, ], [ 'id' => 31, 'beginColor' => 0, @@ -305,7 +308,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [162, 148], 'name' => 'Secteur 31', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 32, 'beginColor' => 0, @@ -314,7 +317,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [190, 124], 'name' => 'Secteur 32', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 33, 'beginColor' => 0, @@ -323,7 +326,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [204, 100], 'name' => 'Secteur 33', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 34, 'beginColor' => 0, @@ -332,7 +335,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [226, 118], 'name' => 'Secteur 34', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 35, 'beginColor' => 0, @@ -341,7 +344,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [200, 144], 'name' => 'Secteur 35', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 36, 'beginColor' => 0, @@ -350,7 +353,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [225, 163], 'name' => 'Secteur 36', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 37, 'beginColor' => 0, @@ -359,7 +362,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [199, 166], 'name' => 'Secteur 37', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 38, 'beginColor' => 0, @@ -368,7 +371,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [185, 187], 'name' => 'Secteur 38', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 39, 'beginColor' => 0, @@ -377,7 +380,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [150, 178], 'name' => 'Secteur 39', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 40, 'beginColor' => 9, @@ -386,7 +389,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [230, 230], 'name' => 'Secteur 40', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 41, 'beginColor' => 9, @@ -395,7 +398,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [210, 205], 'name' => 'Secteur 41', 'danger' => self::DNG_CASUAL, - 'points' => 2 + 'points' => 2, ], [ 'id' => 42, 'beginColor' => 0, @@ -404,7 +407,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [185, 235], 'name' => 'Secteur 42', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 43, 'beginColor' => 0, @@ -413,7 +416,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [178, 208], 'name' => 'Secteur 43', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 44, 'beginColor' => 0, @@ -422,7 +425,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [157, 227], 'name' => 'Secteur 44', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 45, 'beginColor' => 0, @@ -431,7 +434,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [140, 210], 'name' => 'Secteur 45', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 46, 'beginColor' => 0, @@ -440,7 +443,7 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [120, 206], 'name' => 'Secteur 46', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 47, 'beginColor' => 0, @@ -449,35 +452,27 @@ class GalaxyConfigurationV2 extends GalaxyConfiguration { 'display' => [92, 228], 'name' => 'Secteur 47', 'danger' => self::DNG_EASY, - 'points' => 1 - ] + 'points' => 1, + ], ]; - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { + public function fillSectorsData() + { $k = 1; echo '
';
 		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
+			// calculate barycentre
 			$strArray = $this->getSectorCoord($key + 1);
 			$array = explode(', ', $strArray);
 
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
 			$lenght = count($array) / 2;
 
-			for ($j = 0; $j < count($array); $j = $j + 2) {
+			for ($j = 0; $j < count($array); $j += 2) {
 				$vx += $array[$j];
 				$vy += $array[$j + 1];
 			}
@@ -485,52 +480,52 @@ public function fillSectorsData() {
 			$gx = round($vx / $lenght);
 			$gy = round($vy / $lenght);
 
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => 0,' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => self::DNG_CASUAL,' . "\r\n";
-			echo '	\'points\' => 1' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => 0,'."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => self::DNG_CASUAL,'."\r\n";
+			echo '	\'points\' => 1'."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
 		}
 		echo '
'; } - public $systems = [ + public array $systems = [ [ 'id' => 1, 'name' => 'ruine', 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] + 'nbrPlaces' => [2, 6], ], [ 'id' => 2, 'name' => 'nébuleuse', 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] + 'nbrPlaces' => [2, 8], ], [ 'id' => 3, 'name' => 'géante bleue', 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] + 'nbrPlaces' => [8, 12], ], [ 'id' => 4, 'name' => 'naine jaune', 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] + 'nbrPlaces' => [6, 10], ], [ 'id' => 5, 'name' => 'naine rouge', 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] + 'nbrPlaces' => [3, 6], + ], ]; - public $places = [ + public array $places = [ [ 'id' => 1, 'name' => 'planète tellurique', @@ -567,9 +562,9 @@ public function fillSectorsData() { 'resources' => 0, 'credits' => 0, 'history' => 0, - ] + ], ]; - # display params - public $scale = 20; -} \ No newline at end of file + // display params + public int $scale = 20; +} diff --git a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php similarity index 82% rename from system/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php rename to src/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php index 4d3bc944e..5f40cd3bc 100644 --- a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV3.php @@ -1,25 +1,28 @@ 250, 'diag' => 177, 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], - 'systemPosition' => NULL, + 'systemProportion' => [3, 8, 9, 25, 55], + 'systemPosition' => null, 'lineSystemPosition' => [ - # [[pA], [pB], EPAISSEUR, INTENSITE], + // [[pA], [pB], EPAISSEUR, INTENSITE], ], 'circleSystemPosition' => [ - # [[X1], RAYON, EPAISSEUR, INTENSITE], + // [[X1], RAYON, EPAISSEUR, INTENSITE], [[-200, 450], 460, 95, 4], ], 'population' => [700, 25000], ]; - public $sectors = [ + public array $sectors = [ /*[ 'id' => 1, 'beginColor' => 1, @@ -38,8 +41,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [16, 29], 'name' => 'Secteur 1', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 2, 'beginColor' => 8, @@ -48,8 +51,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [41, 21], 'name' => 'Secteur 2', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 3, 'beginColor' => 0, @@ -58,8 +61,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [81, 18], 'name' => 'Secteur 3', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 4, 'beginColor' => 0, @@ -68,8 +71,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [121, 19], 'name' => 'Secteur 4', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 5, 'beginColor' => 0, @@ -78,8 +81,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [146, 40], 'name' => 'Secteur 5', 'danger' => self::DNG_HARD, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 6, 'beginColor' => 0, @@ -88,8 +91,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [163, 55], 'name' => 'Secteur 6', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 7, 'beginColor' => 0, @@ -98,8 +101,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [184, 71], 'name' => 'Secteur 7', 'danger' => self::DNG_HARD, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 8, 'beginColor' => 0, @@ -108,8 +111,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [206, 91], 'name' => 'Secteur 8', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 9, 'beginColor' => 0, @@ -118,8 +121,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [233, 126], 'name' => 'Secteur 9', 'danger' => self::DNG_HARD, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 10, 'beginColor' => 0, @@ -128,8 +131,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [220, 168], 'name' => 'Secteur 10', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 11, 'beginColor' => 0, @@ -138,8 +141,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [222, 203], 'name' => 'Secteur 11', 'danger' => self::DNG_HARD, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 12, 'beginColor' => 0, @@ -148,8 +151,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [229, 234], 'name' => 'Secteur 12', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 13, 'beginColor' => 0, @@ -158,8 +161,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [192, 224], 'name' => 'Secteur 13', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 14, 'beginColor' => 12, @@ -168,8 +171,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [172, 219], 'name' => 'Secteur 14', 'danger' => self::DNG_CASUAL, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 15, 'beginColor' => 12, @@ -178,8 +181,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [151, 228], 'name' => 'Secteur 15', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 16, 'beginColor' => 0, @@ -188,8 +191,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [108, 229], 'name' => 'Secteur 16', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 17, 'beginColor' => 0, @@ -198,8 +201,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [85, 201], 'name' => 'Secteur 17', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 18, 'beginColor' => 0, @@ -208,8 +211,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [63, 179], 'name' => 'Secteur 18', 'danger' => self::DNG_HARD, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 19, 'beginColor' => 0, @@ -218,8 +221,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [46, 151], 'name' => 'Secteur 19', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 20, 'beginColor' => 0, @@ -228,8 +231,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [27, 135], 'name' => 'Secteur 20', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 21, 'beginColor' => 0, @@ -238,8 +241,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [15, 118], 'name' => 'Secteur 21', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 22, 'beginColor' => 8, @@ -248,8 +251,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [10, 84], 'name' => 'Secteur 22', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 23, 'beginColor' => 0, @@ -258,8 +261,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [36, 81], 'name' => 'Secteur 23', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 24, 'beginColor' => 0, @@ -268,8 +271,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [45, 56], 'name' => 'Secteur 24', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 25, 'beginColor' => 0, @@ -278,8 +281,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [74, 46], 'name' => 'Secteur 25', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 26, 'beginColor' => 0, @@ -288,8 +291,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [108, 55], 'name' => 'Secteur 26', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 27, 'beginColor' => 0, @@ -298,8 +301,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [111, 78], 'name' => 'Secteur 27', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 28, 'beginColor' => 4, @@ -308,8 +311,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [117, 104], 'name' => 'Secteur 28', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 29, 'beginColor' => 4, @@ -318,8 +321,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [152, 93], 'name' => 'Secteur 29', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 30, 'beginColor' => 4, @@ -328,8 +331,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [152, 128], 'name' => 'Secteur 30', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 31, 'beginColor' => 0, @@ -338,8 +341,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [195, 134], 'name' => 'Secteur 31', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 32, 'beginColor' => 0, @@ -348,8 +351,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [177, 162], 'name' => 'Secteur 32', 'danger' => self::DNG_EASY, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 33, 'beginColor' => 0, @@ -358,8 +361,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [168, 188], 'name' => 'Secteur 33', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 34, 'beginColor' => 0, @@ -368,8 +371,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [139, 195], 'name' => 'Secteur 34', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 35, 'beginColor' => 0, @@ -378,8 +381,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [116, 196], 'name' => 'Secteur 35', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 36, 'beginColor' => 0, @@ -388,8 +391,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [82, 164], 'name' => 'Secteur 36', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 37, 'beginColor' => 11, @@ -398,8 +401,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [90, 136], 'name' => 'Secteur 37', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 38, 'beginColor' => 11, @@ -408,8 +411,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [70, 120], 'name' => 'Secteur 38', 'danger' => self::DNG_CASUAL, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 39, 'beginColor' => 0, @@ -418,8 +421,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [58, 96], 'name' => 'Secteur 39', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 40, 'beginColor' => 0, @@ -428,8 +431,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [75, 66], 'name' => 'Secteur 40', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 41, 'beginColor' => 0, @@ -438,8 +441,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [84, 96], 'name' => 'Secteur 41', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 42, 'beginColor' => 0, @@ -448,8 +451,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [105, 124], 'name' => 'Secteur 42', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 43, 'beginColor' => 0, @@ -458,8 +461,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [120, 145], 'name' => 'Secteur 43', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 44, 'beginColor' => 10, @@ -468,8 +471,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [141, 150], 'name' => 'Secteur 44', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 45, 'beginColor' => 10, @@ -478,8 +481,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [154, 171], 'name' => 'Secteur 45', 'danger' => self::DNG_CASUAL, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 46, 'beginColor' => 0, @@ -488,8 +491,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [131, 176], 'name' => 'Secteur 46', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 47, 'beginColor' => 0, @@ -498,8 +501,8 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [114, 164], 'name' => 'Secteur 47', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 48, 'beginColor' => 0, @@ -508,35 +511,27 @@ class GalaxyConfigurationV3 extends GalaxyConfiguration { 'display' => [102, 151], 'name' => 'Secteur 48', 'danger' => self::DNG_HARD, - 'points' => 2 - ] + 'points' => 2, + ], ]; - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { + public function fillSectorsData() + { $k = 1; echo '
';
 		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
-		$strArray = $this->getSectorCoord($key + 1);
+			// calculate barycentre
+			$strArray = $this->getSectorCoord($key + 1);
 			$array = explode(', ', $strArray);
 
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
 			$lenght = count($array) / 2;
 
-			for ($j = 0; $j < count($array); $j = $j + 2) {
+			for ($j = 0; $j < count($array); $j += 2) {
 				$vx += $array[$j];
 				$vy += $array[$j + 1];
 			}
@@ -544,52 +539,52 @@ public function fillSectorsData() {
 			$gx = round($vx / $lenght);
 			$gy = round($vy / $lenght);
 
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => 0,' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => self::DNG_CASUAL,' . "\r\n";
-			echo '	\'points\' => 1' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => 0,'."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => self::DNG_CASUAL,'."\r\n";
+			echo '	\'points\' => 1'."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
 		}
 		echo '
'; } - public $systems = [ + public array $systems = [ [ 'id' => 1, 'name' => 'ruine', 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] + 'nbrPlaces' => [2, 6], ], [ 'id' => 2, 'name' => 'nébuleuse', 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] + 'nbrPlaces' => [2, 8], ], [ 'id' => 3, 'name' => 'géante bleue', 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] + 'nbrPlaces' => [8, 12], ], [ 'id' => 4, 'name' => 'naine jaune', 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] + 'nbrPlaces' => [6, 10], ], [ 'id' => 5, 'name' => 'naine rouge', 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] + 'nbrPlaces' => [3, 6], + ], ]; - public $places = [ + public array $places = [ [ 'id' => 1, 'name' => 'planète tellurique', @@ -626,9 +621,9 @@ public function fillSectorsData() { 'resources' => 0, 'credits' => 0, 'history' => 0, - ] + ], ]; - # display params - public $scale = 20; + // display params + public int $scale = 20; } diff --git a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php similarity index 85% rename from system/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php rename to src/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php index 2ae2cbdb5..9c4191f8f 100644 --- a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV4.php @@ -1,21 +1,24 @@ 250, 'diag' => 177, 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], - 'systemPosition' => NULL, + 'systemProportion' => [3, 8, 9, 25, 55], + 'systemPosition' => null, 'lineSystemPosition' => [ - # [[pA], [pB], EPAISSEUR, INTENSITE], + // [[pA], [pB], EPAISSEUR, INTENSITE], [[20, 170], [40, 118], 12, 8], [[80, 230], [137, 210], 12, 8], ], 'circleSystemPosition' => [ - # [[X1], RAYON, EPAISSEUR, INTENSITE], + // [[X1], RAYON, EPAISSEUR, INTENSITE], [[-50, 300], 70, 20, 9], [[-50, 300], 90, 20, 9], [[-50, 300], 110, 20, 9], @@ -26,7 +29,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'population' => [700, 25000], ]; - public $sectors = [ + public array $sectors = [ [ 'id' => 1, 'beginColor' => 1, @@ -35,7 +38,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [23, 232], 'name' => 'Secteur 1', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 2, 'beginColor' => 0, @@ -44,7 +47,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [53, 227], 'name' => 'Secteur 2', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 3, 'beginColor' => 0, @@ -53,7 +56,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [29, 195], 'name' => 'Secteur 3', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 4, 'beginColor' => 0, @@ -62,7 +65,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [20, 164], 'name' => 'Secteur 4', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 5, 'beginColor' => 0, @@ -71,7 +74,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [25, 147], 'name' => 'Secteur 5', 'danger' => self::DNG_VERY_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 6, 'beginColor' => 0, @@ -80,7 +83,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [33, 130], 'name' => 'Secteur 6', 'danger' => self::DNG_HARD, - 'points' => 1 + 'points' => 1, ], [ 'id' => 7, 'beginColor' => 0, @@ -89,7 +92,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [35, 104], 'name' => 'Secteur 7', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 8, 'beginColor' => 0, @@ -98,7 +101,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [36, 78], 'name' => 'Secteur 8', 'danger' => self::DNG_VERY_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 9, 'beginColor' => 0, @@ -107,7 +110,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [18, 66], 'name' => 'Secteur 9', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 10, 'beginColor' => 1, @@ -116,7 +119,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [11, 11], 'name' => 'Secteur 10', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 11, 'beginColor' => 0, @@ -125,7 +128,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [30, 33], 'name' => 'Secteur 11', 'danger' => self::DNG_MEDIUM, - 'points' => 2 + 'points' => 2, ], [ 'id' => 12, 'beginColor' => 0, @@ -134,7 +137,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [67, 16], 'name' => 'Secteur 12', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 13, 'beginColor' => 0, @@ -143,7 +146,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [51, 50], 'name' => 'Secteur 13', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 14, 'beginColor' => 8, @@ -152,7 +155,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [63, 77], 'name' => 'Secteur 14', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 15, 'beginColor' => 0, @@ -161,7 +164,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [83, 40], 'name' => 'Secteur 15', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 16, 'beginColor' => 0, @@ -170,7 +173,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [100, 20], 'name' => 'Secteur 16', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 17, 'beginColor' => 0, @@ -179,7 +182,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [135, 30], 'name' => 'Secteur 17', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 18, 'beginColor' => 8, @@ -188,7 +191,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [100, 60], 'name' => 'Secteur 18', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 19, 'beginColor' => 0, @@ -197,7 +200,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [74, 110], 'name' => 'Secteur 19', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 + 'points' => 5, ], [ 'id' => 20, 'beginColor' => 0, @@ -206,7 +209,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [78, 130], 'name' => 'Secteur 20', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 21, 'beginColor' => 8, @@ -215,7 +218,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [95, 93], 'name' => 'Secteur 21', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 22, 'beginColor' => 0, @@ -224,7 +227,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [115, 98], 'name' => 'Secteur 22', 'danger' => self::DNG_VERY_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 23, 'beginColor' => 0, @@ -233,7 +236,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [137, 103], 'name' => 'Secteur 23', 'danger' => self::DNG_HARD, - 'points' => 1 + 'points' => 1, ], [ 'id' => 24, 'beginColor' => 0, @@ -242,7 +245,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [150, 66], 'name' => 'Secteur 24', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 25, 'beginColor' => 0, @@ -251,7 +254,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [177, 70], 'name' => 'Secteur 25', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 26, 'beginColor' => 0, @@ -260,7 +263,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [170, 108], 'name' => 'Secteur 26', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 27, 'beginColor' => 0, @@ -269,7 +272,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [105, 133], 'name' => 'Secteur 27', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 28, 'beginColor' => 0, @@ -278,7 +281,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [117, 154], 'name' => 'Secteur 28', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 29, 'beginColor' => 0, @@ -287,7 +290,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [117, 178], 'name' => 'Secteur 29', 'danger' => self::DNG_HARD, - 'points' => 1 + 'points' => 1, ], [ 'id' => 30, 'beginColor' => 0, @@ -296,7 +299,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [130, 170], 'name' => 'Secteur 30', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 + 'points' => 5, ], [ 'id' => 31, 'beginColor' => 11, @@ -305,7 +308,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [162, 148], 'name' => 'Secteur 31', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 32, 'beginColor' => 0, @@ -314,7 +317,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [190, 124], 'name' => 'Secteur 32', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 33, 'beginColor' => 0, @@ -323,7 +326,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [204, 100], 'name' => 'Secteur 33', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 34, 'beginColor' => 0, @@ -332,7 +335,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [226, 118], 'name' => 'Secteur 34', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 35, 'beginColor' => 11, @@ -341,7 +344,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [200, 144], 'name' => 'Secteur 35', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 36, 'beginColor' => 0, @@ -350,7 +353,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [225, 163], 'name' => 'Secteur 36', 'danger' => self::DNG_HARD, - 'points' => 1 + 'points' => 1, ], [ 'id' => 37, 'beginColor' => 0, @@ -359,7 +362,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [199, 166], 'name' => 'Secteur 37', 'danger' => self::DNG_VERY_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 38, 'beginColor' => 0, @@ -368,7 +371,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [185, 187], 'name' => 'Secteur 38', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 39, 'beginColor' => 11, @@ -377,7 +380,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [150, 178], 'name' => 'Secteur 39', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 40, 'beginColor' => 1, @@ -386,7 +389,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [230, 230], 'name' => 'Secteur 40', 'danger' => self::DNG_CASUAL, - 'points' => 1 + 'points' => 1, ], [ 'id' => 41, 'beginColor' => 0, @@ -395,7 +398,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [210, 205], 'name' => 'Secteur 41', 'danger' => self::DNG_EASY, - 'points' => 2 + 'points' => 2, ], [ 'id' => 42, 'beginColor' => 0, @@ -404,7 +407,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [185, 235], 'name' => 'Secteur 42', 'danger' => self::DNG_EASY, - 'points' => 1 + 'points' => 1, ], [ 'id' => 43, 'beginColor' => 0, @@ -413,7 +416,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [178, 208], 'name' => 'Secteur 43', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 44, 'beginColor' => 0, @@ -422,7 +425,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [157, 227], 'name' => 'Secteur 44', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 45, 'beginColor' => 0, @@ -431,7 +434,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [140, 210], 'name' => 'Secteur 45', 'danger' => self::DNG_MEDIUM, - 'points' => 1 + 'points' => 1, ], [ 'id' => 46, 'beginColor' => 0, @@ -440,7 +443,7 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [120, 206], 'name' => 'Secteur 46', 'danger' => self::DNG_HARD, - 'points' => 2 + 'points' => 2, ], [ 'id' => 47, 'beginColor' => 0, @@ -449,35 +452,27 @@ class GalaxyConfigurationV4 extends GalaxyConfiguration { 'display' => [92, 228], 'name' => 'Secteur 47', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ] + 'points' => 1, + ], ]; - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { + public function fillSectorsData() + { $k = 1; echo '
';
 		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
+			// calculate barycentre
 			$strArray = self::getSectorCoord($key + 1);
 			$array = explode(', ', $strArray);
 
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
 			$lenght = count($array) / 2;
 
-			for ($j = 0; $j < count($array); $j = $j + 2) {
+			for ($j = 0; $j < count($array); $j += 2) {
 				$vx += $array[$j];
 				$vy += $array[$j + 1];
 			}
@@ -485,52 +480,52 @@ public function fillSectorsData() {
 			$gx = round($vx / $lenght);
 			$gy = round($vy / $lenght);
 
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => 0,' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => self::DNG_CASUAL,' . "\r\n";
-			echo '	\'points\' => 1' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => 0,'."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => self::DNG_CASUAL,'."\r\n";
+			echo '	\'points\' => 1'."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
 		}
 		echo '
'; } - public $systems = [ + public array $systems = [ [ 'id' => 1, 'name' => 'ruine', 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] + 'nbrPlaces' => [2, 6], ], [ 'id' => 2, 'name' => 'nébuleuse', 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] + 'nbrPlaces' => [2, 8], ], [ 'id' => 3, 'name' => 'géante bleue', 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] + 'nbrPlaces' => [8, 12], ], [ 'id' => 4, 'name' => 'naine jaune', 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] + 'nbrPlaces' => [6, 10], ], [ 'id' => 5, 'name' => 'naine rouge', 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] + 'nbrPlaces' => [3, 6], + ], ]; - public $places = [ + public array $places = [ [ 'id' => 1, 'name' => 'planète tellurique', @@ -567,9 +562,9 @@ public function fillSectorsData() { 'resources' => 0, 'credits' => 0, 'history' => 0, - ] + ], ]; - # display params - public $scale = 20; + // display params + public int $scale = 20; } diff --git a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php similarity index 82% rename from system/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php rename to src/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php index 10c9141e6..41b8ae9b2 100644 --- a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV5.php @@ -1,16 +1,19 @@ 250, 'diag' => 177, 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], - 'systemPosition' => NULL, + 'systemProportion' => [3, 8, 9, 25, 55], + 'systemPosition' => null, 'lineSystemPosition' => [ - # [[pA], [pB], EPAISSEUR, INTENSITE], + // [[pA], [pB], EPAISSEUR, INTENSITE], [[10, 130], [60, 130], 10, 8], [[30, 30], [80, 80], 7, 8], [[120, 10], [120, 60], 10, 8], @@ -18,17 +21,17 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { [[240, 120], [190, 120], 10, 8], [[220, 220], [170, 170], 7, 8], [[130, 240], [130, 190], 10, 8], - [[30, 220], [80, 170], 7, 8] + [[30, 220], [80, 170], 7, 8], ], 'circleSystemPosition' => [ - # [[X1], RAYON, EPAISSEUR, INTENSITE], - [[125,125], 130, 50, 9], - [[125,125], 40, 40, 9] + // [[X1], RAYON, EPAISSEUR, INTENSITE], + [[125, 125], 130, 50, 9], + [[125, 125], 40, 40, 9], ], 'population' => [700, 25000], ]; - public $sectors = [ + public array $sectors = [ [ 'id' => 1, 'beginColor' => 0, @@ -37,8 +40,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [115, 99], 'name' => 'Secteur 1', 'danger' => self::DNG_VERY_HARD, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 2, 'beginColor' => 0, @@ -47,8 +50,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [146, 113], 'name' => 'Secteur 2', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 3, 'beginColor' => 0, @@ -57,8 +60,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [133, 143], 'name' => 'Secteur 3', 'danger' => self::DNG_VERY_HARD, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 4, 'beginColor' => 0, @@ -67,8 +70,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [104, 134], 'name' => 'Secteur 4', 'danger' => self::DNG_VERY_HARD, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 5, 'beginColor' => 0, @@ -77,8 +80,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [84, 147], 'name' => 'Secteur 5', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 6, 'beginColor' => 0, @@ -87,8 +90,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [83, 110], 'name' => 'Secteur 6', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 7, 'beginColor' => 0, @@ -97,8 +100,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [105, 80], 'name' => 'Secteur 7', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 8, 'beginColor' => 0, @@ -107,8 +110,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [140, 80], 'name' => 'Secteur 8', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 9, 'beginColor' => 0, @@ -117,8 +120,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [165, 105], 'name' => 'Secteur 9', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 10, 'beginColor' => 0, @@ -127,8 +130,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [167, 140], 'name' => 'Secteur 10', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 11, 'beginColor' => 0, @@ -137,8 +140,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [145, 165], 'name' => 'Secteur 11', 'danger' => self::DNG_MEDIUM, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 12, 'beginColor' => 0, @@ -147,8 +150,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [110, 167], 'name' => 'Secteur 12', 'danger' => self::DNG_HARD, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 13, 'beginColor' => 0, @@ -157,8 +160,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [94, 186], 'name' => 'Secteur 13', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 14, 'beginColor' => 0, @@ -167,8 +170,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [60, 149], 'name' => 'Secteur 14', 'danger' => self::DNG_EASY, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 15, 'beginColor' => 0, @@ -177,8 +180,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [60, 91], 'name' => 'Secteur 15', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 16, 'beginColor' => 0, @@ -187,18 +190,18 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [98, 60], 'name' => 'Secteur 16', 'danger' => self::DNG_EASY, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 17, - 'beginColor' => 0, + 'beginColor' => 0, 'vertices' => [130, 50, 160, 50, 175, 65, 170, 70, 170, 80, 180, 80, 185, 75, 200, 90, 180, 100, 160, 80, 150, 70], 'barycentre' => [159, 64], 'display' => [159, 64], 'name' => 'Secteur 17', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 18, 'beginColor' => 0, @@ -207,8 +210,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [185, 112], 'name' => 'Secteur 18', 'danger' => self::DNG_EASY, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 19, 'beginColor' => 0, @@ -217,8 +220,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [178, 162], 'name' => 'Secteur 19', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 20, 'beginColor' => 0, @@ -227,8 +230,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [144, 187], 'name' => 'Secteur 20', 'danger' => self::DNG_EASY, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 21, 'beginColor' => 0, @@ -237,8 +240,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [130, 215], 'name' => 'Secteur 21', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 22, 'beginColor' => 0, @@ -247,8 +250,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [55, 193], 'name' => 'Secteur 22', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 23, 'beginColor' => 0, @@ -257,8 +260,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [35, 130], 'name' => 'Secteur 23', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 24, 'beginColor' => 0, @@ -267,8 +270,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [57, 57], 'name' => 'Secteur 24', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 25, 'beginColor' => 0, @@ -277,8 +280,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [120, 35], 'name' => 'Secteur 25', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 26, 'beginColor' => 0, @@ -287,8 +290,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [190, 57], 'name' => 'Secteur 26', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 27, 'beginColor' => 0, @@ -297,8 +300,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [215, 120], 'name' => 'Secteur 27', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 28, 'beginColor' => 0, @@ -307,8 +310,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [193, 193], 'name' => 'Secteur 28', 'danger' => self::DNG_MEDIUM, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 29, 'beginColor' => 0, @@ -317,8 +320,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [194, 229], 'name' => 'Secteur 29', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 30, 'beginColor' => 2, @@ -327,8 +330,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [132, 243], 'name' => 'Secteur 30', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 31, 'beginColor' => 2, @@ -337,8 +340,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [61, 229], 'name' => 'Secteur 31', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 32, 'beginColor' => 0, @@ -347,8 +350,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [21, 194], 'name' => 'Secteur 32', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 33, 'beginColor' => 7, @@ -357,8 +360,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [7, 122], 'name' => 'Secteur 33', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 34, 'beginColor' => 7, @@ -367,8 +370,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [21, 58], 'name' => 'Secteur 34', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 35, 'beginColor' => 0, @@ -377,8 +380,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [56, 21], 'name' => 'Secteur 35', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 36, 'beginColor' => 3, @@ -387,8 +390,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [123, 4], 'name' => 'Secteur 36', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 37, 'beginColor' => 3, @@ -397,8 +400,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [192, 21], 'name' => 'Secteur 37', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 38, 'beginColor' => 0, @@ -407,8 +410,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [228, 54], 'name' => 'Secteur 38', 'danger' => self::DNG_EASY, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 39, 'beginColor' => 6, @@ -417,8 +420,8 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [243, 122], 'name' => 'Secteur 39', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 40, 'beginColor' => 6, @@ -427,81 +430,75 @@ class GalaxyConfigurationV5 extends GalaxyConfiguration { 'display' => [229, 191], 'name' => 'Secteur 40', 'danger' => self::DNG_CASUAL, - 'points' => 1 - ] + 'points' => 1, + ], ]; - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { + public function fillSectorsData() + { $k = 1; echo '
';
 		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
+			// calculate barycentre
 			$strArray = self::getSectorCoord($key + 1);
 			$array = explode(', ', $strArray);
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
 			$lenght = count($array) / 2;
-			for ($j = 0; $j < count($array); $j = $j + 2) {
+			for ($j = 0; $j < count($array); $j += 2) {
 				$vx += $array[$j];
 				$vy += $array[$j + 1];
 			}
 			$gx = round($vx / $lenght);
 			$gy = round($vy / $lenght);
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => 0,' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => self::DNG_CASUAL,' . "\r\n";
-			echo '	\'points\' => 1' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => 0,'."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => self::DNG_CASUAL,'."\r\n";
+			echo '	\'points\' => 1'."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
 		}
 		echo '
'; } - public $systems = [ + public array $systems = [ [ 'id' => 1, 'name' => 'ruine', 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] + 'nbrPlaces' => [2, 6], ], [ 'id' => 2, 'name' => 'nébuleuse', 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] + 'nbrPlaces' => [2, 8], ], [ 'id' => 3, 'name' => 'géante bleue', 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] + 'nbrPlaces' => [8, 12], ], [ 'id' => 4, 'name' => 'naine jaune', 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] + 'nbrPlaces' => [6, 10], ], [ 'id' => 5, 'name' => 'naine rouge', 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] + 'nbrPlaces' => [3, 6], + ], ]; - public $places = [ + public array $places = [ [ 'id' => 1, 'name' => 'planète tellurique', @@ -538,9 +535,9 @@ public function fillSectorsData() { 'resources' => 0, 'credits' => 0, 'history' => 0, - ] + ], ]; - # display params - public $scale = 20; + // display params + public int $scale = 20; } diff --git a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php similarity index 77% rename from system/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php rename to src/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php index 2bb721b5a..810594631 100644 --- a/system/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php +++ b/src/Modules/Gaia/Galaxy/GalaxyConfigurationV6.php @@ -1,32 +1,32 @@ 250, 'diag' => 177, 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], - 'systemPosition' => NULL, + 'systemProportion' => [3, 8, 9, 25, 55], + 'systemPosition' => null, 'lineSystemPosition' => [ - # [[pA], [pB], EPAISSEUR, INTENSITE], + // [[pA], [pB], EPAISSEUR, INTENSITE], [[85, 165], [125, 210], 20, 8], - [[170, 90], [215, 125], 20, 8] + [[170, 90], [215, 125], 20, 8], ], 'circleSystemPosition' => [ - # [[X1], RAYON, EPAISSEUR, INTENSITE], - [[-100,-100], 250, 100, 8], - [[-100,-100], 430, 70, 8] + // [[X1], RAYON, EPAISSEUR, INTENSITE], + [[-100, -100], 250, 100, 8], + [[-100, -100], 430, 70, 8], ], 'population' => [700, 25000], ]; - public $sectors = [ + public array $sectors = [ /*[ 'id' => 1, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [0, 250, 250, 250, 250, 0, 0, 0], 'barycentre' => [23, 232], 'display' => [23, 232], @@ -36,44 +36,44 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration ]*/ [ 'id' => 1, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [0, 40, 10, 30, 30, 50, 30, 70, 0, 70], 'barycentre' => [14, 52], 'display' => [14, 52], 'name' => 'Secteur 1', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 2, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [10, 30, 30, 10, 60, 30, 30, 30, 40, 50, 30, 50], 'barycentre' => [33, 25], 'display' => [33, 25], 'name' => 'Secteur 2', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 3, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [30, 10, 40, 0, 90, 0, 70, 20, 60, 10, 60, 30], 'barycentre' => [50, 12], 'display' => [50, 12], 'name' => 'Secteur 3', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 4, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [0, 70, 30, 70, 20, 80, 30, 90, 0, 110], 'barycentre' => [16, 84], 'display' => [16, 84], 'name' => 'Secteur 4', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 5, 'beginColor' => 3, @@ -82,8 +82,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [46, 74], 'name' => 'Secteur 5', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 6, 'beginColor' => 7, @@ -92,8 +92,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [51, 54], 'name' => 'Secteur 6', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 7, 'beginColor' => 4, @@ -102,8 +102,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [71, 34], 'name' => 'Secteur 7', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 8, 'beginColor' => 1, @@ -112,8 +112,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [90, 20], 'name' => 'Secteur 8', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 9, 'beginColor' => 3, @@ -122,8 +122,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [121, 17], 'name' => 'Secteur 9', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 10, 'beginColor' => 2, @@ -132,8 +132,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [112, 42], 'name' => 'Secteur 10', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 11, 'beginColor' => 1, @@ -142,8 +142,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [91, 70], 'name' => 'Secteur 11', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 12, 'beginColor' => 2, @@ -152,8 +152,8 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [50, 94], 'name' => 'Secteur 12', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 13, 'beginColor' => 4, @@ -162,28 +162,28 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [10, 118], 'name' => 'Secteur 13', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 14, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [0, 140, 20, 140, 30, 160, 0, 190], 'barycentre' => [13, 158], 'display' => [13, 158], 'name' => 'Secteur 14', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 15, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [20, 120, 40, 130, 50, 120, 60, 130, 40, 150, 30, 170, 30, 160, 20, 140], 'barycentre' => [36, 140], 'display' => [36, 140], 'name' => 'Secteur 15', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 16, 'beginColor' => 7, @@ -192,420 +192,414 @@ class GalaxyConfigurationV6 extends GalaxyConfiguration 'display' => [50, 111], 'name' => 'Secteur 16', 'danger' => 1, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 17, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [60, 110, 80, 100, 100, 70, 100, 110, 90, 110], 'barycentre' => [86, 100], 'display' => [86, 100], 'name' => 'Secteur 17', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 18, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [100, 70, 130, 60, 140, 70, 130, 90, 100, 80], 'barycentre' => [120, 74], 'display' => [120, 74], 'name' => 'Secteur 18', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 19, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [130, 20, 140, 20, 160, 20, 170, 40, 170, 50, 150, 40, 140, 70, 130, 60], 'barycentre' => [149, 30], 'display' => [149, 30], 'name' => 'Secteur 19', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 20, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [140, 20, 160, 0, 180, 0, 170, 40, 160, 20], 'barycentre' => [162, 16], 'display' => [162, 16], 'name' => 'Secteur 20', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 21, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [180, 0, 220, 0, 210, 20, 200, 20, 180, 40, 170, 40], 'barycentre' => [193, 16], 'display' => [193, 16], 'name' => 'Secteur 21', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 22, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [140, 70, 150, 40, 170, 50, 170, 40, 180, 40, 200, 20, 210, 20, 160, 70, 150, 80], 'barycentre' => [160, 55], 'display' => [160, 55], 'name' => 'Secteur 22', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 23, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [130, 90, 140, 70, 150, 80, 160, 70, 180, 60, 170, 90, 180, 80, 180, 100, 170, 100, 160, 110, 160, 80, 140, 110, 140, 100], 'barycentre' => [143, 88], 'display' => [143, 88], 'name' => 'Secteur 23', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 24, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [100, 80, 130, 90, 140, 100, 120, 100, 120, 130, 110, 120, 90, 130, 70, 120, 90, 110, 100, 110], 'barycentre' => [107, 109], 'display' => [107, 109], 'name' => 'Secteur 24', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 25, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [60, 110, 90, 110, 70, 120, 90, 130, 110, 120, 90, 150, 60, 160, 80, 140, 40, 150, 60, 130, 50, 120], 'barycentre' => [73, 131], 'display' => [73, 131], 'name' => 'Secteur 25', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 26, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [40, 150, 80, 140, 60, 160, 90, 150, 80, 160, 20, 190, 30, 170], 'barycentre' => [57, 160], 'display' => [57, 160], 'name' => 'Secteur 26', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 27, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [0, 190, 30, 160, 30, 170, 20, 190, 40, 200, 0, 220], 'barycentre' => [15, 190], 'display' => [15, 190], 'name' => 'Secteur 27', 'danger' => 2, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 28, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [20, 190, 80, 160, 90, 170, 80, 180, 40, 200], 'barycentre' => [62, 180], 'display' => [62, 180], 'name' => 'Secteur 28', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 29, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [80, 160, 90, 150, 110, 120, 100, 170, 90, 180, 80, 180, 90, 170], 'barycentre' => [91, 161], 'display' => [91, 161], 'name' => 'Secteur 29', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 30, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [100, 170, 110, 120, 120, 130, 160, 110], 'barycentre' => [123, 133], 'display' => [123, 133], 'name' => 'Secteur 30', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 31, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [120, 130, 120, 100, 140, 100, 140, 110, 160, 80, 160, 110], 'barycentre' => [140, 113], 'display' => [140, 113], 'name' => 'Secteur 31', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 32, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [160, 70, 210, 20, 180, 80, 170, 90, 180, 60], 'barycentre' => [180, 64], 'display' => [180, 64], 'name' => 'Secteur 32', 'danger' => 3, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 33, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [170, 100, 180, 100, 180, 80, 210, 110, 190, 100, 200, 130], 'barycentre' => [188, 103], 'display' => [188, 103], 'name' => 'Secteur 33', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 34, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [200, 130, 190, 100, 210, 110, 220, 110, 220, 130, 220, 140, 210, 160, 210, 120, 200, 150, 180, 150], 'barycentre' => [206, 115], 'display' => [206, 115], 'name' => 'Secteur 34', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 35, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [90, 180, 100, 170, 130, 200, 130, 210, 120, 210, 110, 190, 100, 190], 'barycentre' => [120, 199], 'display' => [120, 199], 'name' => 'Secteur 35', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 36, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [80, 180, 90, 180, 100, 190, 110, 190, 120, 210, 110, 210], 'barycentre' => [102, 193], 'display' => [102, 193], 'name' => 'Secteur 36', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 37, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [110, 210, 120, 210, 130, 210, 140, 210, 150, 200, 150, 210, 140, 220, 90, 220], 'barycentre' => [129, 214], 'display' => [129, 214], 'name' => 'Secteur 37', 'danger' => 4, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 38, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [130, 210, 130, 200, 160, 170, 150, 200, 140, 210], 'barycentre' => [142, 198], 'display' => [142, 198], 'name' => 'Secteur 38', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 39, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [150, 210, 150, 200, 160, 170, 190, 170, 190, 160, 210, 160, 220, 140, 220, 160, 210, 170, 200, 170, 200, 180, 190, 180, 190, 190, 180, 200, 180, 180], 'barycentre' => [189, 176], 'display' => [189, 176], 'name' => 'Secteur 39', 'danger' => 4, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 40, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [160, 170, 180, 150, 200, 150, 210, 120, 210, 160, 190, 160, 190, 170], 'barycentre' => [191, 154], 'display' => [191, 154], 'name' => 'Secteur 40', 'danger' => 3, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 41, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [210, 110, 230, 70, 230, 110, 220, 130, 220, 110], 'barycentre' => [222, 106], 'display' => [222, 106], 'name' => 'Secteur 41', 'danger' => 4, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 42, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [230, 70, 250, 30, 250, 80, 240, 90], 'barycentre' => [243, 68], 'display' => [243, 68], 'name' => 'Secteur 42', 'danger' => 5, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 43, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [230, 70, 240, 90, 240, 110, 230, 130, 230, 170, 220, 160, 220, 140, 220, 130, 230, 110], 'barycentre' => [229, 123], 'display' => [229, 123], 'name' => 'Secteur 43', 'danger' => 4, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 44, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [220, 160, 230, 170, 190, 210, 180, 200, 190, 190, 190, 180, 200, 180, 200, 170, 210, 170], 'barycentre' => [201, 181], 'display' => [201, 181], 'name' => 'Secteur 44', 'danger' => 4, - 'points' => 2 - ], + 'points' => 2, + ], [ 'id' => 45, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [90, 220, 140, 220, 150, 210, 180, 180, 180, 200, 190, 210, 140, 230, 90, 230], 'barycentre' => [160, 213], 'display' => [160, 213], 'name' => 'Secteur 45', 'danger' => 4, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 46, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [30, 250, 90, 220, 90, 230, 80, 240, 90, 250], 'barycentre' => [76, 238], 'display' => [76, 238], 'name' => 'Secteur 46', 'danger' => 5, - 'points' => 5 - ], + 'points' => 5, + ], [ 'id' => 47, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [90, 230, 140, 230, 190, 210, 230, 170, 230, 130, 240, 110, 240, 90, 250, 80, 250, 110, 240, 130, 240, 170, 190, 220, 170, 230, 140, 240, 80, 240], 'barycentre' => [210, 193], 'display' => [210, 193], 'name' => 'Secteur 47', 'danger' => 4, - 'points' => 1 - ], + 'points' => 1, + ], [ 'id' => 48, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [80, 240, 140, 240, 170, 230, 220, 250, 90, 250], 'barycentre' => [165, 242], 'display' => [165, 242], 'name' => 'Secteur 48', 'danger' => 5, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 49, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [250, 110, 250, 220, 240, 170, 240, 130], 'barycentre' => [245, 158], 'display' => [245, 158], 'name' => 'Secteur 49', 'danger' => 5, - 'points' => 3 - ], + 'points' => 3, + ], [ 'id' => 50, - 'beginColor' => 0, + 'beginColor' => null, 'vertices' => [230, 250, 220, 240, 220, 220, 240, 220, 250, 230, 250, 250], 'barycentre' => [235, 235], 'display' => [235, 235], 'name' => 'Secteur 50', 'danger' => 5, - 'points' => 10 - ] + 'points' => 10, + ], ]; - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { + public function fillSectorsData() + { $k = 1; echo '
';
 		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
+			// calculate barycentre
 			$strArray = self::getSectorCoord($key + 1);
 			$array = explode(', ', $strArray);
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
+			$gx = 0;
+			$gy = 0;
+			$vx = 0;
+			$vy = 0;
 			$lenght = count($array) / 2;
-			for ($j = 0; $j < count($array); $j = $j + 2) {
+			for ($j = 0; $j < count($array); $j += 2) {
 				$vx += $array[$j];
 				$vy += $array[$j + 1];
 			}
 			$gx = round($vx / $lenght);
 			$gy = round($vy / $lenght);
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => ' . $sector['beginColor'] . ',' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => ' . $sector['danger'] . ',' . "\r\n";
-			echo '	\'points\' => ' . $sector['points'] . '' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
+			echo '['."\r\n";
+			echo '	\'id\' => '.$k.','."\r\n";
+			echo '	\'beginColor\' => '.$sector['beginColor'].','."\r\n";
+			echo '	\'vertices\' => ['.implode(', ', $sector['vertices']).'],'."\r\n";
+			echo '	\'barycentre\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'display\' => ['.$gx.', '.$gy.'],'."\r\n";
+			echo '	\'name\' => \'Secteur '.$k."',\r\n";
+			echo '	\'danger\' => '.$sector['danger'].','."\r\n";
+			echo '	\'points\' => '.$sector['points'].''."\r\n";
+			echo '], '."\r\n";
+
+			++$k;
 		}
 		echo '
'; } - public $systems = [ + public array $systems = [ [ 'id' => 1, 'name' => 'ruine', 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] + 'nbrPlaces' => [2, 6], ], [ 'id' => 2, 'name' => 'nébuleuse', 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] + 'nbrPlaces' => [2, 8], ], [ 'id' => 3, 'name' => 'géante bleue', 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] + 'nbrPlaces' => [8, 12], ], [ 'id' => 4, 'name' => 'naine jaune', 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] + 'nbrPlaces' => [6, 10], ], [ 'id' => 5, 'name' => 'naine rouge', 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] + 'nbrPlaces' => [3, 6], + ], ]; - public $places = [ + public array $places = [ [ 'id' => 1, 'name' => 'planète tellurique', @@ -642,10 +636,9 @@ public function fillSectorsData() { 'resources' => 0, 'credits' => 0, 'history' => 0, - ] + ], ]; - # display params - public $scale = 20; + // display params + public int $scale = 20; } -?> diff --git a/src/Modules/Gaia/Handler/PlaceUpdateHandler.php b/src/Modules/Gaia/Handler/PlaceUpdateHandler.php new file mode 100644 index 000000000..86c7271cb --- /dev/null +++ b/src/Modules/Gaia/Handler/PlaceUpdateHandler.php @@ -0,0 +1,50 @@ +placeRepository->get($message->placeId) + ?? throw new \RuntimeException(sprintf('Place %s not found', $message->placeId)); + + $missingUpdatesCount = ($this->countMissingSystemUpdates)($place); + if (0 === $missingUpdatesCount) { + return; + } + // update time + $place->updatedAt = $this->clock->now(); + $place->resources = min( + $place->resources + $place->getProducedResources() * $missingUpdatesCount, + $place->getMaxResources(), + ); + $place->danger = min( + $place->danger + Place::REPOPDANGER * $missingUpdatesCount, + $place->maxDanger, + ); + + $this->placeRepository->save($place); + } +} diff --git a/src/Modules/Gaia/Handler/PlacesUpdateHandler.php b/src/Modules/Gaia/Handler/PlacesUpdateHandler.php new file mode 100644 index 000000000..3f6ecb41d --- /dev/null +++ b/src/Modules/Gaia/Handler/PlacesUpdateHandler.php @@ -0,0 +1,26 @@ +placeRepository->getAll() as $place) { + $this->messageBus->dispatch(new PlaceUpdateMessage($place->id)); + } + } +} diff --git a/src/Modules/Gaia/Helper/GalaxyGenerator.php b/src/Modules/Gaia/Helper/GalaxyGenerator.php new file mode 100644 index 000000000..db754f6e7 --- /dev/null +++ b/src/Modules/Gaia/Helper/GalaxyGenerator.php @@ -0,0 +1,468 @@ + */ + public array $listSystem = []; + + public int $nbPlace = 0; + public int $popTotal = 0; + public array $listPlace = []; + + public int $nbSector = 0; + public int $systemDeleted = 0; + + public function __construct( + private readonly GalaxyConfiguration $galaxyConfiguration, + private readonly EntityManagerInterface $entityManager, + private readonly SectorRepositoryInterface $sectorRepository, + private readonly SystemRepositoryInterface $systemRepository, + private readonly PlaceRepositoryInterface $placeRepository, + private readonly ColorRepositoryInterface $colorRepository, + ) { + } + + public function generate(): void + { + // generation + $this->generateSectors(); + $this->generateSystems(); + $this->associateSystemToSector(); + $this->generatePlaces(); + } + + private function generateSystems(): void + { + // GENERATION DES LINES + for ($w = 0; $w < count($this->galaxyConfiguration->galaxy['lineSystemPosition']); ++$w) { + // line point + $xA = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][0][0]; + $yA = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][0][1]; + + $xB = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][1][0]; + $yB = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][1][1]; + + $l = sqrt(($xB - $xA) ** 2 + ($yB - $yA) ** 2); + + for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; ++$i) { + for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; ++$j) { + // current cursor position + $xC = $j; + $yC = $i; + + $d = $this->distToSegment($xC, $yC, $xA, $yA, $xB, $yB); + + $thickness = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2]; + $intensity = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][3]; + + if ($d < $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2]) { + // $prob = rand(0, $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][3]); + $prob = random_int(0, 100); + + // if ($this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2] - $d > $prob) { + if (round($intensity - ($d * $intensity / $thickness)) >= $prob) { + $type = $this->getSystem(); + + ++$this->nbSystem; + + $system = new System( + id: Uuid::v4(), + sector: null, + faction: null, + xPosition: $xC, + yPosition: $yC, + typeOfSystem: $type, + ); + + $this->systemRepository->save($system); + + $this->listSystem[] = $system; + } + } + } + } + } + + // GENERATION DES ANNEAUX (circleSystemPosition) + for ($w = 0; $w < count($this->galaxyConfiguration->galaxy['circleSystemPosition']); ++$w) { + // line point + $xC = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][0][0]; + $yC = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][0][1]; + + $radius = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][1]; + $thickness = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][2]; + $intensity = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][3]; + + for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; ++$i) { + for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; ++$j) { + // current cursor position + $xPosition = $j; + $yPosition = $i; + + // calcul de la distance entre la case et le centre + $d = sqrt( + abs($xC - $xPosition) ** 2 + + abs($yC - $yPosition) ** 2 + ); + + if ($d >= ($radius - $thickness) && $d <= ($radius + $thickness)) { + $dtoseg = abs($d - $radius); + $prob = random_int(0, 100); + + if (round($intensity - ($dtoseg * $intensity / $thickness)) >= $prob) { + $type = $this->getSystem(); + + ++$this->nbSystem; + $system = new System( + id: Uuid::v4(), + sector: null, + faction: null, + xPosition: $xPosition, + yPosition: $yPosition, + typeOfSystem: $type, + ); + + $this->systemRepository->save($system); + + $this->listSystem[] = $system; + } + } + } + } + } + + // GENERATION PAR VAGUES + if (null !== $this->galaxyConfiguration->galaxy['systemPosition']) { + for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; ++$i) { + for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; ++$j) { + // current cursor position + $xPosition = $j; + $yPosition = $i; + + // calcul de la distance entre la case et le centre + $d2o = sqrt( + abs(($this->galaxyConfiguration->galaxy['size'] / 2) - $xPosition) ** 2 + + abs(($this->galaxyConfiguration->galaxy['size'] / 2) - $yPosition) ** 2 + ); + + if ($this->isPointInMap($d2o)) { + $type = $this->getSystem(); + + ++$this->nbSystem; + + $system = new System( + id: Uuid::v4(), + sector: null, + faction: null, + xPosition: $xPosition, + yPosition: $yPosition, + typeOfSystem: $type, + ); + + $this->systemRepository->save($system); + + $this->listSystem[] = $system; + } + } + } + } + } + + public function generatePlaces(): void + { + foreach ($this->listSystem as $system) { + $sectorDanger = 0; + foreach ($this->galaxyConfiguration->sectors as $sector) { + if ($system->sector->identifier == $sector['id']) { + $sectorDanger = $sector['danger']; + break; + } + } + + $placesCount = $this->getNbOfPlace($system->typeOfSystem); + + for ($i = 0; $i < $placesCount; ++$i) { + $type = $this->getTypeOfPlace($system->typeOfSystem); + + if (1 == $type) { + $pointsRep = random_int(1, 10); + $abilities = [ + 'population' => 0, + 'history' => 0, + 'resources' => 0, + ]; + + // nombre de point a distribuer + if ($pointsRep < 2) { + $pointsTot = random_int(90, 100); + } elseif ($pointsRep < 10) { + $pointsTot = 100; + } else { + $pointsTot = random_int(100, 120); + } + + // brassage du tableau + Utils::shuffle($abilities); + + // répartition + $z = 1; + foreach ($abilities as $l => $v) { + if ($z < 3) { + $max = $pointsTot - ($z * 10); + $max = $max < 10 ? 10 : $max; + + $points = random_int(10, $max); + $abilities[$l] = $points; + $pointsTot -= $points; + } else { + $abilities[$l] = $pointsTot < 5 ? 5 : $pointsTot; + } + + ++$z; + } + + $population = $abilities['population'] * 250 / 100; + $history = $abilities['history']; + $resources = $abilities['resources']; + $stRES = 0; + } elseif (6 == $type) { + $population = 0; + $history = 0; + $resources = 0; + $stRES = 0; + } else { + $population = $this->galaxyConfiguration->places[$type - 1]['credits']; + $resources = $this->galaxyConfiguration->places[$type - 1]['resources']; + $history = $this->galaxyConfiguration->places[$type - 1]['history']; + $stRES = random_int(2000000, 20000000); + } + + // TODO DANGER + $danger = match ($sectorDanger) { + GalaxyConfiguration::DNG_CASUAL => random_int(0, Place::DNG_CASUAL), + GalaxyConfiguration::DNG_EASY => random_int(3, Place::DNG_EASY), + GalaxyConfiguration::DNG_MEDIUM => random_int(6, Place::DNG_MEDIUM), + GalaxyConfiguration::DNG_HARD => random_int(9, Place::DNG_HARD), + GalaxyConfiguration::DNG_VERY_HARD => random_int(12, Place::DNG_VERY_HARD), + default => 0, + }; + + ++$this->nbPlace; + $this->popTotal += intval(round($population)); + $place = new Place( + id: Uuid::v4(), + player: null, + base: null, + system: $system, + typeOfPlace: $type, + position: $i + 1, + population: $population, + coefResources: $resources, + coefHistory: $history, + resources: $stRES, + danger: $danger, + maxDanger: $danger, + updatedAt: new \DateTimeImmutable('-259200 seconds'), + ); + + $this->placeRepository->save($place); + + if (0 === $this->nbPlace % 20) { + $this->entityManager->clear(); + } + } + } + } + + public function generateSectors(): void + { + foreach ($this->galaxyConfiguration->sectors as $sector) { + ++$this->nbSector; + + $prime = (null !== $sector['beginColor']) + ? 1 + : 0; + + $faction = (null !== $sector['beginColor']) + ? $this->colorRepository->getOneByIdentifier($sector['beginColor']) + ?? throw new \LogicException('Faction not found') : null; + + $sector = new Sector( + id: Uuid::v4(), + identifier: $sector['id'], + faction: $faction, + xPosition: $sector['display'][0], + yPosition: $sector['display'][1], + xBarycentric: $sector['barycentre'][0], + yBarycentric: $sector['barycentre'][1], + tax: 5, + name: $sector['name'], + points: $sector['points'], + population: 0, + lifePlanet: 0, + prime: $prime, + ); + + $this->sectorRepository->save($sector); + } + } + + public function associateSystemToSector(): void + { + $pl = new PointLocation(); + $systemToDelete = []; + $k = 0; + + foreach ($this->listSystem as $system) { + foreach ($this->galaxyConfiguration->sectors as $sector) { + $place = $pl->pointInPolygon( + sprintf('%d, %d', $system->xPosition, $system->yPosition), + $sector['vertices'], + ); + + if (1 === $place or 2 === $place) { + $systemToDelete[] = $system; + break; + } elseif (3 === $place) { + $system->sector = $this->sectorRepository->getOneByIdentifier($sector['id']); + + break; + } + } + ++$k; + } + // Updates the systems sectors + $this->entityManager->flush(); + + foreach ($this->listSystem as $system) { + if (null === $system->sector) { + $systemToDelete[] = $system->id; + } + } + + // suppression des systemes sur des lignes ou des angles + for ($i = count($this->listSystem) - 1; $i >= 0; --$i) { + if (in_array($this->listSystem[$i]->id, $systemToDelete)) { + $this->sectorRepository->remove($this->listSystem[$i]); + + unset($this->listSystem[$i]); + } + } + // Remove the systems without sector + $this->entityManager->flush(); + + $this->systemDeleted = count($systemToDelete); + } + + protected function isPointInMap($d2o): bool + { + $mask = random_int(1, $this->galaxyConfiguration->galaxy['mask']); + + if ($mask >= 3) { + return false; + } + $realPosition = $this->galaxyConfiguration->galaxy['diag'] - $d2o; + $step = $this->galaxyConfiguration->galaxy['diag'] / count($this->galaxyConfiguration->galaxy['systemPosition']); + $currentStep = floor($realPosition / $step); + + $random = random_int(0, 100); + + return $this->galaxyConfiguration->galaxy['systemPosition'][$currentStep] > $random; + } + + protected function l2p($x1, $x2, $y1, $y2) + { + return ($x1 - $y1) ** 2 + ($x2 - $y2) ** 2; + } + + protected function distToSegment($p1, $p2, $v1, $v2, $w1, $w2) + { + $l2 = $this->l2p($v1, $v2, $w1, $w2); + + if (0 == $l2) { + return sqrt($this->l2p($p1, $p2, $v1, $v2)); + } + + $t = (($p1 - $v1) * ($w1 - $v1) + ($p2 - $v2) * ($w2 - $v2)) / $l2; + + if ($t < 0) { + return sqrt($this->l2p($p1, $p2, $v1, $v2)); + } + + if ($t > 1) { + return sqrt($this->l2p($p1, $p2, $w1, $w2)); + } + + $tx = $v1 + $t * ($w1 - $v1); + $ty = $v2 + $t * ($w2 - $v2); + + return sqrt($this->l2p($p1, $p2, $tx, $ty)); + } + + protected function getProportion(array $params, int $value): int + { + $cursor = 0; + $type = 0; + $min = 0; + $max = 0; + + for ($i = 0; $i < count($params); ++$i) { + if (0 == $i) { + $max = $params[$i]; + } elseif ($i < count($params) - 1) { + $min = $cursor; + $max = $cursor + $params[$i]; + } else { + $min = $cursor; + $max = 100; + } + + $cursor = $max; + ++$type; + + if ($value > $min && $value <= $max) { + return $type; + } + } + throw new \LogicException('Must return a value'); + } + + protected function getSystem(): int + { + return $this->getProportion($this->galaxyConfiguration->galaxy['systemProportion'], random_int(1, 100)); + } + + protected function getNbOfPlace(int $systemType): int + { + $nbrPlaces = $this->galaxyConfiguration->systems[$systemType - 1]['nbrPlaces']; + + return random_int($nbrPlaces[0], $nbrPlaces[1]); + } + + protected function getTypeOfPlace(int $systemType): int + { + return $this->getProportion( + $this->galaxyConfiguration->systems[$systemType - 1]['placesPropotion'], + random_int(1, 100), + ); + } +} diff --git a/src/Modules/Gaia/Infrastructure/Command/CalculateSectorOwnershipCommand.php b/src/Modules/Gaia/Infrastructure/Command/CalculateSectorOwnershipCommand.php new file mode 100644 index 000000000..b9c75ff75 --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/Command/CalculateSectorOwnershipCommand.php @@ -0,0 +1,64 @@ +addArgument('sector-id', InputArgument::OPTIONAL, 'The sector ID to process'); + } + + public function execute(InputInterface $input, OutputInterface $output): int + { + $style = new SymfonyStyle($input, $output); + + if (null !== ($sectorId = $input->getArgument('sector-id'))) { + if (!Uuid::isValid($sectorId)) { + throw new \InvalidArgumentException('Invalid UUID given'); + } + + $sector = $this->sectorRepository->get(Uuid::fromString($sectorId)) + ?? throw new \InvalidArgumentException('Sector not found'); + + $this->processSector($style, $sector); + } else { + foreach ($this->sectorRepository->getAll() as $sector) { + $this->processSector($style, $sector); + } + } + + return self::SUCCESS; + } + + public function processSector(SymfonyStyle $style, Sector $sector): void + { + $style->info(sprintf('Processing sector %d', $sector->identifier)); + + $this->sectorManager->calculateOwnership($sector); + } +} diff --git a/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/PlaceFactory.php b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/PlaceFactory.php new file mode 100644 index 000000000..f820d84c4 --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/PlaceFactory.php @@ -0,0 +1,39 @@ + + */ +class PlaceFactory extends ModelFactory +{ + protected function getDefaults(): array + { + return [ + 'id' => Uuid::v4(), + 'player' => null, + 'base' => null, + 'system' => SystemFactory::randomOrCreate(), + 'typeOfPlace' => Place::TERRESTRIAL, + 'position' => self::faker()->randomNumber(1), + 'population' => self::faker()->numberBetween(50, 250), + 'coefResources' => self::faker()->numberBetween(30, 95), + 'coefHistory' => self::faker()->numberBetween(15, 45), + 'resources' => self::faker()->numberBetween(0, 50000), + 'danger' => self::faker()->numberBetween(0, 100), + 'maxDanger' => self::faker()->numberBetween(20, 100), + 'updatedAt' => new \DateTimeImmutable(), + ]; + } + + protected static function getClass(): string + { + return Place::class; + } +} diff --git a/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SectorFactory.php b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SectorFactory.php new file mode 100644 index 000000000..fcaebd8d5 --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SectorFactory.php @@ -0,0 +1,36 @@ + Uuid::v4(), + 'identifier' => self::faker()->randomNumber(2), + 'faction' => null, + 'xPosition' => self::faker()->numberBetween(0, 100), + 'yPosition' => self::faker()->numberBetween(0, 100), + 'xBarycentric' => self::faker()->numberBetween(0, 100), + 'yBarycentric' => self::faker()->numberBetween(0, 100), + 'tax' => 5, + 'name' => null, + 'points' => self::faker()->numberBetween(1, 5), + 'population' => 0, + 'lifePlanet' => 0, + 'prime' => false, + ]; + } + + protected static function getClass(): string + { + return Sector::class; + } +} diff --git a/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SystemFactory.php b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SystemFactory.php new file mode 100644 index 000000000..00890625b --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/DataFixtures/Factory/SystemFactory.php @@ -0,0 +1,29 @@ + Uuid::v4(), + 'sector' => SectorFactory::randomOrCreate(), + 'faction' => null, + 'xPosition' => self::faker()->numberBetween(0, 100), + 'yPosition' => self::faker()->numberBetween(0, 100), + 'typeOfSystem' => 1, + ]; + } + + protected static function getClass(): string + { + return System::class; + } +} diff --git a/src/Modules/Gaia/Infrastructure/DataFixtures/PlaceFixtures.php b/src/Modules/Gaia/Infrastructure/DataFixtures/PlaceFixtures.php new file mode 100644 index 000000000..40d5ae7b1 --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/DataFixtures/PlaceFixtures.php @@ -0,0 +1,25 @@ +getPlace(); + + if (null === $place->player) { + $this->context + ->buildViolation('This planet does not belong to a player') + ->addViolation(); + } + } +} diff --git a/src/Modules/Gaia/Infrastructure/Validator/DTO/HasPlace.php b/src/Modules/Gaia/Infrastructure/Validator/DTO/HasPlace.php new file mode 100644 index 000000000..2492b7949 --- /dev/null +++ b/src/Modules/Gaia/Infrastructure/Validator/DTO/HasPlace.php @@ -0,0 +1,10 @@ +typeOfPlace = Place::EMPTYZONE; + + $this->placeRepository->save($place); + } + + public function turnAsSpawnPlace(Place $place, Player $player): void + { + $place->player = $player; + $place->coefResources = 60; + $place->coefHistory = 20; + $place->population = 50; + + $this->placeRepository->save($place); + } + + public function sendNotif(Place $place, int $case, Commander $commander, Report|null $report = null): void + { + $notifications = match ($case) { + Place::CHANGESUCCESS => [ + NotificationBuilder::new() + ->setTitle('Déplacement réussi') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' est arrivé sur ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + )) + ->for($commander->player), + ], + Place::CHANGEFAIL => [ + NotificationBuilder::new() + ->setTitle('Déplacement réussi') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' s\'est posé sur ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '. Il est en garnison car il n\'y avait pas assez de place en orbite.', + )) + ->for($commander->player), + ], + Place::CHANGELOST => [ + NotificationBuilder::new() + ->setTitle('Déplacement raté') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' n\'est pas arrivé sur ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '. Cette base ne vous appartient pas. Elle a pu être conquise entre temps.', + )) + ->for($commander->player), + ], + Place::LOOTEMPTYSSUCCESS => [ + NotificationBuilder::new() + ->setTitle('Pillage réussi') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a pillé la planète rebelle située aux coordonnées ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + Game::formatCoord( + $place->system->xPosition, + $place->system->xPosition, + $place->position, + $place->system->sector->identifier + ), + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_RESOURCE, + Format::number($commander->resources), + 'ressources pillées', + ), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_XP, + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player), + ], + Place::LOOTEMPTYFAIL => [ + NotificationBuilder::new() + ->setTitle('Pillage raté') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('memorial', ['id' => $commander->id]), + $commander->name, + ), + ' est tombé lors de l\'attaque de la planète rebelle située aux coordonnées ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + Game::formatCoord( + $place->system->xPosition, + $place->system->xPosition, + $place->position, + $place->system->sector->identifier + ), + ), + '.', + NotificationBuilder::divider(), + 'Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player) + ], + Place::LOOTPLAYERWHITBATTLESUCCESS => [ + NotificationBuilder::new() + ->setTitle('Pillage réussi') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a pillé la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_RESOURCE, + Format::number($commander->resources), + 'ressources pillées', + ), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_XP, + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Rapport de pillage') + ->setContent(NotificationBuilder::paragraph( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $commander->player]), + $commander->player->name, + ), + ' a pillé votre planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_RESOURCE, + Format::number($commander->resources), + 'ressources pillées', + ), + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($place->player) + ], + Place::LOOTPLAYERWHITBATTLEFAIL => [ + NotificationBuilder::new() + ->setTitle('Pillage raté') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('memorial', ['id' => $commander->id]), + $commander->name, + ), + ' est tombé lors du pillage de la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + 'Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Rapport de combat') + ->setContent(NotificationBuilder::paragraph( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + ' a attaqué votre planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + NotificationBuilder::divider(), + 'Vous avez repoussé l\'ennemi avec succès.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($place->player), + ], + Place::LOOTPLAYERWHITOUTBATTLESUCCESS => [ + NotificationBuilder::new() + ->setTitle('Pillage réussi') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a pillé la planète non défendue ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_RESOURCE, + Format::number($commander->resources), + 'ressources pillées', + ), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_XP, + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + )) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Rapport de pillage') + ->setContent( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $commander->player]), + $commander->player->name, + ), + ' a pillé votre planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '. Aucune flotte n\'était en position pour la défendre. ', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_RESOURCE, + Format::number($commander->resources), + 'ressources pillées', + ), + ) + ->for($place->player) + ], + Place::LOOTLOST => [ + NotificationBuilder::new() + ->setTitle('Erreur de coordonnées') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' n\'a pas attaqué la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' car son joueur est de votre faction, sous la protection débutant ou un allié.', + )) + ->for($commander->player) + ], + Place::CONQUEREMPTYSSUCCESS => [ + NotificationBuilder::new() + ->setTitle('Colonisation réussie') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a colonisé la planète rebelle située aux coordonnées ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + Game::formatCoord( + $place->system->xPosition, + $place->system->xPosition, + $place->position, + $place->system->sector->identifier + ), + ), + NotificationBuilder::resourceBox( + 'xp', + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + 'Votre empire s\'étend, administrez votre ', + NotificationBuilder::link( + $this->urlGenerator->generate('switchbase', ['baseId' => $place->base->id]), + 'nouvelle planète', + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player) + ], + Place::CONQUEREMPTYFAIL => [ + NotificationBuilder::new() + ->setTitle('Colonisation ratée') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('memorial', ['id' => $commander->id]), + $commander->name, + ), + ' est tombé lors de l\'attaque de la planète rebelle située aux coordonnées ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + Game::formatCoord( + $place->system->xPosition, + $place->system->xPosition, + $place->position, + $place->system->sector->identifier + ), + ), + '.', + NotificationBuilder::divider(), + 'Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $report->id]), + 'voir le rapport', + ), + )) + ->for($commander->player), + ], + Place::CONQUERPLAYERWHITOUTBATTLESUCCESS => [ + NotificationBuilder::new() + ->setTitle('Conquête réussie') + ->setContent( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a conquis la planète non défendue ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_XP, + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + 'Elle est désormais votre, vous pouvez l\'administrer ', + NotificationBuilder::link( + $this->urlGenerator->generate('switchbase', ['baseId' => $place->base->id]), + 'ici', + ), + '.', + ) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Planète conquise') + ->setContent(NotificationBuilder::paragraph( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $commander->player]), + $commander->player->name, + ), + ' a conquis votre planète non défendue ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + NotificationBuilder::divider(), + 'Impliquez votre faction dans une action punitive envers votre assaillant.', + )) + ->for($place->player), + ], + Place::CONQUERLOST => [ + NotificationBuilder::new() + ->setTitle('Erreur de coordonnées') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' n\'a pas attaqué la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' car le joueur est dans votre faction, sous la protection débutant ou votre allié.', + )) + ->for($commander->player) + ], + Place::COMEBACK => [ + NotificationBuilder::new() + ->setTitle('Rapport de retour') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' est de retour sur votre base ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' et rapporte ', + NotificationBuilder::bold(Format::number($commander->resources)), + ' ressources à vos entrepôts.' + )) + ->for($commander->player) + ], + default => throw new \RuntimeException(sprintf('Unknown notification type %s', $case)), + }; + + foreach ($notifications as $notification) { + $this->notificationRepository->save($notification); + } + } + + /** + * @param list $reports + */ + public function sendNotifForConquest(Place $place, int $case, Commander $commander, array $reports = []): void + { + $nbrBattle = count($reports); + + $notifications = match ($case) { + Place::CONQUERPLAYERWHITBATTLESUCCESS => [ + NotificationBuilder::new() + ->setTitle('Conquête réussie') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_headquarters', ['commander' => $commander->id]), + $commander->name, + ), + ' a conquis la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + $nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu'), + NotificationBuilder::divider(), + NotificationBuilder::resourceBox( + NotificationBuilder::RESOURCE_TYPE_XP, + '+ ' . Format::number($commander->earnedExperience), + 'expérience de l\'officier', + ), + NotificationBuilder::divider(), + 'Elle est désormais vôtre, vous pouvez l\'administrer ', + NotificationBuilder::link( + $this->urlGenerator->generate('switchbase', ['baseId' => $place->base->id]), + 'ici', + ), + '.', + NotificationBuilder::divider(), + ...array_map( + fn (int $i): string => sprintf( + '%s%s', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $reports[$i]]), + 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport', + ), + ), + array_keys($reports), + ), + )) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Planète conquise') + ->setContent(NotificationBuilder::paragraph( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $commander->player]), + $commander->player->name, + ), + ' a conquis votre planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + NotificationBuilder::divider(), + $nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu'), + NotificationBuilder::divider(), + 'Impliquez votre faction dans une action punitive envers votre assaillant.', + NotificationBuilder::divider(), + ...array_map( + fn (int $i): string => sprintf( + '%s%s', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $reports[$i]]), + 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport', + ), + ), + array_keys($reports), + ), + )) + ->for($place->player) + ], + Place::CONQUERPLAYERWHITBATTLEFAIL => [ + NotificationBuilder::new() + ->setTitle('Conquête ratée') + ->setContent(NotificationBuilder::paragraph( + 'Votre officier ', + NotificationBuilder::link( + $this->urlGenerator->generate('memorial', ['id' => $commander->id]), + $commander->name, + ), + ' est tombé lors de la tentive de conquête de la planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $place->player]), + $place->player->name, + ), + '.', + NotificationBuilder::divider(), + $nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu'), + NotificationBuilder::divider(), + 'Il a désormais rejoint de Mémorial. Que son âme traverse l\'Univers dans la paix.', + NotificationBuilder::divider(), + ...array_map( + fn (int $i): string => sprintf( + '%s%s', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $reports[$i]]), + 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport', + ), + ), + array_keys($reports), + ), + )) + ->for($commander->player), + NotificationBuilder::new() + ->setTitle('Rapport de combat') + ->setContent(NotificationBuilder::paragraph( + 'L\'officier ', + NotificationBuilder::bold($commander->name), + ' appartenant au joueur ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $commander->player]), + $commander->player->name, + ), + ' a tenté de conquérir votre planète ', + NotificationBuilder::link( + $this->urlGenerator->generate('map', ['place' => $place->id]), + $place->base->name, + ), + '.', + NotificationBuilder::divider(), + $nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu'), + NotificationBuilder::divider(), + 'Vous avez repoussé l\'ennemi avec succès. Bravo !', + NotificationBuilder::divider(), + ...array_map( + fn (int $i): string => sprintf( + '%s%s', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('fleet_archives', ['id' => $reports[$i]]), + 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport', + ), + ), + array_keys($reports), + ), + )) + ->for($place->player) + ], + default => throw new \RuntimeException(sprintf('Unknown notification type %s', $case)), + }; + + foreach ($notifications as $notification) { + $this->notificationRepository->save($notification); + } + } +} diff --git a/src/Modules/Gaia/Manager/SectorManager.php b/src/Modules/Gaia/Manager/SectorManager.php new file mode 100644 index 000000000..00de6326d --- /dev/null +++ b/src/Modules/Gaia/Manager/SectorManager.php @@ -0,0 +1,87 @@ + + */ + public function calculateOwnership(Sector $sector): array + { + $systems = $this->systemRepository->getSectorSystems($sector); + $bases = $this->orbitalBaseRepository->getSectorBases($sector); + $scores = []; + + foreach ($bases as $base) { + $player = $base->player; + + $scores[$player->faction->identifier] = + (!empty($scores[$player->faction->identifier])) + ? $scores[$player->faction->identifier] + $this->scores[$base->typeOfBase] + : $this->scores[$base->typeOfBase] + ; + } + // For each system, the owning faction gains two points + foreach ($systems as $system) { + if (null === $system->faction) { + continue; + } + $scores[$system->faction->identifier] = (!empty($scores[$system->faction->identifier])) + ? $scores[$system->faction->identifier] + self::CONTROLLED_SYSTEM_POINTS + : self::CONTROLLED_SYSTEM_POINTS; + } + $scores[0] = 0; + arsort($scores); + + $newColor = key($scores); + $score = $scores[$newColor]; + $hasEnoughPoints = $score >= $this->sectorMinimalScore; + + $currentFactionIdentifier = $sector->faction?->identifier ?? 0; + + if (!$hasEnoughPoints) { + // If this is a prime sector, we do not pull back the color from the sector + // TODO check behavior if another faction has taken the prime sector before + if (!$sector->prime) { + $sector->faction = null; + } + } elseif ($currentFactionIdentifier !== $newColor && $score > $scores[$currentFactionIdentifier]) { + $sector->faction = $this->colorRepository->getOneByIdentifier($newColor); + } + + $this->sectorRepository->save($sector); + + $this->redisManager->getConnection()->set('sector:' . $sector->id, serialize($scores)); + + return $scores; + } +} diff --git a/src/Modules/Gaia/Message/PlaceUpdateMessage.php b/src/Modules/Gaia/Message/PlaceUpdateMessage.php new file mode 100644 index 000000000..340ae0735 --- /dev/null +++ b/src/Modules/Gaia/Message/PlaceUpdateMessage.php @@ -0,0 +1,17 @@ +population / static::COEFFPOPRESOURCE) + * static::COEFFMAXRESOURCE + * ($this->maxDanger + 1) + ); + } + + public function getProducedResources(): int + { + return intval(floor(static::COEFFRESOURCE * $this->population)); + } + + public function lastUpdatedBySystemAt(): \DateTimeImmutable + { + return $this->updatedAt; + } +} diff --git a/src/Modules/Gaia/Model/PointLocation.php b/src/Modules/Gaia/Model/PointLocation.php new file mode 100644 index 000000000..938644bd2 --- /dev/null +++ b/src/Modules/Gaia/Model/PointLocation.php @@ -0,0 +1,85 @@ +pointOnVertex = $pointOnVertex; + + // Transform string coordinates into arrays with x and y values + $point = $this->pointStringToCoordinates($point); + + $vertices = []; + for ($i = 0; $i < count($polygon); $i += 2) { + $vertices[] = ['x' => $polygon[$i], 'y' => $polygon[$i + 1]]; + } + // Add the first at the end to close the polygon + $vertices[] = ['x' => $polygon[0], 'y' => $polygon[1]]; + + // Check if the point sits exactly on a vertex + if (true == $this->pointOnVertex and true == $this->pointOnVertex($point, $vertices)) { + // sur un angle + return 1; + } + + // Check if the point is inside the polygon or on the boundary + $intersections = 0; + $verticesCount = count($vertices); + + for ($i = 1; $i < $verticesCount; ++$i) { + $vertex1 = $vertices[$i - 1]; + $vertex2 = $vertices[$i]; + + if ($vertex1['y'] == $vertex2['y'] + and $vertex1['y'] == $point['y'] + and $point['x'] > min($vertex1['x'], $vertex2['x']) + and $point['x'] < max($vertex1['x'], $vertex2['x'])) { + // sur une ligne + return 2; + } + + if ($point['y'] > min($vertex1['y'], $vertex2['y']) + and $point['y'] <= max($vertex1['y'], $vertex2['y']) + and $point['x'] <= max($vertex1['x'], $vertex2['x']) + and $vertex1['y'] != $vertex2['y']) { + $xinters = ($point['y'] - $vertex1['y']) * ($vertex2['x'] - $vertex1['x']) / ($vertex2['y'] - $vertex1['y']) + $vertex1['x']; + if ($xinters == $point['x']) { + // sur une ligne + return 2; + } + if ($vertex1['x'] == $vertex2['x'] || $point['x'] <= $xinters) { + ++$intersections; + } + } + } + + // If the number of edges we passed through is even, then it's in the polygon. + if (0 != $intersections % 2) { + // a l'interieur + return 3; + } else { + // a l'exterieur + return 0; + } + } + + public function pointOnVertex($point, $vertices) + { + foreach ($vertices as $vertex) { + if ($point == $vertex) { + return true; + } + } + } + + public function pointStringToCoordinates($pointString) + { + $coordinates = explode(',', (string) $pointString); + + return ['x' => $coordinates[0], 'y' => $coordinates[1]]; + } +} diff --git a/src/Modules/Gaia/Model/Sector.php b/src/Modules/Gaia/Model/Sector.php new file mode 100644 index 000000000..d4de04644 --- /dev/null +++ b/src/Modules/Gaia/Model/Sector.php @@ -0,0 +1,27 @@ +find($id); + } + + public function getByIds(array $ids): array + { + return $this->findBy([ + 'id' => $ids, + ]); + } + + public function getSystemPlaces(System $system): array + { + return $this->findBy( + ['system' => $system], + ['position' => 'ASC'], + ); + } + + public function getAll(): Collection + { + return $this->matching( + Criteria::create() + ->where(Criteria::expr()->eq('typeOfPlace', Place::TERRESTRIAL)) + ->orderBy(['id' => 'ASC']) + ); + } + + public function findPlacesIdsForANewBase(Sector $sector): array + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->select('p.id') + ->join('p.system', 'sys') + ->where('IDENTITY(sys.sector) = :sector_id') + ->andWhere('p.player IS NULL') + ->andWhere('p.typeOfPlace = :type_of_place') + ->setParameter('type_of_place', Place::TERRESTRIAL) + ->setParameter('sector_id', $sector->id->toBinary()) + ->orderBy('p.population', 'ASC') + ->setMaxResults(30); + + return array_map( + fn (string $bytes) => Uuid::fromBinary($bytes), + $qb->getQuery()->getSingleColumnResult(), + ); + } + + public function search(string $search): array + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->join('p.player', 'pl') + ->join('p.base', 'ob') + ->where($qb->expr()->andX( + $qb->expr()->orX( + $qb->expr()->in('pl.statement', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) + ), + $qb->expr()->orX( + $qb->expr()->like('LOWER(pl.name)', 'LOWER(:search)'), + $qb->expr()->like('LOWER(ob.name)', 'LOWER(:search)'), + ), + )) + ->orderBy('pl.id', 'DESC') + ->setMaxResults(20) + ->setParameter('search', "%$search%"); + + return $qb->getQuery()->getResult(); + } + + public function npcQuickfix(): void + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->update() + ->set('p.danger', 'p.maxDanger') + ->where('p.danger > p.maxDanger'); + + $qb->getQuery()->execute(); + } +} diff --git a/src/Modules/Gaia/Repository/SectorRepository.php b/src/Modules/Gaia/Repository/SectorRepository.php new file mode 100644 index 000000000..29ac7e17f --- /dev/null +++ b/src/Modules/Gaia/Repository/SectorRepository.php @@ -0,0 +1,50 @@ +find($id); + } + + public function getOneByIdentifier(int $identifier): Sector|null + { + return $this->findOneBy(['identifier' => $identifier]); + } + + public function getFactionSectors(Color $faction): array + { + return $this->findBy([ + 'faction' => $faction, + ]); + } + + public function countFactionSectors(Color $faction): int + { + return $this->count([ + 'faction' => $faction, + ]); + } + + public function getAll(): array + { + return $this->findAll(); + } +} diff --git a/src/Modules/Gaia/Repository/SystemRepository.php b/src/Modules/Gaia/Repository/SystemRepository.php new file mode 100644 index 000000000..cf6fc41f3 --- /dev/null +++ b/src/Modules/Gaia/Repository/SystemRepository.php @@ -0,0 +1,38 @@ +find($id); + } + + public function getAll(): array + { + return $this->findAll(); + } + + public function getSectorSystems(Sector $sector): array + { + return $this->findBy([ + 'sector' => $sector, + ]); + } +} diff --git a/src/Modules/Gaia/Resource/PlaceResource.php b/src/Modules/Gaia/Resource/PlaceResource.php new file mode 100644 index 000000000..749ca27fa --- /dev/null +++ b/src/Modules/Gaia/Resource/PlaceResource.php @@ -0,0 +1,70 @@ + 'Colonie', + 'desc' => 'Peu évoluée, la colonie vous donne accès aux bâtiments de base mais jusqu\'à un niveau peu élevé. Elle se trouvera généralement aux extrémités de votre empire et servira de relai pour l\'expansion de ce dernier.', + + 'price' => 0, + 'school-size' => 3, + + 'tax' => 1, + 'l-line' => 1, + 'l-line-position' => [2], + 'r-line' => 1, + 'r-line-position' => [2], + ], + [ + 'name' => 'Centre Industriel', + 'desc' => 'Le centre industriel vous permet de produire beaucoup plus de ressouces en permettant d\'agrandir la raffinerie. Plus d\'impôts sont perçus à la population, vous avez donc plus de crédits à disposition à chaque relève. Les usines peuvent tourner nuit et jour et sont plus efficientes. Un plus grand impact commercial est possible.', + + 'price' => 250000, + 'school-size' => 3, + + 'tax' => 1.25, + 'l-line' => 1, + 'l-line-position' => [2], + 'r-line' => 1, + 'r-line-position' => [2], + ], + [ + 'name' => 'Base Militaire', + 'desc' => 'Place forte militaire, cette planète dispose d\'un nombre important de flottes en orbite, prêtes à défendre ou à attaquer. Elle dispose en outre de très bons chantiers de construction de vaisseaux.', + + 'price' => 250000, + 'school-size' => 8, + + 'tax' => 0.5, + 'l-line' => 3, + 'l-line-position' => [1, 2, 3], + 'r-line' => 2, + 'r-line-position' => [1, 3], + ], + [ + 'name' => 'Capitale', + 'desc' => 'Une capitale est chère, mais son efficacité, tant commerciale que militaire, vous fera vous développer considérablement plus vite. Vous ne pouvez créer qu’une capitale pour votre empire, néanmoins vous pouvez conquérir celles des joueurs ennemis pour en disposer de plusieurs.', + + 'price' => 1000000, + 'school-size' => 8, + + 'tax' => 1.25, + 'l-line' => 3, + 'l-line-position' => [1, 2, 3], + 'r-line' => 2, + 'r-line-position' => [1, 3], + ], + ]; +} diff --git a/src/Modules/Gaia/Resource/SquadronResource.php b/src/Modules/Gaia/Resource/SquadronResource.php new file mode 100644 index 000000000..f23690e9f --- /dev/null +++ b/src/Modules/Gaia/Resource/SquadronResource.php @@ -0,0 +1,81 @@ + 1, + 'frenchName' => 'Cimetière Spatial', + ], + [ + 'id' => 2, + 'frenchName' => 'Nébuleuse', + ], + [ + 'id' => 3, + 'frenchName' => 'Géante Bleue', + ], + [ + 'id' => 4, + 'frenchName' => 'Naine Jaune', + ], + [ + 'id' => 5, + 'frenchName' => 'Naine Rouge', + ], + ]; +} diff --git a/src/Modules/Gaia/Resource/config/config.yml b/src/Modules/Gaia/Resource/config/config.yml new file mode 100644 index 000000000..f665d5bd5 --- /dev/null +++ b/src/Modules/Gaia/Resource/config/config.yml @@ -0,0 +1,29 @@ +--- +parameters: + gaia.limit_conquest_sector: 4 + gaia.scores: [1, 3, 5, 10] + gaia.sector_minimal_score: 10 + +services: + _defaults: + autowire: true + autoconfigure: true + + App\Modules\Gaia\: + resource: '%kernel.project_dir%/src/Modules/Gaia/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Gaia\Helper\GalaxyGenerator: ~ + + App\Modules\Gaia\Galaxy\GalaxyConfiguration: + public: true + class: "%gaia.galaxy_configuration.class%" + + App\Modules\Gaia\EventListener\SystemListener: + arguments: + $scores: "%gaia.scores%" + tags: + - {name: "kernel.event_listener", event: "gaia.place_owner_change", method: "onPlaceOwnerChange", priority: 2} diff --git a/src/Modules/Gaia/Ui/Http/LoadSystem.php b/src/Modules/Gaia/Ui/Http/LoadSystem.php new file mode 100644 index 000000000..5ef4fe24f --- /dev/null +++ b/src/Modules/Gaia/Ui/Http/LoadSystem.php @@ -0,0 +1,66 @@ +get($id) ?? throw $this->createNotFoundException('System not found'); + + $places = $placeRepository->getSystemPlaces($system); + + $movingCommanders = $commanderRepository->getPlayerCommanders($currentPlayer, [Commander::MOVING]); + + $placesIds = array_map(fn (Place $place) => $place->id, $places); + + $basesCount = $orbitalBaseManager->getPlayerBasesCount($movingCommanders); + + return $this->render('components/map/system_details.html.twig', [ + 'system' => $system, + 'places' => $places, + 'moving_commanders' => $movingCommanders, + 'technologies' => $technologyRepository->getPlayerTechnology($currentPlayer), + 'recycling_missions' => $recyclingMissionRepository->getBaseActiveMissions($currentBase), + 'spy_reports' => $spyReportRepository->getSystemReports($currentPlayer, $placesIds), + 'combat_reports' => $reportRepository->getAttackReportsByPlaces($currentPlayer, $placesIds), + 'colonization_cost' => $conquestManager->getColonizationCost($currentPlayer, $basesCount), + 'conquest_cost' => $conquestManager->getConquestCost($currentPlayer, $basesCount), + ]); + } +} diff --git a/src/Modules/Gaia/Ui/Http/ViewMapSandbox.php b/src/Modules/Gaia/Ui/Http/ViewMapSandbox.php new file mode 100644 index 000000000..777aab34c --- /dev/null +++ b/src/Modules/Gaia/Ui/Http/ViewMapSandbox.php @@ -0,0 +1,21 @@ +render('pages/gaia/map_sandbox.html.twig', [ + 'sectors' => $sectorRepository->getAll(), + 'systems' => $systemRepository->getAll(), + ]); + } +} diff --git a/src/Modules/Gaia/Ui/Twig/Components/Atoms/CommanderAlert.php b/src/Modules/Gaia/Ui/Twig/Components/Atoms/CommanderAlert.php new file mode 100644 index 000000000..64311f17a --- /dev/null +++ b/src/Modules/Gaia/Ui/Twig/Components/Atoms/CommanderAlert.php @@ -0,0 +1,17 @@ + */ + public array $values; + public int|float $coeff; + public string $mediaPath; +} diff --git a/src/Modules/Gaia/Ui/Twig/Components/Molecules/CommanderTile.php b/src/Modules/Gaia/Ui/Twig/Components/Molecules/CommanderTile.php new file mode 100644 index 000000000..8512d4717 --- /dev/null +++ b/src/Modules/Gaia/Ui/Twig/Components/Molecules/CommanderTile.php @@ -0,0 +1,19 @@ + */ + public array $combatReports; + /** @var list */ + public array $spyReports; +} diff --git a/src/Modules/Hephaistos/Application/EventListener/ExceptionListener.php b/src/Modules/Hephaistos/Application/EventListener/ExceptionListener.php new file mode 100644 index 000000000..2673af49d --- /dev/null +++ b/src/Modules/Hephaistos/Application/EventListener/ExceptionListener.php @@ -0,0 +1,42 @@ +getThrowable(); + + if (!$exception instanceof HttpExceptionInterface) { + return; + } + + $request = $event->getRequest(); + if (null === ($referer = $request->headers->get('referer'))) { + return; + } + + if (!str_contains((string) $request->headers->get('accept'), 'text/html')) { + return; + } + + $flashCode = match ($exception->getStatusCode()) { + Response::HTTP_CONFLICT => '103', + default => 'error', + }; + + $request->getSession()->getFlashBag()->add($flashCode, $exception->getMessage()); + + $event->setResponse(new RedirectResponse($referer)); + } +} diff --git a/src/Modules/Hephaistos/Cli/PopulateDatabase.php b/src/Modules/Hephaistos/Cli/PopulateDatabase.php new file mode 100644 index 000000000..97056964f --- /dev/null +++ b/src/Modules/Hephaistos/Cli/PopulateDatabase.php @@ -0,0 +1,244 @@ +writeln('Factions creation'); + $date = new \DateTimeImmutable('-500000 seconds'); + + $rebelFaction = new Color( + id: Uuid::v4(), + identifier: ColorResource::NO_FACTION, + isClosed: true, + isInGame: true, + lastElectionHeldAt: $date, + ); + + $this->colorRepository->save($rebelFaction); + + $relations = array_reduce( + $this->availableFactions, + fn (array $relations, int $factionId) => array_merge($relations, [$factionId => Color::NEUTRAL]), + [], + ); + + foreach ($this->availableFactions as $factionId) { + $faction = new Color( + Uuid::v4(), + identifier: $factionId, + alive: true, + electionStatement: Color::MANDATE, + regime: ColorResource::getInfo($factionId, 'regime'), + isInGame: true, + relations: array_filter( + $relations, + fn (int $identifier) => $identifier !== $factionId, + ARRAY_FILTER_USE_KEY, + ), + lastElectionHeldAt: $date, + ); + + $this->colorRepository->save($faction); + } + + // -------------------------------------------------------------------------------------------- + $output->writeln('Ajout du Joueur Gaia'); + + $p = new Player(); + $p->status = Player::STANDARD; + $p->credit = 10000000; + $p->experience = 15000; + $p->factionPoint = 0; + $p->level = 5; + $p->victory = 0; + $p->defeat = 0; + $p->stepTutorial = 0; + $p->stepDone = false; + $p->iUniversity = 0; + $p->partNaturalSciences = 25; + $p->partLifeSciences = 25; + $p->partSocialPoliticalSciences = 25; + $p->partInformaticEngineering = 25; + $p->uPlayer = new \DateTimeImmutable(); + $p->dInscription = new \DateTimeImmutable(); + $p->dLastConnection = new \DateTimeImmutable(); + $p->dLastActivity = new \DateTimeImmutable(); + $p->premium = false; + $p->statement = Player::DEAD; + + // @TODO remove Rebel player + $rebelPlayer = clone $p; + $rebelPlayer->id = 1; + $rebelPlayer->bind = Utils::generateString(25); + $rebelPlayer->name = 'Rebelle'; + $rebelPlayer->avatar = 'rebel'; + $this->playerRepository->save($rebelPlayer); + + // @TODO remove Assistant player + $assistantPlayer = clone $p; + $assistantPlayer->id = 2; + $assistantPlayer->bind = Utils::generateString(25); + $assistantPlayer->name = 'Jean-Mi'; + $assistantPlayer->avatar = 'jm'; + $this->playerRepository->save($assistantPlayer); + + // @TODO remove faction players + foreach ($this->availableFactions as $factionId) { + $p = clone $p; + $p->bind = Utils::generateString(25); + $p->name = ColorResource::getInfo($factionId, 'officialName'); + $p->avatar = ('color-'.$factionId); + $p->faction = $this->colorRepository->getOneByIdentifier($factionId); + $p->status = 6; + $this->playerRepository->save($p); + } + + $output->writeln('Remplissage de la table transaction'); + + $transactionData = [ + [Transaction::TYP_RESOURCE, 8, 10, 1.26], + [Transaction::TYP_COMMANDER, 1, 12, 12], + [Transaction::TYP_SHIP, 8, 15, 1.875], + ]; + + foreach ($transactionData as [$type, $quantity, $price, $currentRate]) { + // @TODO forbid nullable bases for transactions when these are no longer required to make the transaction system work. + $transaction = new Transaction( + id: Uuid::v4(), + player: $rebelPlayer, + base: null, + type: $type, + quantity: $quantity, + identifier: 0, + publishedAt: new \DateTimeImmutable(), + currentRate: $currentRate, + price: $price, + statement: Transaction::ST_COMPLETED, + validatedAt: new \DateTimeImmutable(), + ); + + $this->transactionRepository->save($transaction); + } + + $output->writeln('Remplissage de la table commercialTax'); + + // génération des taxes + foreach ($this->availableFactions as $factionId) { + $faction = $this->colorRepository->getOneByIdentifier($factionId) + ?? throw new \InvalidArgumentException('Faction not found'); + + foreach ($this->availableFactions as $rfactionId) { + $relatedFaction = $this->colorRepository->getOneByIdentifier($rfactionId) + ?? throw new \InvalidArgumentException('Related faction not found'); + + $commercialTax = new CommercialTax( + id: Uuid::v4(), + faction: $faction, + relatedFaction: $relatedFaction, + exportTax: 5, + importTax: 5, + ); + + $this->commercialTaxRepository->save($commercialTax); + } + } + + $output->writeln('Remplissage des conversations'); + + // conv jeanmi + $conv = new Conversation( + id: Uuid::v4(), + title: 'Jean-Mi, administrateur système', + messagesCount: 0, + createdAt: new \DateTimeImmutable(), + lastMessageAt: new \DateTimeImmutable(), + type: Conversation::TY_SYSTEM, + ); + $this->conversationRepository->save($conv); + + $user = new ConversationUser( + id: Uuid::v4(), + conversation: $conv, + player: $assistantPlayer, + lastViewedAt: new \DateTimeImmutable(), + playerStatus: ConversationUser::US_ADMIN, + conversationStatus: ConversationUser::CS_DISPLAY, + ); + $this->conversationUserRepository->save($user); + + foreach ($this->availableFactions as $factionId) { + $faction = $this->colorRepository->getOneByIdentifier($factionId); + $player = $this->playerRepository->getFactionAccount($faction); + + $conv = new Conversation( + id: Uuid::v4(), + title: 'Communication de '.ColorResource::getInfo($player->faction->identifier, 'popularName'), + messagesCount: 0, + createdAt: new \DateTimeImmutable(), + lastMessageAt: new \DateTimeImmutable(), + type: Conversation::TY_SYSTEM, + ); + $this->conversationRepository->save($conv); + + $user = new ConversationUser( + id: Uuid::v4(), + conversation: $conv, + player: $player, + lastViewedAt: new \DateTimeImmutable(), + playerStatus: ConversationUser::US_ADMIN, + conversationStatus: ConversationUser::CS_DISPLAY, + ); + $this->conversationUserRepository->save($user); + } + + $output->writeln('Génération de la galaxie'); + + $this->galaxyGenerator->generate(); + // echo $galaxyGenerator->getLog(); + + return self::SUCCESS; + } +} diff --git a/src/Modules/Hephaistos/Cli/ScheduleActions.php b/src/Modules/Hephaistos/Cli/ScheduleActions.php new file mode 100644 index 000000000..46dc5e650 --- /dev/null +++ b/src/Modules/Hephaistos/Cli/ScheduleActions.php @@ -0,0 +1,45 @@ + $schedulers + */ + public function __construct( + #[TaggedIterator('app.scheduler')] + private readonly iterable $schedulers + ) { + parent::__construct(); + } + + public function execute(InputInterface $input, OutputInterface $output): int + { + $style = new SymfonyStyle($input, $output); + + foreach ($this->schedulers as $scheduler) { + $style->info(\sprintf('Scheduling %s actions', $scheduler::class)); + + $scheduler->schedule(); + } + + $style->success('All schedulers have been processed !'); + + return self::SUCCESS; + } +} diff --git a/src/Modules/Hephaistos/Handler/DailyRoutineHandler.php b/src/Modules/Hephaistos/Handler/DailyRoutineHandler.php new file mode 100644 index 000000000..3c9d723fd --- /dev/null +++ b/src/Modules/Hephaistos/Handler/DailyRoutineHandler.php @@ -0,0 +1,68 @@ +notificationRepository->cleanNotifications( + $this->notificationsReadTimeout, + $this->notificationsUnreadTimeout + ); + + $this->playerFinancialReportRepository->cleanPlayerFinancialReports($this->playerFinancialReportsTimeout); + + $players = $this->playerRepository->getByStatements([Player::ACTIVE, Player::INACTIVE]); + $nbPlayers = count($players); + // @TODO understand this strange loop condition + for ($i = $nbPlayers - 1; $i >= 0; --$i) { + $player = $players[$i]; + $hoursSinceLastConnection = $this->durationHandler->getHoursDiff($player->dLastConnection, $this->clock->now()); + if ($hoursSinceLastConnection >= $this->playerInactiveTimeLimit) { + $this->playerManager->kill($player); + } elseif ($hoursSinceLastConnection >= $this->playerGlobalInactiveTime && Player::ACTIVE === $player->statement) { + $player->statement = Player::INACTIVE; + $this->playerRepository->save($player); + +// if ('enabled' === $this->apiMode) { +// // sending email API call +// // TODO Modify this behavior +// // $this->api->sendMail($player->bind, API::TEMPLATE_INACTIVE_PLAYER); +// } + } + } + } +} diff --git a/src/Modules/Hephaistos/HephaistosModule.php b/src/Modules/Hephaistos/HephaistosModule.php new file mode 100644 index 000000000..673842014 --- /dev/null +++ b/src/Modules/Hephaistos/HephaistosModule.php @@ -0,0 +1,13 @@ +timeMode) { + TimeMode::Standard => ['0 * * * *', '0 3 * * *'], + TimeMode::Fast => ['*/10 * * * *', '0 * * * *'], + }; + + return (new Schedule())->add( + // Hourly schedule + RecurringMessage::cron($hourlySchedule, new PlayersCreditsUpdateMessage()), + RecurringMessage::cron($hourlySchedule, new CommandersSchoolExperienceMessage()), + RecurringMessage::cron($hourlySchedule, new PlacesUpdateMessage()), + RecurringMessage::cron($hourlySchedule, new BasesUpdateMessage()), + // Night schedule + RecurringMessage::cron($nightlySchedule, new DailyRoutineMessage()), + RecurringMessage::cron($nightlySchedule, new RankingCreationMessage()), + ); + } +} diff --git a/src/Modules/Hephaistos/Message/DailyRoutineMessage.php b/src/Modules/Hephaistos/Message/DailyRoutineMessage.php new file mode 100644 index 000000000..2683c08be --- /dev/null +++ b/src/Modules/Hephaistos/Message/DailyRoutineMessage.php @@ -0,0 +1,9 @@ +title = $title; + + return $this; + } + + public function setContent(string ...$content): self + { + $this->content = implode('', $content); + + return $this; + } + + public function addContent(string ...$content): self + { + $this->content .= implode('', $content); + + return $this; + } + + public static function paragraph(string ...$content): string + { + return sprintf('

%s

', implode('', $content)); + } + + public static function bold($text): string + { + return sprintf('%s', $text); + } + + public static function link($href, $label): string + { + return sprintf('%s', $href, $label); + } + + public static function divider(): string + { + return '
'; + } + + /** + * @param self::RESOURCE_TYPE_* $type + */ + public static function resourceBox(string $type, int|string $value, string $label): string + { + return sprintf( + '', + $type, + $value, + $label + ); + } + + public function for(Player $player): Notification + { + return new Notification( + id: Uuid::v4(), + player: $player, + title: $this->title, + content: $this->content, + read: false, + archived: false, + ); + } +} diff --git a/src/Modules/Hermes/Domain/Repository/ConversationMessageRepositoryInterface.php b/src/Modules/Hermes/Domain/Repository/ConversationMessageRepositoryInterface.php new file mode 100644 index 000000000..1310602e8 --- /dev/null +++ b/src/Modules/Hermes/Domain/Repository/ConversationMessageRepositoryInterface.php @@ -0,0 +1,18 @@ + + */ +interface ConversationMessageRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return list + */ + public function getConversationMessages(Conversation $conversation, int $messagesPage): array; +} diff --git a/src/Modules/Hermes/Domain/Repository/ConversationRepositoryInterface.php b/src/Modules/Hermes/Domain/Repository/ConversationRepositoryInterface.php new file mode 100644 index 000000000..77eb7144a --- /dev/null +++ b/src/Modules/Hermes/Domain/Repository/ConversationRepositoryInterface.php @@ -0,0 +1,25 @@ + + */ + public function getPlayerConversations(Player $player, int $mode, int $page = 1): array; +} diff --git a/src/Modules/Hermes/Domain/Repository/ConversationUserRepositoryInterface.php b/src/Modules/Hermes/Domain/Repository/ConversationUserRepositoryInterface.php new file mode 100644 index 000000000..b4c709523 --- /dev/null +++ b/src/Modules/Hermes/Domain/Repository/ConversationUserRepositoryInterface.php @@ -0,0 +1,14 @@ + + */ +interface ConversationUserRepositoryInterface extends EntityRepositoryInterface +{ + +} diff --git a/src/Modules/Hermes/Domain/Repository/NotificationRepositoryInterface.php b/src/Modules/Hermes/Domain/Repository/NotificationRepositoryInterface.php new file mode 100644 index 000000000..b29822e0e --- /dev/null +++ b/src/Modules/Hermes/Domain/Repository/NotificationRepositoryInterface.php @@ -0,0 +1,41 @@ + + */ +interface NotificationRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): Notification|null; + + /** + * @return list + */ + public function getUnreadNotifications(Player $player, int|null $limit = null): array; + + public function countUnreadNotifications(Player $player): int; + + /** + * @return list + */ + public function getPlayerNotificationsByArchive(Player $player, bool $isArchived): array; + + /** + * @return list + */ + public function getMultiCombatNotifications( + Player $commanderPlayer, + Player $placePlayer, + \DateTimeImmutable $arrivedAt, + ): array; + + public function removePlayerNotifications(Player $player): int; + + public function cleanNotifications(int $readTimeout, int $unreadTimeout): int; +} diff --git a/src/Modules/Hermes/HermesModule.php b/src/Modules/Hermes/HermesModule.php new file mode 100644 index 000000000..d31739088 --- /dev/null +++ b/src/Modules/Hermes/HermesModule.php @@ -0,0 +1,13 @@ +info(sprintf( + 'Cleaning notifications. Read timeout : %d days, Unread timeout : %d days', + $this->notificationsReadTimeout, + $this->notificationsUnreadTimeout, + )); + + $this->notificationRepository->cleanNotifications( + $this->notificationsReadTimeout, + $this->notificationsUnreadTimeout, + ); + + $style->success('Successfully cleaned notifications.'); + + return static::SUCCESS; + } +} diff --git a/src/Modules/Hermes/Infrastructure/Command/SynchronizePlayerConversations.php b/src/Modules/Hermes/Infrastructure/Command/SynchronizePlayerConversations.php new file mode 100644 index 000000000..178e69002 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Command/SynchronizePlayerConversations.php @@ -0,0 +1,103 @@ +factionRepository->getInGameFactions(); + + foreach ($factions as $faction) { + $factionName = ColorResource::getInfo($faction->identifier, 'officialName'); + $style->info(sprintf('Processing faction conversation : %s', $factionName)); + + $factionAccount = $this->playerRepository->getFactionAccount($faction) + ?? throw new \RuntimeException(sprintf('Faction account not found for %s', $factionName)); + $factionConversation = $this->conversationRepository->getOneByPlayer($factionAccount); + + $players = $this->playerRepository->getFactionPlayersByName($faction); + + $this->includeMissingPlayers($factionConversation, $players, $style); + } + + $style->info('Processing system conversation'); + + $systemPlayer = $this->playerRepository->get($this->jeanMiId) + ?? throw new \RuntimeException('Missing system Player'); + $systemConversation = $this->conversationRepository->getOneByPlayer($systemPlayer); + + $this->includeMissingPlayers($systemConversation, $this->playerRepository->getActivePlayers(), $style); + + return self::SUCCESS; + } + + /** + * @param list $players + */ + private function includeMissingPlayers(Conversation $conversation, array $players, SymfonyStyle $style): void + { + $missingPlayersCount = 0; + $includedPlayersIds = $conversation->players->map( + fn (ConversationUser $conversationUser) => $conversationUser->player->id + ); + + foreach ($players as $player) { + if ($includedPlayersIds->contains($player->id)) { + continue; + } + $missingPlayersCount++; + + $conversationUser = new ConversationUser( + id: Uuid::v4(), + conversation: $conversation, + player: $player, + lastViewedAt: new \DateTimeImmutable(), + conversationStatus: ConversationUser::CS_ARCHIVED, + ); + + $this->conversationUserRepository->save($conversationUser); + } + + if ($missingPlayersCount > 0) { + $style->success(sprintf('Successfully added %d players in conversation !', $missingPlayersCount)); + } else { + $style->info(sprintf('Conversation already included all %d players !', $includedPlayersIds->count())); + } + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Conversation/Create.php b/src/Modules/Hermes/Infrastructure/Controller/Conversation/Create.php new file mode 100644 index 000000000..b8b80e4e5 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Conversation/Create.php @@ -0,0 +1,119 @@ +request->get('recipients'); + $content = $request->request->get('content'); + + $content = $parser->parse($content); + + if (empty($recipients) || empty($content)) { + throw new BadRequestHttpException('Informations manquantes pour démarrer une nouvelle conversation.'); + } + + if (strlen($content) > 10000) { + throw new BadRequestHttpException('Le message est trop long.'); + } + // traitement des utilisateurs multiples + $recipients = explode(',', $recipients); + $plId = $currentPlayer->id; + $recipients = array_filter($recipients, fn ($recipientId) => $recipientId !== $plId); + + if (count($recipients) > ConversationUser::MAX_USERS) { + throw new BadRequestHttpException('Nombre maximum de joueur atteint.'); + } + // chargement des utilisateurs + $players = $playerRepository->getByIdsAndStatements($recipients, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); + + if (count($players) < 1) { + throw new ConflictHttpException('Le joueur n\'est pas joignable.'); + } + + // créer la conversation + $conv = new Conversation( + id: Uuid::v4(), + type: Conversation::TY_USER, + messagesCount: 1, + createdAt: new \DateTimeImmutable(), + lastMessageAt: new \DateTimeImmutable(), + ); + + $entityManager->persist($conv); + + // créer le user créateur de la conversation + $user = new ConversationUser( + id: Uuid::v4(), + conversation: $conv, + player: $currentPlayer, + lastViewedAt: new \DateTimeImmutable(), + playerStatus: ConversationUser::US_ADMIN, + ); + + $entityManager->persist($user); + + // créer la liste des users + foreach ($players as $player) { + $user = new ConversationUser( + id: Uuid::v4(), + conversation: $conv, + player: $player, + lastViewedAt: null, + ); + + $entityManager->persist($user); + } + + // créer le premier message + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conv, + player: $currentPlayer, + type: ConversationMessage::TY_STD, + content: $content, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ); + + $entityManager->persist($message); + $entityManager->flush(); + + $this->addFlash('success', 'La conversation a été créée.'); + + return $this->redirectToRoute('communication_center', [ + 'conversationId' => $conv->id + ]); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Conversation/Message/Create.php b/src/Modules/Hermes/Infrastructure/Controller/Conversation/Message/Create.php new file mode 100644 index 000000000..f359dc64e --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Conversation/Message/Create.php @@ -0,0 +1,85 @@ + Requirement::UUID_V4, + ], + methods: Request::METHOD_POST, + )] + public function __invoke( + Request $request, + Player $currentPlayer, + ConversationRepositoryInterface $conversationRepository, + ConversationMessageRepositoryInterface $conversationMessageRepository, + Parser $parser, + Uuid $conversationId, + ): Response { + $conversation = $conversationRepository->getOne($conversationId) + ?? throw $this->createNotFoundException('Conversation not found'); + $content = $request->request->get('content') + ?? throw new BadRequestHttpException('Missing content parameter'); + + if (!$conversation->hasPlayer($currentPlayer)) { + throw $this->createAccessDeniedException('This conversation does not include you'); + } + + $content = $parser->parse($content); + if (strlen($content) >= 10000) { + throw new UnprocessableEntityHttpException('Le message est trop long.'); + } + + if (Conversation::TY_SYSTEM !== $conversation->type) { + $conversation->lastMessageAt = new \DateTimeImmutable(); + + // désarchiver tout les users + foreach ($conversation->players as $conversationUser) { + $conversationUser->conversationStatus = ConversationUser::CS_DISPLAY; + + if ($conversationUser->player->id === $currentPlayer->id) { + $conversationUser->lastViewedAt = new \DateTimeImmutable(); + } + } + + $conversation->messagesCount++; + // création du message + $message = new ConversationMessage( + id: Uuid::v4(), + conversation: $conversation, + player: $currentPlayer, + content: $content, + createdAt: new \DateTimeImmutable(), + type: ConversationMessage::TY_STD, + ); + + $conversationMessageRepository->save($message); + $conversationRepository->save($conversation); + } + return $this->redirectToRoute('communication_center', [ + 'conversationId' => $conversation->id, + ]); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Conversation/ViewCommunicationCenter.php b/src/Modules/Hermes/Infrastructure/Controller/Conversation/ViewCommunicationCenter.php new file mode 100644 index 000000000..7b93be597 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Conversation/ViewCommunicationCenter.php @@ -0,0 +1,95 @@ + null, + ], + methods: Request::METHOD_GET + )] + public function __invoke( + Request $request, + ConversationRepositoryInterface $conversationRepository, + ConversationUserRepositoryInterface $conversationUserRepository, + ConversationMessageRepositoryInterface $conversationMessageRepository, + NotificationRepositoryInterface $notificationRepository, + PlayerRepositoryInterface $playerRepository, + Player $currentPlayer, + string|null $conversationId = null, + ): Response { + $mode = (ConversationUser::CS_ARCHIVED === $request->query->getInt('mode')) + ? ConversationUser::CS_ARCHIVED + : ConversationUser::CS_DISPLAY; + $startNewConversation = false; + $page = $request->query->get('page', 1); + $messagesPage = $request->query->get('messages_page', 1); + $conversation = $playerLastViewedAt = null; + $messages = []; + $recipient = null; + + if (null !== $conversationId) { + if ('new' === $conversationId) { + $startNewConversation = true; + + if (!empty($recipientId = $request->query->get('sendto'))) { + $recipient = $playerRepository->get($recipientId); + } + } else { + if (!Uuid::isValid($conversationId)) { + throw new BadRequestHttpException('Invalid Conversation ID'); + } + + $conversation = $conversationRepository->getOne(Uuid::fromString($conversationId)); + + if (!$conversation->hasPlayer($currentPlayer)) { + throw $this->createAccessDeniedException('You are not part of this conversation'); + } + + $messages = $conversationMessageRepository->getConversationMessages($conversation, $messagesPage); + $playerPart = $conversation->getPlayerPart($currentPlayer); + $playerLastViewedAt = $playerPart->lastViewedAt; + + $playerPart->lastViewedAt = $this->now(); + + $conversationUserRepository->save($playerPart); + } + } + + return $this->render('pages/hermes/communication_center.html.twig', [ + 'conversations' => $conversationRepository->getPlayerConversations($currentPlayer, $mode, $page), + 'mode' => $mode, + 'start_new_conversation' => $startNewConversation, + 'conversation' => $conversation, + 'page' => $page, + 'messages' => $messages, + 'messages_page' => $messagesPage, + 'player_last_viewed_at' => $playerLastViewedAt, + 'recipient_id' => $recipient?->id, + 'recipient_name' => $recipient?->name, + 'notifications' => $notificationRepository->getPlayerNotificationsByArchive($currentPlayer, false), + 'archived_notifications' => $notificationRepository->getPlayerNotificationsByArchive($currentPlayer, true), + ]); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Notification/Archive.php b/src/Modules/Hermes/Infrastructure/Controller/Notification/Archive.php new file mode 100644 index 000000000..839407ef0 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Notification/Archive.php @@ -0,0 +1,42 @@ +get($id))) { + throw new NotFoundHttpException('Notification not found'); + } + // TODO replace with voter + if ($notification->player->id !== $currentPlayer->id) { + throw new AccessDeniedHttpException(); + } + $notification->archived = !$notification->archived; + $notificationRepository->save($notification); + + return ($request->isXmlHttpRequest()) + ? new Response('', 204) + : $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Notification/Delete.php b/src/Modules/Hermes/Infrastructure/Controller/Notification/Delete.php new file mode 100644 index 000000000..bdce7ec95 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Notification/Delete.php @@ -0,0 +1,41 @@ +get($id))) { + throw new NotFoundHttpException('Notification not found'); + } + // TODO replace with Voter + if ($notification->player->id !== $currentPlayer->id) { + throw new AccessDeniedHttpException(); + } + $notificationRepository->remove($notification); + + return ($request->isXmlHttpRequest()) + ? new Response('', 204) + : $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Notification/DeleteAll.php b/src/Modules/Hermes/Infrastructure/Controller/Notification/DeleteAll.php new file mode 100644 index 000000000..4b5ecdd90 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Notification/DeleteAll.php @@ -0,0 +1,38 @@ +removePlayerNotifications($currentPlayer); + + if ($nbr > 1) { + $this->addFlash('success', $nbr.' notifications ont été supprimées.'); + } elseif (1 == $nbr) { + $this->addFlash('success', 'Une notification a été supprimée.'); + } else { + $this->addFlash('success', 'Toutes vos notifications ont déjà été supprimées.'); + } + + return ($request->isXmlHttpRequest()) + ? new Response('', 204) + : $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Notification/Read.php b/src/Modules/Hermes/Infrastructure/Controller/Notification/Read.php new file mode 100644 index 000000000..45dda9c85 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Notification/Read.php @@ -0,0 +1,40 @@ +get($id))) { + throw $this->createNotFoundException('Notification not found'); + } + // TODO replace with Voter + if ($notification->player->id !== $currentPlayer->id) { + throw $this->createAccessDeniedException('Cette notification ne vous appartient pas'); + } + $notification->read = true; + $notificationRepository->save($notification); + + return ($request->isXmlHttpRequest()) + ? new Response('', 204) + : $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Controller/Notification/ReadAll.php b/src/Modules/Hermes/Infrastructure/Controller/Notification/ReadAll.php new file mode 100644 index 000000000..ea119c28c --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Controller/Notification/ReadAll.php @@ -0,0 +1,47 @@ +getUnreadNotifications($currentPlayer); + $nbNotifications = count($notifications); + + foreach ($notifications as $notification) { + $notification->read = true; + } + + $entityManager->flush(); + + if ($nbNotifications > 1) { + $this->addFlash('success', $nbNotifications.' notifications ont été marquées comme lues.'); + } elseif (1 == $nbNotifications) { + $this->addFlash('success', 'Une notification a été marquée comme lue.'); + } else { + $this->addFlash('success', 'Toutes vos notifications ont déjà été lues.'); + } + + return ($request->isXmlHttpRequest()) + ? new Response('', 204) + : $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Repository/ConversationMessageRepository.php b/src/Modules/Hermes/Infrastructure/Repository/ConversationMessageRepository.php new file mode 100644 index 000000000..31b5ff812 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Repository/ConversationMessageRepository.php @@ -0,0 +1,33 @@ +findBy( + criteria: [ + 'conversation' => $conversation, + ], + orderBy: [ + 'createdAt' => 'DESC', + ], + limit: ConversationMessage::MESSAGE_BY_PAGE, + offset: ($messagesPage - 1) * ConversationMessage::MESSAGE_BY_PAGE, + ); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Repository/ConversationRepository.php b/src/Modules/Hermes/Infrastructure/Repository/ConversationRepository.php new file mode 100644 index 000000000..2b8f01d18 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Repository/ConversationRepository.php @@ -0,0 +1,71 @@ +createQueryBuilder('c'); + + $qb + ->leftJoin('c.players', 'cu') + ->where('cu.player = :player') + ->setParameter('player', $player); + + return $qb->getQuery()->getSingleResult(); + } + + public function getOne(Uuid $id): Conversation|null + { + return $this->find($id); + } + + public function countPlayerUnreadConversations(Player $player): int + { + $qb = $this->createQueryBuilder('c'); + + $qb + ->select('COUNT(c.id)') + ->leftJoin('c.players', 'cu') + ->where('cu.player = :player') + ->andWhere($qb->expr()->orX( + $qb->expr()->isNull('cu.lastViewedAt'), + $qb->expr()->lt('cu.lastViewedAt', 'c.lastMessageAt'), + )) + ->setParameter('player', $player); + + return $qb->getQuery()->getSingleScalarResult(); + } + + public function getPlayerConversations(Player $player, int $mode, int $page = 1): array + { + $qb = $this->createQueryBuilder('c'); + + $qb + ->leftJoin('c.players', 'cu') + ->where('cu.player = :player') + ->andWhere('cu.conversationStatus = :mode') + ->orderBy('c.lastMessageAt', 'DESC') + ->setFirstResult(($page - 1) * Conversation::CONVERSATION_BY_PAGE) + ->setMaxResults(Conversation::CONVERSATION_BY_PAGE) + ->setParameter('player', $player) + ->setParameter('mode', $mode); + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Hermes/Infrastructure/Repository/ConversationUserRepository.php b/src/Modules/Hermes/Infrastructure/Repository/ConversationUserRepository.php new file mode 100644 index 000000000..eb5346c45 --- /dev/null +++ b/src/Modules/Hermes/Infrastructure/Repository/ConversationUserRepository.php @@ -0,0 +1,18 @@ +find($id); + } + + public function getUnreadNotifications(Player $player, int|null $limit = null): array + { + $qb = $this->createQueryBuilder('n'); + + $qb + ->where('n.player = :player') + ->andWhere('n.read = false') + ->addOrderBy('n.sentAt', 'DESC') + ->setParameter('player', $player); + + if (null !== $limit) { + $qb->setMaxResults($limit); + } + + return $qb->getQuery()->getResult(); + } + + public function countUnreadNotifications(Player $player): int + { + $qb = $this->createQueryBuilder('n'); + + $qb + ->select('COUNT(n.id)') + ->where('n.player = :player') + ->andWhere('n.read = false') + ->setParameter('player', $player); + + return (int) $qb->getQuery()->getSingleScalarResult(); + } + + public function getPlayerNotificationsByArchive(Player $player, bool $isArchived): array + { + $qb = $this->createQueryBuilder('n'); + + $qb + ->where('n.player = :player') + ->andWhere('n.archived = :is_archived') + ->addOrderBy('n.sentAt', 'DESC') + ->setParameter('player', $player) + ->setParameter('is_archived', $isArchived) + ->setMaxResults(60); + + return $qb->getQuery()->getResult(); + } + + public function getMultiCombatNotifications( + Player $commanderPlayer, + Player $placePlayer, + \DateTimeImmutable $arrivedAt, + ): array { + $qb = $this->createQueryBuilder('n'); + + $qb + ->where($qb->expr()->orX( + $qb->expr()->eq('n.player',':commander_player'), + $qb->expr()->eq('n.player', ':place_player'), + )) + ->andWhere('n.sentAt = :arrived_at') + ->setParameter('commander_player', $commanderPlayer) + ->setParameter('place_player', $placePlayer) + ->setParameter('arrived_at', $arrivedAt); + + return $qb->getQuery()->getResult(); + } + + public function removePlayerNotifications(Player $player): int + { + $qb = $this->createQueryBuilder('n'); + + $qb + ->delete() + ->where('n.player = :player') + ->andWhere('n.archived = false') + ->setParameter('player', $player); + + return $qb->getQuery()->getResult(); + } + + public function cleanNotifications(int $readTimeout, int $unreadTimeout): int + { + $qb = $this->createQueryBuilder('n'); + + $qb + ->delete() + ->where($qb->expr()->orX( + $qb->expr()->andX( + $qb->expr()->eq('n.read', 0), + $qb->expr()->gt('DATE_DIFF(CURRENT_DATE(), n.sentAt)', ':unread_timeout') + ), + $qb->expr()->andX( + $qb->expr()->eq('n.read', 1), + $qb->expr()->gt('DATE_DIFF(CURRENT_DATE(), n.sentAt)', ':read_timeout') + ) + )) + ->setParameter('unread_timeout', $unreadTimeout) + ->setParameter('read_timeout', $readTimeout); + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Hermes/Manager/NotificationManager.php b/src/Modules/Hermes/Manager/NotificationManager.php new file mode 100644 index 000000000..c25622534 --- /dev/null +++ b/src/Modules/Hermes/Manager/NotificationManager.php @@ -0,0 +1,32 @@ +notificationRepository->getMultiCombatNotifications( + $commanderPlayer, + $placePlayer, + $arrivedAt, + ); + $nbNotifications = count($notifications); + if ($nbNotifications > 2) { + for ($i = 0; $i < $nbNotifications - 2; ++$i) { + $this->notificationRepository->remove($notifications[$i]); + } + } + } +} diff --git a/src/Modules/Hermes/Model/Conversation.php b/src/Modules/Hermes/Model/Conversation.php new file mode 100644 index 000000000..ea2868425 --- /dev/null +++ b/src/Modules/Hermes/Model/Conversation.php @@ -0,0 +1,69 @@ + $players */ + public Collection $players = new ArrayCollection(), + ) { + + } + + public function hasPlayer(Player $player): bool + { + foreach ($this->players as $conversationUser) { + if ($conversationUser->player->id === $player->id) { + return true; + } + } + return false; + } + + public function getPlayerPart(Player $player): ConversationUser + { + foreach ($this->players as $conversationUser) { + if ($conversationUser->player->id === $player->id) { + return $conversationUser; + } + } + throw new \RuntimeException('Player not part of this conversation'); + } + + public function getInitiator(): Player + { + foreach ($this->players as $conversationUser) { + if ($conversationUser->playerStatus === ConversationUser::US_ADMIN) { + return $conversationUser->player; + } + } + throw new \RuntimeException(sprintf('There is no initiator for conversation %s', $this->id->toRfc4122())); + } + + public function isGroupConversation(): bool + { + return 2 > $this->players->count(); + } + + public function getLastPage(): int + { + return intval(ceil($this->messagesCount / ConversationMessage::MESSAGE_BY_PAGE)); + } +} diff --git a/src/Modules/Hermes/Model/ConversationMessage.php b/src/Modules/Hermes/Model/ConversationMessage.php new file mode 100644 index 000000000..c8d8f00f2 --- /dev/null +++ b/src/Modules/Hermes/Model/ConversationMessage.php @@ -0,0 +1,26 @@ + 'gestionnaire', + self::US_STANDARD => 'normal', + default => 'status inconnu', + }; + } +} diff --git a/src/Modules/Hermes/Model/Notification.php b/src/Modules/Hermes/Model/Notification.php new file mode 100644 index 000000000..049c6a993 --- /dev/null +++ b/src/Modules/Hermes/Model/Notification.php @@ -0,0 +1,21 @@ +id; + } + + // CONSTRUCTOR + public function __construct() + { + } + + public function setContent($content) + { + $this->oContent = $content; + } + + public function setParsedContent($content) + { + $this->pContent = $content; + } + + public function hide() + { + $this->statement = 0; + } + + public function show() + { + $this->statement = 1; + } +} diff --git a/src/Modules/Hermes/Resource/config/config.yml b/src/Modules/Hermes/Resource/config/config.yml new file mode 100644 index 000000000..56aab13dc --- /dev/null +++ b/src/Modules/Hermes/Resource/config/config.yml @@ -0,0 +1,28 @@ +--- +parameters: + hermes.notifications.list_limit: 25 + hermes.notifications.archive_limit: 5 + hermes.notifications.premium_archive_limit: 50 + + hermes.notifications.display_tool: 5 + + hermes.notifications.timeout.read: 3 # days + hermes.notifications.timeout.unread: 10 # days + + hermes.notifications.mrm.message_display: 50 + + hermes.notifications.msm.step_thread: 6 + hermes.notifications.msm.step_next_thread: 3 + hermes.notifications.msm.step_message: 10 + +services: + _defaults: + autowire: true + autoconfigure: true + + App\Modules\Hermes\: + resource: '%kernel.project_dir%/src/Modules/Hermes/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' diff --git a/src/Modules/Hermes/main.conf.php b/src/Modules/Hermes/main.conf.php new file mode 100755 index 000000000..a68586ffa --- /dev/null +++ b/src/Modules/Hermes/main.conf.php @@ -0,0 +1,17 @@ +id; + } + + public function setId(?int $id): static + { + $this->id = $id; + return $this; + } + + public function getUsername(): ?string + { + return $this->username; + } + + public function setUsername(?string $username): static + { + $this->username = $username; + + return $this; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(?string $email): static + { + $this->email = $email; + + return $this; + } + + public function getUserIdentifier(): string + { + return (string) $this->username; + } + + public function getRoles(): array + { + $roles = $this->roles; + $roles[] = 'ROLE_USER'; + + return array_unique($roles); + } + + /** + * @param lisrt $roles + */ + public function setRoles(array $roles): static + { + $this->roles = $roles; + + return $this; + } + + /** + * @see PasswordAuthenticatedUserInterface + */ + public function getPassword(): string + { + return $this->password; + } + + public function setPassword(string $password): static + { + $this->password = $password; + + return $this; + } + + /** + * @see UserInterface + */ + public function eraseCredentials(): void + { + // Si vous stockez des données temporaires sensibles sur l'utilisateur, effacez-les ici + } +} diff --git a/src/Modules/Portal/Domain/Repository/UserRepositoryInterface.php b/src/Modules/Portal/Domain/Repository/UserRepositoryInterface.php new file mode 100644 index 000000000..3af0ce8d3 --- /dev/null +++ b/src/Modules/Portal/Domain/Repository/UserRepositoryInterface.php @@ -0,0 +1,16 @@ + + */ +interface UserRepositoryInterface extends EntityRepositoryInterface, PasswordUpgraderInterface +{ +} diff --git a/src/Modules/Portal/Infrastructure/Controller/HomepageController.php b/src/Modules/Portal/Infrastructure/Controller/HomepageController.php new file mode 100644 index 000000000..1ed05b516 --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Controller/HomepageController.php @@ -0,0 +1,24 @@ +getBySpecification(new IsActivePlayer()); + + return $this->render('pages/portal/homepage.html.twig'); + } +} diff --git a/src/Modules/Portal/Infrastructure/Controller/LoginController.php b/src/Modules/Portal/Infrastructure/Controller/LoginController.php new file mode 100644 index 000000000..a5e5aa17d --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Controller/LoginController.php @@ -0,0 +1,30 @@ +getLastAuthenticationError(); + // last username entered by the user + $lastUsername = $authenticationUtils->getLastUsername(); + + return $this->render('pages/portal/login.html.twig', [ + 'error' => $error, + 'last_username' => $lastUsername, + ]); + } +} diff --git a/src/Modules/Portal/Infrastructure/Controller/RegistrationController.php b/src/Modules/Portal/Infrastructure/Controller/RegistrationController.php new file mode 100644 index 000000000..1d3e5d18e --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Controller/RegistrationController.php @@ -0,0 +1,56 @@ +createForm(RegistrationFormType::class, $user); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + // Hashage du mot de passe + $user->setPassword( + $this->passwordHasher->hashPassword( + $user, + $form->get('password')->getData() + ) + ); + + $userRepository->save($user); + + $this->addFlash('success', 'Votre compte a été créé avec succès !'); + + return $this->redirectToRoute('login'); + } + + return $this->render('pages/portal/registration.html.twig', [ + 'registrationForm' => $form, + ]); + } +} diff --git a/src/Modules/Portal/Infrastructure/Form/RegistrationFormType.php b/src/Modules/Portal/Infrastructure/Form/RegistrationFormType.php new file mode 100644 index 000000000..92bcf8727 --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Form/RegistrationFormType.php @@ -0,0 +1,47 @@ +add('email', EmailType::class, [ + 'label' => 'Email' + ]) + ->add('username', TextType::class, [ + 'label' => 'Identifiant' + ]) + ->add('password', RepeatedType::class, [ + 'type' => PasswordType::class, + 'first_options' => [ + 'label' => 'Mot de passe', + ], + 'second_options' => [ + 'label' => 'Confirmez le mot de passe', + ], + + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => User::class, + ]); + } +} diff --git a/src/Modules/Portal/Infrastructure/Repository/Doctrine/UserRepository.php b/src/Modules/Portal/Infrastructure/Repository/Doctrine/UserRepository.php new file mode 100644 index 000000000..245b7eebb --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Repository/Doctrine/UserRepository.php @@ -0,0 +1,28 @@ + + */ +class UserRepository extends DoctrineRepository implements UserRepositoryInterface +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + + public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void + { + $user->setPassword($newHashedPassword); + $this->save($user); + } +} diff --git a/src/Modules/Portal/Infrastructure/Twig/Components/Organisms/Header.php b/src/Modules/Portal/Infrastructure/Twig/Components/Organisms/Header.php new file mode 100644 index 000000000..bb9e8b7e6 --- /dev/null +++ b/src/Modules/Portal/Infrastructure/Twig/Components/Organisms/Header.php @@ -0,0 +1,16 @@ +player, + place: $orbitalBase->place, + technology: $identifier, + targetLevel: $targetLevel, + createdAt: $this->clock->now(), + startedAt: $createdAt, + endedAt: $this->durationHandler->getDurationEnd($createdAt, ($this->getTimeCost)( + $identifier, + $targetLevel, + $orbitalBase->place->coefHistory, + $orbitalBase->player, + )), + ); + + $this->technologyQueueRepository->save($technologyQueue); + + $this->messageBus->dispatch( + new TechnologyQueueMessage($technologyQueue->id), + [DateTimeConverter::to_delay_stamp($technologyQueue->getEndDate())] + ); + + $this->eventDispatcher->dispatch(new NewTechnologyQueueEvent($technologyQueue)); + + return $technologyQueue; + } +} diff --git a/src/Modules/Promethee/Domain/Event/NewTechnologyQueueEvent.php b/src/Modules/Promethee/Domain/Event/NewTechnologyQueueEvent.php new file mode 100644 index 000000000..b4c69f21b --- /dev/null +++ b/src/Modules/Promethee/Domain/Event/NewTechnologyQueueEvent.php @@ -0,0 +1,51 @@ +technologyQueue->player; + } + + public function getTutorialStep(): int|null + { + return match ($this->technologyQueue->technology) { + TechnologyId::SHIP0_UNBLOCK => TutorialResource::SHIP0_UNBLOCK, + TechnologyId::SHIP1_UNBLOCK => TutorialResource::SHIP1_UNBLOCK, + default => null, + }; + } + + public function getTrackingPeopleId(): int + { + return $this->technologyQueue->player->id; + } + + public function getTrackingEventName(): string + { + return 'Technology Search Beginning'; + } + + public function getTrackingData(): array + { + return [ + 'technology_id' => $this->technologyQueue->technology, + 'place_id' => $this->technologyQueue->place->id, + 'target_level' => $this->technologyQueue->targetLevel, + ]; + } +} diff --git a/src/Modules/Promethee/Domain/Repository/ResearchRepositoryInterface.php b/src/Modules/Promethee/Domain/Repository/ResearchRepositoryInterface.php new file mode 100644 index 000000000..43f6bc825 --- /dev/null +++ b/src/Modules/Promethee/Domain/Repository/ResearchRepositoryInterface.php @@ -0,0 +1,15 @@ + + */ +interface ResearchRepositoryInterface extends EntityRepositoryInterface +{ + public function getPlayerResearch(Player $player): Research|null; +} diff --git a/src/Modules/Promethee/Domain/Repository/TechnologyQueueRepositoryInterface.php b/src/Modules/Promethee/Domain/Repository/TechnologyQueueRepositoryInterface.php new file mode 100644 index 000000000..896635c88 --- /dev/null +++ b/src/Modules/Promethee/Domain/Repository/TechnologyQueueRepositoryInterface.php @@ -0,0 +1,41 @@ + + */ +interface TechnologyQueueRepositoryInterface extends EntityRepositoryInterface +{ + public function get(Uuid $id): TechnologyQueue|null; + + public function getPlayerTechnologyQueue(Player $player, int $technology): TechnologyQueue|null; + + /** + * @return list + */ + public function getAll(): array; + + /** + * TODO Replace Place argument with OrbitalBase + * @return list + */ + public function getPlaceQueues(Place $place): array; + + /** + * @return list + */ + public function getPlayerQueues(Player $player): array; + + /** + * @return Collection + */ + public function matchPlayerQueuesSince(Player $player, \DateTimeImmutable $since): Collection; +} diff --git a/src/Modules/Promethee/Domain/Repository/TechnologyRepositoryInterface.php b/src/Modules/Promethee/Domain/Repository/TechnologyRepositoryInterface.php new file mode 100644 index 000000000..ba8ac6dae --- /dev/null +++ b/src/Modules/Promethee/Domain/Repository/TechnologyRepositoryInterface.php @@ -0,0 +1,15 @@ + + */ +interface TechnologyRepositoryInterface extends EntityRepositoryInterface +{ + public function getPlayerTechnology(Player $player): Technology; +} diff --git a/src/Modules/Promethee/Domain/Service/GetTimeCost.php b/src/Modules/Promethee/Domain/Service/GetTimeCost.php new file mode 100644 index 000000000..c614184f1 --- /dev/null +++ b/src/Modules/Promethee/Domain/Service/GetTimeCost.php @@ -0,0 +1,47 @@ +currentPlayerRegistry->get(); + $time = $this->timeMode->isStandard() + ? $this->technologyHelper->getInfo($identifier, 'time', $targetLevel) + : 10 * $targetLevel; + + $bonusPercent = $this->currentPlayerBonusRegistry->getPlayerBonus()->bonuses->get(PlayerBonusId::TECHNOSPHERE_SPEED); + if (ColorResource::APHERA === $researcher->faction->identifier) { + $bonusPercent += ColorResource::BONUS_APHERA_TECHNO; + } + // ajout du bonus du lieu + $bonusPercent += Game::getImprovementFromScientificCoef($scienceCoeff); + $bonus = PercentageApplier::toFloat($time, $bonusPercent); + + return intval(round($time - $bonus)); + } +} diff --git a/src/Modules/Promethee/Handler/TechnologyQueueHandler.php b/src/Modules/Promethee/Handler/TechnologyQueueHandler.php new file mode 100644 index 000000000..fd124abc0 --- /dev/null +++ b/src/Modules/Promethee/Handler/TechnologyQueueHandler.php @@ -0,0 +1,50 @@ +technologyQueueRepository->get($message->getTechnologyQueueId()))) { + return; + } + $player = $technologyQueue->player; + + $technology = $this->technologyRepository->getPlayerTechnology($player); + + $technology->setTechnology($technologyQueue->technology, $technologyQueue->targetLevel); + $experience = $this->technologyHelper->getInfo($technologyQueue->technology, 'points', $technologyQueue->targetLevel); + $this->playerManager->increaseExperience($player, $experience); + + // alert @TODO replace with Mercure + // $orbitalBase = $this->orbitalBaseManager->get($technologyQueue->getPlaceId()); + // if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { + // $alt = 'Développement de votre technologie ' . $this->technologyHelper->getInfo($technologyQueue->getTechnology(), 'name'); + // if ($technologyQueue->getTargetLevel() > 1) { + // $alt .= ' niveau ' . $technologyQueue->getTargetLevel(); + // } + // $alt .= ' terminée. Vous gagnez ' . $experience . ' d\'expérience.'; + // $session->addFlashbag($alt, Flashbag::TYPE_TECHNOLOGY_SUCCESS); + // $this->sessionWrapper->save($session); + // } + $this->technologyQueueRepository->remove($technologyQueue); + $this->technologyRepository->save($technology); + } +} diff --git a/src/Modules/Promethee/Helper/ResearchHelper.php b/src/Modules/Promethee/Helper/ResearchHelper.php new file mode 100644 index 000000000..cd86aef4d --- /dev/null +++ b/src/Modules/Promethee/Helper/ResearchHelper.php @@ -0,0 +1,97 @@ +isAResearch($research)) { + if ('name' == $info || 'codeName' == $info) { + return ResearchResource::$research[$research][$info]; + } elseif ('level' == $info) { + if ($level <= 0) { + return false; + } + if ('price' == $sup) { + return intval(round($this->researchPrice($research, $level) * $this->researchCoeff)); + } + } else { + throw new \RuntimeException('Wrong second argument for method getInfo() from ResearchResource'); + } + } else { + throw new \RuntimeException('This research doesn\'t exist !'); + } + + return false; + } + + public function isResearchPermit(int $firstLevel, int $secondLevel, int $thirdLevel = -1): bool + { + // compare the levels of technos and say if you can research such techno + if (-1 == $thirdLevel) { + if (abs($firstLevel - $secondLevel) > $this->researchMaxDiff) { + return false; + } else { + return true; + } + } else { + if (abs($firstLevel - $secondLevel) > $this->researchMaxDiff) { + return false; + } elseif (abs($firstLevel - $thirdLevel) > $this->researchMaxDiff) { + return false; + } elseif (abs($secondLevel - $thirdLevel) > $this->researchMaxDiff) { + return false; + } else { + return true; + } + } + } + + public function researchPrice(int $research, int $level): int + { + return (1 === $level) + ? $this->getDefaultResearchPrice($research) + : $this->calculateLevelPrice($level); + } + + private function calculateLevelPrice(int $level): int + { + return intval(round( + (0.0901 * $level ** 5) + - (12.988 * $level ** 4) + + (579.8 * $level ** 3) + - (5735.8 * $level ** 2) + + (28259 * $level) + - 25426 + )); + } + + private function getDefaultResearchPrice(int $research): int + { + return match ($research) { + Research::MATH => 100, + Research::PHYS => 3000, + Research::CHEM => 7000, + Research::LAW, Research::ECONO, Research::NETWORK => 200, + Research::COMM, Research::PSYCHO => 9000, + Research::ALGO => 4000, + Research::STAT => 6000, + default => throw new \RuntimeException(sprintf('Invalid research identifier given: %d', $research)), + }; + } +} diff --git a/src/Modules/Promethee/Helper/TechnologyHelper.php b/src/Modules/Promethee/Helper/TechnologyHelper.php new file mode 100644 index 000000000..751319ac6 --- /dev/null +++ b/src/Modules/Promethee/Helper/TechnologyHelper.php @@ -0,0 +1,179 @@ +orbitalBaseHelper = $orbitalBaseHelper; + } + + public function isATechnology(int $techno): bool + { + return \in_array($techno, TechnologyResource::$technologies); + } + + public function isAnUnblockingTechnology(int $techno): bool + { + return \in_array($techno, TechnologyResource::$technologiesForUnblocking); + } + + public function isATechnologyNotDisplayed(int $techno): bool + { + return \in_array($techno, TechnologyResource::$technologiesNotDisplayed); + } + + public function getInfo($techno, $info, $level = 0) + { + if (!$this->isATechnology($techno)) { + throw new \InvalidArgumentException('Technologie inexistante dans getInfo() de TechnologyResource '.$techno); + } + if ($this->isAnUnblockingTechnology($techno)) { + if (\in_array($info, ['name', 'progName', 'imageLink', 'requiredTechnosphere', 'requiredResearch', 'time', 'resource', 'credit', 'points', 'column', 'shortDescription', 'description'])) { + return TechnologyResource::$technology[$techno][$info]; + } + throw new \InvalidArgumentException('2e argument faux pour getInfo() de TechnologyResource (techno '.$techno.', '.$info.')'); + } + if (in_array($info, ['name', 'progName', 'imageLink', 'requiredTechnosphere', 'requiredResearch', 'maxLevel', 'category', 'column', 'shortDescription', 'description', 'bonus'])) { + return TechnologyResource::$technology[$techno][$info]; + } elseif (in_array($info, ['time', 'resource', 'credit', 'points'])) { + if ($level <= 0) { + return false; + } + if ('points' == $info) { + return round(TechnologyResource::$technology[$techno][$info] * $level * Technology::COEF_POINTS); + } elseif ('time' == $info) { + return round(TechnologyResource::$technology[$techno][$info] * $level * Technology::COEF_TIME); + } else { + switch (TechnologyResource::$technology[$techno]['category']) { + case 1: + $value = round(TechnologyResource::$technology[$techno][$info] * 1.5 ** ($level - 1)); + break; + case 2: + $value = round(TechnologyResource::$technology[$techno][$info] * 1.3 ** ($level - 1)); + break; + case 3: + $value = round(TechnologyResource::$technology[$techno][$info] * 1.2 ** ($level - 1)); + break; + default: + return false; + } + + // $value = round($this->technology[$techno][$info] * pow(1.75, $level-1)); + // $value = round($this->technology[$techno][$info] * pow(1.5, $level-1)); + // $value = round($this->technology[$techno][$info] * pow(1.3, $level-1)); + + return $value; + } + } + throw new \InvalidArgumentException('2e argument faux pour getInof() de TechnologyResource'); + } + + public function haveRights($techno, $type, $arg1 = 0, $arg2 = 'default') + { + if ($this->isATechnology($techno)) { + switch ($type) { + // assez de ressources pour contruire ? + // $arg1 est le niveau + // $arg2 est ce que le joueur possède (ressource ou crédit) + case 'resource': return $arg2 >= $this->getInfo($techno, 'resource', $arg1); + break; + // assez de crédits pour construire ? + case 'credit': return $arg2 >= $this->getInfo($techno, 'credit', $arg1); + break; + // encore de la place dans la queue ? + // $arg1 est un objet de type OrbitalBase + // $arg2 est le nombre de technologies dans la queue + case 'queue': + $maxQueue = $this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'level', $arg1->levelTechnosphere, 'nbQueues'); + + return $arg2 < $maxQueue; + // a-t-on le droit de construire ce niveau ? + // $arg1 est le niveau cible + case 'levelPermit': + return $this->isAnUnblockingTechnology($techno) + ? 1 == $arg1 + : $arg1 > 0; + // est-ce que le niveau de la technosphère est assez élevé ? + // arg1 est le niveau de la technosphere + // no break + case 'technosphereLevel': + return $this->getInfo($techno, 'requiredTechnosphere') <= $arg1; + // est-ce que les recherches de l'université sont acquises ? + // arg1 est le niveau de la technologie + // arg2 est une stacklist avec les niveaux de recherche + case 'research': + $neededResearch = $this->getInfo($techno, 'requiredResearch'); + $researchList = new StackList(); + for ($i = 0; $i < $this->researchQuantity; ++$i) { + if ($neededResearch[$i] > 0) { + if ($arg2->get($i) < ($neededResearch[$i] + $arg1 - 1)) { + $r = new ArrayList(); + $r->add('techno', $this->researchHelper->getInfo($i, 'name')); + $r->add('level', $neededResearch[$i] + $arg1 - 1); + $researchList->append($r); + } + } + } + if ($researchList->size() > 0) { + return $researchList; + } + return true; + // est-ce qu'on peut construire la techno ? Pas dépassé le niveau max + // arg1 est le niveau de la technologie voulue + case 'maxLevel': + if ($this->isAnUnblockingTechnology($techno)) { + return true; + } + return $arg1 <= $this->getInfo($techno, 'maxLevel'); + // est-ce qu'on peut construire la techno en fonction du type de la base ? + // arg1 est le type de la base + case 'baseType': + return match ($arg1) { + OrbitalBase::TYP_NEUTRAL => in_array($this->getInfo($techno, 'column'), [1, 2, 3]), + OrbitalBase::TYP_COMMERCIAL => in_array($this->getInfo($techno, 'column'), [1, 2, 3, 4, 5]), + OrbitalBase::TYP_MILITARY => in_array($this->getInfo($techno, 'column'), [1, 2, 3, 6, 7]), + OrbitalBase::TYP_CAPITAL => in_array($this->getInfo($techno, 'column'), [1, 2, 3, 4, 5, 6, 7]), + default => false, + }; + default: + throw new \RuntimeException('Erreur dans haveRights() de TechnologyResource'); + } + } else { + throw new \RuntimeException('Technologie inexistante dans haveRights() de TechnologyResource'); + } + } + + public function getImprovementPercentage(int $techno, int $level = -1): int + { + if ($this->isAnUnblockingTechnology($techno)) { + return 0; + } + $baseBonus = $this->getInfo($techno, 'bonus'); + // TODO explain this calculation and its result + return match ($level) { + 0 => 0, + -1 => $baseBonus, + default => $baseBonus + intval(floor(($level - 1) / 5)), + }; + } +} diff --git a/src/Modules/Promethee/Infrastructure/Controller/CancelTechnologyQueue.php b/src/Modules/Promethee/Infrastructure/Controller/CancelTechnologyQueue.php new file mode 100644 index 000000000..4e61c02e3 --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Controller/CancelTechnologyQueue.php @@ -0,0 +1,90 @@ +isATechnology($identifier)) { + throw new BadRequestHttpException('la technologie indiquée n\'est pas valide'); + } + $placeTechnologyQueues = $technologyQueueRepository->getPlaceQueues($currentBase->place); + + $index = $startedAt = null; + $targetLevel = 0; + foreach ($placeTechnologyQueues as $i => $queue) { + // get the queue to delete + if ($queue->technology === $identifier && $queue->targetLevel > $targetLevel) { + $index = $i; + $targetLevel = $queue->targetLevel; + $startedAt = $queue->getStartDate(); + } + } + + // if it's the first, the next must restart by now + if (0 == $index) { + $startedAt = new \DateTimeImmutable(); + } + + if (null === $index || null === $startedAt) { + throw new ConflictHttpException('impossible d\'annuler la technologie'); + } + + // shift + foreach (array_slice($placeTechnologyQueues, $index + 1) as $queue) { + // $oldDate = $queue->dEnd; + // TODO maybe carve out this code portion + $queue->endedAt = $durationHandler->getDurationEnd( + $startedAt, + $durationHandler->getDiff($queue->getStartDate(), $queue->getEndDate()), + ); + $queue->startedAt = $startedAt; + // @TODO handle rescheduling + // $scheduler->reschedule($queue, $queue->dEnd, $oldDate); + + $startedAt = $queue->getEndDate(); + } + + // @TODO handle cancellation + // $scheduler->cancel($placeTechnologyQueues[$index], $placeTechnologyQueues[$index]->getEndedAt()); + $technologyQueueRepository->remove($placeTechnologyQueues[$index]); + + $technologyResourceRefund = $this->getParameter('promethee.technology_queue.resource_refund'); + $technologyCreditRefund = $this->getParameter('promethee.technology_queue.credit_refund'); + // rends les ressources et les crédits au joueur + $resourcePrice = $technologyHelper->getInfo($identifier, 'resource', $targetLevel); + $resourcePrice = intval(round($resourcePrice * $technologyResourceRefund)); + $orbitalBaseManager->increaseResources($currentBase, $resourcePrice); + $creditPrice = $technologyHelper->getInfo($identifier, 'credit', $targetLevel); + $creditPrice = intval(round($creditPrice * $technologyCreditRefund)); + $playerManager->increaseCredit($currentPlayer, $creditPrice); + $this->addFlash('success', 'Construction annulée, vous récupérez le '.$technologyResourceRefund * 100 .'% des ressources ainsi que le '.$technologyCreditRefund * 100 .'% des crédits investis pour le développement'); + + return $this->redirect($request->headers->get('referer')); + } +} diff --git a/src/Modules/Promethee/Infrastructure/Controller/SearchTechnology.php b/src/Modules/Promethee/Infrastructure/Controller/SearchTechnology.php new file mode 100644 index 000000000..93e45ef1b --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Controller/SearchTechnology.php @@ -0,0 +1,113 @@ +technologyHelper->isATechnology($identifier) || $this->technologyHelper->isATechnologyNotDisplayed($identifier)) { + throw new BadRequestHttpException('la technologie indiquée n\'est pas valide'); + } + if ($technologyQueueRepository->getPlayerTechnologyQueue($currentPlayer, $identifier) !== null) { + throw new ConflictHttpException('Cette technologie est déjà en construction'); + } + $technos = $technologyRepository->getPlayerTechnology($currentPlayer); + $targetLevel = $technos->getTechnology($identifier) + 1; + // @TODO I think this piece of code is dead + $technologyQueues = $technologyQueueRepository->getPlaceQueues($currentBase->place); + $nbTechnologyQueues = count($technologyQueues); + foreach ($technologyQueues as $technologyQueue) { + if ($technologyQueue->technology == $identifier) { + ++$targetLevel; + } + } + + + if (!$this->haveRights($currentBase, $currentPlayer, $nbTechnologyQueues, $identifier, $targetLevel)) { + throw $this->createAccessDeniedException( + 'les conditions ne sont pas remplies pour développer une technologie', + ); + } + $createdAt = + (0 === $nbTechnologyQueues) + ? new \DateTimeImmutable() + : $technologyQueues[$nbTechnologyQueues - 1]->getEndDate(); + + $technologyQueueFactory->create( + orbitalBase: $currentBase, + identifier: $identifier, + targetLevel: $targetLevel, + createdAt: $createdAt, + ); + + $orbitalBaseManager->decreaseResources($currentBase, $this->technologyHelper->getInfo($identifier, 'resource', $targetLevel)); + + $playerManager->decreaseCredit($currentPlayer, $this->technologyHelper->getInfo($identifier, 'credit', $targetLevel)); + + // alerte + $this->addFlash('success', 'Développement de la technologie programmée'); + + return $this->redirect($request->headers->get('referer')); + } + + private function haveRights( + OrbitalBase $currentBase, + Player $currentPlayer, + int $technologyQueuesCount, + int $identifier, + int $targetLevel, + ): bool { + $research = $this->researchRepository->getPlayerResearch($currentPlayer); + + return $this->technologyHelper->haveRights($identifier, 'resource', $targetLevel, $currentBase->resourcesStorage) + && $this->technologyHelper->haveRights($identifier, 'credit', $targetLevel, $currentPlayer->getCredits()) + && $this->technologyHelper->haveRights($identifier, 'queue', $currentBase, $technologyQueuesCount) + && $this->technologyHelper->haveRights($identifier, 'levelPermit', $targetLevel) + && $this->technologyHelper->haveRights($identifier, 'technosphereLevel', $currentBase->levelTechnosphere) + && $this->technologyHelper->haveRights($identifier, 'research', $targetLevel, $this->researchManager->getResearchList($research)) + && $this->technologyHelper->haveRights($identifier, 'maxLevel', $targetLevel) + && $this->technologyHelper->haveRights($identifier, 'baseType', $currentBase->typeOfBase); + } +} diff --git a/src/Modules/Promethee/Infrastructure/Controller/UpdateUniversityInvestments.php b/src/Modules/Promethee/Infrastructure/Controller/UpdateUniversityInvestments.php new file mode 100644 index 000000000..52a4b8693 --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Controller/UpdateUniversityInvestments.php @@ -0,0 +1,104 @@ +toArray(); + + if (!array_key_exists('quantity', $payload)) { + throw new BadRequestHttpException('Missing quantity'); + } + if (!is_int($payload['quantity'])) { + throw new BadRequestHttpException(sprintf('Invalid quantity, expected int, got %s', $payload['quantity'])); + } + + if ('increase' === $operation) { + $this->increaseInvestment($currentPlayer, $category, $payload['quantity']); + } else { + $this->decreaseInvestment($currentPlayer, $category, $payload['quantity']); + } + + $entityManager->flush(); + + return new Response('', Response::HTTP_NO_CONTENT); + } + + private function increaseInvestment(Player $player, string $category, int $quantity): void + { + $totalInvest = + $player->partNaturalSciences + + $player->partLifeSciences + + $player->partSocialPoliticalSciences + + $player->partInformaticEngineering; + + if ($totalInvest < 100) { + if ($totalInvest + $quantity > 100) { + $payload['quantity'] = 100 - $totalInvest; + } + + switch ($category) { + case 'natural': + $player->partNaturalSciences += $quantity; + break; + case 'life': + $player->partLifeSciences += $quantity; + break; + case 'social': + $player->partSocialPoliticalSciences += $quantity; + break; + case 'informatic': + $player->partInformaticEngineering += $quantity; + break; + } + } + } + + private function decreaseInvestment(Player $player, string $category, int $quantity): void + { + if (0 === $quantity) { + $quantity = 1; + } + + $oldInvest = match ($category) { + 'natural' => $player->partNaturalSciences, + 'life' => $player->partLifeSciences, + 'social' => $player->partSocialPoliticalSciences, + 'informatic' => $player->partInformaticEngineering, + }; + + if (0 != $oldInvest) { + if ($oldInvest < $quantity) { + $quantity = $oldInvest; + } + switch ($category) { + case 'natural': + $player->partNaturalSciences -= $quantity; + break; + case 'life': + $player->partLifeSciences -= $quantity; + break; + case 'social': + $player->partSocialPoliticalSciences -= $quantity; + break; + case 'informatic': + $player->partInformaticEngineering -= $quantity; + break; + } + } + } +} diff --git a/src/Modules/Promethee/Infrastructure/Controller/ViewTechnologyPanel.php b/src/Modules/Promethee/Infrastructure/Controller/ViewTechnologyPanel.php new file mode 100644 index 000000000..7654625e0 --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Controller/ViewTechnologyPanel.php @@ -0,0 +1,71 @@ +isATechnology($identifier)) { + throw $this->createNotFoundException('This technology does not exist'); + } + + if ($technologyHelper->isATechnologyNotDisplayed($identifier)) { + throw $this->createAccessDeniedException('You do not have access to this technology'); + } + + $technos = $technologyRepository->getPlayerTechnology($currentPlayer); + $research = $researchRepository->getPlayerResearch($currentPlayer); + + $level = $technos->getTechnology($identifier); + + $shortDescription = $technologyHelper->getInfo($identifier, 'shortDescription'); + $improvementPercentage = $technologyHelper->getImprovementPercentage($identifier, $level + 1); + $shortDescription = str_replace('{x}', $improvementPercentage, $shortDescription); + + $requiredResearch = $technologyHelper->getInfo($identifier, 'requiredResearch'); + + $researchList = []; + $researchQuantity = intval($this->getParameter('promethee.research.quantity')); + for ($i = 0; $i < $researchQuantity; ++$i) { + if ($requiredResearch[$i] > 0) { + $check = true; + if ($researchManager->getResearchList($research)->get($i) < ($requiredResearch[$i] + $level)) { + $check = false; + } + $researchList[] = [$researchHelper->getInfo($i, 'name'), $requiredResearch[$i] + $level, $check]; + } + } + + return $this->render('blocks/promethee/technology_panel.html.twig', [ + 'research_list' => $researchList, + 'technosphere' => $technologyHelper->getInfo($identifier, 'requiredTechnosphere'), + 'description' => $technologyHelper->getInfo($identifier, 'description'), + 'short_description' => $shortDescription, + 'name' => $technologyHelper->getInfo($identifier, 'name'), + 'image' => $technologyHelper->getInfo($identifier, 'imageLink'), + 'time' => $technologyHelper->getInfo($identifier, 'time', $level + 1), + 'resource' => $technologyHelper->getInfo($identifier, 'resource', $level + 1), + 'credit' => $technologyHelper->getInfo($identifier, 'credit', $level + 1), + 'points' => $technologyHelper->getInfo($identifier, 'points', $level + 1), + ]); + } +} diff --git a/src/Modules/Promethee/Infrastructure/Controller/ViewUniversity.php b/src/Modules/Promethee/Infrastructure/Controller/ViewUniversity.php new file mode 100644 index 000000000..41503893c --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Controller/ViewUniversity.php @@ -0,0 +1,27 @@ +render('pages/promethee/university.html.twig', [ + 'university_investment_bonus' => $currentPlayerBonusRegistry + ->getPlayerBonus()->bonuses->get(PlayerBonusId::UNI_INVEST), + 'research' => $researchRepository->getPlayerResearch($currentPlayer), + ]); + } +} diff --git a/src/Modules/Promethee/Infrastructure/DataFixtures/Factory/TechnologyFactory.php b/src/Modules/Promethee/Infrastructure/DataFixtures/Factory/TechnologyFactory.php new file mode 100644 index 000000000..707258ae3 --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/DataFixtures/Factory/TechnologyFactory.php @@ -0,0 +1,26 @@ + Uuid::v4(), + 'player' => PlayerFactory::random(), + ]; + } + + protected static function getClass(): string + { + return Technology::class; + } +} diff --git a/src/Modules/Promethee/Infrastructure/Twig/Components/Molecules/UniversityResearchItem.php b/src/Modules/Promethee/Infrastructure/Twig/Components/Molecules/UniversityResearchItem.php new file mode 100644 index 000000000..6536001f8 --- /dev/null +++ b/src/Modules/Promethee/Infrastructure/Twig/Components/Molecules/UniversityResearchItem.php @@ -0,0 +1,16 @@ +getTechnology(); + + if (1 !== $technology->getTechnology($constraint->technologyId)) { + $this->context + ->buildViolation('Vous devez débloquer la technologie de conquête.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Promethee/Manager/ResearchManager.php b/src/Modules/Promethee/Manager/ResearchManager.php new file mode 100644 index 000000000..8b91d6ead --- /dev/null +++ b/src/Modules/Promethee/Manager/ResearchManager.php @@ -0,0 +1,287 @@ +faction->identifier; + // natural technologies + do { + if ($research->naturalToPay > $naturalInvest) { + $research->naturalToPay -= $naturalInvest; + $naturalInvest = 0; + } else { + $naturalInvest -= $research->naturalToPay; + switch ($research->naturalTech) { + case 0: + $research->mathLevel++; + $levelReached = $research->mathLevel; + break; + case 1: + $research->physLevel++; + $levelReached = $research->physLevel; + break; + case 2: + $research->chemLevel++; + $levelReached = $research->chemLevel; + break; + default: + $levelReached = 0; + throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'); + } + + $n = NotificationBuilder::new() + ->setTitle(sprintf( + '%s niveau %d', + $this->researchHelper->getInfo($research->naturalTech, 'name'), + $levelReached, + )) + ->setContent(sprintf( + << + Vos chercheurs du département des Sciences Naturelles ont fait des avancées en + %s. Vous êtes actuellement au niveau + %s dans ce domaine. Félicitations ! + END, + $this->researchHelper->getInfo($research->naturalTech, 'name'), + $levelReached, + )) + ->for($player); + $this->notificationRepository->save($n); + do { + $research->naturalTech = random_int(0, 2); // 0, 1 ou 2 + $tech1 = $research->mathLevel; + $tech2 = $research->physLevel; + $tech3 = $research->chemLevel; + match ($research->naturalTech) { + 0 => $tech1++, + 1 => $tech2++, + 2 => $tech3++, + default => throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'), + }; + } while (!$this->researchHelper->isResearchPermit($tech1, $tech2, $tech3)); + + $research->naturalToPay = $this->researchHelper->getInfo( + $research->naturalTech, + 'level', + $research->getLevel($research->naturalTech) + 1, + 'price', + ); + } + } while ($naturalInvest > 0); + // life technologies (en fait ce sont les sciences politiques) + do { + if ($research->lifeToPay > $lifeInvest) { + $research->lifeToPay -= $lifeInvest; + $lifeInvest = 0; + } else { + $lifeInvest -= $research->lifeToPay; + switch ($research->lifeTech) { + case 3: + $research->bioLevel++; + $levelReached = $research->bioLevel; + break; + case 4: + $research->mediLevel++; + $levelReached = $research->mediLevel; + break; + default: + $levelReached = 0; + throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'); + } + + $n = NotificationBuilder::new() + ->setTitle(sprintf( + '%s niveau %d', + $this->researchHelper->getInfo($research->lifeTech, 'name'), + $levelReached, + )) + ->setContent(sprintf( + 'Vos investissements dans l\'Université ont payé !
+ Vos chercheurs du département des Sciences Politiques ont fait des avancées en + %s. Vous êtes actuellement au niveau + %s dans ce domaine. Félicitations !', + $this->researchHelper->getInfo($research->lifeTech, 'name'), + $levelReached, + )) + ->for($player); + + $this->notificationRepository->save($n); + + do { + $research->lifeTech = random_int(3, 4); + $tech1 = $research->bioLevel; + $tech2 = $research->mediLevel; + match ($research->lifeTech) { + 3 => $tech1++, + 4 => $tech2++, + default => throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'), + }; + } while (!$this->researchHelper->isResearchPermit($tech1, $tech2)); + $research->lifeToPay = $this->researchHelper->getInfo( + $research->lifeTech, + 'level', + $research->getLevel($research->lifeTech) + 1, + 'price', + ); + } + } while ($lifeInvest > 0); + // social technologies + do { + if ($research->socialToPay > $socialInvest) { + $research->socialToPay -= $socialInvest; + $socialInvest = 0; + } else { + $socialInvest -= $research->socialToPay; + switch ($research->socialTech) { + case 5: + $research->econoLevel++; + $levelReached = $research->econoLevel; + break; + case 6: + $research->psychoLevel++; + $levelReached = $research->psychoLevel; + break; + default: + $levelReached = 0; + throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'); + } + + $n = NotificationBuilder::new() + ->setTitle(sprintf( + '%s niveau %d', + $this->researchHelper->getInfo($research->socialTech, 'name'), + $levelReached, + )) + ->setContent(sprintf( + 'Vos investissements dans l\'Université ont payé !
+ Vos chercheurs du département des Sciences Economiques et Sociales ont fait des avancées en + %s. Vous êtes actuellement au niveau + %d dans ce domaine. Félicitations !', + $this->researchHelper->getInfo($research->socialTech, 'name'), + $levelReached, + )) + ->for($player); + $this->notificationRepository->save($n); + do { + $research->socialTech = random_int(5, 6); + $tech1 = $research->econoLevel; + $tech2 = $research->psychoLevel; + match ($research->socialTech) { + 5 => $tech1++, + 6 => $tech2++, + default => throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'), + }; + } while (!$this->researchHelper->isResearchPermit($tech1, $tech2)); + $research->socialToPay = $this->researchHelper->getInfo( + $research->socialTech, + 'level', + $research->getLevel($research->socialTech) + 1, + 'price' + ); + } + } while ($socialInvest > 0); + // informatic technologies + do { + if ($research->informaticToPay > $informaticInvest) { + $research->informaticToPay -= $informaticInvest; + $informaticInvest = 0; + } else { + $informaticInvest -= $research->informaticToPay; + switch ($research->informaticTech) { + case 7: + $research->networkLevel++; + $levelReached = $research->networkLevel; + break; + case 8: + $research->algoLevel++; + $levelReached = $research->algoLevel; + break; + case 9: + $research->statLevel++; + $levelReached = $research->statLevel; + break; + default: + $levelReached = 0; + throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'); + } + + $n = NotificationBuilder::new() + ->setTitle(sprintf( + '%s niveau %d', + $this->researchHelper->getInfo($research->informaticTech, 'name'), + $levelReached, + )) + ->setContent(sprintf( + 'Vos investissements dans l\'Université ont payé !
+ Vos chercheurs du département de l\'Ingénierie Informatique ont fait des avancées en + %s. Vous êtes actuellement au niveau + %d dans ce domaine. Félicitations !', + $this->researchHelper->getInfo($research->informaticTech, 'name'), + $levelReached, + )) + ->for($player); + + $this->notificationRepository->save($n); + + do { + $research->informaticTech = random_int(7, 9); + $tech1 = $research->networkLevel; + $tech2 = $research->algoLevel; + $tech3 = $research->statLevel; + match ($research->informaticTech) { + 7 => $tech1++, + 8 => $tech2++, + 9 => $tech3++, + default => throw new \LogicException('une erreur est survenue lors de la mise à jour des technologies'), + }; + } while (!$this->researchHelper->isResearchPermit($tech1, $tech2, $tech3)); + $research->informaticToPay = $this->researchHelper->getInfo( + $research->informaticTech, + 'level', + $research->getLevel($research->informaticTech) + 1, + 'price', + ); + } + } while ($informaticInvest > 0); + + $this->researchRepository->save($research); + } + + public function getResearchList(Research $research): StackList + { + // return a stacklist of the researches + $r = new StackList(); + for ($i = 0; $i < $this->researchQuantity; ++$i) { + $r->append($research->getLevel($i)); + } + + return $r; + } +} diff --git a/src/Modules/Promethee/Manager/TechnologyManager.php b/src/Modules/Promethee/Manager/TechnologyManager.php new file mode 100644 index 000000000..b23ff16c1 --- /dev/null +++ b/src/Modules/Promethee/Manager/TechnologyManager.php @@ -0,0 +1,13 @@ +setTechnology($technologyId, 0); + } +} diff --git a/src/Modules/Promethee/Manager/TechnologyQueueManager.php b/src/Modules/Promethee/Manager/TechnologyQueueManager.php new file mode 100644 index 000000000..3fc61abf9 --- /dev/null +++ b/src/Modules/Promethee/Manager/TechnologyQueueManager.php @@ -0,0 +1,34 @@ +technologyQueueRepository->getAll(); + + foreach ($queues as $queue) { + $this->messageBus->dispatch( + new TechnologyQueueMessage($queue->id), + [DateTimeConverter::to_delay_stamp($queue->getEndDate())], + ); + } + } +} diff --git a/src/Modules/Promethee/Message/TechnologyQueueMessage.php b/src/Modules/Promethee/Message/TechnologyQueueMessage.php new file mode 100644 index 000000000..274959e6e --- /dev/null +++ b/src/Modules/Promethee/Message/TechnologyQueueMessage.php @@ -0,0 +1,18 @@ +technologyQueueId; + } +} diff --git a/src/Modules/Promethee/Model/Research.php b/src/Modules/Promethee/Model/Research.php new file mode 100644 index 000000000..c48d2baaa --- /dev/null +++ b/src/Modules/Promethee/Model/Research.php @@ -0,0 +1,67 @@ + $this->mathLevel, + 1 => $this->physLevel, + 2 => $this->chemLevel, + 3 => $this->bioLevel, + 4 => $this->mediLevel, + 5 => $this->econoLevel, + 6 => $this->psychoLevel, + 7 => $this->networkLevel, + 8 => $this->algoLevel, + 9 => $this->statLevel, + default => false, + }; + } +} diff --git a/src/Modules/Promethee/Model/Technology.php b/src/Modules/Promethee/Model/Technology.php new file mode 100644 index 000000000..ae9e1a07b --- /dev/null +++ b/src/Modules/Promethee/Model/Technology.php @@ -0,0 +1,288 @@ + $this->comPlatUnblock, + TechnologyId::DOCK2_UNBLOCK => $this->dock2Unblock, + TechnologyId::DOCK3_UNBLOCK => $this->dock3Unblock, + TechnologyId::RECYCLING_UNBLOCK => $this->recyclingUnblock, + TechnologyId::SPATIOPORT_UNBLOCK => $this->spatioportUnblock, + TechnologyId::SHIP0_UNBLOCK => $this->ship0Unblock, + TechnologyId::SHIP1_UNBLOCK => $this->ship1Unblock, + TechnologyId::SHIP2_UNBLOCK => $this->ship2Unblock, + TechnologyId::SHIP3_UNBLOCK => $this->ship3Unblock, + TechnologyId::SHIP4_UNBLOCK => $this->ship4Unblock, + TechnologyId::SHIP5_UNBLOCK => $this->ship5Unblock, + TechnologyId::SHIP6_UNBLOCK => $this->ship6Unblock, + TechnologyId::SHIP7_UNBLOCK => $this->ship7Unblock, + TechnologyId::SHIP8_UNBLOCK => $this->ship8Unblock, + TechnologyId::SHIP9_UNBLOCK => $this->ship9Unblock, + TechnologyId::SHIP10_UNBLOCK => $this->ship10Unblock, + TechnologyId::SHIP11_UNBLOCK => $this->ship11Unblock, + TechnologyId::COLONIZATION => $this->colonization, + TechnologyId::CONQUEST => $this->conquest, + TechnologyId::GENERATOR_SPEED => $this->generatorSpeed, + TechnologyId::REFINERY_REFINING => $this->refineryRefining, + TechnologyId::REFINERY_STORAGE => $this->refineryStorage, + TechnologyId::DOCK1_SPEED => $this->dock1Speed, + TechnologyId::DOCK2_SPEED => $this->dock2Speed, + TechnologyId::TECHNOSPHERE_SPEED => $this->technosphereSpeed, + TechnologyId::COMMERCIAL_INCOME => $this->commercialIncomeUp, + TechnologyId::GRAVIT_MODULE => $this->gravitModuleUp, + TechnologyId::DOCK3_SPEED => $this->dock3Speed, + TechnologyId::POPULATION_TAX => $this->populationTaxUp, + TechnologyId::COMMANDER_INVEST => $this->commanderInvestUp, + TechnologyId::UNI_INVEST => $this->uniInvestUp, + TechnologyId::ANTISPY_INVEST => $this->antiSpyInvestUp, + TechnologyId::SPACESHIPS_SPEED => $this->spaceShipsSpeed, + TechnologyId::SPACESHIPS_CONTAINER => $this->spaceShipsContainer, + TechnologyId::BASE_QUANTITY => $this->baseQuantity, + TechnologyId::FIGHTER_SPEED => $this->fighterSpeed, + TechnologyId::FIGHTER_ATTACK => $this->fighterAttack, + TechnologyId::FIGHTER_DEFENSE => $this->fighterDefense, + TechnologyId::CORVETTE_SPEED => $this->corvetteSpeed, + TechnologyId::CORVETTE_ATTACK => $this->corvetteAttack, + TechnologyId::CORVETTE_DEFENSE => $this->corvetteDefense, + TechnologyId::FRIGATE_SPEED => $this->frigateSpeed, + TechnologyId::FRIGATE_ATTACK => $this->frigateAttack, + TechnologyId::FRIGATE_DEFENSE => $this->frigateDefense, + TechnologyId::DESTROYER_SPEED => $this->destroyerSpeed, + TechnologyId::DESTROYER_ATTACK => $this->destroyerAttack, + TechnologyId::DESTROYER_DEFENSE => $this->destroyerDefense, + default => throw new \LogicException(sprintf('Technology with ID %d does not exist', $id)), + }; + } + + public function setTechnology(int $id, int $value): void + { + switch ($id) { + case TechnologyId::COM_PLAT_UNBLOCK: + $this->comPlatUnblock = $value; + break; + case TechnologyId::DOCK2_UNBLOCK: + $this->dock2Unblock = $value; + break; + case TechnologyId::DOCK3_UNBLOCK: + $this->dock3Unblock = $value; + break; + case TechnologyId::RECYCLING_UNBLOCK: + $this->recyclingUnblock = $value; + break; + case TechnologyId::SPATIOPORT_UNBLOCK: + $this->spatioportUnblock = $value; + break; + case TechnologyId::SHIP0_UNBLOCK: + $this->ship0Unblock = $value; + break; + case TechnologyId::SHIP1_UNBLOCK: + $this->ship1Unblock = $value; + break; + case TechnologyId::SHIP2_UNBLOCK: + $this->ship2Unblock = $value; + break; + case TechnologyId::SHIP3_UNBLOCK: + $this->ship3Unblock = $value; + break; + case TechnologyId::SHIP4_UNBLOCK: + $this->ship4Unblock = $value; + break; + case TechnologyId::SHIP5_UNBLOCK: + $this->ship5Unblock = $value; + break; + case TechnologyId::SHIP6_UNBLOCK: + $this->ship6Unblock = $value; + break; + case TechnologyId::SHIP7_UNBLOCK: + $this->ship7Unblock = $value; + break; + case TechnologyId::SHIP8_UNBLOCK: + $this->ship8Unblock = $value; + break; + case TechnologyId::SHIP9_UNBLOCK: + $this->ship9Unblock = $value; + break; + case TechnologyId::SHIP10_UNBLOCK: + $this->ship10Unblock = $value; + break; + case TechnologyId::SHIP11_UNBLOCK: + $this->ship11Unblock = $value; + break; + case TechnologyId::COLONIZATION: + $this->colonization = $value; + break; + case TechnologyId::CONQUEST: + $this->conquest = $value; + break; + case TechnologyId::GENERATOR_SPEED: + $this->generatorSpeed = $value; + break; + case TechnologyId::REFINERY_REFINING: + $this->refineryRefining = $value; + break; + case TechnologyId::REFINERY_STORAGE: + $this->refineryStorage = $value; + break; + case TechnologyId::DOCK1_SPEED: + $this->dock1Speed = $value; + break; + case TechnologyId::DOCK2_SPEED: + $this->dock2Speed = $value; + break; + case TechnologyId::TECHNOSPHERE_SPEED: + $this->technosphereSpeed = $value; + break; + case TechnologyId::COMMERCIAL_INCOME: + $this->commercialIncomeUp = $value; + break; + case TechnologyId::GRAVIT_MODULE: + $this->gravitModuleUp = $value; + break; + case TechnologyId::DOCK3_SPEED: + $this->dock3Speed = $value; + break; + case TechnologyId::POPULATION_TAX: + $this->populationTaxUp = $value; + break; + case TechnologyId::COMMANDER_INVEST: + $this->commanderInvestUp = $value; + break; + case TechnologyId::UNI_INVEST: + $this->uniInvestUp = $value; + break; + case TechnologyId::ANTISPY_INVEST: + $this->antiSpyInvestUp = $value; + break; + case TechnologyId::SPACESHIPS_SPEED: + $this->spaceShipsSpeed = $value; + break; + case TechnologyId::SPACESHIPS_CONTAINER: + $this->spaceShipsContainer = $value; + break; + case TechnologyId::BASE_QUANTITY: + $this->baseQuantity = $value; + break; + case TechnologyId::FIGHTER_SPEED: + $this->fighterSpeed = $value; + break; + case TechnologyId::FIGHTER_ATTACK: + $this->fighterAttack = $value; + break; + case TechnologyId::FIGHTER_DEFENSE: + $this->fighterDefense = $value; + break; + case TechnologyId::CORVETTE_SPEED: + $this->corvetteSpeed = $value; + break; + case TechnologyId::CORVETTE_ATTACK: + $this->corvetteAttack = $value; + break; + case TechnologyId::CORVETTE_DEFENSE: + $this->corvetteDefense = $value; + break; + case TechnologyId::FRIGATE_SPEED: + $this->frigateSpeed = $value; + break; + case TechnologyId::FRIGATE_ATTACK: + $this->frigateAttack = $value; + break; + case TechnologyId::FRIGATE_DEFENSE: + $this->frigateDefense = $value; + break; + case TechnologyId::DESTROYER_SPEED: + $this->destroyerSpeed = $value; + break; + case TechnologyId::DESTROYER_ATTACK: + $this->destroyerAttack = $value; + break; + case TechnologyId::DESTROYER_DEFENSE: + $this->destroyerDefense = $value; + break; + default: + throw new \LogicException(sprintf('Technology with ID %d does not exist', $id)); + } + } +} diff --git a/src/Modules/Promethee/Model/TechnologyId.php b/src/Modules/Promethee/Model/TechnologyId.php new file mode 100644 index 000000000..20c3f453f --- /dev/null +++ b/src/Modules/Promethee/Model/TechnologyId.php @@ -0,0 +1,119 @@ + + */ + public static function getAll(): array + { + return [ + ...self::UNBLOCKING_TECHNOLOGIES_IDS, + ...self::BONUS_TECHNOLOGIES_IDS, + ]; + } +} diff --git a/src/Modules/Promethee/Model/TechnologyQueue.php b/src/Modules/Promethee/Model/TechnologyQueue.php new file mode 100644 index 000000000..05fb16371 --- /dev/null +++ b/src/Modules/Promethee/Model/TechnologyQueue.php @@ -0,0 +1,47 @@ +startedAt; + } + + public function getEndDate(): \DateTimeImmutable + { + return $this->endedAt; + } + + public function getResourceIdentifier(): int + { + return $this->technology; + } +} diff --git a/src/Modules/Promethee/PrometheeModule.php b/src/Modules/Promethee/PrometheeModule.php new file mode 100644 index 000000000..4db77113f --- /dev/null +++ b/src/Modules/Promethee/PrometheeModule.php @@ -0,0 +1,13 @@ +findOneBy([ + 'player' => $player, + ]); + } +} diff --git a/src/Modules/Promethee/Repository/TechnologyQueueRepository.php b/src/Modules/Promethee/Repository/TechnologyQueueRepository.php new file mode 100644 index 000000000..13bcbb136 --- /dev/null +++ b/src/Modules/Promethee/Repository/TechnologyQueueRepository.php @@ -0,0 +1,63 @@ +find($id); + } + + public function getPlayerTechnologyQueue(Player $player, int $technology): TechnologyQueue|null + { + return $this->findOneBy([ + 'player' => $player, + 'technology' => $technology, + ]); + } + + public function getAll(): array + { + return $this->findAll(); + } + + public function getPlaceQueues(Place $place): array + { + return $this->findBy([ + 'place' => $place, + ]); + } + + public function getPlayerQueues(Player $player): array + { + return $this->findBy([ + 'player' => $player, + ]); + } + + public function matchPlayerQueuesSince(Player $player, \DateTimeImmutable $since): Collection + { + return $this->matching(new Criteria(Criteria::expr()->andX( + Criteria::expr()->eq('player', $player), + Criteria::expr()->gte('createdAt', $since), + ))); + } +} diff --git a/src/Modules/Promethee/Repository/TechnologyRepository.php b/src/Modules/Promethee/Repository/TechnologyRepository.php new file mode 100644 index 000000000..e9cd250ad --- /dev/null +++ b/src/Modules/Promethee/Repository/TechnologyRepository.php @@ -0,0 +1,26 @@ +findOneBy([ + 'player' => $player, + ]); + } +} diff --git a/src/Modules/Promethee/Resource/ResearchResource.php b/src/Modules/Promethee/Resource/ResearchResource.php new file mode 100644 index 000000000..10cb1b093 --- /dev/null +++ b/src/Modules/Promethee/Resource/ResearchResource.php @@ -0,0 +1,57 @@ + 'Mathématiques', + 'codeName' => 'mathematics', + ], + [ + 'name' => 'Physique', + 'codeName' => 'physics', + ], + [ + 'name' => 'Chimie', + 'codeName' => 'chemistry', + ], + [ + 'name' => 'Droit', + 'codeName' => 'biology', + ], + [ + 'name' => 'Communication', + 'codeName' => 'medicine', + ], + [ + 'name' => 'Economie', + 'codeName' => 'economy', + ], + [ + 'name' => 'Psychologie', + 'codeName' => 'psychology', + ], + [ + 'name' => 'Réseaux', + 'codeName' => 'networks', + ], + [ + 'name' => 'Algorithmique', + 'codeName' => 'algorithmic', + ], + [ + 'name' => 'Statistiques', + 'codeName' => 'statistics', + ], + ]; +} diff --git a/system/Modules/Promethee/Resource/TechnologyResource.php b/src/Modules/Promethee/Resource/TechnologyResource.php similarity index 84% rename from system/Modules/Promethee/Resource/TechnologyResource.php rename to src/Modules/Promethee/Resource/TechnologyResource.php index cb4fa4135..0646afcd7 100644 --- a/system/Modules/Promethee/Resource/TechnologyResource.php +++ b/src/Modules/Promethee/Resource/TechnologyResource.php @@ -1,292 +1,293 @@ 'Long courrier', 'progName' => 'comPlatUnblock', 'imageLink' => 'complatunblock', 'requiredTechnosphere' => 9, - 'requiredResearch' => array(0, 0, 0, 0, 0, 4, 1, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 4, 1, 0, 0, 0], 'time' => 14400, 'resource' => 550, 'credit' => 6000, 'points' => 22, 'column' => 1, 'shortDescription' => 'Débloque la Plateforme Commerciale.', - 'description' => 'Cette technologie unique en son genre, vous permet de construire une plateforme commerciale. En effet, elle développe les voyages longues distances sur les vaisseaux de marchandises, ce qui vous donne la possibilité de commercer avec tous les marchands de la galaxie.' - ), - array( + 'description' => 'Cette technologie unique en son genre, vous permet de construire une plateforme commerciale. En effet, elle développe les voyages longues distances sur les vaisseaux de marchandises, ce qui vous donne la possibilité de commercer avec tous les marchands de la galaxie.', + ], + [ 'name' => 'Grue magnétique', 'progName' => 'dock2Unblock', 'imageLink' => 'dock2unblock', 'requiredTechnosphere' => 16, - 'requiredResearch' => array(4, 5, 2, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [4, 5, 2, 0, 0, 0, 0, 0, 0, 0], 'time' => 15000, 'resource' => 600, 'credit' => 7000, 'points' => 22, 'column' => 1, 'shortDescription' => 'Débloque le Chantier de Ligne.', - 'description' => 'La grue magnétique est une infrastructure capable de déplacer d’énormes charges. Elle est utile dans le Chantier de Ligne pour construire des vaisseaux plus lourds et plus grands que ceux du chantier Alpha.' - ), - array( + 'description' => 'La grue magnétique est une infrastructure capable de déplacer d’énormes charges. Elle est utile dans le Chantier de Ligne pour construire des vaisseaux plus lourds et plus grands que ceux du chantier Alpha.', + ], + [ 'name' => 'Champ magnétique', 'progName' => 'dock3Unblock', 'imageLink' => 'dock3unblock', 'requiredTechnosphere' => 40, - 'requiredResearch' => array(25,25,25,25,25,25,25,25,25,25), + 'requiredResearch' => [25, 25, 25, 25, 25, 25, 25, 25, 25, 25], 'time' => 24600, 'resource' => 980, 'credit' => 10000, 'points' => 44, 'column' => 1, 'shortDescription' => 'Débloque la Colonne d\'Assemblage.', - 'description' => 'Formant un champ magnétique puissant autour de votre base orbitale et de votre planète, le champ magnétique est un système de défense qui ralentit les vaisseaux attaquants, donnant de ce fait plus de chance à vos flottes de défenses de faire mouche.' - ), - array( + 'description' => 'Formant un champ magnétique puissant autour de votre base orbitale et de votre planète, le champ magnétique est un système de défense qui ralentit les vaisseaux attaquants, donnant de ce fait plus de chance à vos flottes de défenses de faire mouche.', + ], + [ 'name' => 'Recycleur autonome', 'progName' => 'recyclingUnblock', 'imageLink' => 'recyclingunblock', 'requiredTechnosphere' => 9, - 'requiredResearch' => array(0, 0, 2, 0, 0, 0, 0, 2, 3, 1), + 'requiredResearch' => [0, 0, 2, 0, 0, 0, 0, 2, 3, 1], 'time' => 25800, 'resource' => 950, 'credit' => 9800, 'points' => 44, 'column' => 1, 'shortDescription' => 'Débloque le Centre de Recyclage.', - 'description' => 'Cette technologie novatrice implémente un système intelligent sur les contrôleurs des vaisseaux de recyclages. Grâce à ce système, les recycleurs peuvent cibler et collecter les déchets gravitant autour d\'une planète de manière autonome.' - ), - array( + 'description' => 'Cette technologie novatrice implémente un système intelligent sur les contrôleurs des vaisseaux de recyclages. Grâce à ce système, les recycleurs peuvent cibler et collecter les déchets gravitant autour d\'une planète de manière autonome.', + ], + [ 'name' => 'Vaisseaux de transport', 'progName' => 'spatioportUnblock', 'imageLink' => 'spatioportunblock', 'requiredTechnosphere' => 16, - 'requiredResearch' => array(0, 0, 0, 2, 0, 10, 7, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 2, 0, 10, 7, 0, 0, 0], 'time' => 25800, 'resource' => 950, 'credit' => 9800, 'points' => 44, 'column' => 1, 'shortDescription' => 'Débloque le Spatioport.', - 'description' => 'Grâce à un nouveau système d\'optimisation, des vaisseaux de transports peuvent être développés efficacement. Ces vaisseaux permettent de faire de long trajets et de transporter beaucoup de denrées. Vous pourrez créer des routes commerciales avec différents partenaires commerciaux.' - ), + 'description' => 'Grâce à un nouveau système d\'optimisation, des vaisseaux de transports peuvent être développés efficacement. Ces vaisseaux permettent de faire de long trajets et de transporter beaucoup de denrées. Vous pourrez créer des routes commerciales avec différents partenaires commerciaux.', + ], // unblock ships - array( + [ 'name' => 'Châssis simple léger', 'progName' => 'ship0Unblock', 'imageLink' => 'ship0unblock', 'requiredTechnosphere' => 1, - 'requiredResearch' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'time' => 20, 'resource' => 150, 'credit' => 1000, 'points' => 4, 'column' => 2, 'shortDescription' => 'Débloque le Pégase.', - 'description' => 'Le châssis léger simple est une technologie qui vous permet de développer et de produire vos tous premiers vaisseaux, les Pégases.' - ), - array( + 'description' => 'Le châssis léger simple est une technologie qui vous permet de développer et de produire vos tous premiers vaisseaux, les Pégases.', + ], + [ 'name' => 'Châssis simple amélioré', 'progName' => 'ship1Unblock', 'imageLink' => 'ship1unblock', 'requiredTechnosphere' => 6, - 'requiredResearch' => array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'time' => 9000, 'resource' => 200, 'credit' => 1500, 'points' => 6, 'column' => 2, 'shortDescription' => 'Débloque le Satyre.', - 'description' => 'En modifiant quelque peu le châssis léger simple et en transformant la carcasse d’un pégase, vos chercheurs peuvent développer un nouveau type de chasseur, le Satyre.' - ), - array( + 'description' => 'En modifiant quelque peu le châssis léger simple et en transformant la carcasse d’un pégase, vos chercheurs peuvent développer un nouveau type de chasseur, le Satyre.', + ], + [ 'name' => 'Châssis simple double', 'progName' => 'ship2Unblock', 'imageLink' => 'ship2unblock', 'requiredTechnosphere' => 10, - 'requiredResearch' => array(2, 2, 0, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [2, 2, 0, 0, 0, 0, 0, 0, 0, 0], 'time' => 29400, 'resource' => 800, 'credit' => 7500, 'points' => 8, 'column' => 2, 'shortDescription' => 'Débloque la Chimère.', - 'description' => 'Le châssis simple double est un développement relativement complexe qui vous permet de créer des Chimères, un type de navette multi-tourelle.' - ), - array( + 'description' => 'Le châssis simple double est un développement relativement complexe qui vous permet de créer des Chimères, un type de navette multi-tourelle.', + ], + [ 'name' => 'Châssis nodal léger', 'progName' => 'ship3Unblock', 'imageLink' => 'ship3unblock', 'requiredTechnosphere' => 16, - 'requiredResearch' => array(8, 9, 6, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [8, 9, 6, 0, 0, 0, 0, 0, 0, 0], 'time' => 10800, 'resource' => 200, 'credit' => 1800, 'points' => 10, 'column' => 2, 'shortDescription' => 'Débloque la Sirène.', - 'description' => 'Le châssis nodal, permettant la construction de la corvette « Sirène », améliore et renforce considérablement la puissance de défense des vaisseaux.' - ), - array( + 'description' => 'Le châssis nodal, permettant la construction de la corvette « Sirène », améliore et renforce considérablement la puissance de défense des vaisseaux.', + ], + [ 'name' => 'Châssis nodal amélioré', 'progName' => 'ship4Unblock', 'imageLink' => 'ship4unblock', 'requiredTechnosphere' => 20, - 'requiredResearch' => array(12, 10, 5, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [12, 10, 5, 0, 0, 0, 0, 0, 0, 0], 'time' => 19200, 'resource' => 500, 'credit' => 5500, 'points' => 12, 'column' => 2, 'shortDescription' => 'Débloque la Dryade.', - 'description' => 'Le châssis nodal amélioré, plus grand et plus solide que le châssis nodal, vous donne la possibilité de produire la corvette « Dryade ». Cette corvette gagne, grâce à ce nouveau châssis, en puissance d’attaque et en défense.' - ), - array( + 'description' => 'Le châssis nodal amélioré, plus grand et plus solide que le châssis nodal, vous donne la possibilité de produire la corvette « Dryade ». Cette corvette gagne, grâce à ce nouveau châssis, en puissance d’attaque et en défense.', + ], + [ 'name' => 'Châssis nodal lourd', 'progName' => 'ship5Unblock', 'imageLink' => 'ship5unblock', 'requiredTechnosphere' => 26, - 'requiredResearch' => array(13, 13, 10, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [13, 13, 10, 0, 0, 0, 0, 0, 0, 0], 'time' => 46800, 'resource' => 1100, 'credit' => 12500, 'points' => 14, 'column' => 2, 'shortDescription' => 'Débloque la Méduse.', - 'description' => 'Plus compliqué et plus performant que les deux châssis nodaux précédents, le châssis nodal lourd est spécialement adapté pour les vaisseaux de type multi-tourelle. En effet, grâce au renforcement de ce châssis et à l’amélioration de la corvette « Dryade », vous pouvez désormais construire la corvette multi-tourelle « Méduse ».' - ), - array( + 'description' => 'Plus compliqué et plus performant que les deux châssis nodaux précédents, le châssis nodal lourd est spécialement adapté pour les vaisseaux de type multi-tourelle. En effet, grâce au renforcement de ce châssis et à l’amélioration de la corvette « Dryade », vous pouvez désormais construire la corvette multi-tourelle « Méduse ».', + ], + [ 'name' => 'Châssis modulaire', 'progName' => 'ship6Unblock', 'imageLink' => 'ship6unblock', 'requiredTechnosphere' => 14, - 'requiredResearch' => array(5, 3, 1, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [5, 3, 1, 0, 0, 0, 0, 0, 0, 0], 'time' => 17400, 'resource' => 450, 'credit' => 5000, 'points' => 16, 'column' => 3, 'shortDescription' => 'Débloque le Griffon.', - 'description' => 'Le châssis modulaire, nouvelle découverte de votre éminent groupe de recherche, vous permet de construire un nouveau type de vaisseau, les frégates d’attaque de type Griffon.' - ), - array( + 'description' => 'Le châssis modulaire, nouvelle découverte de votre éminent groupe de recherche, vous permet de construire un nouveau type de vaisseau, les frégates d’attaque de type Griffon.', + ], + [ 'name' => 'Châssis modulaire renforcé', 'progName' => 'ship7Unblock', 'imageLink' => 'ship7unblock', 'requiredTechnosphere' => 20, - 'requiredResearch' => array(6, 8, 2, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [6, 8, 2, 0, 0, 0, 0, 0, 0, 0], 'time' => 21600, 'resource' => 550, 'credit' => 5000, 'points' => 18, 'column' => 3, 'shortDescription' => 'Débloque le Cyclope.', - 'description' => 'En renforçant et en améliorant légèrement son petit frère, le châssis modulaire, un groupe de chercheur a découvert une nouvelle frégate. En effet, plus puissante et plus grosse, la frégate ionique vient embellir vos rangs.' - ), - array( + 'description' => 'En renforçant et en améliorant légèrement son petit frère, le châssis modulaire, un groupe de chercheur a découvert une nouvelle frégate. En effet, plus puissante et plus grosse, la frégate ionique vient embellir vos rangs.', + ], + [ 'name' => 'Châssis polymère', 'progName' => 'ship8Unblock', 'imageLink' => 'ship8unblock', 'requiredTechnosphere' => 24, - 'requiredResearch' => array(10, 12, 9, 0, 0, 0, 0, 4, 0, 0), + 'requiredResearch' => [10, 12, 9, 0, 0, 0, 0, 4, 0, 0], 'time' => 30000, 'resource' => 900, 'credit' => 7500, 'points' => 20, 'column' => 3, 'shortDescription' => 'Débloque le Minotaure.', - 'description' => 'Le châssis polymère, développé pour la construction de destroyer, vous donnera la possibilité de construire le destroyer Minotaure. Ce châssis est trois fois plus grand que le châssis modulaire, mais également beaucoup plus solide.' - ), - array( + 'description' => 'Le châssis polymère, développé pour la construction de destroyer, vous donnera la possibilité de construire le destroyer Minotaure. Ce châssis est trois fois plus grand que le châssis modulaire, mais également beaucoup plus solide.', + ], + [ 'name' => 'Châssis polymère renforcé', 'progName' => 'ship9Unblock', 'imageLink' => 'ship9unblock', 'requiredTechnosphere' => 30, - 'requiredResearch' => array(14, 15, 10, 0, 0, 0, 0, 4, 3, 0), + 'requiredResearch' => [14, 15, 10, 0, 0, 0, 0, 4, 3, 0], 'time' => 34800, 'resource' => 1000, 'credit' => 9000, 'points' => 26, 'column' => 3, 'shortDescription' => 'Débloque l\'Hydre.', - 'description' => 'Le châssis polymère renforcé a été développé pour améliorer la stabilité du destroyer missile Hydre, dans le but de lui permettre de lancer de plus gros missiles tout en gardant une bonne précision.' - ), - array( + 'description' => 'Le châssis polymère renforcé a été développé pour améliorer la stabilité du destroyer missile Hydre, dans le but de lui permettre de lancer de plus gros missiles tout en gardant une bonne précision.', + ], + [ 'name' => 'Châssis polymère amélioré', 'progName' => 'ship10Unblock', 'imageLink' => 'ship10unblock', 'requiredTechnosphere' => 34, - 'requiredResearch' => array(16, 18, 12, 0, 0, 0, 0, 5, 3, 2), + 'requiredResearch' => [16, 18, 12, 0, 0, 0, 0, 5, 3, 2], 'time' => 45600, 'resource' => 1100, 'credit' => 12000, 'points' => 32, 'column' => 3, 'shortDescription' => 'Débloque le Cerbère.', - 'description' => 'En modifiant quelque peu le châssis polymère renforcé, une de vos équipes de chercheurs a développé un nouveau type de vaisseau – le Croiseur Cerbère.' - ), - array( + 'description' => 'En modifiant quelque peu le châssis polymère renforcé, une de vos équipes de chercheurs a développé un nouveau type de vaisseau – le Croiseur Cerbère.', + ], + [ 'name' => 'Châssis polymère lourd', 'progName' => 'ship11Unblock', 'imageLink' => 'ship11unblock', 'requiredTechnosphere' => 40, - 'requiredResearch' => array(18, 22, 16, 0, 0, 0, 0, 5, 4, 2), + 'requiredResearch' => [18, 22, 16, 0, 0, 0, 0, 5, 4, 2], 'time' => 69000, 'resource' => 1600, 'credit' => 16500, 'points' => 40, 'column' => 3, 'shortDescription' => 'Débloque le Phénix.', - 'description' => 'Cette amélioration du châssis polymère amélioré vous permet de construire le vaisseau le plus puissant de la galaxie de l’œil – Le Phénix. En renforçant et en améliorant l’ergonomie de ce châssis, vos chercheurs ont pu stabiliser et augmenter la puissance de feu du vaisseau.' - ), - array( + 'description' => 'Cette amélioration du châssis polymère amélioré vous permet de construire le vaisseau le plus puissant de la galaxie de l’œil – Le Phénix. En renforçant et en améliorant l’ergonomie de ce châssis, vos chercheurs ont pu stabiliser et augmenter la puissance de feu du vaisseau.', + ], + [ 'name' => 'Colonisation', 'progName' => 'colonization', 'imageLink' => 'colonization', 'requiredTechnosphere' => 14, - 'requiredResearch' => array(0, 0, 0, 4, 4, 1, 0, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 4, 4, 1, 0, 0, 0, 0], 'time' => 25000, 'resource' => 15000, 'credit' => 20000, 'points' => 60, 'column' => 1, 'shortDescription' => 'Vous permet de coloniser de nouvelles planètes.', - 'description' => 'La Colonisation est une technologie relative à vos commandants. En effet, elle offrira à vos chefs d’escadrille la possibilité de prendre possession d’une ou plusieurs planètes vides. Les planètes vides sont des lieux n’appartenant à personne. Cette technologie vous ouvrira les portes de l’agrandissement de votre royaume.' - ), - array( + 'description' => 'La Colonisation est une technologie relative à vos commandants. En effet, elle offrira à vos chefs d’escadrille la possibilité de prendre possession d’une ou plusieurs planètes vides. Les planètes vides sont des lieux n’appartenant à personne. Cette technologie vous ouvrira les portes de l’agrandissement de votre royaume.', + ], + [ 'name' => 'Conquête', 'progName' => 'conquest', 'imageLink' => 'conquest', 'requiredTechnosphere' => 25, - 'requiredResearch' => array(0, 0, 0, 12, 10, 0, 0, 5, 0, 0), + 'requiredResearch' => [0, 0, 0, 12, 10, 0, 0, 5, 0, 0], 'time' => 40000, 'resource' => 30000, 'credit' => 40000, 'points' => 100, 'column' => 1, 'shortDescription' => 'Vous permet de conquérir les planètes d\'autres joueurs.', - 'description' => 'La technologie « Conquête » va permettre à vos commandants de coloniser des planètes ennemies. Vous pourrez désormais commencer votre guerre de conquête dans la galaxie de l’Œil pour le salut de votre faction.' - ), + 'description' => 'La technologie « Conquête » va permettre à vos commandants de coloniser des planètes ennemies. Vous pourrez désormais commencer votre guerre de conquête dans la galaxie de l’Œil pour le salut de votre faction.', + ], // LEVEL technologies - array( + [ 'name' => 'Ingénierie du bâtiment', 'progName' => 'generatorSpeed', 'imageLink' => 'generatorspeed', 'requiredTechnosphere' => 6, - 'requiredResearch' => array(0, 0, 0, 0, 0, 0, 0, 0, 4, 4), + 'requiredResearch' => [0, 0, 0, 0, 0, 0, 0, 0, 4, 4], 'time' => 40800, 'maxLevel' => 20, 'category' => 2, @@ -296,14 +297,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la vitesse de votre Générateur de {x}%.', 'description' => 'En adoptant de nouvelles mesures dans le milieu de la construction et en associant différents domaines de recherche, vos ingénieures vous permettent de construire vos bâtiments de façon optimale. En effet, grâce à une meilleure coordination au sein de votre générateur, vous pouvez construire plus vite vos infrastructures.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Craquage catalytique', 'progName' => 'refineryRefining', 'imageLink' => 'refineryrefining', 'requiredTechnosphere' => 10, - 'requiredResearch' => array(0, 0, 0, 0, 0, 0, 0, 5, 6, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 0, 0, 5, 6, 0], 'time' => 37800, 'maxLevel' => 25, 'category' => 3, @@ -313,14 +314,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la production de votre Raffinerie de {x}%.', 'description' => 'La découverte d’un nouveau procédé dans la chaine de raffinage de vos ressources vous permet d’augmenter votre production de ressources à l’heure.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Silo-compresseur', 'progName' => 'refineryStorage', 'imageLink' => 'refinerystorage', 'requiredTechnosphere' => 14, - 'requiredResearch' => array(0, 0, 0, 0, 0, 0, 0, 0, 7, 7), + 'requiredResearch' => [0, 0, 0, 0, 0, 0, 0, 0, 7, 7], 'time' => 46800, 'maxLevel' => 30, 'category' => 3, @@ -330,14 +331,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la taille de votre Stockage de ressources de {x}%.', 'description' => 'Grâce à l’association de plusieurs domaines de recherche, une de vos équipes vous donne la possibilité d’augmenter vos capacités de stockage. Cette nouvelle amélioration développe une technique de compression de vos ressources augmentant la capacité de stockage de vos silos, sans devoir augmenter leur taille.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Chaîne d\'assemblage', 'progName' => 'dock1Speed', 'imageLink' => 'dock1speed', 'requiredTechnosphere' => 16, - 'requiredResearch' => array(0, 2, 0, 0, 0, 0, 0, 8, 9, 3), + 'requiredResearch' => [0, 2, 0, 0, 0, 0, 0, 8, 9, 3], 'time' => 27000, 'maxLevel' => 25, 'category' => 2, @@ -347,14 +348,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la vitesse d\'assemblage de votre Chantier Alpha de {x}%.', 'description' => 'La chaine d’assemblage est un procédé optimisant d’avantage votre processus de construction de vaisseaux. En termes plus clairs, ce développement diminue le temps de fabrication des pièces nécessaires à vos vaisseaux dans le Chantier Alpha.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Chaîne d\'assemblage lourde', 'progName' => 'dock2Speed', 'imageLink' => 'dock2speed', 'requiredTechnosphere' => 28, - 'requiredResearch' => array(0, 4, 0, 0, 0, 0, 0, 14, 16, 6), + 'requiredResearch' => [0, 4, 0, 0, 0, 0, 0, 14, 16, 6], 'time' => 69000, 'maxLevel' => 25, 'category' => 2, @@ -364,14 +365,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la vitesse d\'assemblage de votre Chantier de Ligne de {x}%.', 'description' => 'En augmentant les capacités de production dans le chantier Alpha, vos chercheurs ont également réussit à l’adapter au Chantier de Ligne, permettant ainsi de diminuer le temps de construction des plus gros vaisseaux.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Intelligence artificielle', 'progName' => 'technosphereSpeed', 'imageLink' => 'technospherespeed', 'requiredTechnosphere' => 12, - 'requiredResearch' => array(0, 0, 0, 0, 0, 9, 7, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 9, 7, 0, 0, 0], 'time' => 60000, 'maxLevel' => 15, 'category' => 2, @@ -381,14 +382,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau augmentera la vitesse de développement de technologies dans la Technosphère de {x}%.', 'description' => 'La technologie « Intelligence artificielle » vous permet d’augmenter la vitesse de recherche de vos technologies. En effet, après que vos scientifiques aient pu mettre en place un réseau de robotique pour gérer la totalité de votre Technosphère, le complexe a gagné en efficacité.', - 'bonus' => 1 - ), - array( + 'bonus' => 1, + ], + [ 'name' => 'Mercatique', 'progName' => 'commercialIncomeUp', 'imageLink' => 'commercialincome', 'requiredTechnosphere' => 15, - 'requiredResearch' => array(0, 0, 0, 0, 0, 8, 9, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 8, 9, 0, 0, 0], 'time' => 51000, 'maxLevel' => 30, 'category' => 3, @@ -398,14 +399,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau augmentera la production de vos routes commerciales de {x}%.', 'description' => 'Cette nouvelle technologie, basée sur une optimisation des informations et des transferts monétaires entre les différentes planètes, améliore considérablement le revenu de vos routes commerciales.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Générateur de gravité étendu', 'progName' => 'gravitModuleUp', 'imageLink' => 'gravitmodule', 'requiredTechnosphere' => 40, - 'requiredResearch' => array(25,25,25,25,25,25,25,25,25,25), + 'requiredResearch' => [25, 25, 25, 25, 25, 25, 25, 25, 25, 25], 'time' => 58800, 'maxLevel' => 30, 'category' => 3, @@ -415,14 +416,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la puissance de votre Module Gravitationnel de {x}%.', 'description' => 'En améliorant la portée magnétique de votre générateur de gravité, cette technologie vous permet d’augmenter votre système défensif, ce qui augmentera la capacité de vos vaisseaux à toucher les ennemis.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Chaîne de production lourde', 'progName' => 'dock3Speed', 'imageLink' => 'dock3speed', 'requiredTechnosphere' => 40, - 'requiredResearch' => array(25,25,25,25,25,25,25,25,25,25), + 'requiredResearch' => [25, 25, 25, 25, 25, 25, 25, 25, 25, 25], 'time' => 64800, 'maxLevel' => 25, 'category' => 2, @@ -432,14 +433,14 @@ class TechnologyResource { 'column' => 4, 'shortDescription' => 'Le prochain niveau augmentera la vitesse de production de de votre Colonne d\'Assemblage de {x}%.', 'description' => 'Utilisant les mêmes principes économiques que les deux chaines d’assemblage, la chaine de production lourde améliore et optimise le temps de construction de vos vaisseaux-mères dans la colonne d’assemblage.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Economie sociale de marché', 'progName' => 'populationTaxUp', 'imageLink' => 'populationtax', 'requiredTechnosphere' => 20, - 'requiredResearch' => array(0, 0, 0, 0, 0, 16, 3, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 16, 3, 0, 0, 0], 'time' => 41400, 'maxLevel' => 30, 'category' => 2, @@ -449,14 +450,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau augmentera les impôts que vous percevez à votre population de {x}%.', 'description' => 'L’économie sociale de marché est un procédé simple de gestion des taxes de votre planète. Cette amélioration vous donne la possibilité de gérer de façon plus précise vos entrés de crédit en terme d’imposition de la population.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Formation continue', 'progName' => 'commanderInvestUp', 'imageLink' => 'commanderinvest', 'requiredTechnosphere' => 21, - 'requiredResearch' => array(0, 0, 0, 0, 6, 6, 14, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 6, 6, 14, 0, 0, 0], 'time' => 52200, 'maxLevel' => 30, 'category' => 2, @@ -466,14 +467,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau accélérera la formation de vos commandants dans l\'école de {x}%.', 'description' => 'La formation continue est une technologie appliquée à votre école de commandement. Elle vous permet de former plus précisément les commandants en place dans votre école et ainsi augmenter leurs aptitudes au combat et à la stratégie.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Lobbying universitaire', 'progName' => 'uniInvestUp', 'imageLink' => 'uniinvest', 'requiredTechnosphere' => 9, - 'requiredResearch' => array(0, 0, 0, 1, 2, 2, 12, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 1, 2, 2, 12, 0, 0, 0], 'time' => 38000, 'maxLevel' => 30, 'category' => 2, @@ -483,14 +484,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau rendra plus efficace votre investissement dans l\'Université de {x}%.', 'description' => 'Le lobbying universitaire est une technologie mise en place dans le but d’augmenter les échanges entre les différentes facultés de votre université et votre gouvernement. Cette technologie permet à votre université de disposer de plus de fonds pour financer les facultés.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Surveillance réseau', 'progName' => 'antiSpyInvestUp', 'imageLink' => 'antispyinvest', 'requiredTechnosphere' => 13, - 'requiredResearch' => array(0, 0, 0, 0, 0, 8, 8, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 0, 0, 8, 8, 0, 0, 0], 'time' => 50000, 'maxLevel' => 30, 'category' => 2, @@ -500,14 +501,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau rendra plus efficace votre investissement dans l\'Anti-Espionnage de {x}%.', 'description' => 'La surveillance réseau est une technologie qui vous permet d’augmenter votre champ de contre-espionnage. Vos services secrets, grâce à d’importantes avancées en matière d’observation et d’espionnage, augmentent considérablement leur champ de vision sans aucune augmentation des coûts.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Propulsion hyperspatiale', 'progName' => 'spaceShipsSpeed', 'imageLink' => 'spaceshipsspeed', 'requiredTechnosphere' => 25, - 'requiredResearch' => array(10, 16, 0, 0, 0, 0, 0, 0, 2, 0), + 'requiredResearch' => [10, 16, 0, 0, 0, 0, 0, 0, 2, 0], 'time' => 60000, 'maxLevel' => 30, 'category' => 2, @@ -517,14 +518,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau augmentera la vitesse de vos vaisseaux de {x}%.', 'description' => 'La propulsion hyper-spatiale est une innovation importante pour la bonne marche de vos conquêtes. En effet, cette technologie augmente la vitesse de vos flottes, vous permettant donc de conquérir des planètes plus éloignées de votre base principale.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Silo de transport', 'progName' => 'spaceShipsContainer', 'imageLink' => 'spaceshipscontainer', 'requiredTechnosphere' => 20, - 'requiredResearch' => array(0, 0, 0, 0, 0, 0, 0, 6, 8, 9), + 'requiredResearch' => [0, 0, 0, 0, 0, 0, 0, 6, 8, 9], 'time' => 49800, 'maxLevel' => 30, 'category' => 2, @@ -534,14 +535,14 @@ class TechnologyResource { 'column' => 5, 'shortDescription' => 'Le prochain niveau augmentera la capacité à transporter des ressources de vos vaisseaux de {x}%.', 'description' => 'En mariant différents domaines scientifiques et en se basant sur les résultats du silo-compresseur, vos chercheurs ont réussi à adapter ce système à vos vaisseaux. Cette technique permet à vos flottes de ramener plus de ressource dans leur soute de transport.', - 'bonus' => 2 - ), - array( + 'bonus' => 2, + ], + [ 'name' => 'Administration étendue', 'progName' => 'baseQuantity', 'imageLink' => 'basequantity', 'requiredTechnosphere' => 16, - 'requiredResearch' => array(0, 0, 0, 5, 5, 0, 0, 0, 0, 0), + 'requiredResearch' => [0, 0, 0, 5, 5, 0, 0, 0, 0, 0], 'time' => 47300, 'maxLevel' => 14, 'category' => 1, @@ -551,14 +552,14 @@ class TechnologyResource { 'column' => 1, 'shortDescription' => 'Chaque niveau supplémentaire de cette technologie vous permet de gérer une base de plus (colonisation ou conquête)', 'description' => 'La technologie Administration étendue a été initiée par votre ministre des affaires étrangères, de manière à pouvoir contrôler plus facilement vos territoires colonisés. En effet, cette technologie vous permet de mettre en place votre gouvernement et de contrôler la population des planètes sous votre contrôle. Chaque niveau de cette technologie vous permet de coloniser ou de conquérir une planète de plus.', - 'bonus' => 1 - ), - array( + 'bonus' => 1, + ], + [ 'name' => 'Turbo-propulsion', 'progName' => 'fighterSpeed', 'imageLink' => 'fighterspeed', 'requiredTechnosphere' => 12, - 'requiredResearch' => array(1, 2, 5, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [1, 2, 5, 0, 0, 0, 0, 0, 0, 0], 'time' => 22800, 'maxLevel' => 30, 'category' => 3, @@ -568,14 +569,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera la maniabilité de vos chasseurs de {x}%.', 'description' => 'Cette technologie améliore la maniabilité de vos chasseurs en augmentant le nombre de réacteurs. Vous pourrez donc attaquer plus rapidement vos ennemis lors des combats.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Gros calibre', 'progName' => 'fighterAttack', 'imageLink' => 'fighterattack', 'requiredTechnosphere' => 13, - 'requiredResearch' => array(2, 5, 1, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [2, 5, 1, 0, 0, 0, 0, 0, 0, 0], 'time' => 29400, 'maxLevel' => 30, 'category' => 3, @@ -585,14 +586,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera l\'attaque de vos chasseurs de {x}%.', 'description' => 'La technologie du calibre 5 améliore directement l’armement de vos chasseurs. Vos Pégases et vos Satyres auront, de ce fait, une plus grande puissance de feu face à vos ennemis.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Bouclier simple', 'progName' => 'fighterDefense', 'imageLink' => 'fighterdefense', 'requiredTechnosphere' => 14, - 'requiredResearch' => array(5, 1, 2, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [5, 1, 2, 0, 0, 0, 0, 0, 0, 0], 'time' => 36000, 'maxLevel' => 30, 'category' => 3, @@ -602,14 +603,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera la défense de vos chasseurs de {x}%.', 'description' => 'Le petit bouclier est un système de défense qui enveloppe vos chasseurs d’un film laser, leur permettant de mieux résister aux impacts de vos ennemis.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Turbo-propulsion améliorée', 'progName' => 'corvetteSpeed', 'imageLink' => 'corvettespeed', 'requiredTechnosphere' => 22, - 'requiredResearch' => array(3, 4, 9, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [3, 4, 9, 0, 0, 0, 0, 0, 0, 0], 'time' => 27600, 'maxLevel' => 30, 'category' => 3, @@ -619,14 +620,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera la maniabilité de vos corvettes de {x}%.', 'description' => 'La propulsion améliorée est une technologie qui booste les réacteurs de vos corvettes, améliorant ainsi leur maniabilité et leur chance d’éviter les impacts.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Armement laser', 'progName' => 'corvetteAttack', 'imageLink' => 'corvetteattack', 'requiredTechnosphere' => 23, - 'requiredResearch' => array(4, 9, 3, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [4, 9, 3, 0, 0, 0, 0, 0, 0, 0], 'time' => 33600, 'maxLevel' => 30, 'category' => 3, @@ -636,14 +637,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera l\'attaque de vos corvettes de {x}%.', 'description' => 'Cette nouvelle technologie augmente le faisceau des canons laser de vos corvettes. Celles-ci seront donc plus puissantes aux combats spatiaux ou attaques de planètes.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Bouclier renforcé', 'progName' => 'corvetteDefense', 'imageLink' => 'corvettedefense', 'requiredTechnosphere' => 24, - 'requiredResearch' => array(9, 3, 4, 0, 0, 0, 0, 0, 0, 0), + 'requiredResearch' => [9, 3, 4, 0, 0, 0, 0, 0, 0, 0], 'time' => 45000, 'maxLevel' => 30, 'category' => 3, @@ -653,14 +654,14 @@ class TechnologyResource { 'column' => 6, 'shortDescription' => 'Le prochain niveau améliorera la défense de vos corvettes de {x}%.', 'description' => 'Le bouclier, plus résistant que le petit bouclier, a été élaboré pour augmenter le système de défense de vos corvettes.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Turbo-propulsion double', 'progName' => 'frigateSpeed', 'imageLink' => 'frigatespeed', 'requiredTechnosphere' => 32, - 'requiredResearch' => array(5, 6, 13, 0, 0, 0, 0, 0, 2, 1), + 'requiredResearch' => [5, 6, 13, 0, 0, 0, 0, 0, 2, 1], 'time' => 33000, 'maxLevel' => 30, 'category' => 3, @@ -670,14 +671,14 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera la maniabilité de vos frégates de {x}%.', 'description' => 'La super propulsion est un système de propulsion héliothermique. Ce système permet à tous vos vaisseaux de type frégate de gagner en maniabilité.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Tête chercheuse', 'progName' => 'frigateAttack', 'imageLink' => 'frigateattack', 'requiredTechnosphere' => 33, - 'requiredResearch' => array(6, 13, 5, 0, 0, 0, 0, 0, 2, 1), + 'requiredResearch' => [6, 13, 5, 0, 0, 0, 0, 0, 2, 1], 'time' => 41400, 'maxLevel' => 30, 'category' => 3, @@ -687,14 +688,14 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera l\'attaque de vos frégates de {x}%.', 'description' => 'La technologie tête chercheuse augmente la capacité des missiles de vos frégates à toucher leurs cibles. Cette technique vous permettra d’imposer plus de dégâts aux navettes ennemies.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Bouclier lourd', 'progName' => 'frigateDefense', 'imageLink' => 'frigatedefense', 'requiredTechnosphere' => 34, - 'requiredResearch' => array(13, 5, 6, 0, 0, 0, 0, 0, 2, 1), + 'requiredResearch' => [13, 5, 6, 0, 0, 0, 0, 0, 2, 1], 'time' => 59400, 'maxLevel' => 30, 'category' => 3, @@ -704,14 +705,14 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera la défense de vos frégates de {x}%.', 'description' => 'Le bouclier renforcé dispose de deux protections laser enveloppent complètement la coque de vos frégates tout en procurant une protection idéal face aux attaques de type missile.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Turbo-propulsion triple', 'progName' => 'destroyerSpeed', 'imageLink' => 'destroyerspeed', 'requiredTechnosphere' => 38, - 'requiredResearch' => array(7, 8, 17, 0, 0, 0, 0, 0, 4, 2), + 'requiredResearch' => [7, 8, 17, 0, 0, 0, 0, 0, 4, 2], 'time' => 34200, 'maxLevel' => 30, 'category' => 3, @@ -721,14 +722,14 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera la maniabilité de vos destroyers/croiseurs de {x}%.', 'description' => 'La turbo-propulsion est basée sur un système photonique, lui permettant d’augmenter sa rapidité à proximité d’une étoile. Cette amélioration augmentera la maniabilité de tous vos destroyers.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Canon longue portée', 'progName' => 'destroyerAttack', 'imageLink' => 'destroyerattack', 'requiredTechnosphere' => 39, - 'requiredResearch' => array(8, 17, 7, 0, 0, 0, 0, 0, 4, 2), + 'requiredResearch' => [8, 17, 7, 0, 0, 0, 0, 0, 4, 2], 'time' => 45600, 'maxLevel' => 30, 'category' => 3, @@ -738,14 +739,14 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera l\'attaque de vos destroyers/croiseurs de {x}%.', 'description' => 'L’armement lourd est une technologie améliorant la capacité d’attaque de vos destroyers. Ce système transformera quelque peu les canons de vos destroyers, leur offrant la possibilité d’augmenter leur puissance de feu dans les combats spatiaux.', - 'bonus' => 3 - ), - array( + 'bonus' => 3, + ], + [ 'name' => 'Bouclier lourd amélioré', 'progName' => 'destroyerDefense', 'imageLink' => 'destroyerdefense', 'requiredTechnosphere' => 40, - 'requiredResearch' => array(17, 7, 8, 0, 0, 0, 0, 0, 4, 2), + 'requiredResearch' => [17, 7, 8, 0, 0, 0, 0, 0, 4, 2], 'time' => 72000, 'maxLevel' => 30, 'category' => 3, @@ -755,7 +756,7 @@ class TechnologyResource { 'column' => 7, 'shortDescription' => 'Le prochain niveau améliorera la défense de vos destroyers/croiseurs de {x}%.', 'description' => 'Le bouclier amélioré n’est autre qu’une amélioration du bouclier renforcé. En effet, cette technologie n’apporte pas de modification majeur par rapport au système précédent, elle est simplement adapté aux vaisseaux de type destroyer.', - 'bonus' => 3 - ) - ); -} \ No newline at end of file + 'bonus' => 3, + ], + ]; +} diff --git a/src/Modules/Promethee/Resource/config/config.yml b/src/Modules/Promethee/Resource/config/config.yml new file mode 100644 index 000000000..3dc61f9f3 --- /dev/null +++ b/src/Modules/Promethee/Resource/config/config.yml @@ -0,0 +1,37 @@ +--- +parameters: + promethee.research.coeff: 1 + promethee.research.max_diff: 3 + promethee.research.quantity: 10 + + promethee.technology_queue.resource_refund: 0.5 + promethee.technology_queue.credit_refund: 0.5 + +services: + _defaults: + autowire: true + autoconfigure: true + + _instanceof: + App\Shared\Application\SchedulerInterface: + tags: ['app.scheduler'] + + App\Modules\Promethee\: + resource: '%kernel.project_dir%/src/Modules/Promethee/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Promethee\Helper\ResearchHelper: + arguments: + $researchCoeff: "%promethee.research.coeff%" + $researchMaxDiff: "%promethee.research.max_diff%" + + App\Modules\Promethee\Helper\TechnologyHelper: + arguments: + $researchQuantity: "%promethee.research.quantity%" + + App\Modules\Promethee\Manager\ResearchManager: + arguments: + $researchQuantity: "%promethee.research.quantity%" diff --git a/src/Modules/Promethee/main.conf.php b/src/Modules/Promethee/main.conf.php new file mode 100755 index 000000000..7a36d24b1 --- /dev/null +++ b/src/Modules/Promethee/main.conf.php @@ -0,0 +1,11 @@ +timeMode->isStandard()) { + return $this->durationHandler->getHoursDiff($updatable->lastUpdatedBySystemAt(), $this->clock->now()); + } + + $secondsDiff = $this->durationHandler->getDiff($updatable->lastUpdatedBySystemAt(), $this->clock->now()); + + return intval(round($secondsDiff / 600)); + } +} diff --git a/src/Modules/Shared/Domain/Model/SystemUpdatable.php b/src/Modules/Shared/Domain/Model/SystemUpdatable.php new file mode 100644 index 000000000..d36e60f9e --- /dev/null +++ b/src/Modules/Shared/Domain/Model/SystemUpdatable.php @@ -0,0 +1,10 @@ +name => self::GAME_CYCLE_SECONDS_STANDARD_MODE, + TimeMode::Fast->name => self::GAME_CYCLE_SECONDS_FAST_MODE, + ]; + + + /** + * Server segment shift : Number of segments added to the server start date + * Example : if the server started 2 days ago and the shift is 100, the date will be SEG102 + */ + public function __construct( + private DurationHandler $durationHandler, + #[Autowire('%server_start_time%')] + private string $serverStartDate, + #[Autowire('%server_segment_shift%')] + private int $serverSegmentShift, + #[Autowire('%server_time_mode%')] + private TimeMode $timeMode, + ) { + + } + + public function convertSecondsToGameCycles(int $seconds): int + { + return intval(round($seconds / self::GAME_CYCLE_SECONDS[$this->timeMode->name])); + } + + public function convertGameCyclesToSeconds(int $gameCycles): int + { + return self::GAME_CYCLE_SECONDS[$this->timeMode->name] * $gameCycles; + } + + + public function convertDatetimeToGameDate(string|\DateTimeImmutable $sourceDate, bool $returnHtml = true): string + { + $cycles = $this->getRel($sourceDate); + $segments = floor($cycles / self::SEGMENT_CYCLES_COUNT); + $remainingCycles = $cycles - ($segments * self::SEGMENT_CYCLES_COUNT); + + $return = 'SEG'.$segments.' REL'.$remainingCycles; + + return $returnHtml + ? ''.$return.'' + : $return; + } + + private function getRel(\DateTimeImmutable $sourceDate): int + { + $secondsDiff = $this->durationHandler->getDiff(new \DateTimeImmutable($this->serverStartDate), $sourceDate); + + return intval( + floor($secondsDiff / self::GAME_CYCLE_SECONDS[$this->timeMode->name]) + + ($this->serverSegmentShift * self::SEGMENT_CYCLES_COUNT) + ); + } +} diff --git a/src/Modules/Shared/Infrastructure/Repository/Doctrine/DoctrineRepository.php b/src/Modules/Shared/Infrastructure/Repository/Doctrine/DoctrineRepository.php new file mode 100644 index 000000000..2769df7b3 --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Repository/Doctrine/DoctrineRepository.php @@ -0,0 +1,48 @@ + + * @implements EntityRepositoryInterface + */ +abstract class DoctrineRepository extends ServiceEntityRepository implements EntityRepositoryInterface +{ + /** + * @param T $entity + */ + public function save(object $entity): void + { + $this->getEntityManager()->persist($entity); + $this->getEntityManager()->flush(); + } + + /** + * @param T $entity + */ + public function remove(object $entity): void + { + $this->getEntityManager()->remove($entity); + $this->getEntityManager()->flush(); + } + + /** + * @param T $entity + */ + public function detach(object $entity): void + { + $this->getEntityManager()->detach($entity); + } + + /** + * @param T $entity + */ + public function refresh(object $entity): void + { + $this->getEntityManager()->refresh($entity); + } +} diff --git a/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/Button.php b/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/Button.php new file mode 100644 index 000000000..69621aa7c --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/Button.php @@ -0,0 +1,17 @@ +size) { + 'big' => 'md:text-3xl/10', + 'small' => 'md:text-lg', + default => throw new \InvalidArgumentException(sprintf('Invalid size: %s', $this->size)), + }; + } + + public function getBoxSize(): string + { + return match ($this->size) { + 'big' => 'md:gap-x-4 md:gap-y-2 md:p-2 lg:px-4 ', + 'small' => 'md:gap-2 md:p-2', + default => throw new \InvalidArgumentException(sprintf('Invalid size: %s', $this->size)), + }; + } +} diff --git a/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/ProgressBar.php b/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/ProgressBar.php new file mode 100644 index 000000000..db35fd1af --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Twig/Components/Atoms/ProgressBar.php @@ -0,0 +1,25 @@ +current - $this->start) / ($this->end - $this->start)) * 100, 0); + } +} diff --git a/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Card.php b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Card.php new file mode 100644 index 000000000..ede8efad4 --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Card.php @@ -0,0 +1,13 @@ +status) { + 'done' => 'bg-stone-200 group-hover:bg-stone-200', + 'current' => 'border-2 border-stone-200', + 'next' => 'border-2 border-gray-300 group-hover:border-gray-400', + }; + } + + public function getLabelClass(): string + { + return match ($this->status) { + 'done' => 'text-gray-900', + 'current'=> 'text-stone-200', + 'next'=> 'text-gray-500 group-hover:text-gray-600', + }; + } +} diff --git a/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Headline.php b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Headline.php new file mode 100644 index 000000000..483c4e04a --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Headline.php @@ -0,0 +1,17 @@ + + */ + abstract public function getCancelParameters(): array; + + abstract public function getPicto(): string; + + public function getCurrentTime(): int + { + return (new \DateTimeImmutable())->getTimestamp(); + } +} diff --git a/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Tooltip.php b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Tooltip.php new file mode 100644 index 000000000..460b01b38 --- /dev/null +++ b/src/Modules/Shared/Infrastructure/Twig/Components/Molecules/Tooltip.php @@ -0,0 +1,16 @@ + */ + public array $queues; + public int $availableQueuesCount; + public int $refund; + + public function __construct( + private readonly CurrentPlayerBasesRegistry $currentPlayerBasesRegistry, + private readonly OrbitalBaseHelper $orbitalBaseHelper, + ) { + } + + public function mount(int $buildingIdentifier, int $buildingLevel): void + { + $this->buildingIdentifier = $buildingIdentifier; + $this->availableQueuesCount = $this->orbitalBaseHelper->getBuildingInfo( + $buildingIdentifier, + 'level', + $buildingLevel, + 'nbQueues', + ); + } +} diff --git a/src/Modules/Travel/Domain/Model/TravelType.php b/src/Modules/Travel/Domain/Model/TravelType.php new file mode 100644 index 000000000..bf27132e6 --- /dev/null +++ b/src/Modules/Travel/Domain/Model/TravelType.php @@ -0,0 +1,12 @@ +timeMode) { + TimeMode::Fast => match ($travelType) { + TravelType::Fleet => 300, + TravelType::CommercialShipping => 120, + TravelType::RecyclingShips => 600, + }, + TimeMode::Standard => $from->system->id->equals($to->system->id) + ? $this->getTimeTravelInSystem($from, $to) + : $this->getTimeTravelOutOfSystem($from, $to, $player), + }; + } + + private function getTimeTravelInSystem(Place $from, Place $to): int + { + $distance = abs($from->position - $to->position); + + return intval(round((Commander::COEFFMOVEINSYSTEM * $distance) * ((40 - $distance) / 50) + 180)); + } + + private function getTimeTravelOutOfSystem(Place $from, Place $to, Player|null $player): int + { + $playerBonus = null !== $player ? $this->playerBonusManager->getBonusByPlayer($player) : null; + $distance = ($this->getDistanceBetweenPlaces)($from, $to); + + $time = Commander::COEFFMOVEOUTOFSYSTEM; + $time += round((Commander::COEFFMOVEINTERSYSTEM * $distance) / ($this->getFleetSpeed)($playerBonus)); + + return intval($time); + } +} diff --git a/src/Modules/Travel/Domain/Service/GetTravelDuration.php b/src/Modules/Travel/Domain/Service/GetTravelDuration.php new file mode 100644 index 000000000..a01df8361 --- /dev/null +++ b/src/Modules/Travel/Domain/Service/GetTravelDuration.php @@ -0,0 +1,36 @@ +calculateTravelTime)($origin, $destination, $travelType, $player); + + if ($travelType === TravelType::CommercialShipping) { + $time = intval(round($time * Game::COMMERCIAL_TIME_TRAVEL)); + } + + return $this->durationHandler->getDurationEnd($departureDate, $time); + } +} diff --git a/src/Modules/Zeus/Application/EventListener/TutorialStepValidationListener.php b/src/Modules/Zeus/Application/EventListener/TutorialStepValidationListener.php new file mode 100644 index 000000000..bb956189a --- /dev/null +++ b/src/Modules/Zeus/Application/EventListener/TutorialStepValidationListener.php @@ -0,0 +1,88 @@ +buildingQueue->base->player; + $buildingQueue = $event->buildingQueue; + $targetLevel = $buildingQueue->targetLevel; + + $data = match ($buildingQueue->buildingNumber) { + OrbitalBaseResource::GENERATOR => [ + TutorialResource::GENERATOR_LEVEL_2 => 2, + ], + OrbitalBaseResource::DOCK1 => [ + TutorialResource::DOCK1_LEVEL_1 => 1, + TutorialResource::DOCK1_LEVEL_6 => 6, + TutorialResource::DOCK1_LEVEL_15 => 15, + ], + OrbitalBaseResource::REFINERY => [ + TutorialResource::REFINERY_LEVEL_3 => 3, + TutorialResource::REFINERY_LEVEL_10 => 10, + TutorialResource::REFINERY_LEVEL_16 => 16, + TutorialResource::REFINERY_LEVEL_20 => 20, + ], + OrbitalBaseResource::STORAGE => [ + TutorialResource::STORAGE_LEVEL_3 => 3, + TutorialResource::STORAGE_LEVEL_8 => 8, + TutorialResource::STORAGE_LEVEL_12 => 12, + ], + OrbitalBaseResource::TECHNOSPHERE => [ + TutorialResource::TECHNOSPHERE_LEVEL_1 => 1, + TutorialResource::TECHNOSPHERE_LEVEL_6 => 6, + ], + default => [], + }; + + foreach ($data as $tutorialStep => $buildingNeededLevel) { + if ($tutorialStep === $player->stepTutorial && $targetLevel >= $buildingNeededLevel) { + $this->tutorialHelper->setStepDone($player); + + break; + } + } + } + + #[AsEventListener(AffectationEvent::class)] + #[AsEventListener(LineChangeEvent::class)] + #[AsEventListener(PlannedLootEvent::class)] + #[AsEventListener(NewCommanderEvent::class)] + #[AsEventListener(NewShipQueueEvent::class)] + #[AsEventListener(NewTechnologyQueueEvent::class)] + #[AsEventListener(UniversityInvestmentsUpdateEvent::class)] + #[AsEventListener(SpyEvent::class)] + #[AsEventListener(SquadronUpdateEvent::class)] + public function validateStep(TutorialEvent $event): void + { + $player = $event->getTutorialPlayer(); + + if (!$player->stepDone && $player->stepTutorial === $event->getTutorialStep()) { + $this->tutorialHelper->setStepDone($player); + } + } +} diff --git a/src/Modules/Zeus/Application/Factory/PlayerFactory.php b/src/Modules/Zeus/Application/Factory/PlayerFactory.php new file mode 100644 index 000000000..f4c80020c --- /dev/null +++ b/src/Modules/Zeus/Application/Factory/PlayerFactory.php @@ -0,0 +1,308 @@ +entityManager->beginTransaction(); + + // AJOUT DU JOUEUR EN BASE DE DONNEE + $player = new Player(); + + // ajout des variables inchangées + $player->user = $user; + $player->faction = $faction; + $player->name = $name; + $player->avatar = $avatar; + $player->godFather = $godFather; + $player->status = Player::STANDARD; + $player->uPlayer = new \DateTimeImmutable(); + + $player->victory = 0; + $player->defeat = 0; + + $player->stepTutorial = 1; + $player->stepDone = true; + + $player->iUniversity = 1000; + $player->partNaturalSciences = 25; + $player->partLifeSciences = 25; + $player->partSocialPoliticalSciences = 25; + $player->partInformaticEngineering = 25; + // @TODO adapt this vlaue depending on the chosen avatar or player's choice + $player->sex = 1; + + $player->dInscription = new \DateTimeImmutable(); + $player->dLastConnection = new \DateTimeImmutable(); + $player->dLastActivity = new \DateTimeImmutable(); + + $player->premium = false; + $player->statement = Player::ACTIVE; + + // ajout des variables dépendantes + if ($highMode) { + $player->credit = 10000000; + $player->experience = 18000; + $player->level = 5; + } else { + $player->credit = 5000; + $player->experience = 630; + $player->level = 1; + } + + $this->playerRepository->save($player); + + if (null !== $godFather) { + $n = NotificationBuilder::new() + ->setTitle('Votre filleul s\'est inscrit') + ->setContent( + NotificationBuilder::paragraph( + 'Un de vos amis a créé un compte.', + NotificationBuilder::divider(), + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $player->id]), + $player->name, + ), + '.', + ), + NotificationBuilder::paragraph( + 'Vous venez de gagner 1000 crédits. Vous en gagnerez 1 million de plus lorsqu\'il atteindra le niveau 3.', + ), + ) + ->for($player->godFather); + + $this->notificationRepository->save($n); + + // add 1000 credits to the godfather + $this->playerManager->increaseCredit($godFather, 1000); + } + + // INITIALISATION DES RECHERCHES + // rendre aléatoire + $rs = new Research( + Uuid::v4(), + player: $player, + naturalToPay: $this->researchHelper->getInfo(Research::MATH, 'level', 1, 'price'), + lifeToPay: $this->researchHelper->getInfo(Research::LAW, 'level', 1, 'price'), + socialToPay: $this->researchHelper->getInfo(Research::ECONO, 'level', 1, 'price'), + informaticToPay: $this->researchHelper->getInfo(Research::NETWORK, 'level', 1, 'price'), + naturalTech: Research::MATH, + lifeTech: Research::LAW, + socialTech: Research::ECONO, + informaticTech: Research::NETWORK, + ); + + if ($highMode) { + $rs->mathLevel = 15; + $rs->physLevel = 15; + $rs->chemLevel = 15; + $rs->bioLevel = 15; + $rs->mediLevel = 15; + $rs->econoLevel = 15; + $rs->psychoLevel = 15; + $rs->networkLevel = 15; + $rs->algoLevel = 15; + $rs->statLevel = 15; + } + + $this->researchRepository->save($rs); + + // choix de la place + $candidatePlaces = $this->placeRepository->findPlacesIdsForANewBase($sector); + + $placeId = $candidatePlaces[random_int(0, count($candidatePlaces) - 1)]; + $place = $this->placeRepository->get($placeId); + // CREATION DE LA BASE ORBITALE + $ob = new OrbitalBase( + id: Uuid::v4(), + place: $place, + player: $player, + name: $baseName, + ); + + // création des premiers bâtiments + if ($highMode) { + // batiments haut-level + $ob->levelGenerator = 35; + $ob->levelRefinery = 35; + $ob->levelDock1 = 35; + $ob->levelDock2 = 10; + $ob->levelDock3 = 0; + $ob->levelTechnosphere = 35; + $ob->levelCommercialPlateforme = 10; + $ob->levelStorage = 35; + $ob->levelRecycling = 15; + $ob->levelSpatioport = 10; + $ob->resourcesStorage = 3000000; + + // remplir le dock + $ob->addShips(Ship::TYPE_PEGASE, 50); + $ob->addShips(Ship::TYPE_SATYRE, 50); + $ob->addShips(Ship::TYPE_CHIMERE, 10); + $ob->addShips(Ship::TYPE_SIRENE, 10); + $ob->addShips(Ship::TYPE_DRYADE, 5); + $ob->addShips(Ship::TYPE_MEDUSE, 5); + $ob->addShips(Ship::TYPE_GRIFFON, 2); + $ob->addShips(Ship::TYPE_CYCLOPE, 2); + $ob->addShips(Ship::TYPE_MINOTAURE, 1); + $ob->addShips(Ship::TYPE_HYDRE, 1); + $ob->addShips(Ship::TYPE_CERBERE, 0); + $ob->addShips(Ship::TYPE_PHENIX, 0); + } else { + $ob->levelGenerator = 1; + $ob->levelRefinery = 1; + $ob->levelDock1 = 0; + $ob->levelDock2 = 0; + $ob->levelDock3 = 0; + $ob->levelTechnosphere = 0; + $ob->levelCommercialPlateforme = 0; + $ob->levelStorage = 1; + $ob->levelRecycling = 0; + $ob->levelSpatioport = 0; + $ob->resourcesStorage = 1000; + } + + $this->orbitalBasePointsHandler->updatePoints($ob); + + // initialisation des investissement + $ob->iSchool = 500; + $ob->iAntiSpy = 500; + + // ajout de la base + $ob->updatedAt = new \DateTimeImmutable(); + $ob->createdAt = new \DateTimeImmutable(); + + $this->createPlayerTechnology($player, $highMode); + + $this->orbitalBaseRepository->save($ob); + + $this->placeManager->turnAsSpawnPlace($place, $player); + + $this->entityManager->commit(); + + $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place)); + + // modification de la place + + // confirmation au portail + // TODO Replace when portal is implemented + /*if ('enabled' === $this->getParameter('apimode')) { + $return = $this->api->confirmInscription($session->get('inscription')->get('bindkey')); + }*/ + // clear les sessions + + // ajout aux conversation de faction et techniques + if (($factionAccount = $this->playerRepository->getFactionAccount($player->faction)) !== null) { + $this->addPlayerToConversation($player, $factionAccount); + } + if (($systemAccount = $this->playerRepository->get($this->jeanMiId)) !== null) { + $this->addPlayerToConversation($player, $systemAccount); + } + + return $player; + } + + private function addPlayerToConversation(Player $registeringPlayer, Player $conversationOwner): void + { + $conversation = $this->conversationRepository->getOneByPlayer($conversationOwner); + + $playerConversation = new ConversationUser( + id: Uuid::v4(), + conversation: $conversation, + player: $registeringPlayer, + lastViewedAt: new \DateTimeImmutable(), + playerStatus: ConversationUser::US_STANDARD, + conversationStatus: ConversationUser::CS_ARCHIVED, + ); + + $this->conversationUserRepository->save($playerConversation); + } + + private function createPlayerTechnology(Player $player, bool $isHighLevel): void + { + $technology = ($isHighLevel) ? new Technology( + id: Uuid::v4(), + player: $player, + comPlatUnblock: 1, + dock2Unblock: 1, + dock3Unblock: 1, + recyclingUnblock: 1, + spatioportUnblock: 1, + ship0Unblock: 1, + ship1Unblock: 1, + ship2Unblock: 1, + ship3Unblock: 1, + ship4Unblock: 1, + ship5Unblock: 1, + ship6Unblock: 1, + ship7Unblock: 1, + ship8Unblock: 1, + ship9Unblock: 1, + colonization: 1, + conquest: 1, + baseQuantity: 4, + ) : new Technology(id: Uuid::v4(), player: $player); + + $this->technologyRepository->save($technology); + } +} diff --git a/src/Modules/Zeus/Application/Handler/Bonus/AbstractBonusApplier.php b/src/Modules/Zeus/Application/Handler/Bonus/AbstractBonusApplier.php new file mode 100644 index 000000000..7e24d0fd7 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/Bonus/AbstractBonusApplier.php @@ -0,0 +1,31 @@ +currentPlayerBonusRegistry->getPlayerBonus() + ?? throw new \LogicException('Could not retrieve player bonus'); + + $modifierValue = $playerBonus->bonuses->get($modifierId); + $modifiedValue = PercentageApplier::toFloat($initialValue, $modifierValue); + + $this->postApply($modifierId, $modifierValue, $initialValue, $modifiedValue); + + return $modifiedValue; + } + + protected function postApply(int $modifierId, float $modifierValue, float|int $initialValue, float $modifiedValue): void + { + } +} diff --git a/src/Modules/Zeus/Application/Handler/Bonus/BonusApplier.php b/src/Modules/Zeus/Application/Handler/Bonus/BonusApplier.php new file mode 100644 index 000000000..1419e2925 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/Bonus/BonusApplier.php @@ -0,0 +1,7 @@ +tracedBonuses[] = [ + 'modifier_id' => $modifierId, + 'modifier_value' => $modifierValue, + 'modified_value' => $modifiedValue, + 'initial_value' => $initialValue, + ]; + } + + public function getTracedBonuses(): array + { + return $this->tracedBonuses; + } +} diff --git a/src/Modules/Zeus/Application/Handler/CommanderWageHandler.php b/src/Modules/Zeus/Application/Handler/CommanderWageHandler.php new file mode 100644 index 000000000..9f90b5c33 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/CommanderWageHandler.php @@ -0,0 +1,94 @@ + $commanders + */ + public function payWages(PlayerFinancialReport $playerFinancialReport, array $commanders, Player $rebelPlayer): void + { + $unpaidCommandersNames = []; + foreach ($commanders as $commander) { + if (!in_array($commander->statement, [Commander::AFFECTED, Commander::MOVING])) { + continue; + } + + $commanderWage = Commander::LVLINCOMECOMMANDER * $commander->level; + + if ($playerFinancialReport->canAfford($commanderWage)) { + $playerFinancialReport->commandersWages += $commanderWage; + continue; + } + // TODO what to do with the commander when unable to pay ? Currently selling it + $this->sellCommander($commander, $rebelPlayer); + $unpaidCommandersNames[] = $commander->name; + } + $unpaidCommandersCount = count($unpaidCommandersNames); + // si au moins un commandant n'a pas pu être payé --> envoyer une notif + if ($unpaidCommandersCount > 0) { + $this->notifyCommanderSale($playerFinancialReport->player, $unpaidCommandersNames, $unpaidCommandersCount); + } + } + + private function sellCommander(Commander $commander, Player $rebelPlayer): void + { + // on remet les vaisseaux dans les hangars + $this->commanderManager->emptySquadrons($commander); + + // on vend le commandant + $commander->statement = Commander::ONSALE; + $commander->player = $rebelPlayer; + + // TODO : vendre le commandant au marché + // (ou alors le mettre en statement COM_DESERT et supprimer ses escadrilles) + + $this->commanderRepository->save($commander); + } + + private function notifyCommanderSale(Player $player, array $commanderNames, int $commandersCount): void + { + $notification = NotificationBuilder::new() + ->setTitle('Commandant impayé') + ->setContent( + NotificationBuilder::paragraph( + 'Domaine', + NotificationBuilder::divider(), + (1 == $commandersCount) + ? sprintf( + 'Vous n\'avez pas assez de crédits pour payer votre commandant %s. Celui-ci a donc déserté !', + $commanderNames[0], + ) + : 'Vous n\'avez pas assez de crédits pour payer certains de vos commandants. Ils ont donc déserté !', + ), + NotificationBuilder::paragraph( + (1 == $commandersCount) + ? 'Il est allé proposer ses services sur le marché. Si vous voulez le récupérer, vous pouvez vous y rendre et le racheter.' + : sprintf( + 'Voici la liste de ces commandants : %s. + Ils sont tous allés proposer leurs services sur le marché. + Si vous voulez les récupérer, vous pouvez vous y rendre et les racheter.', + implode(', ', $commanderNames), + ) + ), + ) + ->for($player); + $this->notificationRepository->save($notification); + } +} diff --git a/src/Modules/Zeus/Application/Handler/CommercialRouteConstructionReportHandler.php b/src/Modules/Zeus/Application/Handler/CommercialRouteConstructionReportHandler.php new file mode 100644 index 000000000..e98c081f8 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/CommercialRouteConstructionReportHandler.php @@ -0,0 +1,38 @@ +commercialRouteRepository->getPlayerConstructedRoutesSince( + $playerFinancialReport->player, + $lastPlayerFinancialReport->createdAt ?? $playerFinancialReport->player->dInscription, + ); + + foreach ($commercialRoutes as $commercialRoute) { + $playerFinancialReport->commercialRoutesConstructions += ($this->getCommercialRoutePrice)( + ($this->getDistanceBetweenPlaces)( + $commercialRoute->originBase->place, + $commercialRoute->destinationBase->place, + ), + $playerFinancialReport->player, + ); + } + } +} diff --git a/src/Modules/Zeus/Application/Handler/CreditTransactionReportHandler.php b/src/Modules/Zeus/Application/Handler/CreditTransactionReportHandler.php new file mode 100644 index 000000000..0e695b1a6 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/CreditTransactionReportHandler.php @@ -0,0 +1,40 @@ +creditTransactionRepository->matchAllByPlayerSince( + $playerFinancialReport->player, + $lastPlayerFinancialReport->createdAt ?? $playerFinancialReport->player->dInscription, + ); + + foreach ($creditTransactions as $creditTransaction) { + if ($playerFinancialReport->player->id === $creditTransaction->playerSender?->id) { + if (null !== $creditTransaction->factionReceiver) { + $playerFinancialReport->sentFactionsCreditTransactions += $creditTransaction->amount; + } else { + $playerFinancialReport->sentPlayersCreditTransactions += $creditTransaction->amount; + } + } else { + if (null !== $creditTransaction->factionSender) { + $playerFinancialReport->receivedFactionsCreditTransactions += $creditTransaction->amount; + } else { + $playerFinancialReport->receivedPlayersCreditTransactions += $creditTransaction->amount; + } + } + } + } +} diff --git a/src/Modules/Zeus/Application/Handler/PlayerCreditUpdateHandler.php b/src/Modules/Zeus/Application/Handler/PlayerCreditUpdateHandler.php new file mode 100644 index 000000000..e20a1c138 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/PlayerCreditUpdateHandler.php @@ -0,0 +1,300 @@ +playerRepository->get($message->getPlayerId()) + ?? throw new \RuntimeException('Player not found'); + $rebelPlayer = $this->playerRepository->get($this->gaiaId); + $bases = $this->orbitalBaseRepository->getPlayerBases($player); + $commanders = $this->commanderRepository->getPlayerCommanders( + $player, + [Commander::AFFECTED, Commander::MOVING], + ['c.experience' => 'DESC', 'c.statement' => 'ASC'], + ); + $initialCredits = $player->credit; + + $missingUpdatesCount = ($this->countMissingSystemUpdates)($player); + if (0 === $missingUpdatesCount) { + $this->logger->debug('No updates to perform on player {playerName}', [ + 'playerName' => $player->name, + 'playerId' => $player->id, + ]); + + return; + } + + $this->logger->debug('{count} missing updates for player {playerName}', [ + 'count' => $missingUpdatesCount, + 'playerName' => $player->name, + 'playerId' => $player->id, + ]); + + $this->currentPlayerRegistry->set($player); + $bonus = $this->playerBonusManager->getBonusByPlayer($player); + $this->currentPlayerBonusRegistry->setPlayerBonus($bonus); + $secondsPerGameCycle = $this->gameTimeConverter->convertGameCyclesToSeconds(1); + + $lastFinancialReport = $this->playerFinancialReportRepository->getPlayerLastReport($player); + + if (null !== $lastFinancialReport) { + $this->logger->debug('Last financial report for player {playerName} was created at {createdAt}', [ + 'playerName' => $player->name, + 'playerId' => $player->id, + 'createdAt' => $lastFinancialReport->createdAt, + ]); + } + + // The first time, we make a report for all missing game cycle updates above the limit + $secondsToAdd = ($missingUpdatesCount > self::MAX_MISSING_UPDATES) + ? $secondsPerGameCycle * ($missingUpdatesCount - self::MAX_MISSING_UPDATES) + : $secondsPerGameCycle; + + $this->entityManager->beginTransaction(); + + try { + $launchNewMessage = false; + + for ($i = 0; $i < $missingUpdatesCount; ++$i) { + if ($i === self::MAX_UPDATES_TO_HANDLE) { + $launchNewMessage = true; + + break; + } + + $createdAt = (null !== $lastFinancialReport) + ? (clone $lastFinancialReport->createdAt)->modify(sprintf('+%d seconds', $secondsToAdd)) + : new \DateTimeImmutable(); + + $playerFinancialReport = new PlayerFinancialReport( + id: Uuid::v4(), + player: $player, + createdAt: $createdAt, + initialWallet: $player->credit, + ); + + $this->logger->debug('Processing new financial report for player {playerName} with an initial wallet of {credits} credits', [ + 'playerName' => $player->name, + 'playerId' => $player->id, + 'credits' => $playerFinancialReport->initialWallet, + 'createdAt' => $playerFinancialReport->createdAt, + ]); + + $this->updatePlayerCredits( + $playerFinancialReport, + $lastFinancialReport, + $rebelPlayer, + $commanders, + $bases, + ); + + $player->credit = $playerFinancialReport->getNewWallet(); + $this->entityManager->persist($playerFinancialReport); + + $lastFinancialReport = $playerFinancialReport; + // For the next iteration, we do back to one game cycle per report + $secondsToAdd = $secondsPerGameCycle; + } + + $player->uPlayer = $lastFinancialReport->createdAt; + + $this->entityManager->flush(); + $this->entityManager->commit(); + + $this->logger->debug('{playerName} has passed from {credits} to {newCredits} credits', [ + 'playerName' => $player->name, + 'playerId' => $player->id, + 'credits' => $initialCredits, + 'newCredits' => $player->credit, + 'updatedAt' => $player->uPlayer, + ]); + + if (true === $launchNewMessage) { + $this->messageBus->dispatch(new PlayerCreditUpdateMessage($player->id)); + + $this->logger->debug('Dispatched new update message for the next iterations for player {playerName}', [ + 'playerName' => $player->name, + 'playerId' => $player->id, + ]); + } + } catch (\Throwable $e) { + $this->entityManager->rollback(); + + throw $e; + } + } + + /** + * TODO call a Symfony service iterator instead of all explicit calls here + * + * @param list $bases + */ + private function updatePlayerCredits( + PlayerFinancialReport $playerFinancialReport, + PlayerFinancialReport|null $lastFinancialReport, + Player $rebelPlayer, + array $commanders, + array $bases, + ): void { + $player = $playerFinancialReport->player; + // Process all player bases income and losses + foreach ($bases as $base) { + $populationTax = $this->populationTaxHandler->getPopulationTax($base)->getTotal(); + + $routesIncome = $this->commercialRouteIncomeHandler->getCommercialRouteIncome($base)->total; + + $factionTax = $this->payFactionTax($base, $populationTax, $playerFinancialReport); + + $playerFinancialReport->populationTaxes += $populationTax; + $playerFinancialReport->commercialRoutesIncome += $routesIncome; + // TODO Handler anti spy and school investment recomputing in case of bankrupt + $playerFinancialReport->antiSpyInvestments += $base->iAntiSpy; + $playerFinancialReport->schoolInvestments += $base->iSchool; + + $this->logger->debug('Processed income and taxes for base {baseName} of player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'baseName' => $base->name, + 'populationTaxes' => $populationTax, + 'commercialRoutesIncome' => $routesIncome, + 'antiSpyInvestments' => $base->iAntiSpy, + 'schoolInvestments' => $base->iSchool, + 'factionTax' => $factionTax, + ]); + } + + ($this->playerTransactionReportHandler)($playerFinancialReport, $lastFinancialReport); + + $this->logger->debug('Processed transactions report for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'resourcesSales' => $playerFinancialReport->resourcesSales, + 'shipsSales' => $playerFinancialReport->shipsSales, + 'commandersSales' => $playerFinancialReport->commandersSales, + 'resourcesPurchases' => $playerFinancialReport->resourcesPurchases, + 'shipsPurchases' => $playerFinancialReport->shipsPurchases, + 'commandersPurchases' => $playerFinancialReport->commandersPurchases, + ]); + + ($this->commercialRouteConstructionReportHandler)($playerFinancialReport, $lastFinancialReport); + + $this->logger->debug('Processed commercial routes constructions for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'commercialRoutesConstructions' => $playerFinancialReport->commercialRoutesConstructions, + ]); + + ($this->creditTransactionReportHandler)($playerFinancialReport, $lastFinancialReport); + + $this->logger->debug('Processed credits transactions for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'sentPlayersCreditTransactions' => $playerFinancialReport->sentPlayersCreditTransactions, + 'sentFactionsCreditTransactions' => $playerFinancialReport->sentFactionsCreditTransactions, + 'receivedPlayersCreditTransactions' => $playerFinancialReport->receivedPlayersCreditTransactions, + 'receivedFactionsCreditTransactions' => $playerFinancialReport->receivedFactionsCreditTransactions, + ]); + + ($this->technologyInvestmentReportHandler)($playerFinancialReport, $lastFinancialReport); + + $this->logger->debug('Processed technology investments for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'technologyInvestments' => $playerFinancialReport->technologiesInvestments, + ]); + + ($this->recycledCreditsReportHandler)($playerFinancialReport, $lastFinancialReport); + + $this->logger->debug('Processed recycled credits for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + 'recycledCredits' => $playerFinancialReport->recycledCredits, + ]); + + $this->universityInvestmentHandler->spend($playerFinancialReport, $bases); + $this->commanderWageHandler->payWages($playerFinancialReport, $commanders, $rebelPlayer); + $this->shipsWageHandler->payWages($playerFinancialReport, $commanders, $bases, $rebelPlayer); + + $this->logger->debug('Finished financial report for player {playerName}', [ + 'playerId' => $player->id, + 'playerName' => $player->name, + ]); + } + + private function payFactionTax(OrbitalBase $base, int $populationTax, PlayerFinancialReport $playerFinancialReport): int + { + if (null === ($sectorFaction = $base->place->system->sector->faction)) { + return 0; + } + + $factionTax = $this->getFactionTax($base, $populationTax); + + $sectorFaction->increaseCredit($factionTax); + + $playerFinancialReport->factionTaxes += $factionTax; + + return $factionTax; + } + + private function getFactionTax(OrbitalBase $base, int $populationTax): int + { + return PercentageApplier::toInt($base->place->system->sector->tax, $populationTax); + } +} diff --git a/src/Modules/Zeus/Application/Handler/PlayerTransactionReportHandler.php b/src/Modules/Zeus/Application/Handler/PlayerTransactionReportHandler.php new file mode 100644 index 000000000..f7dbf3023 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/PlayerTransactionReportHandler.php @@ -0,0 +1,59 @@ +transactionRepository->matchPlayerCompletedTransactionsSince( + $playerFinancialReport->player, + $lastFinancialReport->createdAt ?? $playerFinancialReport->player->dInscription, + ); + + foreach ($transactions as $transaction) { + $buyerPrice = $transaction->getTotalPrice(); + $sellerPrice = $transaction->price; + + // Current player is the seller + if ($transaction->player->id === $playerFinancialReport->player->id) { + switch ($transaction->type) { + case Transaction::TYP_RESOURCE: + $playerFinancialReport->resourcesSales += $sellerPrice; + break; + case Transaction::TYP_SHIP: + $playerFinancialReport->shipsSales += $sellerPrice; + break; + case Transaction::TYP_COMMANDER: + $playerFinancialReport->commandersSales += $sellerPrice; + break; + }; + + continue; + } + switch ($transaction->type) { + case Transaction::TYP_RESOURCE: + $playerFinancialReport->resourcesPurchases += $buyerPrice; + break; + case Transaction::TYP_SHIP: + $playerFinancialReport->shipsPurchases += $buyerPrice; + break; + case Transaction::TYP_COMMANDER: + $playerFinancialReport->commandersPurchases += $buyerPrice; + break; + }; + } + } +} diff --git a/src/Modules/Zeus/Application/Handler/RecycledCreditsReportHandler.php b/src/Modules/Zeus/Application/Handler/RecycledCreditsReportHandler.php new file mode 100644 index 000000000..77b99b34d --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/RecycledCreditsReportHandler.php @@ -0,0 +1,24 @@ +recycledCredits += $this->recyclingLogRepository->getPlayerRecycledCreditsSince( + $playerFinancialReport->player, + $lastPlayerFinancialReport->createdAt ?? $playerFinancialReport->player->dInscription, + ); + } +} diff --git a/src/Modules/Zeus/Application/Handler/ShipsWageHandler.php b/src/Modules/Zeus/Application/Handler/ShipsWageHandler.php new file mode 100644 index 000000000..74690a7f5 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/ShipsWageHandler.php @@ -0,0 +1,135 @@ + $commanders + * @param list $playerBases + */ + public function payWages( + PlayerFinancialReport $playerFinancialReport, + array $commanders, + array $playerBases, + Player $rebelPlayer + ): void { + $player = $playerFinancialReport->player; + $transactions = $this->transactionRepository->getPlayerPropositions($player, Transaction::TYP_SHIP); + // payer l'entretien des vaisseaux + // vaisseaux en vente + $transactionTotalCost = 0; + $nbTransactions = count($transactions); + for ($i = ($nbTransactions - 1); $i >= 0; --$i) { + $transaction = $transactions[$i]; + $transactionTotalCost += ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity; + } + if ($playerFinancialReport->canAfford($transactionTotalCost)) { + $playerFinancialReport->shipsCost += $transactionTotalCost; + // } else { + // TODO decide what to do when ships in transaction cannot be paid + // $newCredit = 0; + } + // vaisseaux affectés + foreach ($commanders as $commander) { + $this->commanderArmyHandler->setArmy($commander); + $ships = $commander->getNbrShipByType(); + $cost = Game::getFleetCost($ships); + + if ($playerFinancialReport->canAfford($cost)) { + $playerFinancialReport->shipsCost += $cost; + continue; + } + // TODO investigate this WTF statement. Deserters could be rebel commanders (with faction quests to eliminate them). + // on vend le commandant car on n'arrive pas à payer la flotte (trash hein) + $commander->statement = Commander::ONSALE; + $commander->player = $rebelPlayer; + + $notification = NotificationBuilder::new() + ->setTitle('Flotte impayée') + ->setContent(NotificationBuilder::paragraph( + 'Vous n\'avez pas assez de crédits pour payer l\'entretien de la flotte de votre officier ', + $commander->name, + 'Celui-ci a donc déserté ! ... avec la flotte, désolé.', + )) + ->for($player); + $this->notificationRepository->save($notification); + $this->commanderRepository->save($commander); + } + // vaisseaux sur la planète + // TODO refactor this part for better carving + foreach ($playerBases as $base) { + $shipsStorage = $base->getShipStorage(); + $cost = Game::getFleetCost($shipsStorage, false); + + if ($playerFinancialReport->canAfford($cost)) { + $playerFinancialReport->shipsCost += $cost; + + continue; + } + // n'arrive pas à tous les payer ! + for ($j = ShipResource::SHIP_QUANTITY - 1; $j >= 0; --$j) { + if (0 === $shipsStorage[$j]) { + continue; + } + $unitCost = ShipResource::getInfo($j, 'cost'); + + $possibleMaintenable = floor($playerFinancialReport->getNewWallet() / $unitCost); + if ($possibleMaintenable > $shipsStorage[$j]) { + $possibleMaintenable = $shipsStorage[$j]; + } + $playerFinancialReport->shipsCost += $possibleMaintenable * $unitCost; + + $toKill = $shipsStorage[$j] - $possibleMaintenable; + if (0 === $toKill) { + continue; + } + $base->removeShips($j, $toKill); + + $notification = NotificationBuilder::new() + ->setTitle('Entretien vaisseau impayé') + ->setContent(NotificationBuilder::paragraph( + 'Domaine', + NotificationBuilder::divider(), + 'Vous n\'avez pas assez de crédits pour payer l\'entretien', + (1 == $toKill) + ? sprintf( + ' d\'un(e) %s sur %s. Ce vaisseau part donc à la casse ! ', + ShipResource::getInfo($j, 'codeName'), + $base->name, + ) + : sprintf( + 'Vous n\'avez pas assez de crédits pour payer l\'entretien de %d %ss sur %s. + Ces vaisseaux partent donc à la casse !', + $toKill, + ShipResource::getInfo($j, 'codeName'), + $base->name, + ) + )) + ->for($player); + $this->notificationRepository->save($notification); + } + } + } +} diff --git a/src/Modules/Zeus/Application/Handler/TechnologyInvestmentReportHandler.php b/src/Modules/Zeus/Application/Handler/TechnologyInvestmentReportHandler.php new file mode 100644 index 000000000..4bdf41199 --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/TechnologyInvestmentReportHandler.php @@ -0,0 +1,30 @@ +technologyQueueRepository->matchPlayerQueuesSince( + $playerFinancialReport->player, + $lastPlayerFinancialReport->createdAt ?? $playerFinancialReport->player->dInscription, + ); + + foreach ($queues as $queue) { + $playerFinancialReport->technologiesInvestments += $this->technologyHelper->getInfo($queue->technology, 'credit', $queue->targetLevel); + } + } +} diff --git a/src/Modules/Zeus/Application/Handler/UniversityInvestmentHandler.php b/src/Modules/Zeus/Application/Handler/UniversityInvestmentHandler.php new file mode 100644 index 000000000..c16c075ee --- /dev/null +++ b/src/Modules/Zeus/Application/Handler/UniversityInvestmentHandler.php @@ -0,0 +1,129 @@ + $playerBases + */ + public function spend(PlayerFinancialReport $playerFinancialReport, array $playerBases): void + { + $player = $playerFinancialReport->player; + $playerCredits = $playerFinancialReport->getNewWallet(); + $uniInvests = $player->iUniversity; + + if ($playerCredits >= $uniInvests) { + $playerFinancialReport->universityInvestments = $uniInvests; + + $this->spendUniversityInvestments($player); + + return; + } + $notificationBuilder = NotificationBuilder::new() + ->setTitle('Caisses vides') + ->setContent( + NotificationBuilder::paragraph( + 'Domaine %s', + NotificationBuilder::divider(), + 'Vous ne disposez pas d\'assez de crédits.', + ), + 'Les revenus que vous percevez ne suffisent plus à payer vos investissements.', + ); + + if ($playerCredits > 0) { + $newIUniversity = $playerCredits; + + $player->iUniversity = $newIUniversity; + + $playerFinancialReport->universityInvestments += $newIUniversity; + + $notificationBuilder->addContent( + ' Vos investissements dans l\'université ont été modifiés + afin qu\'aux prochaines relèves vous puissiez payer. + Attention, cette situation ne vous apporte pas de crédits.', + ); + } else { + $player->iUniversity = 0; + + $notificationBuilder->addContent( + ' Vos investissements dans l\'université ont été mis à zéro afin d\'éviter la banqueroute.' + ); + } + + $notificationBuilder->addContent( + NotificationBuilder::divider(), + NotificationBuilder::link($this->urlGenerator->generate('financial_investments'), 'vers les finances →'), + ); + + $this->notificationRepository->save($notificationBuilder->for($player)); + + $this->spendUniversityInvestments($player); + } + + private function spendUniversityInvestments(Player $player): void + { + $research = $this->researchRepository->getPlayerResearch($player) + ?? throw new \LogicException('Player must have an associated Research entity'); + + [ + Research::DOMAIN_NATURAL_SCIENCES => $naturalTechInvestedCredits, + Research::DOMAIN_LIFE_SCIENCES => $lifeTechInvestedCredits, + Research::DOMAIN_SOCIAL_POLITICAL_SCIENCES => $socialTechInvestedCredits, + Research::DOMAIN_INFORMATIC_ENGINEERING => $informaticTechInvestedCredits, + ] = $this->computeInvestments($player); + + $bonusApplier = fn (int $investedCredits) => intval($this->bonusApplier->apply($investedCredits, PlayerBonusId::UNI_INVEST)); + + $naturalTechInvestedCredits += $bonusApplier($naturalTechInvestedCredits); + $lifeTechInvestedCredits += $bonusApplier($lifeTechInvestedCredits); + $socialTechInvestedCredits += $bonusApplier($socialTechInvestedCredits); + $informaticTechInvestedCredits += $bonusApplier($informaticTechInvestedCredits); + + $this->researchManager->update( + $research, + $player, + $naturalTechInvestedCredits, + $lifeTechInvestedCredits, + $socialTechInvestedCredits, + $informaticTechInvestedCredits, + ); + } + + /** + * @return array + */ + private function computeInvestments(Player $player): array + { + $computeInvestedCredits = fn (int $percent) => PercentageApplier::toInt($player->iUniversity, $percent); + + return [ + Research::DOMAIN_NATURAL_SCIENCES => $computeInvestedCredits($player->partNaturalSciences), + Research::DOMAIN_LIFE_SCIENCES => $computeInvestedCredits($player->partLifeSciences), + Research::DOMAIN_SOCIAL_POLITICAL_SCIENCES => $computeInvestedCredits($player->partSocialPoliticalSciences), + Research::DOMAIN_INFORMATIC_ENGINEERING => $computeInvestedCredits($player->partInformaticEngineering), + ]; + } +} diff --git a/src/Modules/Zeus/Application/Registry/CurrentPlayerBonusRegistry.php b/src/Modules/Zeus/Application/Registry/CurrentPlayerBonusRegistry.php new file mode 100644 index 000000000..d33f3ba62 --- /dev/null +++ b/src/Modules/Zeus/Application/Registry/CurrentPlayerBonusRegistry.php @@ -0,0 +1,34 @@ +playerBonus = $playerBonus; + $this->isInitialized = true; + } + + public function getPlayerBonus(): PlayerBonus|null + { + return $this->playerBonus; + } + + public function isInitialized(): bool + { + return $this->isInitialized; + } + + public function reset(): void + { + $this->playerBonus = null; + $this->isInitialized = false; + } +} diff --git a/src/Modules/Zeus/Application/Registry/CurrentPlayerRegistry.php b/src/Modules/Zeus/Application/Registry/CurrentPlayerRegistry.php new file mode 100644 index 000000000..5702969ec --- /dev/null +++ b/src/Modules/Zeus/Application/Registry/CurrentPlayerRegistry.php @@ -0,0 +1,32 @@ +currentPlayer = $currentPlayer; + } + + public function has(): bool + { + return null !== $this->currentPlayer; + } + + public function get(): Player + { + return $this->currentPlayer ?? throw new NoCurrentPlayerSetException(); + } + + public function reset(): void + { + $this->currentPlayer = null; + } +} diff --git a/src/Modules/Zeus/Domain/Event/PlayerConnectionEvent.php b/src/Modules/Zeus/Domain/Event/PlayerConnectionEvent.php new file mode 100644 index 000000000..5115601f0 --- /dev/null +++ b/src/Modules/Zeus/Domain/Event/PlayerConnectionEvent.php @@ -0,0 +1,29 @@ +player->id; + } + + public function getTrackingEventName(): string + { + return 'Player Connection'; + } + + public function getTrackingData(): array + { + return []; + } +} diff --git a/src/Modules/Zeus/Domain/Event/UniversityInvestmentsUpdateEvent.php b/src/Modules/Zeus/Domain/Event/UniversityInvestmentsUpdateEvent.php new file mode 100644 index 000000000..abdd77e9c --- /dev/null +++ b/src/Modules/Zeus/Domain/Event/UniversityInvestmentsUpdateEvent.php @@ -0,0 +1,26 @@ +player; + } + + public function getTutorialStep(): int|null + { + return TutorialResource::MODIFY_UNI_INVEST; + } +} diff --git a/src/Modules/Zeus/Domain/Exception/NoCurrentPlayerSetException.php b/src/Modules/Zeus/Domain/Exception/NoCurrentPlayerSetException.php new file mode 100644 index 000000000..f7313f793 --- /dev/null +++ b/src/Modules/Zeus/Domain/Exception/NoCurrentPlayerSetException.php @@ -0,0 +1,13 @@ +playerId; + } +} diff --git a/src/Modules/Zeus/Domain/Repository/CreditTransactionRepositoryInterface.php b/src/Modules/Zeus/Domain/Repository/CreditTransactionRepositoryInterface.php new file mode 100644 index 000000000..0ec8b8cad --- /dev/null +++ b/src/Modules/Zeus/Domain/Repository/CreditTransactionRepositoryInterface.php @@ -0,0 +1,41 @@ + + */ +interface CreditTransactionRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return list + */ + public function getAllBySender(CreditHolderInterface $sender): array; + + /** + * @return list + */ + public function getAllByPlayerReceiver(Player $player): array; + + /** + * @return list + */ + public function getAllByFactionReceiverFromMembers(Color $faction): array; + + /** + * @return list + */ + public function getAllByFactionReceiverFromFactions(Color $faction): array; + + /** + * @return Collection + */ + public function matchAllByPlayerSince(Player $player, \DateTimeImmutable $since): Collection; +} diff --git a/src/Modules/Zeus/Domain/Repository/PlayerFinancialReportRepositoryInterface.php b/src/Modules/Zeus/Domain/Repository/PlayerFinancialReportRepositoryInterface.php new file mode 100644 index 000000000..899c3d4b7 --- /dev/null +++ b/src/Modules/Zeus/Domain/Repository/PlayerFinancialReportRepositoryInterface.php @@ -0,0 +1,24 @@ + + */ +interface PlayerFinancialReportRepositoryInterface extends EntityRepositoryInterface +{ + /** + * @return list + */ + public function getPlayerLastReports(Player $player, int $limit = 20, int $offset = 0): array; + + public function getPlayerLastReport(Player $player): PlayerFinancialReport|null; + + public function cleanPlayerFinancialReports(int $timeout): int; +} diff --git a/src/Modules/Zeus/Domain/Repository/PlayerRepositoryInterface.php b/src/Modules/Zeus/Domain/Repository/PlayerRepositoryInterface.php new file mode 100644 index 000000000..5d5ab3984 --- /dev/null +++ b/src/Modules/Zeus/Domain/Repository/PlayerRepositoryInterface.php @@ -0,0 +1,78 @@ + + */ + public function getGodSons(Player $player): array; + + /** + * @param list $ids + * @param list $statements + * @return list + */ + public function getByIdsAndStatements(array $ids, array $statements): array; + + /** + * @param list $statements + * + * @return list + */ + public function getByStatements(array $statements): array; + + public function countActivePlayers(): int; + + public function countAllPlayers(): int; + + public function countByFactionAndStatements(Color $faction, array $statements): int; + + public function getFactionAccount(Color $faction): Player|null; + + /** + * @return list + */ + public function getBySpecification(SelectorSpecification $specification): array; + + /** + * @return list + */ + public function getFactionPlayersByRanking(Color $faction): array; + + /** + * @return list + */ + public function getFactionPlayersByName(Color $faction): array; + + /** + * @return list + */ + public function getLastFactionPlayers(Color $faction): array; + + public function getGovernmentMember(Color $faction, int $status): Player|null; + + public function getFactionLeader(Color $faction): Player|null; + + /** + * @return list + */ + public function getActivePlayers(): array; + + /** + * @return list + */ + public function search(string $search): array; + + public function updatePlayerCredits(Player $player, int $credits): mixed; +} diff --git a/src/Modules/Zeus/Domain/Service/GetAvailableAvatars.php b/src/Modules/Zeus/Domain/Service/GetAvailableAvatars.php new file mode 100644 index 000000000..9b71fb2a1 --- /dev/null +++ b/src/Modules/Zeus/Domain/Service/GetAvailableAvatars.php @@ -0,0 +1,36 @@ + + */ + public function __invoke(Color|null $faction = null): array + { + $finder = new Finder(); + $finder->files()->in(sprintf('%s/assets/images/avatars/', $this->projectDir)); + + $avatars = array_map( + fn (\SplFileInfo $avatar) => $avatar->getBasename(), + iterator_to_array($finder->getIterator()), + ); + + \shuffle($avatars); + + return $avatars; + } +} diff --git a/src/Modules/Zeus/Handler/PlayersCreditsUpdateHandler.php b/src/Modules/Zeus/Handler/PlayersCreditsUpdateHandler.php new file mode 100644 index 000000000..bc804cf55 --- /dev/null +++ b/src/Modules/Zeus/Handler/PlayersCreditsUpdateHandler.php @@ -0,0 +1,28 @@ +playerRepository->getActivePlayers(); + + foreach ($players as $player) { + $this->messageBus->dispatch(new PlayerCreditUpdateMessage($player->id)); + } + } +} diff --git a/src/Modules/Zeus/Helper/CheckName.php b/src/Modules/Zeus/Helper/CheckName.php new file mode 100644 index 000000000..11855846d --- /dev/null +++ b/src/Modules/Zeus/Helper/CheckName.php @@ -0,0 +1,112 @@ +minLength; + } + + public function getMaxLength() + { + return $this->maxLength; + } + + public function setMinLength(int $i) + { + $this->minLength = $i; + } + + public function setMaxLength($i) + { + $this->maxLength = $i; + } + + public function checkLength($str) + { + $length = strlen((string) $str); + + return $length >= $this->minLength && $length <= $this->maxLength; + } + + public function checkChar($str) + { + return preg_match('^[\p{L}\p{N}]*\p{L}[\p{L}\p{N}]*$^', (string) $str); + } + + public function checkBeauty($str) + { + $newStr = ucfirst((string) $str); + + $revStr = strrev($newStr); + $troncateStr = $newStr; + $number = ''; + for ($i = 0; $i < strlen($revStr); ++$i) { + if (is_numeric($revStr[$i])) { + $number .= $revStr[$i]; + $troncateStr = substr($troncateStr, 0, -1); + } else { + $number = strrev($number); + $number = intval($number); + break; + } + } + + if (0 !== $number) { + $brn = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']; + $ban = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]; + + if ($number > 1200) { + $number = random_int(50, 1200); + } + if ($number <= 0) { + $number = 1; + } + $number = intval($number); + $romanNumber = ''; + $i = 0; + + if (1 == $number) { + $romanNumber = 'Ier'; + $number = 0; + } + + while ($number > 0) { + if ($number >= $ban[$i]) { + $number -= $ban[$i]; + $romanNumber .= $brn[$i]; + } else { + ++$i; + } + } + + $newStr = trim($troncateStr).' '.$romanNumber; + + if (strlen($newStr) > $this->maxLength) { + $newStr = substr($newStr, 0, $this->maxLength); + } + } + + if ($newStr === $str) { + return true; + } else { + return $newStr; + } + } + + public static function getPackOfNames($size = 5, $used = false, $tag = []) + { + } + + public static function randomize($color = false) + { + $name = ['Ametah', 'Anla', 'Aumshi', 'Bastier', 'Enigma', 'Eirukis', 'Erah', 'Ehdis', 'Fransa', 'Greider', 'Grerid', 'Haema', 'Hemhild', 'Renga', 'Hidar', 'Horski', 'Hreirek', 'Hroa', 'Hordis', 'Hydring', 'Imsin', 'Asmin', 'Ansami', 'Kar', 'Kili', 'Kolver', 'Kolfinna', 'Lisa', 'Marta', 'Meto', 'Leto', 'Ragni', 'Ranela', 'Runa', 'Siri', 'Mastro', 'Svenh', 'Thalestris', 'Thannd', 'Arsine', 'Val', 'Vori', 'Yi', 'Agata', 'Agneta', 'Nolgi', 'Edla', 'Else', 'Eyja', 'Jensine', 'Kirsten', 'Maeva', 'Malena', 'Magarte', 'Olava', 'Petrine', 'Rigmor', 'Signy', 'Sigrid', 'Skjorta']; + + return $name[random_int(0, (count($name) - 1))]; + } +} diff --git a/src/Modules/Zeus/Helper/TutorialHelper.php b/src/Modules/Zeus/Helper/TutorialHelper.php new file mode 100644 index 000000000..70bbc608b --- /dev/null +++ b/src/Modules/Zeus/Helper/TutorialHelper.php @@ -0,0 +1,101 @@ +sessionWrapper->get('playerId'); + $stepTutorial = $this->sessionWrapper->get('playerInfo')->get('stepTutorial'); + $stepDone = $this->sessionWrapper->get('playerInfo')->get('stepDone'); + + if ($stepTutorial > 0) { + if (false == $stepDone) { + // check if current step is done + + // hint : checker seulement les actions passives + switch ($stepTutorial) { + case 1: + $asdf = 'asdf'; + break; + case 2: + $jlk = 'jkl'; + break; + } + } + } + }*/ + + public function setStepDone(Player $player): void + { + $player->stepDone = true; + + $this->playerRepository->save($player); + } + + public function clearStepDone(Player $player): void + { + $player->stepDone = true; + + $this->playerRepository->save($player); + } + + public function isNextBuildingStepAlreadyDone(Player $player, int $buildingId, int $level): bool + { + $nextStepAlreadyDone = false; + + $playerBases = $this->orbitalBaseRepository->getPlayerBases($player); + foreach ($playerBases as $orbitalBase) { + if ($this->buildingLevelHandler->getBuildingLevel($orbitalBase, $buildingId) >= $level) { + $nextStepAlreadyDone = true; + break; + } else { + // verify in the queue + $buildingQueues = $this->buildingQueueRepository->getBaseQueues($orbitalBase); + foreach ($buildingQueues as $buildingQueue) { + if ($buildingQueue->buildingNumber == $buildingId and $buildingQueue->targetLevel >= $level) { + $nextStepAlreadyDone = true; + break; + } + } + } + } + + return $nextStepAlreadyDone; + } + + public function isNextTechnoStepAlreadyDone(Player $player, int $technoId, int $level = 1): bool + { + $technology = $this->technologyRepository->getPlayerTechnology($player); + if ($technology->getTechnology($technoId) >= $level) { + return true; + } + // verify in the queue + if (null !== $this->technologyQueueRepository->getPlayerTechnologyQueue($player, $technoId)) { + return true; + } + + return false; + } +} diff --git a/src/Modules/Zeus/Infrastructure/ArgumentResolver/CurrentPlayerValueResolver.php b/src/Modules/Zeus/Infrastructure/ArgumentResolver/CurrentPlayerValueResolver.php new file mode 100644 index 000000000..a97f68616 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/ArgumentResolver/CurrentPlayerValueResolver.php @@ -0,0 +1,29 @@ +getType()) { + return []; + } + + if (!$this->currentPlayerRegistry->has()) { + return []; + } + + return [$this->currentPlayerRegistry->get()]; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Command/TestPlayerBonusCommand.php b/src/Modules/Zeus/Infrastructure/Command/TestPlayerBonusCommand.php new file mode 100644 index 000000000..bff35ae74 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Command/TestPlayerBonusCommand.php @@ -0,0 +1,53 @@ +addOption('bonus-id', null, InputOption::VALUE_REQUIRED, 'The Player Bonus ID to test') + ->addOption('player-id', null, InputOption::VALUE_REQUIRED, 'The Player ID to test') + ->addArgument('value', InputArgument::REQUIRED, 'The value to test'); + } + + public function execute(InputInterface $input, OutputInterface $output): int + { + $bonusId = $input->getOption('bonus-id') ?? throw new \RuntimeException('Missing player bonus ID'); + $playerId = $input->getOption('player-id') ?? throw new \RuntimeException('Missing player ID'); + $value = $input->getArgument('value'); + + $player = $this->playerRepository->get($playerId) ?? throw new \RuntimeException('Player not found'); + $playerBonus = $this->playerBonusManager->getBonusByPlayer($player); + + $output->writeln(sprintf( + 'The result value is %d with a %d modifier', + $this->bonusApplier->apply($value, $bonusId, $playerBonus), + $playerBonus->bonuses->get($bonusId), + )); + + return self::SUCCESS; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/AutocompletePlayers.php b/src/Modules/Zeus/Infrastructure/Controller/AutocompletePlayers.php new file mode 100644 index 000000000..4c2929530 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/AutocompletePlayers.php @@ -0,0 +1,24 @@ +query->get('q'))) { + return new Response('', Response::HTTP_NO_CONTENT); + } + + return $this->render('blocks/zeus/autocomplete_player.html.twig', [ + 'players' => $playerRepository->search($search), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/ChoosePlayer.php b/src/Modules/Zeus/Infrastructure/Controller/ChoosePlayer.php new file mode 100644 index 000000000..e73971998 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/ChoosePlayer.php @@ -0,0 +1,34 @@ +denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); + + /** @var User $user */ + $user = $this->getUser(); + $players = $playerRepository->getBySpecification(new DoesPlayerBelongTo($user)); + + return $this->render('pages/portal/player_choice.html.twig', [ + 'active_players' => $players, + 'high_mode' => $this->getParameter('highmode'), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/ProfileController.php b/src/Modules/Zeus/Infrastructure/Controller/ProfileController.php new file mode 100644 index 000000000..57c54573a --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/ProfileController.php @@ -0,0 +1,31 @@ +render('pages/zeus/profile.html.twig', [ + 'player_bases' => $orbitalBaseRepository->getPlayerBases($currentPlayer), + 'has_splash_mode' => 'splash' === $request->query->get('mode'), + 'building_resource_refund' => $this->getParameter('athena.building.building_queue_resource_refund'), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/Registration/ChooseFaction.php b/src/Modules/Zeus/Infrastructure/Controller/Registration/ChooseFaction.php new file mode 100644 index 000000000..25936bf8d --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/Registration/ChooseFaction.php @@ -0,0 +1,39 @@ + false, + ], + methods: ['GET', 'POST'], + )] + public function __invoke( + Request $request, + ColorRepositoryInterface $colorRepository, + bool $highMode, + ): Response { + + $session = $request->getSession(); + // mode de création de joueur + $session->set('high-mode', $this->getParameter('highmode') && $highMode); + $session->set('inscription', new ArrayList()); + + return $this->render('pages/zeus/registration/faction_choice.html.twig', [ + 'sorted_factions' => $colorRepository->getAllByActivePlayersNumber(), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/Registration/ChoosePlace.php b/src/Modules/Zeus/Infrastructure/Controller/Registration/ChoosePlace.php new file mode 100644 index 000000000..c7317d248 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/Registration/ChoosePlace.php @@ -0,0 +1,46 @@ + false, + ], + methods: ['GET', 'POST'], + )] + public function __invoke( + Request $request, + ColorRepositoryInterface $colorRepository, + GetAvailableAvatars $getAvailableAvatars, + PlayerRepositoryInterface $playerRepository, + GalaxyConfiguration $galaxyConfiguration, + SectorRepositoryInterface $sectorRepository, + ): Response { + $session = $request->getSession(); + $faction = $colorRepository->getOneByIdentifier(intval($session->get('inscription')->get('ally'))) + ?? throw new BadRequestHttpException('faction inconnu'); + + return $this->render('pages/zeus/registration/place_choice.html.twig', [ + 'chosenFaction' => $faction, + 'galaxy_configuration' => $galaxyConfiguration, + 'sectors' => $sectorRepository->getAll(), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/Registration/CreateCharacter.php b/src/Modules/Zeus/Infrastructure/Controller/Registration/CreateCharacter.php new file mode 100644 index 000000000..76415a064 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/Registration/CreateCharacter.php @@ -0,0 +1,89 @@ +getSession(); + if (!$session->has('inscription')) { + // TODO Replace when portal is implemented + return $this->redirect($this->getParameter('getout_root') . 'serveurs/message-forbiddenaccess'); + } + + if (Request::METHOD_POST === $request->getMethod()) { + if (null === $playerRepository->getByName($request->request->get('pseudo'))) { + $check = new CheckName(); + + if ($request->request->has('pseudo') && $check->checkLength($request->request->get('pseudo')) && $check->checkChar($request->request->get('pseudo'))) { + $session->get('inscription')->add('pseudo', $request->request->get('pseudo')); + + $faction = $colorRepository->getOneByIdentifier((int) $session->get('inscription')->get('ally')) + ?? throw $this->createNotFoundException('Faction inconnue'); + + // check avatar + if (in_array($request->request->get('avatar'), $getAvailableAvatars($faction))) { + $session->get('inscription')->add('avatar', $request->request->get('avatar')); + + return $this->redirectToRoute('registration_choose_place'); + } elseif (!$session->get('inscription')->exist('avatar')) { + throw new BadRequestHttpException('Cet avatar n\'existe pas ou est invalide'); + } + } elseif (!$session->get('inscription')->exist('pseudo')) { + $this->addFlash('error', 'Votre pseudo est trop long, trop court ou contient des caractères non-autorisés'); + + return $this->redirectToRoute('registration_create_character'); + } + } elseif (!$session->get('inscription')->exist('pseudo')) { + $this->addFlash('error', 'Ce pseudo est déjà utilisé par un autre joueur'); + + return $this->redirectToRoute('registration_create_character'); + } + } + + // création du tableau des alliances actives + // entre 1 et 7 + // alliance pas défaites + // algorythme de fermeture automatique des alliances (auto-balancing) + $openFactions = $colorRepository->getOpenFactions(); + + $ally = array_map(fn (Color $faction) => $faction->identifier, $openFactions); + + if ($request->query->has('factionIdentifier') && in_array($request->query->get('factionIdentifier'), $ally)) { + $session->get('inscription')->add('ally', $request->query->get('factionIdentifier')); + } elseif (!$session->get('inscription')->exist('ally')) { + throw new BadRequestHttpException('faction inconnues ou non-sélectionnable'); + } + + $faction = $colorRepository->getOneByIdentifier(intval($session->get('inscription')->get('ally'))) + ?? throw new BadRequestHttpException('faction inconnu'); + + return $this->render('pages/zeus/registration/profile.html.twig', [ + 'chosenFaction' => $faction, + 'avatars' => $getAvailableAvatars($faction), + ]); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/Registration/Save.php b/src/Modules/Zeus/Infrastructure/Controller/Registration/Save.php new file mode 100644 index 000000000..f971deb4c --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/Registration/Save.php @@ -0,0 +1,111 @@ +denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); + + $session = $request->getSession(); + if ($session->has('inscription')) { + $check = new CheckName(); + + if ($request->request->has('base') && $check->checkLength($request->request->get('base'))) { + if ($check->checkChar($request->request->get('base'))) { + $session->get('inscription')->add('base', $request->request->get('base')); + + $sectors = $sectorRepository->getAll(); + + $factionSectors = []; + foreach ($sectors as $sector) { + if ($sector->faction?->identifier == $session->get('inscription')->get('ally')) { + $factionSectors[] = $sector->id; + } + } + if (in_array($request->request->get('sector'), $factionSectors)) { + $session->get('inscription')->add('sector', $request->request->get('sector')); + } else { + throw new BadRequestHttpException('il faut sélectionner un des secteurs de la couleur de votre faction'); + } + } else { + throw new BadRequestHttpException('le nom de votre base ne doit pas contenir de caractères spéciaux'); + } + } else { + throw new BadRequestHttpException('le nom de votre base doit contenir entre '.$check->getMinLength().' et '.$check->getMaxLength().' caractères'); + } + } else { + // TODO Replace when portal is implemented + return $this->redirect($this->getParameter('getout_root').'serveurs/message-forbiddenaccess'); + } + + try { + $session = $request->getSession(); + + $faction = $colorRepository->getOneByIdentifier(intval($session->get('inscription')->get('ally'))) + ?? throw new BadRequestHttpException('Invalid faction identifier'); + + $godFather = null; + if ($session->has('rgodfather')) { + $godFather = $playerRepository->get($session->get('rgodfather')) + ?? throw new BadRequestHttpException('Godfather not found'); + } + $sector = $sectorRepository->get(Uuid::fromString($session->get('inscription')->get('sector'))) + ?? throw new BadRequestHttpException('Sector not found'); + + // remove godFather from session + $session->remove('rgodfather'); + + /** @var User $user */ + $user = $this->getUser(); + + $player = $playerFactory->create( + faction: $faction, + user: $user, + name: trim((string) $session->get('inscription')->get('pseudo')), + avatar: $session->get('inscription')->get('avatar'), + sector: $sector, + baseName: $session->get('inscription')->get('base'), + godFather: $godFather, + highMode: $session->get('high-mode'), + ); + + // redirection vers connection + return $this->redirectToRoute('connect', [ + 'playerId' => $player->id, + ]); + } catch (\Throwable $t) { + // @TODO handle this + throw $t; + dd($t); + // tentative de réparation de l'erreur + return $this->redirectToRoute('registration_choose_place'); + } + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/SearchPlayer.php b/src/Modules/Zeus/Infrastructure/Controller/SearchPlayer.php new file mode 100644 index 000000000..1e5ff9c27 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/SearchPlayer.php @@ -0,0 +1,46 @@ +request->getInt('playerid'))) { + $player = $this->searchById($id); + } + + if (null !== ($name = $request->request->get('name'))) { + $player = $this->searchByName($name); + } + + if (null === $player) { + throw $this->createNotFoundException('Aucun joueur ne correspond à votre recherche.'); + } + + return $this->redirectToRoute('embassy', ['player' => $player->id]); + } + + private function searchById(int $id): Player|null + { + return $this->playerRepository->get($id); + } + + private function searchByName(string $name): Player|null + { + return $this->playerRepository->getByName($name); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Controller/SponsorController.php b/src/Modules/Zeus/Infrastructure/Controller/SponsorController.php new file mode 100644 index 000000000..283144362 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Controller/SponsorController.php @@ -0,0 +1,14 @@ +stepTutorial; + $session = $request->getSession(); + + if (true === $currentPlayer->stepDone and TutorialResource::stepExists($stepTutorial)) { + $experience = TutorialResource::getInfo($stepTutorial, 'experienceReward'); + $credit = TutorialResource::getInfo($stepTutorial, 'creditReward'); + $resource = TutorialResource::getInfo($stepTutorial, 'resourceReward'); + $ship = TutorialResource::getInfo($stepTutorial, 'shipReward'); + $playerBases = $orbitalBaseRepository->getPlayerBases($currentPlayer); + $alert = 'Etape validée. '; + + $firstReward = true; + if ($experience > 0) { + $firstReward = false; + $alert .= 'Vous gagnez '.$experience.' points d\'expérience'; + $playerManager->increaseExperience($currentPlayer, $experience); + } + + if ($credit > 0) { + if ($firstReward) { + $firstReward = false; + $alert .= 'Vous gagnez '.$credit.'crédits'; + } else { + $alert .= ', ainsi que '.$credit.' crédits'; + } + $playerManager->increaseCredit($currentPlayer, $credit); + } + + if ($resource > 0 || $ship != [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) { + $ob = $currentBase; + + if ($resource > 0) { + if ($firstReward) { + $firstReward = false; + $alert .= 'Vous gagnez '.$resource.' ressources'; + } else { + $alert .= ' et '.$resource.' ressources'; + } + $alert .= ' sur votre base orbitale '.$ob->name.'. '; + $orbitalBaseManager->increaseResources($ob, $resource, true); + } + + if ($ship != [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) { + $qty = 0; + $ships = []; + foreach ($ship as $key => $value) { + if (0 != $value) { + $ships[$qty] = []; + $ships[$qty]['quantity'] = $value; + $ships[$qty]['name'] = ShipResource::getInfo($key, 'codeName'); + ++$qty; + + // add ship to dock + $ob->addShips($key, $value); + } + } + if ($firstReward) { + $firstReward = false; + $alert .= 'Vous gagnez '; + $endOfAlert = ' sur votre base orbitale '.$ob->name.'. '; + } else { + $alert .= '. Vous gagnez également '; + $endOfAlert = '. '; + } + + // complete alert + foreach ($ships as $key => $value) { + if (0 == $key) { + $alert .= $value['quantity'].' '.$value['name'].Format::plural($value['quantity']); + } elseif ($qty - 1 == $key) { + $alert .= ' et '.$value['quantity'].' '.$value['name'].Format::plural($value['quantity']); + } else { + $alert .= ', '.$value['quantity'].' '.$value['name'].Format::plural($value['quantity']); + } + } + $alert .= $endOfAlert; + } + } else { + $alert .= '. '; + } + + $alert .= 'La prochaine étape vous attend.'; + $this->addFlash('success', $alert); + + $nextStep = $stepTutorial + 1; + if (TutorialResource::isLastStep($stepTutorial)) { + $this->addFlash('success', 'Bravo, vous avez terminé le tutoriel. Bonne continuation et bon amusement sur Asylamba, vous pouvez maintenant voler de vos propres ailes !'); + } + + // verify if the next step is already done + $nextStepAlreadyDone = false; + $redirectWithoutJeanMi = false; + switch ($nextStep) { + case TutorialResource::NAVIGATION: + $redirectWithoutJeanMi = true; + $nextStepAlreadyDone = true; + break; + case TutorialResource::GENERATOR_LEVEL_2: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::GENERATOR, 2); + break; + case TutorialResource::REFINERY_LEVEL_3: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::REFINERY, 3); + break; + case TutorialResource::STORAGE_LEVEL_3: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::STORAGE, 3); + break; + case TutorialResource::TECHNOSPHERE_LEVEL_1: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::TECHNOSPHERE, 1); + break; + case TutorialResource::MODIFY_UNI_INVEST: + // asdf + break; + case TutorialResource::CREATE_COMMANDER: + // asdf + break; + case TutorialResource::DOCK1_LEVEL_1: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::DOCK1, 1); + break; + case TutorialResource::SHIP0_UNBLOCK: + $nextStepAlreadyDone = $tutorialHelper->isNextTechnoStepAlreadyDone($currentPlayer, TechnologyId::SHIP0_UNBLOCK); + break; + case TutorialResource::BUILD_SHIP0: + // verify in the queue + // load the queues + foreach ($playerBases as $ob) { + $shipQueues = $shipQueueRepository->getBaseQueues($ob); + foreach ($shipQueues as $shipQueue) { + if (ShipResource::PEGASE == $shipQueue->shipNumber) { + $nextStepAlreadyDone = true; + break; + } + } + } + break; + case TutorialResource::AFFECT_COMMANDER: + // asdf + break; + case TutorialResource::FILL_SQUADRON: + // asdf + break; + case TutorialResource::MOVE_FLEET_LINE: + // asdf + break; + case TutorialResource::SPY_PLANET: + // asdf + break; + case TutorialResource::LOOT_PLANET: + // asdf + break; + case TutorialResource::FACTION_FORUM: + // asdf + break; + case TutorialResource::SHARE_ASYLAMBA: + $nextStepAlreadyDone = true; + break; + case TutorialResource::REFINERY_LEVEL_10: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::REFINERY, 10); + break; + case TutorialResource::STORAGE_LEVEL_8: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::STORAGE, 8); + break; + case TutorialResource::DOCK1_LEVEL_6: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::DOCK1, 6); + break; + case TutorialResource::REFINERY_LEVEL_16: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::REFINERY, 16); + break; + case TutorialResource::STORAGE_LEVEL_12: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::STORAGE, 12); + break; + case TutorialResource::TECHNOSPHERE_LEVEL_6: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::TECHNOSPHERE, 6); + break; + case TutorialResource::SHIP1_UNBLOCK: + $nextStepAlreadyDone = $tutorialHelper->isNextTechnoStepAlreadyDone($currentPlayer, TechnologyId::SHIP1_UNBLOCK); + break; + case TutorialResource::DOCK1_LEVEL_15: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::DOCK1, 15); + break; + case TutorialResource::BUILD_SHIP1: + // asdf + break; + case TutorialResource::REFINERY_LEVEL_20: + $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($currentPlayer, OrbitalBaseResource::REFINERY, 20); + break; + case TutorialResource::SPONSORSHIP: + $nextStepAlreadyDone = true; + break; + } + if (!$nextStepAlreadyDone) { + $currentPlayer->stepDone = false; + $session->get('playerInfo')->add('stepDone', false); + } + $currentPlayer->stepTutorial = $nextStep; + $session->get('playerInfo')->add('stepTutorial', $nextStep); + $playerRepository->save($currentPlayer); + if ($redirectWithoutJeanMi) { + return $this->redirectToRoute('profile'); + } + + return $this->redirect($request->headers->get('referer')); + } else { + throw new BadRequestHttpException('Impossible de valider l\'étape avant de l\'avoir effectuée.'); + } + } +} diff --git a/src/Modules/Zeus/Infrastructure/DataCollector/AppliedBonusDataCollector.php b/src/Modules/Zeus/Infrastructure/DataCollector/AppliedBonusDataCollector.php new file mode 100644 index 000000000..03690e0c0 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/DataCollector/AppliedBonusDataCollector.php @@ -0,0 +1,46 @@ +bonusApplier instanceof TraceableBonusApplier) { + return; + } + + $this->data = [ + 'applied_modifiers' => $this->bonusApplier->getTracedBonuses(), + 'player_bonuses' => $this->currentPlayerBonusRegistry->getPlayerBonus()?->bonuses->all(), + ]; + } + + public static function getTemplate(): ?string + { + return 'components/data_collector/applied_bonuses.html.twig'; + } + + public function getAppliedBonuses(): array + { + return $this->data['applied_modifiers']; + } + + public function getPlayerBonuses(): array + { + return $this->data['player_bonuses'] ?? []; + } +} diff --git a/src/Modules/Zeus/Infrastructure/DataFixtures/Factory/PlayerFactory.php b/src/Modules/Zeus/Infrastructure/DataFixtures/Factory/PlayerFactory.php new file mode 100644 index 000000000..1946c02c1 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/DataFixtures/Factory/PlayerFactory.php @@ -0,0 +1,51 @@ + 0, + 'bind' => self::faker()->md5(), + 'faction' => FactionFactory::randomOrCreate(), + 'godFather' => null, + 'name' => self::faker()->userName(), + 'sex' => 0, + 'description' => '', + 'avatar' => 't3-c4', + 'status' => Player::STANDARD, + 'credit' => 0, + 'experience' => 0, + 'factionPoint' => 0, + 'level' => 1, + 'victory' => 0, + 'defeat' => 0, + 'stepTutorial' => 1, + 'stepDone' => false, + 'iUniversity' => 5000, + 'partNaturalSciences' => 25, + 'partLifeSciences' => 25, + 'partSocialPoliticalSciences' => 25, + 'partInformaticEngineering' => 25, + 'uPlayer' => null, + 'dInscription' => null, + 'dLastConnection' => null, + 'dLastActivity' => null, + 'premium' => false, + 'statement' => Player::ACTIVE, + ]; + } + + protected static function getClass(): string + { + return Player::class; + } +} diff --git a/src/Modules/Zeus/Infrastructure/DataFixtures/PlayerFixtures.php b/src/Modules/Zeus/Infrastructure/DataFixtures/PlayerFixtures.php new file mode 100644 index 000000000..e9caebbfc --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/DataFixtures/PlayerFixtures.php @@ -0,0 +1,26 @@ +getRequest(); + + if (!$request->hasPreviousSession() || null === ($playerId = $request->getSession()->get('playerId'))) { + return; + } + + $player = $this->playerRepository->get($playerId); + $this->currentPlayerRegistry->set($player); + $this->currentPlayerBasesRegistry->setBases($this->orbitalBaseRepository->getPlayerBases($player)); + $this->currentPlayerBasesRegistry->setCurrentBase($request->getSession()->get('playerParams')->get('base')); + + $bonus = $this->playerBonusManager->getBonusByPlayer($player); + $this->currentPlayerBonusRegistry->setPlayerBonus($bonus); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Repository/PlayerFinancialReportRepository.php b/src/Modules/Zeus/Infrastructure/Repository/PlayerFinancialReportRepository.php new file mode 100644 index 000000000..6c08ce6e2 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Repository/PlayerFinancialReportRepository.php @@ -0,0 +1,59 @@ +findBy( + [ + 'player' => $player, + ], + [ + 'createdAt' => 'DESC', + ], + $limit, + $offset, + ); + } + + public function getPlayerLastReport(Player $player): PlayerFinancialReport|null + { + return $this->findOneBy( + [ + 'player' => $player, + ], + [ + 'createdAt' => 'DESC', + ], + ); + } + + public function cleanPlayerFinancialReports(int $timeout): int + { + $qb = $this->createQueryBuilder('pfr'); + + $qb + ->delete() + ->where( + $qb->expr()->gt('DATE_DIFF(CURRENT_DATE(), pfr.createdAt)', ':timeout') + ) + ->setParameter('timeout', $timeout); + + return $qb->getQuery()->getResult(); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Twig/Components/Atoms/Avatar.php b/src/Modules/Zeus/Infrastructure/Twig/Components/Atoms/Avatar.php new file mode 100644 index 000000000..ba0bcd141 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Twig/Components/Atoms/Avatar.php @@ -0,0 +1,25 @@ +player + ? $this->player->avatar + : $this->avatar ?? throw new \LogicException('Neither player or avatar property has a value set.'); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Twig/Components/Organisms/Character.php b/src/Modules/Zeus/Infrastructure/Twig/Components/Organisms/Character.php new file mode 100644 index 000000000..5d7b3d86a --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Twig/Components/Organisms/Character.php @@ -0,0 +1,37 @@ +player = $player; + $this->playerMissingExperience = intval($this->baseLevelPlayer * (2 ** ($player->level - 1))); + // @TODO Not quite sure that this is the next experience level. To check and rename accordingly + $this->playerNextLevelExperience = intval($this->baseLevelPlayer * (2 ** ($player->level - 2))); + $this->playerExperienceProgress = ((($player->experience - $this->playerNextLevelExperience) * 200) / $this->playerMissingExperience); + + } +} diff --git a/src/Modules/Zeus/Infrastructure/Twig/PlayerExtension.php b/src/Modules/Zeus/Infrastructure/Twig/PlayerExtension.php new file mode 100644 index 000000000..36eb2cbd9 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Twig/PlayerExtension.php @@ -0,0 +1,42 @@ + $this->bonusApplier->apply($initialValue, $playerBonusId)), + new TwigFunction('get_player_bonus', fn (int $playerBonusId) => $this->currentPlayerBonusRegistry->getPlayerBonus()->bonuses->get($playerBonusId)), + new TwigFunction('get_faction_info', fn (int $factionId, string $info) => ColorResource::getInfo($factionId, $info)), + new TwigFunction('get_player_bases_count', fn (array $movingCommanders) => $this->orbitalBaseManager->getPlayerBasesCount($movingCommanders)), + new TwigFunction('get_research_info', fn (string $researchType, string $info) => $this->researchHelper->getInfo($researchType, $info)), + new TwigFunction('is_player_online', fn (Player $player) => $this->durationHandler->getDiff(new \DateTimeImmutable(), $player->dLastActivity) < ($this->timeEventUpdate * 2)), + new TwigFunction('is_player_inactive', fn (Player $player) => $this->durationHandler->getHoursDiff(new \DateTimeImmutable(), $player->dLastActivity) > $this->allyInactiveTime), + ]; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Twig/TutorialExtension.php b/src/Modules/Zeus/Infrastructure/Twig/TutorialExtension.php new file mode 100644 index 000000000..65f48e8c6 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Twig/TutorialExtension.php @@ -0,0 +1,20 @@ + TutorialResource::getInfo($step, $info)), + new TwigFunction('ship_name', fn (int $id) => ShipResource::getInfo($id, 'codeName')), + ]; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/CanAfford.php b/src/Modules/Zeus/Infrastructure/Validator/CanAfford.php new file mode 100644 index 000000000..1effb84d6 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/CanAfford.php @@ -0,0 +1,16 @@ +getCreditHolderFrom($value); + + if (!$creditHolder->canAfford($constraint->price)) { + $this->context + ->buildViolation('Vous n\'avez pas assez de crédits pour conquérir cette base.') + ->addViolation(); + } + } + + private function getCreditHolderFrom($value): CreditHolderInterface + { + return match (true) { + $value instanceof HasCommander => $value->getCommander()->player, + $value instanceof Commander => $value->player, + $value instanceof Player, $value instanceof Color => $value, + default => throw new UnexpectedTypeException($value, CreditHolderInterface::class), + }; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/CanBeInvaded.php b/src/Modules/Zeus/Infrastructure/Validator/CanBeInvaded.php new file mode 100644 index 000000000..6f796aaaa --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/CanBeInvaded.php @@ -0,0 +1,17 @@ +targetedPlayer instanceof Player) { + throw new UnexpectedValueException($constraint->targetedPlayer, Player::class); + } + + if ($constraint->targetedPlayer->level <= 3 && !in_array($constraint->targetedPlayer->statement, [Player::DELETED, Player::DEAD])) { + $this->context + ->buildViolation('Vous ne pouvez pas conquérir un joueur de niveau 3 ou moins.') + ->addViolation(); + } + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/DoesPlayerBelongTo.php b/src/Modules/Zeus/Infrastructure/Validator/DoesPlayerBelongTo.php new file mode 100644 index 000000000..e505600d5 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/DoesPlayerBelongTo.php @@ -0,0 +1,24 @@ +andWhere($queryBuilder->expr()->eq('p.user', ':user')) + ->setParameter('user', $this->user); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/HasStatus.php b/src/Modules/Zeus/Infrastructure/Validator/HasStatus.php new file mode 100644 index 000000000..5732ed26b --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/HasStatus.php @@ -0,0 +1,23 @@ +andWhere($queryBuilder->expr()->in('p.status', ':statuses')) + ->setParameter('statuses', $this->statuses); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsActiveFactionPlayer.php b/src/Modules/Zeus/Infrastructure/Validator/IsActiveFactionPlayer.php new file mode 100644 index 000000000..13e1d3dd9 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsActiveFactionPlayer.php @@ -0,0 +1,29 @@ + $options + * @return Constraint[] + */ + public function getConstraints(array $options): array + { + return [ + new IsActivePlayer(), + new IsFromFaction($this->faction), + ]; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsActivePlayer.php b/src/Modules/Zeus/Infrastructure/Validator/IsActivePlayer.php new file mode 100644 index 000000000..16e5f6563 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsActivePlayer.php @@ -0,0 +1,20 @@ +andWhere( + $queryBuilder->expr()->in('p.statement', [Player::ACTIVE, Player::HOLIDAY]) + ); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsFromFaction.php b/src/Modules/Zeus/Infrastructure/Validator/IsFromFaction.php new file mode 100644 index 000000000..618a55e7b --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsFromFaction.php @@ -0,0 +1,28 @@ +andWhere($queryBuilder->expr()->eq('p.faction', ':faction')) + ->setParameter('faction', $this->faction->id, UuidType::NAME); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsGovernmentMember.php b/src/Modules/Zeus/Infrastructure/Validator/IsGovernmentMember.php new file mode 100644 index 000000000..4714ec2cc --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsGovernmentMember.php @@ -0,0 +1,40 @@ + $options + * @return Constraint[] + */ + public function getConstraints(array $options): array + { + return [ + new IsFromFaction($this->faction), + new IsPlayerAlive(), + new HasStatus([Player::MINISTER, Player::TREASURER, Player::WARLORD, Player::CHIEF]), + ]; + } + + #[\Override] + public function addMatchingCriteria(QueryBuilder $queryBuilder): void + { + parent::addMatchingCriteria($queryBuilder); + + $queryBuilder->addOrderBy('p.status', 'DESC'); + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsParliamentMember.php b/src/Modules/Zeus/Infrastructure/Validator/IsParliamentMember.php new file mode 100644 index 000000000..d85bf168a --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsParliamentMember.php @@ -0,0 +1,31 @@ + $options + * @return Constraint[] + */ + public function getConstraints(array $options): array + { + return [ + new IsFromFaction($this->faction), + new IsPlayerAlive(), + new HasStatus([Player::PARLIAMENT]), + ]; + } +} diff --git a/src/Modules/Zeus/Infrastructure/Validator/IsPlayerAlive.php b/src/Modules/Zeus/Infrastructure/Validator/IsPlayerAlive.php new file mode 100644 index 000000000..d7f74c290 --- /dev/null +++ b/src/Modules/Zeus/Infrastructure/Validator/IsPlayerAlive.php @@ -0,0 +1,29 @@ +isAlive(); + } + + public function addMatchingCriteria(QueryBuilder $queryBuilder): void + { + $queryBuilder->andWhere( + $queryBuilder->expr()->neq('p.statement', Player::DEAD) + ); + } +} diff --git a/src/Modules/Zeus/Manager/PlayerBonusManager.php b/src/Modules/Zeus/Manager/PlayerBonusManager.php new file mode 100644 index 000000000..35a20694a --- /dev/null +++ b/src/Modules/Zeus/Manager/PlayerBonusManager.php @@ -0,0 +1,193 @@ +currentPlayerRegistry->get()->id === $player->id && $this->currentPlayerBonusRegistry->isInitialized()) { + return $this->currentPlayerBonusRegistry->getPlayerBonus(); + } + } catch (NoCurrentPlayerSetException) { + } + + + $technology = $this->technologyRepository->getPlayerTechnology($player); + $playerBonus = new PlayerBonus($player, $technology); + + // remplissage de l'objet normalement + // remplissage avec les technologies + $this->fillFromTechnology($playerBonus); + $this->addFactionBonus($playerBonus); + $this->addLawBonus($playerBonus); + + // remplissage avec les cartes + // ... + + return $playerBonus; + } + + private function fillFromTechnology(PlayerBonus $playerBonus): void + { + foreach (TechnologyId::BONUS_TECHNOLOGIES_IDS as $technologyId) { + $this->addTechnoToBonus($playerBonus, $technologyId, PlayerBonusId::fromTechnologyIdentifier($technologyId)); + } + } + + private function addTechnoToBonus(PlayerBonus $playerBonus, $techno, $bonus): void + { + $totalBonus = 0; + for ($i = 0; $i <= $playerBonus->technology->getTechnology($techno); ++$i) { + $totalBonus += $this->technologyHelper->getImprovementPercentage($techno, $i); + } + $playerBonus->bonuses->add($bonus, $totalBonus); + } + + private function addLawBonus(PlayerBonus $playerBonus): void + { + $laws = $this->lawRepository->getByFactionAndStatements($playerBonus->playerColor, [Law::EFFECTIVE]); + foreach ($laws as $law) { + switch ($law->type) { + case Law::MILITARYSUBVENTION: + $playerBonus->bonuses->increase(PlayerBonusId::DOCK1_SPEED, LawResources::getInfo($law->type, 'bonus')); + $playerBonus->bonuses->increase(PlayerBonusId::DOCK2_SPEED, LawResources::getInfo($law->type, 'bonus')); + $playerBonus->bonuses->increase(PlayerBonusId::REFINERY_REFINING, -10); + $playerBonus->bonuses->increase(PlayerBonusId::REFINERY_REFINING, -10); + break; + case Law::TECHNOLOGYTRANSFER: + $playerBonus->bonuses->increase(PlayerBonusId::TECHNOSPHERE_SPEED, LawResources::getInfo($law->type, 'bonus')); + break; + default: + break; + } + } + } + + private function addFactionBonus(PlayerBonus $playerBonus): void + { + $color = $playerBonus->playerColor ?? throw new \LogicException('Bonus must have a faction'); + + $bonus = ColorResource::getInfo($color->identifier, 'bonus'); + + if (in_array(ColorResource::DEFENSELITTLESHIPBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::FIGHTER_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::CORVETTE_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::FRIGATE_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::DESTROYER_DEFENSE, 5); + } + + if (in_array(ColorResource::SPEEDLITTLESHIPBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::FIGHTER_SPEED, 10); + $playerBonus->bonuses->increase(PlayerBonusId::CORVETTE_SPEED, 10); + } + + if (in_array(ColorResource::DEFENSELITTLESHIPMALUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::FRIGATE_DEFENSE, -5); + $playerBonus->bonuses->increase(PlayerBonusId::DESTROYER_DEFENSE, -5); + } + + if (in_array(ColorResource::COMMERCIALROUTEINCOMEBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::COMMERCIAL_INCOME, 5); + } + + if (in_array(ColorResource::TAXBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::POPULATION_TAX, 3); + } + + if (in_array(ColorResource::LOOTRESOURCESMALUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::SHIP_CONTAINER, -5); + } + + if (in_array(ColorResource::RAFINERYBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::REFINERY_REFINING, 4); + } + + if (in_array(ColorResource::STORAGEBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::REFINERY_STORAGE, 4); + } + + if (in_array(ColorResource::BIGACADEMICBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::UNI_INVEST, 4); + } + + if (in_array(ColorResource::COMMANDERSCHOOLBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::COMMANDER_INVEST, 6); + } + + if (in_array(ColorResource::LITTLEACADEMICBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::UNI_INVEST, 2); + } + + if (in_array(ColorResource::TECHNOLOGYBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::TECHNOSPHERE_SPEED, 2); + } + + if (in_array(ColorResource::DEFENSELITTLESHIPBONUS, $bonus)) { + $playerBonus->bonuses->increase(PlayerBonusId::FIGHTER_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::CORVETTE_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::FRIGATE_DEFENSE, 5); + $playerBonus->bonuses->increase(PlayerBonusId::DESTROYER_DEFENSE, 5); + } + } + + public function increment(PlayerBonus $playerBonus, $bonusId, $increment): void + { + if (PlayerBonusId::isBonusId($bonusId)) { + if ($increment > 0) { + $playerBonus->bonuses->add($bonusId, $playerBonus->bonuses->get($bonusId) + $increment); + } else { + throw new \LogicException('incrémentation de bonus impossible - l\'incrément doit être positif'); + } + } else { + throw new \LogicException('incrémentation de bonus impossible - bonus invalide'); + } + } + + public function decrement(PlayerBonus $playerBonus, $bonusId, $decrement): void + { + if (PlayerBonusId::isBonusId($bonusId)) { + if ($decrement > 0) { + if ($decrement <= $playerBonus->bonuses->get($bonusId)) { + $playerBonus->bonuses->add($bonusId, $playerBonus->bonuses->get($bonusId) - $decrement); + } else { + throw new \LogicException('décrémentation de bonus impossible - le décrément est plus grand que le bonus'); + } + } else { + throw new \LogicException('décrémentation de bonus impossible - le décrément doit être positif'); + } + } else { + throw new \LogicException('décrémentation de bonus impossible - bonus invalide'); + } + } + + public function updateTechnoBonus(PlayerBonus $playerBonus, $techno, $level): void + { + $this->addTechnoToBonus($playerBonus, $techno, PlayerBonusId::fromTechnologyIdentifier($techno)); + } +} diff --git a/src/Modules/Zeus/Manager/PlayerManager.php b/src/Modules/Zeus/Manager/PlayerManager.php new file mode 100644 index 000000000..27bdbec7b --- /dev/null +++ b/src/Modules/Zeus/Manager/PlayerManager.php @@ -0,0 +1,238 @@ +api->playerIsDead($player->bind, $this->serverId); + + // check if there is no other player with the same dead-name + $futureName = sprintf('† %s ', $player->name); + while (true) { + // on ajoute un 'I' à chaque fois + $futureName .= 'I'; + if (($otherPlayer = $this->playerRepository->getByName($futureName)) === null) { + break; + } + $this->entityManager->clear(); + } + // deadify the player + $player->name = $futureName; + $player->statement = Player::DEAD; + + $this->entityManager->flush(); + } + + public function reborn(Player $player): void + { + // sector choice + $sectors = $this->sectorRepository->getFactionSectors($player->faction); + + $placeFound = false; + $placeId = null; + foreach ($sectors as $sector) { + $placeIds = $this->placeRepository->findPlacesIdsForANewBase($sector); + if ([] !== $placeIds) { + $placeFound = true; + $placeId = $placeIds[random_int(0, count($placeIds) - 1)]; + break; + } + } + + if ($placeFound) { + // reinitialize some values of the player + $player->iUniversity = 1000; + $player->partNaturalSciences = 25; + $player->partLifeSciences = 25; + $player->partSocialPoliticalSciences = 25; + $player->partInformaticEngineering = 25; + $player->statement = Player::ACTIVE; + $player->factionPoint = 0; + + $technos = $this->technologyRepository->getPlayerTechnology($player); + $levelAE = $technos->getTechnology(TechnologyId::BASE_QUANTITY); + if (0 != $levelAE) { + // @TODO Beware possible regression here + $technos->setTechnology(TechnologyId::BASE_QUANTITY, 0); + } + + $place = $this->placeRepository->get($placeId) ?? throw new \LogicException('Place not found'); + + // attribute new base and place to player + $ob = new OrbitalBase( + id: Uuid::v4(), + place: $place, + player: $player, + name: 'Colonie', + // @TODO transform these hardcoded values into config + iSchool: 500, + iAntiSpy: 500, + resourcesStorage: 1000, + ); + + $this->orbitalBasePointsHandler->updatePoints($ob); + + $this->orbitalBaseRepository->save($ob); + + $this->placeManager->turnAsSpawnPlace($placeId, $player); + + // envoi d'une notif + $notif = NotificationBuilder::new() + ->setTitle('Nouvelle Colonie') + ->setContent(NotificationBuilder::paragraph( + 'Vous vous êtes malheureusement fait prendre votre dernière planète. + Une nouvelle colonie vous a été attribuée' + )) + ->for($player); + $this->notificationRepository->save($notif); + $this->entityManager->flush(); + } else { + // si on ne trouve pas de lieu pour le faire poper ou si la faction n'a plus de secteur, le joueur meurt + $this->kill($player); + } + } + + // OBJECT METHOD + public function increaseCredit(Player $player, int $credit): void + { + $player->credit += abs($credit); + + $this->playerRepository->updatePlayerCredits($player, abs($credit)); + } + + public function decreaseCredit(Player $player, int $credit): void + { + $credits = + (abs($credit) > $player->credit) + ? 0 + : abs($credit) + ; + $player->credit -= $credits; + $this->playerRepository->updatePlayerCredits($player, -$credits); + } + + public function increaseExperience(Player $player, $exp): void + { + $exp = intval(round($exp)); + $player->experience += $exp; + $nextLevel = $this->playerBaseLevel * 2 ** ($player->level - 1); + if ($player->experience < $nextLevel) { + $this->entityManager->flush(); + + return; + } + ++$player->level; + + $notification = NotificationBuilder::new() + ->setTitle('Niveau supérieur') + ->setContent( + NotificationBuilder::paragraph( + 'Félicitations, vous gagnez un niveau, vous êtes ', + NotificationBuilder::bold(sprintf('niveau %d', $player->level)), + '.', + ), + NotificationBuilder::divider(), + match ($player->level) { + 2 => NotificationBuilder::paragraph( + 'Attention, + à partir de maintenant vous ne bénéficiez plus de la protection des nouveaux arrivants, + n\'importe quel joueur peut désormais piller votre planète. + Pensez donc à développer vos flottes pour vous défendre.' + ), + 4 => NotificationBuilder::paragraph( + 'Attention, à partir de maintenant un joueur adverse peut conquérir votre planète ! + Si vous n\'en avez plus, le jeu est terminé pour vous. + Pensez donc à étendre votre royaume en colonisant d\'autres planètes.' + ), + default => '', + } + ) + ->for($player); + + $this->notificationRepository->save($notification); + + // parrainage : au niveau 3, le parrain gagne 1M crédits + if (3 == $player->level and null !== $player->godFather) { + $godFather = $player->godFather; + + $this->increaseCredit($godFather, 1000000); + + $notification = NotificationBuilder::new() + ->setTitle('Récompense de parrainage') + ->setContent( + NotificationBuilder::paragraph( + 'Un de vos filleuls a atteint le niveau 3. ', + 'Il s\'agit de ', + NotificationBuilder::link( + $this->urlGenerator->generate('embassy', ['player' => $player->id]), + $player->name, + ), + '.', + ), + NotificationBuilder::paragraph( + 'Vous venez de gagner 1\'000\'000 crédits.', + 'N\'hésitez pas à parrainer d\'autres personnes pour gagner encore plus.' + ) + ) + ->for($player->godFather); + + $this->notificationRepository->save($notification); + } + $this->entityManager->flush(); + } + + public function updateUniversityInvestment(Player $player, int $investment): void + { + $player->iUniversity = $investment; + + $this->entityManager->flush(); + + $this->eventDispatcher->dispatch(new UniversityInvestmentsUpdateEvent($player, $investment)); + } +} diff --git a/src/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php b/src/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php new file mode 100644 index 000000000..390c8b5c1 --- /dev/null +++ b/src/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php @@ -0,0 +1,9 @@ +playerReceiver ?? $this->factionReceiver; + } + + public function getSender(): CreditHolderInterface + { + return $this->playerSender ?? $this->factionSender; + } + + public function getReceiverLink(): string + { + return $this->getLink($this->getReceiver()); + } + + public function getSenderLink(): string + { + return $this->getLink($this->getSender()); + } + + /** + * @return string + */ + private function getLink(CreditHolderInterface $part): string + { + return match (ClassUtils::getClass($part)) { + Color::class => '/embassy/faction-' . $part->id, + Player::class => '/embassy/player-' . $part->id, + default => throw new \RuntimeException('Match case not implemented'), + }; + } + + public function getReceiverName(): string + { + return $this->getName($this->getReceiver()); + } + + public function getSenderName(): string + { + return $this->getName($this->getSender()); + } + + private function getName(CreditHolderInterface $part): string + { + return match (ClassUtils::getClass($part)) { + Color::class => ColorResource::getInfo($part->identifier, 'popularName'), + Player::class => $part->name, + default => throw new \RuntimeException('Match case not implemented'), + }; + } + + public function getReceiverAvatar(): string + { + return $this->getAvatar($this->getReceiver()); + } + + public function getSenderAvatar(): string + { + return $this->getAvatar($this->getSender()); + } + + private function getAvatar(CreditHolderInterface $part): string + { + return match (ClassUtils::getClass($part)) { + Color::class => 'color-' . $part->identifier, + Player::class => $part->avatar, + default => throw new \RuntimeException('Match case not implemented'), + }; + } + + public function getReceiverStatus(): string + { + return $this->getStatus($this->getReceiver()); + } + + public function getSenderStatus(): string + { + return $this->getStatus($this->getSender()); + } + + private function getStatus(CreditHolderInterface $part): string + { + return match (ClassUtils::getClass($part)) { + Color::class => ColorResource::getInfo($part->identifier, 'government'), + // TODO make a method to get a player status + Player::class => ColorResource::getInfo($part->faction->identifier, 'status')[$part->status - 1], + default => throw new \RuntimeException('Match case not implemented'), + }; + } + + public function getReceiverColor(): int + { + return $this->getFaction($this->getReceiver()); + } + + public function getSenderColor(): int + { + return $this->getFaction($this->getSender()); + } + + private function getFaction(CreditHolderInterface $part): int + { + return match (ClassUtils::getClass($part)) { + Color::class => $part->identifier, + Player::class => $part->faction->identifier, + default => throw new \RuntimeException('Match case not implemented'), + }; + } +} diff --git a/src/Modules/Zeus/Model/Player.php b/src/Modules/Zeus/Model/Player.php new file mode 100644 index 000000000..55a5cf5a7 --- /dev/null +++ b/src/Modules/Zeus/Model/Player.php @@ -0,0 +1,149 @@ +statement, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY, Player::BANNED]); + } + + public function isAlive(): bool + { + return static::DEAD !== $this->statement; + } + + // @TODO transform into Voter + public function canAccess(): bool + { + return in_array($this->statement, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); + } + + public function isSynchronized(): bool + { + return $this->synchronized; + } + + public function isRuler(): bool + { + return self::CHIEF === $this->status; + } + + public function isSenator(): bool + { + return self::PARLIAMENT === $this->status; + } + + public function isGovernmentMember(): bool + { + return in_array($this->status, [self::CHIEF, self::WARLORD, self::TREASURER, self::MINISTER]); + } + + public function isTreasurer(): bool + { + return self::TREASURER === $this->status; + } + + public function isParliamentMember(): bool + { + return $this->isSenator() || $this->isGovernmentMember(); + } + + public function isPeopleMember(): bool + { + return self::STANDARD === $this->status; + } + + public function setCredits(int $credit): static + { + $this->credit = $credit; + + return $this; + } + + public function getCredits(): int + { + return $this->credit; + } + + public function canAfford(int $amount): bool + { + return $this->credit >= $amount; + } + public function lastUpdatedBySystemAt(): \DateTimeImmutable + { + return $this->uPlayer; + } + + public function hasCompletedTutorial(): bool + { + return !TutorialResource::stepExists($this->stepTutorial); + } + + public function getRoles(): array + { + return ['ROLE_USER']; + } + + public function jsonSerialize(): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'avatar' => $this->avatar, + ]; + } +} diff --git a/src/Modules/Zeus/Model/PlayerBonus.php b/src/Modules/Zeus/Model/PlayerBonus.php new file mode 100644 index 000000000..b7cc663be --- /dev/null +++ b/src/Modules/Zeus/Model/PlayerBonus.php @@ -0,0 +1,31 @@ +rPlayer = $player->id; + $this->playerColor = $player->faction + ?? throw new \LogicException(sprintf('Player %s faction cannot be null', $player->name)); + $this->bonuses = new StackList(); + } +} diff --git a/src/Modules/Zeus/Model/PlayerBonusId.php b/src/Modules/Zeus/Model/PlayerBonusId.php new file mode 100644 index 000000000..e884481ae --- /dev/null +++ b/src/Modules/Zeus/Model/PlayerBonusId.php @@ -0,0 +1,108 @@ + self::GENERATOR_SPEED, + TechnologyId::REFINERY_REFINING => self::REFINERY_REFINING, + TechnologyId::REFINERY_STORAGE => self::REFINERY_STORAGE, + TechnologyId::DOCK1_SPEED => self::DOCK1_SPEED, + TechnologyId::DOCK2_SPEED => self::DOCK2_SPEED, + TechnologyId::TECHNOSPHERE_SPEED => self::TECHNOSPHERE_SPEED, + TechnologyId::COMMERCIAL_INCOME => self::COMMERCIAL_INCOME, + TechnologyId::GRAVIT_MODULE => self::GRAVIT_MODULE, + TechnologyId::DOCK3_SPEED => self::DOCK3_SPEED, + TechnologyId::POPULATION_TAX => self::POPULATION_TAX, + TechnologyId::COMMANDER_INVEST => self::COMMANDER_INVEST, + TechnologyId::UNI_INVEST => self::UNI_INVEST, + TechnologyId::ANTISPY_INVEST => self::ANTISPY_INVEST, + TechnologyId::SPACESHIPS_SPEED => self::SHIP_SPEED, + TechnologyId::SPACESHIPS_CONTAINER => self::SHIP_CONTAINER, + TechnologyId::BASE_QUANTITY => self::BASE_QUANTITY, + TechnologyId::FIGHTER_SPEED => self::FIGHTER_SPEED, + TechnologyId::FIGHTER_ATTACK => self::FIGHTER_ATTACK, + TechnologyId::FIGHTER_DEFENSE => self::FIGHTER_DEFENSE, + TechnologyId::CORVETTE_SPEED => self::CORVETTE_SPEED, + TechnologyId::CORVETTE_ATTACK => self::CORVETTE_ATTACK, + TechnologyId::CORVETTE_DEFENSE => self::CORVETTE_DEFENSE, + TechnologyId::FRIGATE_SPEED => self::FRIGATE_SPEED, + TechnologyId::FRIGATE_ATTACK => self::FRIGATE_ATTACK, + TechnologyId::FRIGATE_DEFENSE => self::FRIGATE_DEFENSE, + TechnologyId::DESTROYER_SPEED => self::DESTROYER_SPEED, + TechnologyId::DESTROYER_ATTACK => self::DESTROYER_ATTACK, + TechnologyId::DESTROYER_DEFENSE => self::DESTROYER_DEFENSE, + default => throw new \RuntimeException(sprintf('Technology with ID %d has no associated bonus', $technologyIdentifier)), + }; + } +} diff --git a/src/Modules/Zeus/Model/PlayerFinancialReport.php b/src/Modules/Zeus/Model/PlayerFinancialReport.php new file mode 100644 index 000000000..aed23d5ab --- /dev/null +++ b/src/Modules/Zeus/Model/PlayerFinancialReport.php @@ -0,0 +1,84 @@ +populationTaxes + + $this->commercialRoutesIncome + + $this->resourcesSales + + $this->shipsSales + + $this->commandersSales + + $this->receivedPlayersCreditTransactions + + $this->receivedFactionsCreditTransactions + + $this->recycledCredits; + } + + public function getTotalLosses(): int + { + return $this->factionTaxes + + $this->antiSpyInvestments + + $this->universityInvestments + + $this->commandersWages + + $this->shipsCost + + $this->shipsPurchases + + $this->resourcesPurchases + + $this->commandersPurchases + + $this->technologiesInvestments + + $this->conquestInvestments + + $this->commercialRoutesConstructions + + $this->sentFactionsCreditTransactions + + $this->sentPlayersCreditTransactions; + } + + public function getDiff(): int + { + return $this->getTotalIncome() - $this->getTotalLosses(); + } + + public function getNewWallet(): int + { + return $this->initialWallet + $this->getDiff(); + } + + public function canAfford(int $amount): bool + { + return $this->getNewWallet() >= $amount; + } +} diff --git a/src/Modules/Zeus/Repository/CreditTransactionRepository.php b/src/Modules/Zeus/Repository/CreditTransactionRepository.php new file mode 100644 index 000000000..4194193a8 --- /dev/null +++ b/src/Modules/Zeus/Repository/CreditTransactionRepository.php @@ -0,0 +1,81 @@ +findBy( + match (ClassUtils::getClass($sender)) { + Color::class => ['factionSender' => $sender], + Player::class => ['playerSender' => $sender], + default => throw new \RuntimeException('Match case not implemented'), + }, + [ + 'createdAt' => 'DESC', + ], + 20, + ); + } + + public function getAllByPlayerReceiver(Player $player): array + { + return $this->findBy([ + 'playerReceiver' => $player, + ], [ + 'createdAt' => 'DESC', + ], 20); + } + + public function getAllByFactionReceiverFromMembers(Color $faction): array + { + return $this->findBy([ + 'factionReceiver' => $faction, + 'factionSender' => null, + ], [ + 'createdAt' => 'DESC', + ], 20); + } + + public function getAllByFactionReceiverFromFactions(Color $faction): array + { + return $this->findBy([ + 'factionReceiver' => $faction, + 'playerSender' => null, + ], [ + 'createdAt' => 'DESC', + ], 20); + } + + public function matchAllByPlayerSince(Player $player, \DateTimeImmutable $since): Collection + { + return $this->matching(new Criteria( + Criteria::expr()->andX( + Criteria::expr()->orX( + Criteria::expr()->eq('playerReceiver', $player), + Criteria::expr()->eq('playerSender', $player), + ), + Criteria::expr()->gte('createdAt', $since), + ) + )); + } +} diff --git a/src/Modules/Zeus/Repository/PlayerRepository.php b/src/Modules/Zeus/Repository/PlayerRepository.php new file mode 100644 index 000000000..aa668776e --- /dev/null +++ b/src/Modules/Zeus/Repository/PlayerRepository.php @@ -0,0 +1,218 @@ +find($id); + } + + public function getByName(string $name): Player|null + { + return $this->findOneBy(['name' => $name]); + } + + public function getGodSons(Player $player): array + { + return $this->findBy(['rGodFather' => $player]); + } + + public function getByIdsAndStatements(array $ids, array $statements): array + { + $qb = $this->createQueryBuilder('p'); + + return $qb + ->andWhere($qb->expr()->in('p.id', $ids)) + ->andWhere($qb->expr()->in('p.statement', $statements)) + ->getQuery() + ->getResult(); + } + + public function getByStatements(array $statements): array + { + $qb = $this->createQueryBuilder('p'); + + return $qb + ->andWhere($qb->expr()->in('p.statement', $statements)) + ->getQuery() + ->getResult(); + } + + public function countActivePlayers(): int + { + return $this->createQueryBuilder('p') + ->select('COUNT(p.id)') + ->where('p.statement = :statement') + ->setParameter('statement', Player::ACTIVE) + ->getQuery() + ->getSingleScalarResult(); + } + + public function countAllPlayers(): int + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->select('COUNT(p.id)') + ->where($qb->expr()->in('p.statement', ':statement')) + ->setParameter('statement', [Player::ACTIVE, Player::INACTIVE]); + + return $qb->getQuery()->getSingleScalarResult(); + } + + public function countByFactionAndStatements(Color $faction, array $statements): int + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->select('COUNT(p.id)') + ->where($qb->expr()->in('p.statement', ':statement')) + ->andWhere('p.faction = :faction') + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('statement', $statements); + + return $qb->getQuery()->getSingleScalarResult(); + } + + public function getFactionAccount(Color $faction): Player|null + { + return $this->findOneBy([ + 'faction' => $faction, + 'statement' => Player::DEAD, + ], ['id' => 'ASC']); + } + + public function getBySpecification(SelectorSpecification $specification): array + { + $queryBuilder = $this->createQueryBuilder('p'); + + $specification->addMatchingCriteria($queryBuilder); + + return $queryBuilder->getQuery()->getResult(); + } + + /** + * @return list + */ + public function getFactionPlayersByRanking(Color $faction): array + { + return $this->createQueryBuilder('p') + ->where('p.faction = :faction') + ->andWhere('p.statement != :statement') + ->setParameter('faction', $faction->id, UuidType::NAME) + ->setParameter('statement', Player::DEAD) + ->orderBy('p.factionPoint', 'DESC') + ->getQuery() + ->getResult(); + } + + /** + * @return list + */ + public function getFactionPlayersByName(Color $faction): array + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->where('p.faction = :faction') + ->andWhere($qb->expr()->in('p.statement', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY])) + ->setParameter('faction', $faction->id, UuidType::NAME) + ->orderBy('p.name', 'ASC'); + + return $qb->getQuery()->getResult(); + } + + /** + * @return list + */ + public function getLastFactionPlayers(Color $faction): array + { + return $this->createQueryBuilder('p') + ->where('p.faction = :faction') + ->andWhere('p.statement != :statement') + ->setParameters([ + 'faction' => $faction, + 'statement' => Player::DEAD, + ]) + ->orderBy('p.dInscription', 'DESC') + ->setMaxResults(25) + ->getQuery() + ->getResult(); + } + + public function getGovernmentMember(Color $faction, int $status): Player|null + { + return $this->createQueryBuilder('p') + ->where('p.faction = :faction') + ->andWhere('p.status = :status') + ->andWhere('p.statement != :statement') + ->setParameters([ + 'faction' => $faction, + 'status' => $status, + 'statement' => Player::DEAD, + ]) + ->getQuery() + ->getOneOrNullResult(); + } + + public function getFactionLeader(Color $faction): Player|null + { + return $this->getGovernmentMember($faction, Player::CHIEF); + } + + /** + * @return list + */ + public function getActivePlayers(): array + { + return $this->findBy([ + 'statement' => Player::ACTIVE, + ]); + } + + /** + * @return list + */ + public function search(string $search): array + { + $qb = $this->createQueryBuilder('p'); + + $qb + ->where($qb->expr()->like('LOWER(p.name)', 'LOWER(:search)')) + ->setParameter('search', "%$search%") + ->orderBy('p.experience', 'DESC') + ->setMaxResults(20); + + return $qb->getQuery()->getResult(); + } + + public function updatePlayerCredits(Player $player, int $credits): mixed + { + return $this->createQueryBuilder('p') + ->update() + ->set('p.credit', 'p.credit + :credits') + ->where('p.id = :player_id') + ->getQuery() + ->execute([ + 'player_id' => $player->id, + 'credits' => $credits, + ]); + } +} diff --git a/system/Modules/Zeus/Resource/TutorialResource.php b/src/Modules/Zeus/Resource/TutorialResource.php similarity index 86% rename from system/Modules/Zeus/Resource/TutorialResource.php rename to src/Modules/Zeus/Resource/TutorialResource.php index bbfb60ef1..3935e9882 100644 --- a/system/Modules/Zeus/Resource/TutorialResource.php +++ b/src/Modules/Zeus/Resource/TutorialResource.php @@ -1,81 +1,75 @@ 0 AND $step <= count(self::$steps)) { - return TRUE; - } else { - return FALSE; - } + public static function stepExists(int $step): bool + { + return $step > 0 && $step <= count(self::$steps); } - public static function isLastStep($step) { - if ($step == count(self::$steps)) { - return TRUE; - } else { - return FALSE; - } + public static function isLastStep(int $step): bool + { + return $step === count(self::$steps); } - public static function getInfo($id, $info) { + public static function getInfo($id, $info) + { if ($id <= count(self::$steps)) { - if (in_array($info, array('id', 'title', 'description', 'experienceReward', 'creditReward', 'resourceReward', 'shipReward'))) { + if (in_array($info, ['id', 'title', 'description', 'experienceReward', 'creditReward', 'resourceReward', 'shipReward'])) { return self::$steps[$id - 1][$info]; } else { - return FALSE; + return false; } } else { - return FALSE; + return false; } } - private static $steps = array( - array( + private static array $steps = [ + [ 'id' => 1, 'title' => 'Bienvenue', 'description' => 'Salut à toi, @@ -88,8 +82,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 1, 'creditReward' => 0, 'resourceReward' => 50, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 2, 'title' => 'Navigation et temporalité', 'description' => 'Dans Asylamba, la navigation est horizontale. Pour faire glisser le panneau central, utilise les flèches directionnelles de ton clavier ou clique, à l\'aide de ta souris, sur les flèches qui s\'affichent aux deux extrémités de l\'écran. @@ -100,8 +94,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 2, 'creditReward' => 0, 'resourceReward' => 200, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 3, 'title' => 'Construire le Générateur au niveau 2', 'description' => 'Le générateur est le bâtiment essentiel pour développer ta colonie. La construction des autres bâtiments dépend du niveau de ton générateur. Actuellement, il est au niveau 1. Suis les instructions ci-dessous pour lancer la construction de ton générateur niveau 2. @@ -118,8 +112,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 3, 'creditReward' => 0, 'resourceReward' => 400, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 4, 'title' => 'Construire la Raffinerie au niveau 3', 'description' => 'Rends-toi à nouveau dans le générateur. Cette fois, tu devra construire la Raffinerie au niveau 3. Si le bouton de construction est grisé, cela veut dire que tu n\'as pas tous les prérequis pour exécuter la construction. @@ -132,16 +126,16 @@ public static function getInfo($id, $info) { 'experienceReward' => 3, 'creditReward' => 0, 'resourceReward' => 200, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 5, 'title' => 'Construire le Stockage au niveau 3', 'description' => 'Maintenant que ta Raffinerie tourne à plein régime, il faut que tu stockes tes ressources pour les utiliser plus tard. Construis le Stockage depuis le Générateur.', 'experienceReward' => 3, 'creditReward' => 0, 'resourceReward' => 100, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 6, 'title' => 'Construire la Technosphère', 'description' => 'Pour pouvoir assurer l\'expansion de ton empire, il est essentiel de construire la Technosphère. C\'est grâce à elle que tu vas développer des technologies pour débloquer de nouveaux bâtiments, de nouveaux vaisseaux. La Technosphère améliorera ainsi divers aspects du jeu. @@ -152,8 +146,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 3, 'creditReward' => 0, 'resourceReward' => 100, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 7, 'title' => 'Modifier l\'investissement universitaire dans les finances', 'description' => 'Dans Asylamba, tu dois gérer tes crédits. Pour cela tu as un résumé de tes finances dans l\'onglet "finance" qui se trouve en-haut de l\'écran (quatrième icône du deuxième groupe de menus). @@ -166,8 +160,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 3, 'creditReward' => 2500, 'resourceReward' => 0, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 8, 'title' => 'Former un officier', 'description' => 'Sur chaque base orbitale, tu as une école de commandement où tu peux former des commandants. @@ -181,8 +175,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 5, 'creditReward' => 0, 'resourceReward' => 100, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 9, 'title' => 'Construire le Chantier Alpha', 'description' => 'Toujours dans le générateur, construis le Chantier Alpha. Une fois que la construction sera achevée, tu auras accès à ce bâtiment par la barre de navigation rapide. @@ -195,8 +189,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 3, 'creditReward' => 1000, 'resourceReward' => 150, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 10, 'title' => 'Développer la technologie "Châssis simple léger"', 'description' => 'Nous voulons construire un Pégase, malheureusement il nous manque un prérequis : la technologie "Châssis simple léger". @@ -216,8 +210,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 4, 'creditReward' => 0, 'resourceReward' => 3000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 11, 'title' => 'Construire un Chasseur Léger', 'description' => 'Tu peux maintenant aller dans le Chantier Alpha et construire un Pégase. Il s\'agit du plus petit vaisseau disponible. @@ -236,8 +230,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 8, 'creditReward' => 0, 'resourceReward' => 0, - 'shipReward' => array(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 12, 'title' => 'Affecter un officier', 'description' => 'Il faut à présent affecter un officier sur ta base orbitale pour qu\'il la protège. Pour ce faire, tu as deux solutions. Soit aller sur la vue de situation de ta base orbitale et cliquer sur "Affecter un officier" sur l\'une des deux lignes. Ceci te dirigera vers l\'Ecole de commandement. Soit aller directement dans l\'Ecole de commandement. @@ -246,8 +240,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 6, 'creditReward' => 0, 'resourceReward' => 0, - 'shipReward' => array(2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 13, 'title' => 'Constituer une escadrille', 'description' => 'Va dans l\'amirauté, si tu n\'y es pas déjà. Tu verras le commandant que tu as précédemment affecté. Pour le gérer, clique sur la petite flèche qui se trouve à droite de sa case. Des panneaux s\'ouvriront et toutes les informations du commandant s\'afficheront. Glisse vers la droite pour tout voir. @@ -262,8 +256,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 2, 'creditReward' => 200, 'resourceReward' => 0, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 14, 'title' => 'Déplacer une flotte en première ligne', 'description' => 'Dans la vue de situation, deux lignes de défense sont disponibles autour d\'une planète. La première ligne (ligne extérieure) sert de défense lorsqu\'un ennemi attaque ta planète. La deuxième ligne sert de réserve, elle ne défendra pas lors d\'une attaque, par contre elle entrera en jeu lorsqu\'un ennemi tentera de prendre ta planète. @@ -272,8 +266,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 2, 'creditReward' => 40000, 'resourceReward' => 0, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 15, 'title' => 'Espionner une planète', 'description' => 'Maintenant que tu as une flotte à ta disposition, tu peux piller une planète rebelle. Mais avant cela, il est mieux de savoir quelle est la force de la flotte adverse. Pour le savoir, tu peux l\'espionner. @@ -286,8 +280,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 5, 'creditReward' => 10000, 'resourceReward' => 200, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 16, 'title' => 'Attaquer une planète rebelle', 'description' => 'Pour faire ton premier pillage, il faut trouver une planète qui n\'est pas très défendue. Trouve une planète qui a moins de PEV que ta flotte. Un conseil, espionne une planète avec moins de 50 millions d\'habitants, elle aura une petite flotte défensive. @@ -298,8 +292,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 0, - 'shipReward' => array(3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 17, 'title' => 'Poster un message sur le forum de faction', 'description' => 'Le forum de faction est un lieu essentiel dans le développement au sein du jeu. C\'est là que tu peux discuter avec les membres de ta faction sur divers points, que ça soit de stratégie, de commerce, de politique. Il y a même un Biastro ! @@ -310,8 +304,8 @@ public static function getInfo($id, $info) { 'experienceReward' => 10, 'creditReward' => 400, 'resourceReward' => 0, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 18, 'title' => 'Parler d\'Asylamba', 'description' => 'Cette étape un peu symbolique t\'encourage, si tu as aimé ce que tu as vu pour l\'instant, à parler du jeu autour de toi pour que d\'autres personnes susceptibles d\'aimer ce genre de jeu puisse le découvrir. @@ -324,88 +318,88 @@ public static function getInfo($id, $info) { 'experienceReward' => 10, 'creditReward' => 100, 'resourceReward' => 100, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 19, 'title' => 'Construire la Raffinerie au niveau 10', 'description' => 'Une bonne planète est une planète qui produit. Veille a progressivement augmenter le niveau de ta raffinerie de manière à toujours gagner suffisamment de ressources.', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 3000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 20, 'title' => 'Construire le Stockage au niveau 8', 'description' => 'N\'oublie pas de toujours avoir assez d\'espace de stockage pour passer la nuit en toute tranquilité. Lorsque le Stockage est plein, la Raffinerie arrête de produire.', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 2000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 21, 'title' => 'Construire le Chantier Alpha au niveau 6', 'description' => 'En plus de débloquer de nouveaux vaisseaux, augmenter le niveau de ton Chantier Alpha te permettra de disposer de plus grands hangars. Tu pourras alors commander la construction de plus de vaisseaux.', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 0, - 'shipReward' => array(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 22, 'title' => 'Construire la Raffinerie au niveau 16', 'description' => '', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 6000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 23, 'title' => 'Construire le Stockage au niveau 12', 'description' => '', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 4000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 24, 'title' => 'Construire la Technosphère au niveau 6', 'description' => '', 'experienceReward' => 10, 'creditReward' => 2000, 'resourceReward' => 2000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 25, 'title' => 'Développer la technologie "Châssis simple amélioré"', 'description' => '', 'experienceReward' => 10, 'creditReward' => 2000, 'resourceReward' => 2000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 26, 'title' => 'Construire le Chantier Alpha au niveau 15', 'description' => 'Afin de construire le nouveau type de vaisseau que tes ingénieurs de la Technosphère viennent de découvrir, tu dois disposer d\'un Chantier Alpha plus grand. Construis ce dernier au niveau 15.', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 8000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 27, 'title' => 'Construire un Satyre', 'description' => '', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 0, - 'shipReward' => array(0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 28, 'title' => 'Construire la Raffinerie au niveau 20', 'description' => '', 'experienceReward' => 10, 'creditReward' => 0, 'resourceReward' => 8000, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array( + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + [ 'id' => 29, 'title' => 'Parrainer vos amis', 'description' => 'Vous avez la possiblité de parrainer vos amis. Cela consiste à les faire découvrir le jeu. Et s\'ils commencent à jouer, vous serez récompensé. @@ -418,6 +412,6 @@ public static function getInfo($id, $info) { 'experienceReward' => 10, 'creditReward' => 1000, 'resourceReward' => 0, - 'shipReward' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) - ); -} \ No newline at end of file + 'shipReward' => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ], + ]; +} diff --git a/src/Modules/Zeus/Resource/config/config.yml b/src/Modules/Zeus/Resource/config/config.yml new file mode 100644 index 000000000..3cbc1fd81 --- /dev/null +++ b/src/Modules/Zeus/Resource/config/config.yml @@ -0,0 +1,43 @@ +--- +parameters: + zeus.player.base_level: 1250 + zeus.player.base_commander_level: 100 + zeus.player.base_ap: 10 + zeus.player.coeff_ap: 5 + + zeus.player.tax_coeff: 1 + + zeus.player.ally_inactive_time: 168 # 7 days + zeus.player.global_inactive_time: 360 # 15 days + zeus.player.inactive_time_limit: 600 # 25 days + + zeus.player_financial_reports.timeout: 60 #days + +services: + _defaults: + autowire: true + autoconfigure: true + bind: + $gaiaId: '%id_gaia%' + + App\Modules\Zeus\: + resource: '%kernel.project_dir%/src/Modules/Zeus/' + exclude: + - '../../Message' + - '../../Model' + - '../../Resource' + + App\Modules\Zeus\Application\Handler\Bonus\BonusApplierInterface: '@App\Modules\Zeus\Application\Handler\Bonus\BonusApplier' + + App\Modules\Zeus\Infrastructure\ArgumentResolver\CurrentPlayerValueResolver: + tags: + - { name: 'controller.argument_value_resolver', priority: 150 } + + App\Modules\Zeus\Infrastructure\Twig\PlayerExtension: + arguments: + $timeEventUpdate: '%time_event_update%' + $allyInactiveTime: '%zeus.player.ally_inactive_time%' + +when@dev: + services: + App\Modules\Zeus\Application\Handler\Bonus\BonusApplierInterface: '@App\Modules\Zeus\Application\Handler\Bonus\TraceableBonusApplier' diff --git a/src/Modules/Zeus/ZeusModule.php b/src/Modules/Zeus/ZeusModule.php new file mode 100644 index 000000000..5e8f51dd6 --- /dev/null +++ b/src/Modules/Zeus/ZeusModule.php @@ -0,0 +1,13 @@ +diff($to); + + return $diff->h + ($diff->days * 24); + } + + public function getDiff(\DateTimeImmutable $from, \DateTimeImmutable $to): int + { + return $to->getTimestamp() - $from->getTimestamp(); + } + + public function getDurationRemainingTime(DurationInterface $duration): int + { + return $this->getRemainingTime($duration->getEndDate()); + } + + public function getRemainingTime(\DateTimeImmutable $date) + { + return max($date->getTimestamp() - time(), 0); + } + + public function getDurationEnd(\DateTimeImmutable $startedAt, int $seconds): \DateTimeImmutable + { + return \DateTimeImmutable::createFromMutable( + \DateTime::createFromImmutable($startedAt) + ->modify(sprintf('+%d seconds', $seconds)) + ); + } +} diff --git a/src/Shared/Application/SchedulerInterface.php b/src/Shared/Application/SchedulerInterface.php new file mode 100644 index 000000000..8dedf153a --- /dev/null +++ b/src/Shared/Application/SchedulerInterface.php @@ -0,0 +1,8 @@ + */ + public function getTrackingData(): array; +} diff --git a/src/Shared/Domain/Event/TutorialEvent.php b/src/Shared/Domain/Event/TutorialEvent.php new file mode 100644 index 000000000..5f20e8f02 --- /dev/null +++ b/src/Shared/Domain/Event/TutorialEvent.php @@ -0,0 +1,12 @@ + + */ + protected readonly array $specifications; + + public function __construct(Specification ...$specifications) + { + $this->specifications = $specifications; + } + + public function isSatisfiedBy($candidate): bool + { + foreach ($this->specifications as $specification) { + if (!$specification->isSatisfiedBy($candidate)) { + return false; + } + } + + return true; + } + + public function addMatchingCriteria(QueryBuilder $queryBuilder): void + { + foreach ($this->specifications as $specification) { + if ($specification instanceof SelectorSpecification) { + $specification->addMatchingCriteria($queryBuilder); + } + } + } +} diff --git a/src/Shared/Domain/Specification/NotSpecification.php b/src/Shared/Domain/Specification/NotSpecification.php new file mode 100644 index 000000000..258dda3c1 --- /dev/null +++ b/src/Shared/Domain/Specification/NotSpecification.php @@ -0,0 +1,17 @@ +specification->isSatisfiedBy($candidate); + } +} diff --git a/src/Shared/Domain/Specification/OrSpecification.php b/src/Shared/Domain/Specification/OrSpecification.php new file mode 100644 index 000000000..acaa83065 --- /dev/null +++ b/src/Shared/Domain/Specification/OrSpecification.php @@ -0,0 +1,40 @@ + + */ + protected readonly array $specifications; + + public function __construct(Specification ...$specifications) + { + $this->specifications = $specifications; + } + + public function isSatisfiedBy($candidate): bool + { + foreach ($this->specifications as $specification) { + if ($specification->isSatisfiedBy($candidate)) { + return true; + } + } + + return false; + } + + public function addMatchingCriteria(QueryBuilder $queryBuilder): void + { + foreach ($this->specifications as $specification) { + if ($specification instanceof SelectorSpecification) { + $specification->addMatchingCriteria($queryBuilder); + } + } + } +} diff --git a/src/Shared/Domain/Specification/SelectorCompositeSpecification.php b/src/Shared/Domain/Specification/SelectorCompositeSpecification.php new file mode 100644 index 000000000..e01050892 --- /dev/null +++ b/src/Shared/Domain/Specification/SelectorCompositeSpecification.php @@ -0,0 +1,20 @@ +getConstraints([]) as $constraint) { + if ($constraint instanceof SelectorSpecification) { + $constraint->addMatchingCriteria($queryBuilder); + } + } + } +} diff --git a/src/Shared/Domain/Specification/SelectorSpecification.php b/src/Shared/Domain/Specification/SelectorSpecification.php new file mode 100644 index 000000000..789f64f12 --- /dev/null +++ b/src/Shared/Domain/Specification/SelectorSpecification.php @@ -0,0 +1,11 @@ +denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); + + $session = $request->getSession(); + + if (null === ($player = $playerRepository->get($playerId)) || !$player->canAccess()) { + $logger->debug('Player not found or cannot access game'); + + return $this->redirectToRoute('player_choice'); + } + + /** @var User $user */ + $user = $this->getUser(); + if ($player->user->getId() !== $user->getId()) { + throw $this->createAccessDeniedException('This player account does not belong to you'); + } + + $player->statement = Player::ACTIVE; + + $session->set('token', Utils::generateString(5)); + + $this->createSession($session, $player); + + // mise de dLastConnection + dLastActivity + $player->dLastConnection = new \DateTimeImmutable(); + $player->dLastActivity = new \DateTimeImmutable(); + + // confirmation au portail + // TODO Replace when portal is implemented + /*if ('enabled' === $this->getParameter('apimode')) { + $api->confirmConnection($bindKey); + }*/ + $entityManager->flush($player); + + $eventDispatcher->dispatch(new PlayerConnectionEvent($player)); + // redirection vers page de départ + return $this->redirectToRoute('profile', [ + 'mode' => ('splash' === $request->query->get('mode')) + ? 'profil/mode-splash' + : 'profil', + ]); + } + + private function createSession(Session $session, Player $player): void + { + // remplissage des données du joueur + $session->set('playerId', $player->id); + + $playerBases = $this->orbitalBaseRepository->getPlayerBases($player); + // remplissage des bonus + + // création des paramètres utilisateur + $session->set('playerParams', new ArrayList()); + + $session->set('playerInfo', new ArrayList()); + + // remplissage des paramètres utilisateur + $session->get('playerParams')->add('base', $playerBases[0]->id); + + // création des tableaux de données dans le contrôleur + + $session->set('playerEvent', new EventList()); + } +} diff --git a/src/Shared/Infrastructure/Controller/LogoutController.php b/src/Shared/Infrastructure/Controller/LogoutController.php new file mode 100644 index 000000000..609c48aa9 --- /dev/null +++ b/src/Shared/Infrastructure/Controller/LogoutController.php @@ -0,0 +1,14 @@ +query->get('params'); + + if (false !== $params && in_array($params, Params::getParams())) { + $request->cookies->set('p'.$params, $request->cookies->get('p'.$params) ?? Params::$params[$params]); + } + + return $this->redirect($request->headers->get('Referer')); + } +} diff --git a/src/Shared/Infrastructure/DataFixtures/Story/SmallMapStory.php b/src/Shared/Infrastructure/DataFixtures/Story/SmallMapStory.php new file mode 100644 index 000000000..38d14fa7b --- /dev/null +++ b/src/Shared/Infrastructure/DataFixtures/Story/SmallMapStory.php @@ -0,0 +1,31 @@ +mixpanel->register('environment', $environment); + } + + #[AsEventListener(priority: 10)] + public function onPlayerConnection(PlayerConnectionEvent $event): void + { + $player = $event->player; + + $this->mixpanel->people->set($player->id, [ + 'faction_id' => $player->faction->id, + ]); + } + + #[AsEventListener(NewBuildingQueueEvent::class)] + #[AsEventListener(NewShipQueueEvent::class)] + #[AsEventListener(NewTechnologyQueueEvent::class)] + #[AsEventListener(NewCommanderEvent::class)] + #[AsEventListener(LootEvent::class)] + #[AsEventListener(PlayerConnectionEvent::class)] + #[AsEventListener(SpyEvent::class)] + public function onTrackingEvent(TrackingEvent $event): void + { + $this->mixpanel->identify($event->getTrackingPeopleId()); + + $this->mixpanel->track($event->getTrackingEventName(), $event->getTrackingData()); + } +} diff --git a/src/Shared/Infrastructure/EventSubscriber/TwigEventSubscriber.php b/src/Shared/Infrastructure/EventSubscriber/TwigEventSubscriber.php new file mode 100644 index 000000000..ec914934d --- /dev/null +++ b/src/Shared/Infrastructure/EventSubscriber/TwigEventSubscriber.php @@ -0,0 +1,79 @@ + [ + ['setCurrentPlayer'], + ['setCurrentBase'], + ], + ]; + } + + public function setCurrentBase(): void + { + if (!$this->currentPlayerRegistry->has()) { + return; + } + + $player = $this->currentPlayerRegistry->get(); + $currentBase = $this->currentPlayerBasesRegistry->current(); + + $this->twig->addGlobal('current_base', $currentBase); + $this->twig->addGlobal('current_player_bases', $this->currentPlayerBasesRegistry->all()); + $this->twig->addGlobal('first_base', $this->currentPlayerBasesRegistry->first()); + $this->twig->addGlobal('next_base', $this->currentPlayerBasesRegistry->next()); + $this->twig->addGlobal('incoming_commanders', $this->commanderRepository->getIncomingAttacks($player)); + $this->twig->addGlobal('outgoing_commanders', $this->commanderRepository->getOutcomingAttacks($player)); + $this->twig->addGlobal('current_building_queues', $this->buildingQueueRepository->getBaseQueues($currentBase)); + $this->twig->addGlobal('current_technology_queues', $this->technologyQueueRepository->getPlaceQueues($currentBase->place)); + $this->twig->addGlobal('current_dock1_ship_queues', $this->shipQueueRepository->getByBaseAndDockType($currentBase, 1)); + $this->twig->addGlobal('current_dock2_ship_queues', $this->shipQueueRepository->getByBaseAndDockType($currentBase, 2)); + } + + public function setCurrentPlayer(): void + { + if (!$this->currentPlayerRegistry->has()) { + return; + } + $currentPlayer = $this->currentPlayerRegistry->get(); + + $this->twig->addGlobal('current_player', $currentPlayer); + $this->twig->addGlobal('current_player_faction_id', $currentPlayer->faction->identifier); + $this->twig->addGlobal('conversations_count', $this->conversationRepository->countPlayerUnreadConversations($currentPlayer)); + $this->twig->addGlobal('current_player_notifications', $this->notificationRepository->getUnreadNotifications($currentPlayer, 15)); + $this->twig->addGlobal('current_player_notifications_count', $this->notificationRepository->countUnreadNotifications($currentPlayer)); + } +} diff --git a/src/Shared/Infrastructure/Log/DatadogLogProcessor.php b/src/Shared/Infrastructure/Log/DatadogLogProcessor.php new file mode 100644 index 000000000..a53757f9c --- /dev/null +++ b/src/Shared/Infrastructure/Log/DatadogLogProcessor.php @@ -0,0 +1,68 @@ +requestStack->getMainRequest()) { + $this->requestId = substr(uniqid(), -8); + $this->requestParams = $this->cleanInput($request->request->all()); + $this->queryParams = $this->cleanInput($request->query->all()); + } + $this->serverData = [ + 'http.url' => (@$_SERVER['HTTP_HOST']).'/'.(@$_SERVER['REQUEST_URI']), + 'http.method' => @$_SERVER['REQUEST_METHOD'], + 'http.useragent' => @$_SERVER['HTTP_USER_AGENT'], + 'http.referer' => @$_SERVER['HTTP_REFERER'], + 'http.x_forwarded_for' => @$_SERVER['HTTP_X_FORWARDED_FOR'], + ]; + } + + public function __invoke(LogRecord $record): LogRecord + { + $record->extra['http.request_id'] = $this->requestId; + $record->extra['http.session_id'] = $this->requestStack->getMainRequest()?->hasPreviousSession() + ? $this->requestStack->getMainRequest()->getSession()->getId() + : 'Unknown'; + $record->extra['http.url'] = $this->serverData['http.url']; + $record->extra['http.method'] = $this->serverData['http.method']; + $record->extra['http.useragent'] = $this->serverData['http.useragent']; + $record->extra['http.referer'] = $this->serverData['http.referer']; + $record->extra['http.x_forwarded_for'] = $this->serverData['http.x_forwarded_for']; + $record->extra['http.query_params'] = $this->queryParams; + $record->extra['http.request_params'] = $this->requestParams; + + return $record; + } + + private function cleanInput($array): array + { + $toReturn = []; + foreach (array_keys($array) as $key) { + $hasPrivateParam = false; + foreach (self::PRIVATE_PARAMS as $privateParam) { + $hasPrivateParam |= str_contains($key, $privateParam); + } + if (!$hasPrivateParam) { + $toReturn[$key] = $array[$key]; + } + } + + return $toReturn; + } +} diff --git a/src/Shared/Infrastructure/Twig/FormatterExtension.php b/src/Shared/Infrastructure/Twig/FormatterExtension.php new file mode 100644 index 000000000..3551c11c0 --- /dev/null +++ b/src/Shared/Infrastructure/Twig/FormatterExtension.php @@ -0,0 +1,48 @@ + $this->parser->parse($content)), + new TwigFilter('number', fn (int|float|null $number, int $decimals = 0) => Format::numberFormat($number ?? 0, $decimals)), + new TwigFilter('ranking', fn (int|float $number) => Format::rankingFormat($number)), + new TwigFilter('ordinal_number', fn (int|float $number) => Format::ordinalNumber($number)), + new TwigFilter('plural', fn (int|float $number) => Format::plural($number)), + new TwigFilter('percent', fn (int|float $number, int|float $base) => Format::percent($number, $base)), + new TwigFilter('lite_seconds', fn (int $seconds) => Chronos::secondToFormat($seconds, 'lite')), + new TwigFilter('large_seconds', fn (int $seconds) => Chronos::secondToFormat($seconds, 'large')), + new TwigFilter('short_seconds', fn (int $seconds) => Chronos::secondToFormat($seconds, 'short')), + new TwigFilter('game_date', fn (string|\DateTimeImmutable $date, bool $returnHtml = true) => $this->gameTimeConverter->convertDatetimeToGameDate($date, $returnHtml)), + new TwigFilter('unserialize', fn (string $data) => \unserialize($data)), + ]; + } + + #[\Override] + public function getFunctions(): array + { + return [ + new TwigFunction('get_parser_toolbar', fn () => $this->parser->getToolbar()), + new TwigFunction('get_game_timer', fn (string $type) => Chronos::getTimer($type)), + new TwigFunction('get_game_date', fn (string $type) => Chronos::getDate($type)), + ]; + } +} diff --git a/src/Shared/Infrastructure/Twig/JavascriptExtension.php b/src/Shared/Infrastructure/Twig/JavascriptExtension.php new file mode 100644 index 000000000..1289325d0 --- /dev/null +++ b/src/Shared/Infrastructure/Twig/JavascriptExtension.php @@ -0,0 +1,45 @@ + $this->requestStack->getCurrentRequest()->getSchemeAndHttpHost()), + new TwigFunction('get_ship_names', fn () => $this->getShipNames()), + new TwigFunction('get_ship_pevs', fn () => $this->getShipPevs()), + ]; + } + + protected function getShipNames(): array + { + $shipsName = []; + for ($i = 0; $i < 12; ++$i) { + $shipsName[] = "'".ShipResource::getInfo($i, 'codeName')."'"; + } + + return $shipsName; + } + + protected function getShipPevs(): array + { + $shipsPev = []; + for ($i = 0; $i < 12; ++$i) { + $shipsPev[] = ShipResource::getInfo($i, 'pev'); + } + + return $shipsPev; + } +} diff --git a/src/Shared/Infrastructure/Twig/QueueableExtension.php b/src/Shared/Infrastructure/Twig/QueueableExtension.php new file mode 100644 index 000000000..f8e6eedbb --- /dev/null +++ b/src/Shared/Infrastructure/Twig/QueueableExtension.php @@ -0,0 +1,103 @@ + $this->technologyHelper->getInfo($technology, $info, $level)), + ]; + } + + #[\Override] + public function getFilters(): array + { + return [ + // @TODO migrate to a technology twig extension + new TwigFilter('is_unblocking_technology', fn (TechnologyQueue $technologyQueue) => (!$this->technologyHelper->isAnUnblockingTechnology($technologyQueue->technology))), + new TwigFilter('queue_duration', fn (QueueableInterface $queue) => $this->durationHandler->getDurationRemainingTime($queue)), + new TwigFilter('queue_picture', fn (QueueableInterface $queue) => $this->getQueueHelper($queue)->getInfo($queue->getResourceIdentifier(), 'imageLink')), + new TwigFilter('queue_name', fn (QueueableInterface $queue) => $this->getQueueHelper($queue)->getInfo($queue->getResourceIdentifier(), $this->getQueueNameKey($queue))), + new TwigFilter('base_max_technology_queues', fn (OrbitalBase $orbitalBase) => $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::TECHNOSPHERE, + 'level', + $orbitalBase->levelTechnosphere, + 'nbQueues' + )), + new TwigFilter('technology_queue_time', fn (TechnologyQueue $technologyQueue) => $this->technologyHelper->getInfo( + $technologyQueue->technology, + 'time', + $technologyQueue->targetLevel + )), + new TwigFilter('base_max_dock1_ship_queues', fn (OrbitalBase $orbitalBase) => $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::DOCK1, + 'level', + $orbitalBase->levelDock1, + 'nbQueues' + )), + new TwigFilter('base_max_dock2_ship_queues', fn (OrbitalBase $orbitalBase) => $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::DOCK2, + 'level', + $orbitalBase->levelDock2, + 'nbQueues' + )), + new TwigFilter('ship_queue_time', fn (ShipQueue $shipQueue) => $shipQueue->quantity * ShipResource::getInfo($shipQueue->shipNumber, 'time')), + new TwigFilter('ship_queue_picture', fn (ShipQueue $shipQueue) => ShipResource::getInfo($shipQueue->shipNumber, 'picto')), + new TwigFilter('ship_queue_name', fn (ShipQueue $shipQueue) => ShipResource::getInfo($shipQueue->shipNumber, 'codeName')), + new TwigFilter('base_max_building_queues', fn (OrbitalBase $orbitalBase) => $this->orbitalBaseHelper->getBuildingInfo( + OrbitalBaseResource::GENERATOR, + 'level', + $orbitalBase->levelGenerator, + 'nbQueues', + )), + // @TODO check why building helper needs the sup level + new TwigFilter('building_queue_time', fn (BuildingQueue $buildingQueue) => $this->orbitalBaseHelper->getBuildingInfo( + $buildingQueue->buildingNumber, + 'level', + $buildingQueue->targetLevel, + 'time', + )), + ]; + } + + protected function getQueueHelper(QueueableInterface $queueable): OrbitalBaseHelper|TechnologyHelper + { + return match ($queueable::class) { + BuildingQueue::class => $this->orbitalBaseHelper, + TechnologyQueue::class => $this->technologyHelper, + }; + } + + protected function getQueueNameKey(QueueableInterface $queueable): string + { + return match ($queueable::class) { + BuildingQueue::class => 'frenchName', + TechnologyQueue::class => 'name', + }; + } +} diff --git a/src/Shared/Infrastructure/Twig/TravellerExtension.php b/src/Shared/Infrastructure/Twig/TravellerExtension.php new file mode 100644 index 000000000..42bb35bbd --- /dev/null +++ b/src/Shared/Infrastructure/Twig/TravellerExtension.php @@ -0,0 +1,39 @@ + $this->durationHandler->getDiff( + $reversed ? $traveller->getArrivalDate() : $traveller->getDepartureDate(), + new \DateTimeImmutable(), + ), + ), + new TwigFilter('travel_remaining_time', fn (TravellerInterface $traveller) => $this->durationHandler->getDiff( + new \DateTimeImmutable(), + $traveller->getArrivalDate(), + )), + new TwigFilter('travel_total_time', fn (TravellerInterface $traveller) => $this->durationHandler->getDiff( + $traveller->getDepartureDate(), + $traveller->getArrivalDate(), + )), + ]; + } +} diff --git a/src/action/ajax/common/switchParams.php b/src/action/ajax/common/switchParams.php new file mode 100644 index 000000000..f0ec0b1d0 --- /dev/null +++ b/src/action/ajax/common/switchParams.php @@ -0,0 +1,13 @@ +getContainer()->get('app.request'); + +$params = $request->query->get('params'); + +if (false !== $params) { + if (in_array($params, Params::getParams())) { + $request->cookies->add('p'.$params, !$request->cookies->get('p'.$params, $params), true); + } +} diff --git a/src/action/ajax/main.php b/src/action/ajax/main.php new file mode 100755 index 000000000..258d8d19e --- /dev/null +++ b/src/action/ajax/main.php @@ -0,0 +1,30 @@ +getContainer(); +$ajaxPath = $container->getParameter('ajax'); +$pagesPath = $container->getParameter('pages'); + +match ($this->getContainer()->get('app.request')->query->get('a')) { + 'switchparams' => include $ajaxPath.'common/switchParams.php', + 'readnotif' => include $ajaxPath.'hermes/notification/read.php', + 'archivenotif' => include $ajaxPath.'hermes/notification/archive.php', + 'deletenotif' => include $ajaxPath.'hermes/notification/delete.php', + 'assignship' => include $ajaxPath.'ares/ship/assign.php', + 'updatesquadron' => include $ajaxPath.'ares/squadron/update.php', + 'increaseinvestuni' => include $ajaxPath.'zeus/university/increaseInvest.php', + 'decreaseinvestuni' => include $ajaxPath.'zeus/university/decreaseInvest.php', + 'autocompleteplayer' => include $ajaxPath.'autocomplete/player.php', + 'autocompleteorbitalbase' => include $ajaxPath.'autocomplete/orbitalBase.php', + 'loadsystem' => include $pagesPath.'ajax/loadSystem.php', + 'buildingpanel' => include $pagesPath.'ajax/buildingPanel.php', + 'shippanel' => include $pagesPath.'ajax/shipPanel.php', + 'technopanel' => include $pagesPath.'ajax/technoPanel.php', + 'moremessage' => include $pagesPath.'ajax/conversation/message.php', + 'moreconversation' => include $pagesPath.'ajax/conversation/conversation.php', + 'morerank' => include $pagesPath.'ajax/morerank.php', + 'wswpy' => include $pagesPath.'ajax/wsw/player.php', + 'wswpl' => include $pagesPath.'ajax/wsw/place.php', + default => throw new ErrorException('action inconnue ou non-référencée'), +}; diff --git a/src/action/std/common/discordRequest.php b/src/action/std/common/discordRequest.php new file mode 100644 index 000000000..6b70a15e1 --- /dev/null +++ b/src/action/std/common/discordRequest.php @@ -0,0 +1,55 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); + +$discordId = $request->request->get('discord-id'); + +if (false !== $discordId and '' !== $discordId) { + $chickenBot = 'http://chickenbot.cloudapp.net:8080/register'; + + $data = ['discordId' => $discordId, 'server' => 's'.$this->getContainer()->getParameter('server_id'), 'username' => $session->get('playerInfo')->get('name'), 'factionColor' => $session->get('playerInfo')->get('color')]; + $data_string = json_encode($data); + $ch = curl_init($chickenBot); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt( + $ch, + CURLOPT_HTTPHEADER, + ['Content-Type: application/json', 'Content-Length: '.strlen($data_string)] + ); + $answer = curl_exec($ch); + $json = json_decode($answer, true); + curl_close($ch); + + if (false !== $answer) { + // $rep = unserialize($answer); + switch ($answer) { + case 'user register correctly': + $session->addFlashbag('Vos droits ont été ajoutés sur Discord. Rendez-vous là-bas.', Flashbag::TYPE_SUCCESS); + break; + case 'user register correctly (update Status)': + $session->addFlashbag('Vos droits ont été mis à jour sur Discord. Rendez-vous là-bas.', Flashbag::TYPE_SUCCESS); + break; + case 'Wrong factionColor': + throw new ErrorException('Vous êtes dans une faction inexistance, cela doit être une erreur, contactez un administrateur'); + case 'disord user already register': + throw new ErrorException('Vous avez déjà vos droits sur Discord, le faire une seconde fois ne sert à rien. S\'il s\'agit d\'une erreur, contactez un administrateur.'); + case 'userID not found in Aslymaba 2.0 server': + throw new ErrorException('Cet identifiant n\'existe pas. Créez un compte sur Discord et entrez votre identifiant dans le champ'); + default: + throw new ErrorException('Erreur, contactez un administrateur'); + } + // throw new ErrorException('message de retour : ' . $answer, ALERT_STD_SUCCESS); + } else { + throw new ErrorException('Le Chicken Bot ne répond pas. Ré-essayez plus tard et/ou contactez un admin.'); + } +} else { + throw new FormException('il faut entrer votre identifiant Discord dans le champ de texte'); +} diff --git a/src/action/std/common/sendSponsorshipEmail.php b/src/action/std/common/sendSponsorshipEmail.php new file mode 100644 index 000000000..da2519773 --- /dev/null +++ b/src/action/std/common/sendSponsorshipEmail.php @@ -0,0 +1,21 @@ +getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$request = $this->getContainer()->get('app.request'); + +$email = $request->request->get('email'); + +$sponsorLink = $this->getContainer()->getParameter('getout_root').'action/a-invitation/i-'.$session->get('playerId').'/s-'.$this->getContainer()->getParameter('server_id'); + +// sending email API call +$ok = $this->getContainer()->get('api')->sendMail2($email, $this->getContainer()->getParameter('server_id'), API::TEMPLATE_SPONSORSHIP, $session->get('playerId')); + +if ($ok) { + $session->addFlashbag('Un e-mail va être envoyé dans quelques minutes à '.$email, Flashbag::TYPE_SUCCESS); +} else { + throw new ErrorException('L\'e-mail n\'a pas pu être envoyé, veuillez ré-essayer. Si cela persiste, contactez un administrateur.'); +} diff --git a/src/action/std/common/switchParams.php b/src/action/std/common/switchParams.php new file mode 100755 index 000000000..260ee1c70 --- /dev/null +++ b/src/action/std/common/switchParams.php @@ -0,0 +1,16 @@ +getContainer()->get('app.request'); +$params = $request->query->get('params'); + +if (false !== $params) { + if (in_array($params, Params::getParams())) { + if ($request->cookies->get('p'.$params, $params)) { + $request->cookies->add('p'.$params, false, true); + } else { + $request->cookies->add('p'.$params, true, true); + } + } +} diff --git a/src/action/std/demeter/donate.php b/src/action/std/demeter/donate.php new file mode 100755 index 000000000..c7eba40a5 --- /dev/null +++ b/src/action/std/demeter/donate.php @@ -0,0 +1,27 @@ +getContainer()->get(\App\Modules\Demeter\Manager\ColorManager::class); +$playerManager = $this->getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$request = $this->getContainer()->get('app.request'); + +// credit +$credit = $request->request->get('credit'); + +if ($credit) { + $player = $playerManager->get($session->get('playerId')); + + $credit = ($credit > $player->credit) ? $player->credit : $credit; + $playerManager->decreaseCredit($player, $credit); + $colorManager->get($session->get('playerInfo')->get('color'))->credits += $credit; + + $this->getContainer()->get(\App\Classes\Entity\EntityManager::class)->flush(); + + $session->addFlashbag('Vous venez de remplir les caisse de votre faction de '.$credit.' crédit'.Format::addPlural($credit).' :)', Flashbag::TYPE_SUCCESS); +} else { + throw new FormException('Manque d\'information.'); +} diff --git a/src/action/std/demeter/message/edit.php b/src/action/std/demeter/message/edit.php new file mode 100755 index 000000000..1cb8a2ba7 --- /dev/null +++ b/src/action/std/demeter/message/edit.php @@ -0,0 +1,47 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); +$forumMessageManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumMessageManager::class); + +$content = $request->request->get('content'); +$id = $request->query->get('id'); + +if ($content && $id) { + $_FMM = $forumMessageManager->getCurrentSession(); + $forumMessageManager->newSession(); + $forumMessageManager->load(['id' => $id]); + + if ($forumMessageManager->size() > 0) { + $m = $forumMessageManager->get(); + + $_TOM = $topicManager->getCurrentSession(); + $topicManager->newSession(); + $topicManager->load(['id' => $m->rTopic]); + + $t = $topicManager->get(); + + if ($session->get('playerId') == $m->rPlayer || ($session->get('playerInfo')->get('status') > 2 && 20 != $t->rForum)) { + $forumMessageManager->edit($m, $content); + $m->dLastModification = Utils::now(); + + $session->addFlashbag('Message édité.', Flashbag::TYPE_SUCCESS); + } else { + throw new ErrorException('Vous ne pouvez pas éditer ce message.'); + } + + $topicManager->changeSession($_TOM); + } else { + throw new ErrorException('Le message n\'existe pas.'); + } + + $forumMessageManager->changeSession($_FMM); +} else { + throw new FormException('Manque d\'information.'); +} diff --git a/src/action/std/demeter/message/write.php b/src/action/std/demeter/message/write.php new file mode 100755 index 000000000..08cdf784f --- /dev/null +++ b/src/action/std/demeter/message/write.php @@ -0,0 +1,73 @@ +getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$database = $this->getContainer()->get(\App\Classes\Database\Database::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); +$forumMessageManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumMessageManager::class); +$tutorialHelper = $this->getContainer()->get(\App\Modules\Zeus\Helper\TutorialHelper::class); + +$content = $request->request->get('content'); +$rTopic = $request->query->get('rtopic'); + +if ($rTopic and $content) { + $S_TOM_1 = $topicManager->getCurrentSession(); + $topicManager->load(['id' => $rTopic]); + + if (1 == $topicManager->size()) { + if (!$topicManager->get()->isClosed) { + $message = new ForumMessage(); + $message->rPlayer = $session->get('playerId'); + $message->rTopic = $rTopic; + $message->dCreation = Utils::now(); + $message->dLastMessage = Utils::now(); + + $forumMessageManager->edit($message, $content); + + $forumMessageManager->add($message); + + $topicManager->get()->dLastMessage = Utils::now(); + + // tutorial + if (false == $session->get('playerInfo')->get('stepDone') && + TutorialResource::FACTION_FORUM === $session->get('playerInfo')->get('stepTutorial')) { + $tutorialHelper->setStepDone(); + } + + if (30 != $topicManager->get()->rForum) { + $response->redirect('faction/view-forum/forum-'.$topicManager->get()->rForum.'/topic-'.$rTopic.'/sftr-2'); + } + + if (true === $this->getContainer()->getParameter('data_analysis')) { + $qr = $database->prepare( + 'INSERT INTO + DA_SocialRelation(`from`, type, message, dAction) + VALUES(?, ?, ?, ?)' + ); + $qr->execute([$session->get('playerId'), 1, $content, Utils::now()]); + } + + $session->addFlashbag('Message créé.', Flashbag::TYPE_SUCCESS); + } else { + throw new ErrorException('Ce sujet est fermé.'); + } + } else { + throw new ErrorException('Le topic n\'existe pas.'); + } + + $topicManager->changeSession($S_TOM_1); +} else { + throw new FormException('Manque d\'information.'); +} diff --git a/src/action/std/demeter/topic/archive.php b/src/action/std/demeter/topic/archive.php new file mode 100755 index 000000000..fbfb07661 --- /dev/null +++ b/src/action/std/demeter/topic/archive.php @@ -0,0 +1,37 @@ +getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); + +$id = $request->query->get('id'); + +if (false !== $id) { + $S_TOM = $topicManager->getCurrentSession(); + $topicManager->newSession(); + $topicManager->load(['id' => $id]); + + if (1 == $topicManager->size()) { + if ($session->get('playerInfo')->get('status') > 2) { + if (1 == $topicManager->get()->isArchived) { + $topicManager->get()->isArchived = 0; + } else { + $topicManager->get()->isArchived = 1; + } + $response->redirect('faction/view-forum/forum-'.$topicManager->get()->rForum); + $session->addFlashbag('Le sujet a bien été archivé/désarchivé', Flashbag::TYPE_SUCCESS); + } else { + throw new FormException('Vous n\'avez pas les droits'); + } + } else { + throw new FormException('Ce sujet n\'existe pas'); + } + + $topicManager->changeSession($S_TOM); +} else { + throw new FormException('Manque d\'information'); +} diff --git a/src/action/std/demeter/topic/close.php b/src/action/std/demeter/topic/close.php new file mode 100755 index 000000000..79e969d8c --- /dev/null +++ b/src/action/std/demeter/topic/close.php @@ -0,0 +1,36 @@ +getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); + +$id = $request->query->get('id'); + +if (false !== $id) { + $S_TOM = $topicManager->getCurrentSession(); + $topicManager->newSession(); + $topicManager->load(['id' => $id]); + + if (1 == $topicManager->size()) { + if ($session->get('playerInfo')->get('status') > 2) { + if (1 == $topicManager->get()->isClosed) { + $topicManager->get()->isClosed = 0; + } else { + $topicManager->get()->isClosed = 1; + } + $session->addFlashbag('Le sujet a bien été fermé/ouvert', Flashbag::TYPE_SUCCESS); + } else { + throw new FormException('Vous n\'avez pas les droits'); + } + } else { + throw new FormException('Ce sujet n\'existe pas'); + } + + $topicManager->changeSession($S_TOM); +} else { + throw new FormException('Manque d\'information'); +} diff --git a/src/action/std/demeter/topic/createTopic.php b/src/action/std/demeter/topic/createTopic.php new file mode 100755 index 000000000..c5634e463 --- /dev/null +++ b/src/action/std/demeter/topic/createTopic.php @@ -0,0 +1,65 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$database = $this->getContainer()->get(\App\Classes\Database\Database::class); +$tutorialHelper = $this->getContainer()->get(\App\Modules\Zeus\Helper\TutorialHelper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); +$forumMessageManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumMessageManager::class); + +$title = $request->request->get('title'); +$content = $request->request->get('content'); +$rForum = $request->query->get('rforum'); + +if (false !== $title and false !== $content and false !== $rForum) { + $topic = new ForumTopic(); + $topic->title = $title; + $topic->rForum = $rForum; + $topic->rPlayer = $session->get('playerId'); + $topic->rColor = $session->get('playerInfo')->get('color'); + $topic->dCreation = Utils::now(); + $topic->dLastMessage = Utils::now(); + + $rTopic = $topicManager->add($topic); + + $message = new ForumMessage(); + $message->rPlayer = $session->get('playerId'); + $message->rTopic = $rTopic; + $forumMessageManager->edit($message, $content); + $message->dCreation = Utils::now(); + $message->dLastMessage = Utils::now(); + + $forumMessageManager->add($message); + + // tutorial + if (false == $session->get('playerInfo')->get('stepDone') && + TutorialResource::FACTION_FORUM === $session->get('playerInfo')->get('stepTutorial')) { + $tutorialHelper->setStepDone(); + } + + if (true === $this->getContainer()->getParameter('data_analysis')) { + $qr = $database->prepare( + 'INSERT INTO + DA_SocialRelation(`from`, type, message, dAction) + VALUES(?, ?, ?, ?)' + ); + $qr->execute([$session->get('playerId'), 1, $content, Utils::now()]); + } + + $response->redirect('faction/view-forum/forum-'.$topic->rForum.'/topic-'.$topic->id.'/sftr-2'); + $session->addFlashbag('Topic créé.', Flashbag::TYPE_SUCCESS); +} else { + throw new FormException('Manque d\information.'); +} diff --git a/src/action/std/demeter/topic/move.php b/src/action/std/demeter/topic/move.php new file mode 100755 index 000000000..fa707af89 --- /dev/null +++ b/src/action/std/demeter/topic/move.php @@ -0,0 +1,48 @@ +getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); + +$rForum = $request->request->get('rforum'); +$id = $request->query->get('id'); + +if (false !== $rForum && false !== $id) { + $_TOM = $topicManager->getCurrentSession(); + $topicManager->newSession(); + $topicManager->load(['id' => $id]); + + if ($topicManager->size() > 0) { + if ($session->get('playerInfo')->get('status') > 2) { + $isOk = false; + + for ($i = 1; $i < ForumResources::size() + 1; ++$i) { + if (ForumResources::getInfo($i, 'id') == $rForum) { + $isOk = true; + break; + } + } + + if ($isOk) { + $topicManager->get()->rForum = $rForum; + $topicManager->get()->dLastModification = Utils::now(); + + $response->redirect('faction/view-forum/forum-'.$rForum.'/topic-'.$topicManager->get()->id); + } else { + throw new FormException('Le forum de destination n\'existe pas'); + } + } else { + throw new FormException('Vous n\'avez pas les droits pour cette opération'); + } + } else { + throw new FormException('Ce sujet n\'existe pas'); + } + $topicManager->changeSession($_TOM); +} else { + throw new FormException('Manque d\'information'); +} diff --git a/src/action/std/demeter/topic/up.php b/src/action/std/demeter/topic/up.php new file mode 100755 index 000000000..ebf8c19bc --- /dev/null +++ b/src/action/std/demeter/topic/up.php @@ -0,0 +1,37 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$topicManager = $this->getContainer()->get(\App\Modules\Demeter\Manager\Forum\ForumTopicManager::class); + +$id = $request->query->get('id'); + +if (false !== $id) { + $_TOM = $topicManager->getCurrentsession(); + $topicManager->newSession(); + $topicManager->load(['id' => $id]); + + if (1 == $topicManager->size()) { + if (in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER])) { + $topic = $topicManager->get(); + + if ($topic->isUp) { + $topic->isUp = false; + } else { + $topic->isUp = true; + } + } else { + throw new ErrorException('Vous ne disposez pas des droits nécessaires pour cette action.'); + } + } else { + throw new ErrorException('Le sujet demandé n\'existe pas.'); + } + + $this->getContainer()->get('app.response')->redirect('faction/view-forum/forum-'.$topicManager->get()->rForum.'/topic-'.$topicManager->get()->id.'/sftr-2'); + $topicManager->changeSession($_TOM); +} else { + throw new ErrorException('Manque d\'information.'); +} diff --git a/src/action/std/hermes/conversation/addUser.php b/src/action/std/hermes/conversation/addUser.php new file mode 100644 index 000000000..38d44720e --- /dev/null +++ b/src/action/std/hermes/conversation/addUser.php @@ -0,0 +1,94 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); +$conversationUserManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationUserManager::class); +$playerManager = $this->getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); + +$conversation = $request->query->get('conversation'); +$recipients = $request->request->get('recipients'); + +if (false !== $recipients and false !== $conversation) { + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load([ + 'c.id' => $conversation, + 'cu.rPlayer' => $session->get('playerId'), + 'cu.playerStatement' => ConversationUser::US_ADMIN, + ]); + + if (1 == $conversationManager->size()) { + $conv = $conversationManager->get(); + $players = $conv->players; + + $playersId = []; + foreach ($players as $player) { + $playersId[] = $player->rPlayer; + } + + // traitement des utilisateurs multiples + $recipients = explode(',', (string) $recipients); + $recipients = array_filter($recipients, fn($e) => $e == $session->get('playerId') ? false : true); + $recipients[] = 0; + + if ((count($recipients) + count($players)) <= ConversationUser::MAX_USERS) { + // chargement des utilisateurs + $newPlayers = $playerManager->getByIdsAndStatements($recipients, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); + if (count($newPlayers) >= 1) { + // création de la date précédente + $readingDate = date('Y-m-d H:i:s', (strtotime(Utils::now()) - 20)); + + // créer la liste des users + foreach ($newPlayers as $newPlayer) { + if (!in_array($newPlayer->id, $playersId)) { + $user = new ConversationUser(); + + $user->rConversation = $conv->id; + $user->rPlayer = $newPlayer->id; + $user->convPlayerStatement = ConversationUser::US_STANDARD; + $user->convStatement = ConversationUser::CS_DISPLAY; + $user->dLastView = $readingDate; + + $conversationUserManager->add($user); + + // création du message système + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $newPlayer->id; + $message->type = ConversationMessage::TY_SYSTEM; + $message->content = $newPlayer->name.' est entré dans la conversation'; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + + // mise à jour de la conversation + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + } + } + + $session->addFlashbag('Le joueur a été ajouté.', Flashbag::TYPE_SUCCESS); + } else { + throw new ErrorException('Le joueur n\'est pas joignable.'); + } + } else { + throw new ErrorException('Nombre maximum de joueur atteint.'); + } + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + $conversationManager->changeSession($S_CVM); +} else { + throw new ErrorException('Informations manquantes pour ajouter un joueur à la conversation.'); +} diff --git a/src/action/std/hermes/conversation/leave.php b/src/action/std/hermes/conversation/leave.php new file mode 100644 index 000000000..eae7e7cb2 --- /dev/null +++ b/src/action/std/hermes/conversation/leave.php @@ -0,0 +1,87 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationUserManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationUserManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); + +$conversation = $request->query->get('conversation'); + +if (false !== $conversation) { + // vérifier que c'est l'utilisateur courant + + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + ['c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')] + ); + + if (1 == $conversationManager->size()) { + // vérifier qu'il y a plus de 2 personnes + + $conv = $conversationManager->get(); + + if (Conversation::TY_SYSTEM != $conv->type) { + $players = $conv->players; + + if (count($players) > 2) { + $admin = 0; + $playerConv = null; + + foreach ($players as $player) { + if ($player->rPlayer == $session->get('playerId')) { + $playerConv = $player; + } elseif (ConversationUser::US_ADMIN == $player->convPlayerStatement) { + ++$admin; + } + } + + // vérifier qu'il y a encore un admin + if ($admin < 1) { + foreach ($players as $player) { + if ($player->rPlayer != $session->get('playerId')) { + $player->convPlayerStatement = ConversationUser::US_ADMIN; + break; + } + } + } + + // mise à jour de la conversation + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + + // création du message système + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $playerConv->rPlayer; + $message->type = ConversationMessage::TY_SYSTEM; + $message->content = $playerConv->playerName.' a quitté la conversation'; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + + // suppresion de l'utilisateur + $conversationUserManager->deleteById($playerConv->id); + + $this->getContainer()->get('app.response')->redirect('message'); + } else { + throw new ErrorException('Impossible de quitter une conversation entre deux personnes.'); + } + } + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); +} else { + throw new ErrorException('Informations manquantes pour quitter la conversation.'); +} diff --git a/src/action/std/hermes/conversation/start.php b/src/action/std/hermes/conversation/start.php new file mode 100644 index 000000000..e2a2780aa --- /dev/null +++ b/src/action/std/hermes/conversation/start.php @@ -0,0 +1,110 @@ +getContainer()->get(\App\Classes\Database\Database::class); +$playerManager = $this->getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationUserManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationUserManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); +$response = $this->getContainer()->get('app.response'); +$request = $this->getContainer()->get('app.request'); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); + +$recipients = $request->request->get('recipients'); +$content = $request->request->get('content'); + +$content = $parser->parse($content); + +if (!empty($recipients) && !empty($content)) { + if (strlen((string) $content) < 10000) { + // traitement des utilisateurs multiples + $recipients = explode(',', (string) $recipients); + $plId = $session->get('playerId'); + $recipients = array_filter($recipients, fn($e) => $e == $plId ? false : true); + $recipients[] = 0; + + if (count($recipients) <= ConversationUser::MAX_USERS) { + // chargement des utilisateurs + $players = $playerManager->getByIdsAndStatements($recipients, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); + + if (count($players) >= 1) { + // création de la date précédente + $readingDate = date('Y-m-d H:i:s', (strtotime(Utils::now()) - 20)); + + // créer la conversation + $conv = new Conversation(); + + $conv->messages = 1; + $conv->type = Conversation::TY_USER; + $conv->dCreation = Utils::now(); + $conv->dLastMessage = Utils::now(); + + $conversationManager->add($conv); + + // créer le user créateur de la conversation + $user = new ConversationUser(); + + $user->rConversation = $conv->id; + $user->rPlayer = $session->get('playerId'); + $user->convPlayerStatement = ConversationUser::US_ADMIN; + $user->convStatement = ConversationUser::CS_DISPLAY; + $user->dLastView = Utils::now(); + + $conversationUserManager->add($user); + + // créer la liste des users + foreach ($players as $player) { + $user = new ConversationUser(); + + $user->rConversation = $conv->id; + $user->rPlayer = $player->id; + $user->convPlayerStatement = ConversationUser::US_STANDARD; + $user->convStatement = ConversationUser::CS_DISPLAY; + $user->dLastView = $readingDate; + + $conversationUserManager->add($user); + } + + // créer le premier message + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $session->get('playerId'); + $message->type = ConversationMessage::TY_STD; + $message->content = $content; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + + if (true === $this->getContainer()->getParameter('data_analysis')) { + $qr = $database->prepare( + 'INSERT INTO + DA_SocialRelation(`from`, `to`, `type`, `message`, dAction) + VALUES(?, ?, ?, ?, ?)' + ); + $qr->execute([$session->get('playerId'), $players[0]->getId(), 2, $content, Utils::now()]); + } + + $session->addFlashbag('La conversation a été créée.', Flashbag::TYPE_SUCCESS); + $response->redirect('message/conversation-'.$conv->id); + } else { + throw new ErrorException('Le joueur n\'est pas joignable.'); + } + } else { + throw new ErrorException('Nombre maximum de joueur atteint.'); + } + } else { + throw new ErrorException('Le message est trop long.'); + } +} else { + throw new FormException('Informations manquantes pour démarrer une nouvelle conversation.'); +} diff --git a/src/action/std/hermes/conversation/updateDisplay.php b/src/action/std/hermes/conversation/updateDisplay.php new file mode 100644 index 000000000..b0420aee4 --- /dev/null +++ b/src/action/std/hermes/conversation/updateDisplay.php @@ -0,0 +1,45 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); + +$conversation = $request->query->get('conversation'); + +if (false !== $conversation) { + // vérifier que c'est l'utilisateur courant + + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + ['c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')] + ); + + if (1 == $conversationManager->size()) { + $conv = $conversationManager->get(); + $users = $conv->players; + + foreach ($users as $user) { + if ($user->rPlayer == $session->get('playerId')) { + if (ConversationUser::CS_DISPLAY == $user->convStatement) { + $user->convStatement = ConversationUser::CS_ARCHIVED; + $session->addFlashbag('La conversation a été archivée.', Flashbag::TYPE_SUCCESS); + } else { + $user->convStatement = ConversationUser::CS_DISPLAY; + $session->addFlashbag('La conversation a été désarchivée.', Flashbag::TYPE_SUCCESS); + } + break; + } + } + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); +} else { + throw new ErrorException('Informations manquantes pour quitter la conversation.'); +} diff --git a/src/action/std/hermes/conversation/updateTitle.php b/src/action/std/hermes/conversation/updateTitle.php new file mode 100644 index 000000000..c2579bb8c --- /dev/null +++ b/src/action/std/hermes/conversation/updateTitle.php @@ -0,0 +1,40 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); + +$conversation = $request->query->get('conversation'); +$title = $request->request->get('title'); + +$title = $parser->parse($title); + +if (false !== $conversation) { + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + [ + 'c.id' => $conversation, + 'cu.rPlayer' => $session->get('playerId'), + 'cu.playerStatement' => ConversationUser::US_ADMIN, + ] + ); + + if (1 == $conversationManager->size()) { + if (strlen((string) $title) < 255) { + $conv = $conversationManager->get()->title = $title; + } else { + throw new ErrorException('Le titre est trop long.'); + } + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); +} else { + throw new ErrorException('Informations manquantes pour ajouter un joueur à la conversation.'); +} diff --git a/src/action/std/hermes/conversation/write.php b/src/action/std/hermes/conversation/write.php new file mode 100644 index 000000000..549ef1303 --- /dev/null +++ b/src/action/std/hermes/conversation/write.php @@ -0,0 +1,79 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$database = $this->getContainer()->get(\App\Classes\Database\Database::class); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); + +$conversation = $request->query->get('conversation'); +$content = $request->request->get('content'); + +$content = $parser->parse($content); + +if (!empty($conversation) && !empty($content)) { + if (strlen((string) $content) < 10000) { + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + ['c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')] + ); + + if (1 == $conversationManager->size()) { + $conv = $conversationManager->get(); + + if (Conversation::TY_SYSTEM != $conv->type) { + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + + // désarchiver tout les users + $users = $conv->players; + foreach ($users as $user) { + $user->convStatement = ConversationUser::CS_DISPLAY; + + if ($user->rPlayer == $session->get('playerId')) { + $user->dLastView = Utils::now(); + } else { + $DA_recipient = $user->rPlayer; + } + } + + // création du message + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $session->get('playerId'); + $message->type = ConversationMessage::TY_STD; + $message->content = $content; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + + if (true === $this->getContainer()->getParameter('data_analysis')) { + $qr = $database->prepare( + 'INSERT INTO + DA_SocialRelation(`from`, `to`, `type`, `message`, dAction) + VALUES(?, ?, ?, ?, ?)' + ); + $qr->execute([$session->get('playerId'), $DA_recipient, 2, $content, Utils::now()]); + } + } + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); + } else { + throw new ErrorException('Le message est trop long.'); + } +} else { + throw new ErrorException('Informations manquantes pour démarrer une nouvelle conversation.'); +} diff --git a/src/action/std/hermes/conversation/writeFaction.php b/src/action/std/hermes/conversation/writeFaction.php new file mode 100644 index 000000000..168734ada --- /dev/null +++ b/src/action/std/hermes/conversation/writeFaction.php @@ -0,0 +1,74 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +$playerManager = $this->getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); + +// protection des inputs +$content = $parser->parse($request->request->get('message')); + +if (false !== $content) { + if (($player = $playerManager->get($session->get('playerId')))) { + if ($player->status > Player::PARLIAMENT) { + if ('' !== $content && strlen((string) $content) < 25000) { + if (($factionAccount = $playerManager->getFactionAccount($player->rColor)) !== null) { + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + ['cu.rPlayer' => $factionAccount->id] + ); + + if (1 == $conversationManager->size()) { + $conv = $conversationManager->get(); + + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + + // désarchiver tout les users + $users = $conv->players; + foreach ($users as $user) { + $user->convStatement = ConversationUser::CS_DISPLAY; + } + + // création du message + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = $player->id; + $message->type = ConversationMessage::TY_STD; + $message->content = $content; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); + } + } else { + throw new FormException('Le message est vide ou trop long'); + } + } else { + throw new FormException('Vizs n\'avez pas les droits pour poster un message officiel'); + } + } else { + throw new FormException('Ce joueur n\'existe pas'); + } +} else { + throw new FormException('Pas assez d\'informations pour écrire un message officiel'); +} diff --git a/src/action/std/hermes/conversation/writeOfficial.php b/src/action/std/hermes/conversation/writeOfficial.php new file mode 100644 index 000000000..2432d73a5 --- /dev/null +++ b/src/action/std/hermes/conversation/writeOfficial.php @@ -0,0 +1,62 @@ +getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +$conversationManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationManager::class); +$conversationMessageManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\ConversationMessageManager::class); + +$content = $parser->parse($request->request->get('message')); + +if (false == $session->get('playerInfo')->get('admin')) { + $response->redirect('profil'); +} else { + if (false !== $content) { + if (strlen((string) $content) < 10000) { + $S_CVM = $conversationManager->getCurrentSession(); + $conversationManager->newSession(); + $conversationManager->load( + ['cu.rPlayer' => ID_JEANMI] + ); + + if (1 == $conversationManager->size()) { + $conv = $conversationManager->get(); + + ++$conv->messages; + $conv->dLastMessage = Utils::now(); + + // désarchiver tous les users + $users = $conv->players; + foreach ($users as $user) { + $user->convStatement = ConversationUser::CS_DISPLAY; + } + + // création du message + $message = new ConversationMessage(); + + $message->rConversation = $conv->id; + $message->rPlayer = ID_JEANMI; + $message->type = ConversationMessage::TY_STD; + $message->content = $content; + $message->dCreation = Utils::now(); + $message->dLastModification = null; + + $conversationMessageManager->add($message); + } else { + throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); + } + + $conversationManager->changeSession($S_CVM); + } else { + throw new ErrorException('Le message est trop long.'); + } + } else { + throw new ErrorException('Informations manquantes pour démarrer une nouvelle conversation.'); + } +} diff --git a/src/action/std/hermes/radio/write.php b/src/action/std/hermes/radio/write.php new file mode 100755 index 000000000..cc333596c --- /dev/null +++ b/src/action/std/hermes/radio/write.php @@ -0,0 +1,40 @@ +getContainer()->get('app.request'); +// $session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +// $parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +// +// for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { +// $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('sector'); +// } +// for ($i = 0; $i < $session->get('playerBase')->get('ms')->size(); $i++) { +// $verif[] = $session->get('playerBase')->get('ms')->get($i)->get('sector'); +// } +// $verif = array_unique($verif); +// +// $sector = Utils::getHTTPData('sector'); +// $content = Utils::getHTTPData('content'); +// +// +// // protection des inputs +// $content = $parser->protect($content); +// +// if ($sector !== FALSE AND $content !== FALSE AND in_array($sector, $verif) AND $content !== '') { +// $sector = intval($sector); +// +// $message = new MessageRadio(); +// $message->rPlayer = $session->get('playerId'); +// $message->rSystem = $sector; +// $message->edit($content); +// ASM::$mrm->add($message); +// +// CTR::$alert->add('Message envoyé', ALERT_STD_SUCCESS); +// } else { +// CTR::$alert->add('pas assez d\'informations pour écrire un message dans une radio', ALERT_STD_FILLFORM); +// } diff --git a/src/action/std/hermes/roadmap/write.php b/src/action/std/hermes/roadmap/write.php new file mode 100755 index 000000000..10063721f --- /dev/null +++ b/src/action/std/hermes/roadmap/write.php @@ -0,0 +1,43 @@ +getContainer()->get('app.request'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$parser = $this->getContainer()->get(\App\Classes\Library\Parser::class); +$roadmapManager = $this->getContainer()->get(\App\Modules\Hermes\Manager\RoadMapManager::class); + +if (false == $session->get('playerInfo')->get('admin')) { + $response->redirect('profil'); +} else { + $content = $request->request->get('content'); + $statement = $request->query->get('statement', false); + + if (!empty($content)) { + $rm = new RoadMap(); + $rm->rPlayer = $session->get('playerId'); + $rm->setContent($content); + $rm->setParsedContent($parser->parse($content)); + if (false !== $statement) { + if (0 == $statement or 1 == $statement) { + $rm->statement = $statement; + } + } else { + $rm->statement = RoadMap::DISPLAYED; + } + $rm->dCreation = Utils::now(); + $roadmapManager->add($rm); + + $session->addFlashbag('Roadmap publiée', Flashbag::TYPE_SUCCESS); + } else { + throw new FormException('pas assez d\'informations pour écrire un message dans la roadmap'); + } +} diff --git a/src/action/std/main.php b/src/action/std/main.php new file mode 100755 index 000000000..7c1f21759 --- /dev/null +++ b/src/action/std/main.php @@ -0,0 +1,118 @@ +getContainer(); +$request = $this->getContainer()->get('app.request'); +$response = $this->getContainer()->get('app.response'); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$actionPath = $container->getParameter('action'); + +// démarre la redirection standard vers la page précédente +$response->redirect($session->getLastHistory()); + +if ($request->query->has('sftr')) { + $session->add('sftr', $request->query->get('sftr')); +} + +if ($request->query->has('token') && $session->get('token') === $request->query->get('token')) { + match ($request->query->get('a')) { + 'switchbase' => include $actionPath.'common/switchBase.php', + 'switchparams' => include $actionPath.'common/switchParams.php', + 'sendsponsorshipemail' => include $actionPath.'common/sendSponsorshipEmail.php', + 'discordrequest' => include $actionPath.'common/discordRequest.php', + 'updateinvest' => include $actionPath.'athena/general/updateInvest.php', + 'switchdockmode' => include $actionPath.'athena/general/switchDockMode.php', + 'createschoolclass' => include $actionPath.'athena/general/createSchoolClass.php', + 'giveresource' => include $actionPath.'athena/general/giveResource.php', + 'giveships' => include $actionPath.'athena/general/giveShips.php', + 'renamebase' => include $actionPath.'athena/general/renameBase.php', + 'changebasetype' => include $actionPath.'athena/general/changeBaseType.php', + 'leavebase' => include $actionPath.'athena/general/leaveBase.php', + 'buildbuilding' => include $actionPath.'athena/building/build.php', + 'dequeuebuilding' => include $actionPath.'athena/building/dequeue.php', + 'buildship' => include $actionPath.'athena/ship/build.php', + 'dequeueship' => include $actionPath.'athena/ship/dequeue.php', + 'recycleship' => include $actionPath.'athena/ship/recycle.php', + 'proposeroute' => include $actionPath.'athena/route/propose.php', + 'acceptroute' => include $actionPath.'athena/route/accept.php', + 'refuseroute' => include $actionPath.'athena/route/refuse.php', + 'cancelroute' => include $actionPath.'athena/route/cancel.php', + 'deleteroute' => include $actionPath.'athena/route/delete.php', + 'proposetransaction' => include $actionPath.'athena/transaction/propose.php', + 'accepttransaction' => include $actionPath.'athena/transaction/accept.php', + 'canceltransaction' => include $actionPath.'athena/transaction/cancel.php', + 'createmission' => include $actionPath.'athena/recycling/createMission.php', + 'cancelmission' => include $actionPath.'athena/recycling/cancelMission.php', + 'addtomission' => include $actionPath.'athena/recycling/addToMission.php', + 'startconversation' => include $actionPath.'hermes/conversation/start.php', + 'writeconversation' => include $actionPath.'hermes/conversation/write.php', + 'leaveconversation' => include $actionPath.'hermes/conversation/leave.php', + 'adduserconversation' => include $actionPath.'hermes/conversation/addUser.php', + 'updatedisplayconversation' => include $actionPath.'hermes/conversation/updateDisplay.php', + 'updatetitleconversation' => include $actionPath.'hermes/conversation/updateTitle.php', + 'writeofficialconversation' => include $actionPath.'hermes/conversation/writeOfficial.php', + 'writefactionconversation' => include $actionPath.'hermes/conversation/writeFaction.php', + 'readallnotif' => include $actionPath.'hermes/notification/readAll.php', + 'deleteallnotif' => include $actionPath.'hermes/notification/deleteAll.php', + 'deletenotif' => include $actionPath.'hermes/notification/delete.php', + 'archivenotif' => include $actionPath.'hermes/notification/archive.php', + 'writeroadmap' => include $actionPath.'hermes/roadmap/write.php', + 'buildtechno' => include $actionPath.'promethee/technology/build.php', + 'dequeuetechno' => include $actionPath.'promethee/technology/dequeue.php', + 'searchplayer' => include $actionPath.'zeus/player/searchPlayer.php', + 'updateuniinvest' => include $actionPath.'zeus/player/updateUniInvest.php', + 'disconnect' => include $actionPath.'zeus/player/disconnect.php', + 'sendcredit' => include $actionPath.'zeus/player/sendCredit.php', + 'sendcredittofaction' => include $actionPath.'zeus/player/sendCreditToFaction.php', + 'sendcreditfromfaction' => include $actionPath.'zeus/player/sendCreditFromFaction.php', + 'abandonserver' => include $actionPath.'zeus/player/abandonServer.php', + 'switchadvertisement' => include $actionPath.'zeus/player/switchAdvertisement.php', + 'validatestep' => include $actionPath.'zeus/tutorial/validateStep.php', + 'spy' => include $actionPath.'artemis/spy.php', + 'deletespyreport' => include $actionPath.'artemis/delete.php', + 'deleteallspyreport' => include $actionPath.'artemis/deleteAll.php', + 'archivereport' => include $actionPath.'ares/report/archive.php', + 'deletereport' => include $actionPath.'ares/report/delete.php', + 'deleteallreport' => include $actionPath.'ares/report/deleteAll.php', + 'movefleet' => include $actionPath.'ares/fleet/move.php', + 'loot' => include $actionPath.'ares/fleet/loot.php', + 'colonize' => include $actionPath.'ares/fleet/colonize.php', + 'conquer' => include $actionPath.'ares/fleet/conquer.php', + 'cancelmove' => include $actionPath.'ares/fleet/cancel.php', + 'affectcommander' => include $actionPath.'ares/commander/affect.php', + 'putcommanderinschool' => include $actionPath.'ares/commander/putInSchool.php', + 'updatenamecommander' => include $actionPath.'ares/commander/updateName.php', + 'emptycommander' => include $actionPath.'ares/commander/empty.php', + 'firecommander' => include $actionPath.'ares/commander/fire.php', + 'changeline' => include $actionPath.'ares/commander/changeLine.php', + 'writemessageforum' => include $actionPath.'demeter/message/write.php', + 'movetopicforum' => include $actionPath.'demeter/topic/move.php', + 'closetopicforum' => include $actionPath.'demeter/topic/close.php', + 'uptopicforum' => include $actionPath.'demeter/topic/up.php', + 'archivetopicforum' => include $actionPath.'demeter/topic/archive.php', + 'editmessageforum' => include $actionPath.'demeter/message/edit.php', + 'createtopicforum' => include $actionPath.'demeter/topic/createTopic.php', + 'writenews' => include $actionPath.'demeter/news/write.php', + 'editnews' => include $actionPath.'demeter/news/edit.php', + 'pinnews' => include $actionPath.'demeter/news/pin.php', + 'deletenews' => include $actionPath.'demeter/news/delete.php', + 'postulate' => include $actionPath.'demeter/election/postulate.php', + 'makeacoup' => include $actionPath.'demeter/election/makeACoup.php', + 'vote' => include $actionPath.'demeter/election/vote.php', + 'choosegovernment' => include $actionPath.'demeter/election/chooseGovernment.php', + 'fireminister' => include $actionPath.'demeter/election/fire.php', + 'resign' => include $actionPath.'demeter/election/resign.php', + 'abdicate' => include $actionPath.'demeter/election/abdicate.php', + 'votelaw' => include $actionPath.'demeter/law/vote.php', + 'createlaw' => include $actionPath.'demeter/law/createLaw.php', + 'updatefactiondesc' => include $actionPath.'demeter/updateFactionDesc.php', + 'donate' => include $actionPath.'demeter/donate.php', + default => throw new ErrorException('action inconnue ou non-référencée'), + }; +} elseif ('switchbase' == $request->query->get('a')) { + // action sans token + include $actionPath.'common/switchBase.php'; +} else { + throw new ErrorException('votre token CSRF a expiré'); +} diff --git a/src/action/std/zeus/player/abandonServer.php b/src/action/std/zeus/player/abandonServer.php new file mode 100644 index 000000000..b8161dab2 --- /dev/null +++ b/src/action/std/zeus/player/abandonServer.php @@ -0,0 +1,27 @@ +getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); +$session = $this->getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$response = $this->getContainer()->get('app.response'); + +if (($player = $playerManager->get($session->get('playerId'))) !== null) { + // sending API call to delete account link to server + $success = $this->getContainer()->get('api')->abandonServer($player->bind); + + if ($success) { + $player->bind .= 'ABANDON'; + $player->statement = Player::DELETED; + + $this->getContainer()->get(\App\Classes\Entity\EntityManager::class)->flush($player); + // clean session + $session->destroy(); + $response->redirect($this->getContainer()->getParameter('getout_root').'serveurs', true); + } else { + throw new ErrorException('Une erreur s\'est produite sur le portail. Contactez un administrateur pour résoudre ce problème.'); + } +} else { + throw new ErrorException('Une erreur s\'est produite. Contactez un administrateur pour résoudre ce problème.'); +} diff --git a/src/action/std/zeus/player/disconnect.php b/src/action/std/zeus/player/disconnect.php new file mode 100755 index 000000000..38608a185 --- /dev/null +++ b/src/action/std/zeus/player/disconnect.php @@ -0,0 +1,7 @@ +getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$sessionId = $session->get('session_id'); +$session->destroy(); +$this->getContainer()->get(\App\Classes\Daemon\ClientManager::class)->removeClient($sessionId); +$this->getContainer()->get('app.response')->redirect('profil', true); diff --git a/src/action/std/zeus/player/switchAdvertisement.php b/src/action/std/zeus/player/switchAdvertisement.php new file mode 100755 index 000000000..a98932dd4 --- /dev/null +++ b/src/action/std/zeus/player/switchAdvertisement.php @@ -0,0 +1,23 @@ +getContainer()->get(\App\Classes\Library\Session\SessionWrapper::class); +$playerManager = $this->getContainer()->get(\App\Modules\Zeus\Manager\PlayerManager::class); + +if (($player = $playerManager->get($session->get('playerId'))) !== null) { + if (0 == $player->premium) { + $player->premium = 1; + $session->get('playerInfo')->add('premium', 1); + $session->addFlashbag('Publicité déactivée. Vous êtes vraiment sûr ? Allez, re-cliquez un coup, c\'est cool les pubs.', Flashbag::TYPE_SUCCESS); + } else { + $player->premium = 0; + $session->get('playerInfo')->add('premium', 0); + $session->addFlashbag('Publicitées activées. Merci beaucoup pour votre soutien. Je vous aime.', Flashbag::TYPE_SUCCESS); + } + $this->getContainer()->get(\App\Classes\Entity\EntityManager::class)->flush($player); +} else { + throw new ErrorException('petit bug là, contactez un administrateur rapidement sous risque que votre ordinateur explose'); +} diff --git a/src/script/main.php b/src/script/main.php new file mode 100755 index 000000000..f1f018f2b --- /dev/null +++ b/src/script/main.php @@ -0,0 +1,97 @@ + [ + ['deploy_dbinstall', '/deploy/dbinstall.php'], + ['deploy_newgalaxy', '/deploy/newgalaxy.php'], + ], + 'Serveur' => [ + ['monitoring', '/server/monitoring.php'], + ], + 'Tâches Cron' => [ + ['cron_daily', '/cron/daily.php'], + ['cron_playerranking', '/cron/playerRanking.php'], + ['cron_factionranking', '/cron/factionRanking.php'], + ], + 'Utilitaires' => [ + ['utils_commanderAttack', '/utils/commanderAttack.php'], + ['utils_sectors', '/utils/sectors.php'], + ['utils_maprender', '/utils/map-render.php'], + ['utils_findsectorinfos', '/utils/find-sector-infos.php'], + ['utils_getstatistic', '/utils/get-stats.php'], + ['utils_recolorsector', '/utils/recolor-sector.php'], + ], + 'Test' => [ + ['test_main', '/test/test.php'], + ['test_http', '/test/http-data.php'], + ['test_updateSenatAphera', '/test/updateSenate.php'], + ], + 'Migration' => [ + ['migration_color', '/migration/updateColor.php'], + ['migration_recycling', '/migration/updateRecycling.php'], + ['migration_sector', '/migration/updateSector.php'], + ['migration_factionranking', '/migration/updateFactionRanking.php'], + ['migration_addconversation', '/migration/add-conversation.php'], + ['migration_removemessage', '/migration/remove-message.php'], + ], +]; + +// unlimited time +set_time_limit(250); +ini_set('display_errors', true); + +$container = $this->getContainer(); +$appRoot = $container->getParameter('app_root'); +$scriptPath = $container->getParameter('script'); + +include $scriptPath.'template/open.php'; + +$request = $this->getContainer()->get('app.request'); +$scriptKey = $this->getContainer()->getParameter('security_script_key'); + +if ('dev' === $this->getContainer()->getParameter('environment') || $request->query->get('key') === $scriptKey) { + if (!$request->query->has('a')) { + echo '
'; + echo '
'; + echo ' '; + echo 'Liste des scripts'; + echo '
'; + + echo '
'; + foreach ($scripts as $type => $typeScripts) { + echo '

'.$type.'

'; + + foreach ($typeScripts as $script) { + echo ''; + echo ''.$script[0].''; + echo $script[1]; + echo ''; + } + } + echo '
'; + echo '
'; + } else { + $requestedScript = $request->query->get('a'); + foreach ($scripts as $typeScripts) { + foreach ($typeScripts as $script) { + if ($requestedScript === $script[0]) { + $scrp = $scriptPath.'scripts'.$script[1]; + $name = $script[1]; + } + } + } + + echo '
'; + echo '
'; + echo ' '; + echo $name; + echo '
'; + + echo '
'; + include $scrp; + echo '
'; + echo '
'; + } +} + +include $scriptPath.'template/close.php'; diff --git a/src/script/scripts/deploy/data-analysis/baseAction.php b/src/script/scripts/deploy/data-analysis/baseAction.php new file mode 100644 index 000000000..be5abb618 --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/baseAction.php @@ -0,0 +1,18 @@ +Ajout de la table DA_BaseAction'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_BaseAction`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_BaseAction` ( + `id` INT unsigned NOT NULL AUTO_INCREMENT, + `from` INT unsigned NOT NULL, + + `type` SMALLINT unsigned NOT NULL, + `opt1` SMALLINT unsigned NULL DEFAULT NULL, + `opt2` SMALLINT unsigned NULL DEFAULT NULL, + `weight` INT unsigned NOT NULL, + `dAction` datetime DEFAULT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'); diff --git a/src/script/scripts/deploy/data-analysis/commercialRelation.php b/src/script/scripts/deploy/data-analysis/commercialRelation.php new file mode 100644 index 000000000..0b46cf29f --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/commercialRelation.php @@ -0,0 +1,17 @@ +Ajout de la table DA_CommercialRelation'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_CommercialRelation`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_CommercialRelation` ( + `id` INT unsigned NOT NULL AUTO_INCREMENT, + `from` INT unsigned NOT NULL, + `to` INT unsigned NOT NULL, + + `type` SMALLINT unsigned NOT NULL, + `weight` INT unsigned NOT NULL, + `dAction` datetime DEFAULT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'); diff --git a/src/script/scripts/deploy/data-analysis/fleetMovement.php b/src/script/scripts/deploy/data-analysis/fleetMovement.php new file mode 100644 index 000000000..0d2c7179d --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/fleetMovement.php @@ -0,0 +1,18 @@ +Ajout de la table DA_FleetMovement'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_FleetMovement`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_FleetMovement` ( + `id` INT unsigned NOT NULL AUTO_INCREMENT, + `from` INT unsigned NOT NULL, + `to` INT unsigned NOT NULL, + + `type` SMALLINT unsigned NOT NULL, + `isWinner` SMALLINT unsigned NOT NULL, + `weight` INT unsigned NOT NULL, + `dAction` DATETIME NOT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'); diff --git a/src/script/scripts/deploy/data-analysis/player.php b/src/script/scripts/deploy/data-analysis/player.php new file mode 100644 index 000000000..9113dfaf5 --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/player.php @@ -0,0 +1,13 @@ +Ajout de la table DA_Player'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_Player`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_Player` ( + `id` INT unsigned NOT NULL, + `color` SMALLINT unsigned NOT NULL, + `dInscription` datetime DEFAULT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8;'); diff --git a/src/script/scripts/deploy/data-analysis/playerDaily.php b/src/script/scripts/deploy/data-analysis/playerDaily.php new file mode 100644 index 000000000..1456c887b --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/playerDaily.php @@ -0,0 +1,28 @@ +Ajout de la table DA_PlayerDaily'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_PlayerDaily`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_PlayerDaily` ( + `id` INT unsigned NOT NULL AUTO_INCREMENT, + `rPlayer` INT unsigned NOT NULL, + `credit` INT unsigned NOT NULL, + `experience` INT unsigned NOT NULL, + `level` INT unsigned NOT NULL, + `victory` INT unsigned NOT NULL, + `defeat` INT unsigned NOT NULL, + `status` SMALLINT unsigned NOT NULL, + `resources` INT unsigned NOT NULL, + `fleetSize` INT unsigned NOT NULL, + `nbPlanet` INT unsigned NOT NULL, + `planetPoints` INT unsigned NOT NULL, + `rkGeneral` INT unsigned NOT NULL, + `rkFighter` INT unsigned NOT NULL, + `rkProducer` INT unsigned NOT NULL, + `rkButcher` INT unsigned NOT NULL, + `rkTrader` INT unsigned NOT NULL, + `dStorage` DATETIME NOT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'); diff --git a/src/script/scripts/deploy/data-analysis/socialRelation.php b/src/script/scripts/deploy/data-analysis/socialRelation.php new file mode 100644 index 000000000..c126f588d --- /dev/null +++ b/src/script/scripts/deploy/data-analysis/socialRelation.php @@ -0,0 +1,17 @@ +Ajout de la table DA_SocialRelation'; + +$db = $this->getContainer()->get(\App\Classes\Database\Database::class); +$db->query('DROP TABLE IF EXISTS `DA_SocialRelation`'); +$db->query('CREATE TABLE IF NOT EXISTS `DA_SocialRelation` ( + `id` INT unsigned NOT NULL AUTO_INCREMENT, + `from` INT unsigned NOT NULL, + `to` INT unsigned NULL DEFAULT NULL, + + `type` SMALLINT unsigned NOT NULL, + `message` TEXT NOT NULL, + `dAction` datetime DEFAULT NULL, + + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'); diff --git a/src/script/scripts/deploy/newgalaxy.php b/src/script/scripts/deploy/newgalaxy.php new file mode 100755 index 000000000..084c63262 --- /dev/null +++ b/src/script/scripts/deploy/newgalaxy.php @@ -0,0 +1,8 @@ +Test galaxy'; + +$galaxyGenerator = $this->getContainer()->get(\App\Modules\Gaia\Helper\GalaxyGenerator::class); + +$galaxyGenerator->generate(); +echo $galaxyGenerator->getLog(); diff --git a/src/script/scripts/migration/add-conversation.php b/src/script/scripts/migration/add-conversation.php new file mode 100644 index 000000000..6904da52a --- /dev/null +++ b/src/script/scripts/migration/add-conversation.php @@ -0,0 +1,47 @@ +Ajout du module de Conversation'; + +echo '

Ajout de la table Conversation

'; + +$database = $this->getContainer()->get(\App\Classes\Database\Database::class); + +$qr = $database->prepare('CREATE TABLE IF NOT EXISTS `conversation` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `title` VARCHAR(255) NULL, + `messages` INT(5) NOT NULL DEFAULT 0, + `type` TINYINT(2) NOT NULL DEFAULT 1, + `dCreation` datetime NOT NULL, + `dLastMessage` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); +$qr->execute(); + +echo '

Ajout de la table userConversation

'; + +$qr = $database->prepare('CREATE TABLE IF NOT EXISTS `conversationUser` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `rConversation` INT(11) NOT NULL, + `rPlayer` INT(11) NOT NULL, + `playerStatement` INT(5) NOT NULL DEFAULT 0, + `convStatement` INT(5) NOT NULL DEFAULT 0, + `dLastView` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); +$qr->execute(); + +echo '

Ajout de la table messageConversation

'; + +$qr = $database->prepare('CREATE TABLE IF NOT EXISTS `conversationMessage` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `rConversation` INT(11) NOT NULL, + `rPlayer` INT(11) NOT NULL, + `type` INT(5) NOT NULL DEFAULT 0, + + `content` TEXT NOT NULL, + + `dCreation` datetime NOT NULL, + `dLastModification` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); +$qr->execute(); diff --git a/src/script/scripts/migration/remove-message.php b/src/script/scripts/migration/remove-message.php new file mode 100644 index 000000000..83886bb14 --- /dev/null +++ b/src/script/scripts/migration/remove-message.php @@ -0,0 +1,8 @@ +Suppression du module de Message'; + +echo '

Suppression de la table Message

'; + +$qr = $this->getContainer()->get(\App\Classes\Database\Database::class)->prepare('DROP TABLE `message`;'); +$qr->execute(); diff --git a/src/script/scripts/migration/updateColor.php b/src/script/scripts/migration/updateColor.php new file mode 100755 index 000000000..897c92f3c --- /dev/null +++ b/src/script/scripts/migration/updateColor.php @@ -0,0 +1,15 @@ +Ajout de isInGame dans color'; + +$this->getContainer()->get(\App\Classes\Database\DatabaseAdmin::class)->query('ALTER TABLE `color` ADD `isInGame` TINYINT NULL DEFAULT 0 AFTER `isClosed`;'); + +$factions = $this->getContainer()->get(\App\Modules\Demeter\Manager\ColorManager::class)->getAll(); + +foreach ($factions as $faction) { + $faction->isInGame = 1; +} + +$this->getContainer()->get(\App\Classes\Entity\EntityManager::class)->flush(Color::class); diff --git a/src/script/scripts/migration/updateFactionRanking.php b/src/script/scripts/migration/updateFactionRanking.php new file mode 100644 index 000000000..f618d29b9 --- /dev/null +++ b/src/script/scripts/migration/updateFactionRanking.php @@ -0,0 +1,14 @@ +getContainer()->get(\App\Classes\Database\DatabaseAdmin::class); + +echo '

Ajout du classement total (points) dans playerRanking

'; + +$db->query('ALTER TABLE `factionRanking` ADD `newPoints` SMALLINT NOT NULL AFTER `rFaction`;'); +$db->query('ALTER TABLE `factionRanking` ADD `pointsVariation` SMALLINT NOT NULL AFTER `rFaction`;'); +$db->query('ALTER TABLE `factionRanking` ADD `pointsPosition` SMALLINT NOT NULL AFTER `rFaction`;'); +$db->query('ALTER TABLE `factionRanking` ADD `points` INT unsigned NOT NULL AFTER `rFaction`;'); + +echo '

Ajout des points du classement total dans color

'; + +$db->query('ALTER TABLE `color` ADD `rankingPoints` INT unsigned NOT NULL DEFAULT 0 AFTER `activePlayers`;'); diff --git a/src/script/scripts/migration/updateRecycling.php b/src/script/scripts/migration/updateRecycling.php new file mode 100644 index 000000000..c84111e2b --- /dev/null +++ b/src/script/scripts/migration/updateRecycling.php @@ -0,0 +1,5 @@ +Ajout de addToNextMission dans recyclingMission'; + +$this->getContainer()->get(\App\Classes\Database\Database::class)->query('ALTER TABLE `recyclingMission` ADD `addToNextMission` SMALLINT unsigned NOT NULL AFTER `recyclerQuantity`;'); diff --git a/src/script/scripts/migration/updateSector.php b/src/script/scripts/migration/updateSector.php new file mode 100644 index 000000000..f0cda2b1b --- /dev/null +++ b/src/script/scripts/migration/updateSector.php @@ -0,0 +1,5 @@ +Ajout de points dans sector'; + +$this->getContainer()->get(\App\Classes\Database\DatabaseAdmin::class)->query('ALTER TABLE `sector` ADD `points` INT NOT NULL DEFAULT 1 AFTER `lifePlanet`;'); diff --git a/src/script/scripts/server/monitoring.php b/src/script/scripts/server/monitoring.php new file mode 100644 index 000000000..862ff3f9c --- /dev/null +++ b/src/script/scripts/server/monitoring.php @@ -0,0 +1,53 @@ +getContainer()->get('server'); +$clientManager = $this->getContainer()->get(\App\Classes\Daemon\ClientManager::class); +$processManager = $this->getContainer()->get('process_manager'); +$memoryManager = $this->getContainer()->get('memory_manager'); + +$memoryManager->refreshNodeMemory(); +$masterData = $memoryManager->getNodeMemory(); +$poolData = $memoryManager->getPoolMemory(); +echo '

Serveur

'; +echo '

Mémoire utilisée au pool: '.$poolData['allocated_memory'].'b

'; +echo '

Mémoire allouée au pool: '.$poolData['memory'].'b

'; +echo '

Mémoire utilisée au master: '.$masterData['allocated_memory'].'b

'; +echo '

Mémoire allouée au master: '.$masterData['memory'].'b

'; +echo '

Heure : '.Utils::now().'

'; + +echo '

Process

'; +echo '
'; +foreach ($processManager->getProcesses() as $process) { + $tasks = $process->getTasks(); + echo "
  • Name : {$process->getName()}
  • "; + echo "
  • Mémoire allouée: {$process->getAllocatedMemory()}b
  • "; + echo "
  • Mémoire utilisée: {$process->getMemory()}
  • "; + echo "
  • Temps estimé de travail: {$process->getExpectedWorkTime()}
  • "; + echo '
  • Tasks '.count($tasks).'
  • '; + foreach ($tasks as $task) { + var_dump($task); + } + echo '
'; +} +echo '
'; +echo '
'; +// @TODO refactor UI +echo '

Schedulers

Real Time Action Scheduler (unavailable, see RabbitMQ)
    '; +// foreach ($rtc->getQueue() as $date => $elements) +// { +// echo '
  • ';
    +//	var_dump($date);
    +//	var_dump($elements);
    +//	echo '
  • '; +// } +echo '

'; + +echo '

Clients

    '; +foreach ($clientManager->getClients() as $client) { + echo '
  • ';
    +	var_dump($client);
    +	echo '
  • '; +} +echo '
'; diff --git a/src/script/scripts/test/http-data.php b/src/script/scripts/test/http-data.php new file mode 100644 index 000000000..413bb69d2 --- /dev/null +++ b/src/script/scripts/test/http-data.php @@ -0,0 +1,13 @@ +getContainer()->get('app.request'); + +var_dump($request->headers->get('user-agent')); +var_dump($request->headers->get('accept')); +var_dump($request->headers->get('accept-encoding')); +var_dump($request->headers->get('accept-language')); + +var_dump('____________________________________________________'); + +var_dump(md5($request->headers->get('user-agent').$request->headers->get('accept-language'))); +var_dump(md5($request->headers->get('x-real-ip').$request->headers->get('user-agent').$request->headers->get('accept-language'))); diff --git a/src/script/scripts/test/test.php b/src/script/scripts/test/test.php new file mode 100644 index 000000000..19176c4c6 --- /dev/null +++ b/src/script/scripts/test/test.php @@ -0,0 +1,5 @@ +getContainer()->get(\App\Modules\Ares\Manager\CommanderManager::class)->getMovingCommanders(); + +foreach ($commanders as $commander) { + $commander->dArrival = $commander->dStart; +} + +$this->getContainer()->get(\App\Classes\Entity\EntityManager::class)->flush(Commander::class); diff --git a/src/script/scripts/utils/find-sector-infos.php b/src/script/scripts/utils/find-sector-infos.php new file mode 100755 index 000000000..f4504f324 --- /dev/null +++ b/src/script/scripts/utils/find-sector-infos.php @@ -0,0 +1,6 @@ +getContainer()->get(\App\Modules\Gaia\Galaxy\GalaxyConfiguration::class); +$galaxyConfiguration->fillSectorsData(); diff --git a/src/script/scripts/utils/get-stats.php b/src/script/scripts/utils/get-stats.php new file mode 100644 index 000000000..bd15f94ad --- /dev/null +++ b/src/script/scripts/utils/get-stats.php @@ -0,0 +1,73 @@ +Création automatisée de statistiques'; + +echo '

Joueurs

'; + +echo '

'; + echo 'Joueurs actifs
'; + echo ''.Format::number(PlayerManager::count(['statement' => Player::ACTIVE])).''; +echo '

'; + +echo '

'; + echo 'Joueurs inscrits
'; + echo ''.Format::number(PlayerManager::count(['statement' => [Player::ACTIVE, Player::INACTIVE]])).''; +echo '

'; + +$S_PAM = ASM::$pam->getCurrentSession(); +ASM::$pam->newSession(false); +ASM::$pam->load([], ['credit', 'DESC'], [0, 3]); + +echo '

'; + echo 'Joueurs les plus riches'; + for ($i = 0; $i < ASM::$pam->size(); ++$i) { + $p = ASM::$pam->get($i); + + echo '
'; + echo ''.ColorResource::getInfo($p->rColor, 'status')[$p->status].' '.$p->name.' de '.ColorResource::getInfo($p->rColor, 'popularName').''; + echo ' ('.Format::number($p->credit).' crédits)'; + } +echo '

'; + +ASM::$pam->changeSession($S_PAM); + +echo '

Commerce

'; + +echo '

nombre de RC

'; +echo '

max RC

'; + +echo '

CommercialShipping

'; +echo '

CreditTransaction

'; +echo '

transaction

'; + +echo '

Politique / Factions

'; +echo '

Candidate

'; +echo '

Color

'; +echo '

Election

'; +echo '

Law

'; +echo '

vote

'; +echo '

votelaw

'; + +echo '

Guerre

'; +echo '

Commandant

'; +echo '

report

'; +echo '

spyreport

'; + +echo '

Interactions

'; +echo '

ForumMessage

'; +echo '

ForumTopic

'; +echo '

Message

'; +echo '

Notifications

'; + +echo '

Bases / Construction

'; +echo '

ob

'; +echo '

vaisseau

'; +echo '

batiment

'; +echo '

tech

'; +echo '

recycl

'; +echo '

recycllog

'; diff --git a/src/script/scripts/utils/map-render.php b/src/script/scripts/utils/map-render.php new file mode 100755 index 000000000..7baae284c --- /dev/null +++ b/src/script/scripts/utils/map-render.php @@ -0,0 +1,85 @@ +getContainer()->get(\App\Modules\Gaia\Manager\SystemManager::class)->getAll(); + +// functions +function getPosition($type, $x, $y, $multiply = 4) +{ + $_return = 'style="'; + switch ($type) { + case 1: $_return .= 'top: '.ceil($y * $multiply).'px; left: '.($x * $multiply).'px;'; + break; + case 2: $_return .= 'top: '.ceil($y * $multiply).'px; left: '.($x * $multiply).'px;'; + break; + case 3: $_return .= 'top: '.ceil(($y * $multiply) - 1).'px; left: '.(($x * $multiply) - 1).'px;'; + break; + case 4: $_return .= 'top: '.ceil(($y * $multiply) - 1).'px; left: '.(($x * $multiply) - 1).'px;'; + break; + case 5: $_return .= 'top: '.ceil($y * $multiply).'px; left: '.($x * $multiply).'px;'; + break; + } + $_return .= '"'; + + return $_return; +} + +?> + + +'; + foreach ($systems as $system) { + switch ($system->typeOfSystem) { + case 1: echo '
typeOfSystem, $system->xPosition, $system->yPosition).'>
'; break; + case 2: echo '
typeOfSystem, $system->xPosition, $system->yPosition).'>
'; break; + case 3: echo '
typeOfSystem, $system->xPosition, $system->yPosition).'>
'; break; + case 4: echo '
typeOfSystem, $system->xPosition, $system->yPosition).'>
'; break; + case 5: echo '
typeOfSystem, $system->xPosition, $system->yPosition).'>
'; break; + default: + break; + } + } +echo '
'; diff --git a/system/script/scripts/utils/map-render/background.png b/src/script/scripts/utils/map-render/background.png similarity index 100% rename from system/script/scripts/utils/map-render/background.png rename to src/script/scripts/utils/map-render/background.png diff --git a/system/script/scripts/utils/map-render/grid-1.jpg b/src/script/scripts/utils/map-render/grid-1.jpg similarity index 100% rename from system/script/scripts/utils/map-render/grid-1.jpg rename to src/script/scripts/utils/map-render/grid-1.jpg diff --git a/system/script/scripts/utils/map-render/grid-2.jpg b/src/script/scripts/utils/map-render/grid-2.jpg similarity index 100% rename from system/script/scripts/utils/map-render/grid-2.jpg rename to src/script/scripts/utils/map-render/grid-2.jpg diff --git a/system/script/scripts/utils/map-render/grid-3.jpg b/src/script/scripts/utils/map-render/grid-3.jpg similarity index 100% rename from system/script/scripts/utils/map-render/grid-3.jpg rename to src/script/scripts/utils/map-render/grid-3.jpg diff --git a/system/script/scripts/utils/map-render/newGalaxy.png b/src/script/scripts/utils/map-render/newGalaxy.png similarity index 100% rename from system/script/scripts/utils/map-render/newGalaxy.png rename to src/script/scripts/utils/map-render/newGalaxy.png diff --git a/src/script/scripts/utils/recolor-sector.php b/src/script/scripts/utils/recolor-sector.php new file mode 100644 index 000000000..fae82bb3a --- /dev/null +++ b/src/script/scripts/utils/recolor-sector.php @@ -0,0 +1,3 @@ +'; +} diff --git a/src/script/template/close.php b/src/script/template/close.php new file mode 100755 index 000000000..f8ab57a37 --- /dev/null +++ b/src/script/template/close.php @@ -0,0 +1,4 @@ +'; +echo ''; diff --git a/src/script/template/open.php b/src/script/template/open.php new file mode 100755 index 000000000..9b5ee8fb5 --- /dev/null +++ b/src/script/template/open.php @@ -0,0 +1,20 @@ +getContainer(); + +echo ''; +echo ''; + +echo ''; + echo ''.$this->getContainer()->get('app.response')->getTitle().' — '.$container->getParameter('app_subname').' — '.$container->getParameter('app_name').''; + + echo ''; + echo ''; + + echo ''; + + echo ''; + echo ''; +echo ''; + +echo ''; diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 000000000..424b1be7c --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,23 @@ +[program:async_worker] +command=php bin/console messenger:consume async_high_priority async -v --limit 10 +numprocs=5 +autostart=true +autorestart=true +process_name=%(program_name)s_%(process_num)02d +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +startsecs = 0 + +[program:game_schedule_worker] +command=php bin/console messenger:consume scheduler_game -v --limit 10 +numprocs=1 +autostart=true +autorestart=true +process_name=%(program_name)s_%(process_num)02d +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +startsecs = 0 + +[supervisord] +nodaemon=true +logfile=/var/log/supervisord/supervisord.log diff --git a/symfony.lock b/symfony.lock new file mode 100644 index 000000000..f4fdf97e4 --- /dev/null +++ b/symfony.lock @@ -0,0 +1,733 @@ +{ + "composer/pcre": { + "version": "3.0.0" + }, + "composer/semver": { + "version": "3.3.2" + }, + "composer/xdebug-handler": { + "version": "3.0.3" + }, + "doctrine/annotations": { + "version": "1.13", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.10", + "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" + } + }, + "doctrine/cache": { + "version": "2.1.1" + }, + "doctrine/collections": { + "version": "1.6.8" + }, + "doctrine/common": { + "version": "3.2.2" + }, + "doctrine/dbal": { + "version": "3.3.4" + }, + "doctrine/deprecations": { + "version": "v0.5.3" + }, + "doctrine/doctrine-bundle": { + "version": "2.6", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.4", + "ref": "ddddd8249dd55bbda16fa7a45bb7499ef6f8e90e" + }, + "files": [ + "config/packages/doctrine.yaml", + "src/Entity/.gitignore", + "src/Repository/.gitignore" + ] + }, + "doctrine/doctrine-fixtures-bundle": { + "version": "3.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, + "doctrine/doctrine-migrations-bundle": { + "version": "3.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.1", + "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818" + }, + "files": [ + "config/packages/doctrine_migrations.yaml", + "migrations/.gitignore" + ] + }, + "doctrine/event-manager": { + "version": "1.1.1" + }, + "doctrine/inflector": { + "version": "2.0.4" + }, + "doctrine/instantiator": { + "version": "1.4.1" + }, + "doctrine/lexer": { + "version": "1.2.3" + }, + "doctrine/migrations": { + "version": "3.4.1" + }, + "doctrine/orm": { + "version": "2.11.2" + }, + "doctrine/persistence": { + "version": "2.4.1" + }, + "doctrine/sql-formatter": { + "version": "1.1.2" + }, + "friendsofphp/php-cs-fixer": { + "version": "3.8", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.0", + "ref": "be2103eb4a20942e28a6dd87736669b757132435" + }, + "files": [ + ".php-cs-fixer.dist.php" + ] + }, + "friendsofphp/proxy-manager-lts": { + "version": "v1.0.7" + }, + "guzzlehttp/psr7": { + "version": "2.2.1" + }, + "jean85/pretty-package-versions": { + "version": "2.0.5" + }, + "laminas/laminas-code": { + "version": "4.5.1" + }, + "mixpanel/mixpanel-php": { + "version": "2.8", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "2.8", + "ref": "11d9b1125137cb0ddb519084f3884d4c5f72d6a1" + }, + "files": [ + "config/packages/mixpanel.yaml" + ] + }, + "monolog/monolog": { + "version": "2.5.0" + }, + "myclabs/deep-copy": { + "version": "1.11.0" + }, + "nikic/php-parser": { + "version": "v4.13.2" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.2.1" + }, + "php-cs-fixer/diff": { + "version": "v2.0.2" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.3.0" + }, + "phpdocumentor/type-resolver": { + "version": "1.6.1" + }, + "phpspec/prophecy": { + "version": "v1.15.0" + }, + "phpstan/phpstan": { + "version": "1.6.2" + }, + "phpunit/php-code-coverage": { + "version": "9.2.15" + }, + "phpunit/php-file-iterator": { + "version": "3.0.6" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "3.0.0" + }, + "psr/container": { + "version": "2.0.2" + }, + "psr/event-dispatcher": { + "version": "1.0.0" + }, + "psr/http-factory": { + "version": "1.0.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/log": { + "version": "3.0.0" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.4" + }, + "sebastian/exporter": { + "version": "4.0.4" + }, + "sebastian/global-state": { + "version": "5.0.5" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "3.0.0" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "sentry/sdk": { + "version": "3.1.1" + }, + "sentry/sentry": { + "version": "3.4.0" + }, + "sentry/sentry-symfony": { + "version": "4.2", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "3.0", + "ref": "9746f0823302d7980e5273ef7a69ef3f5ac80914" + }, + "files": [ + "config/packages/sentry.yaml" + ] + }, + "squizlabs/php_codesniffer": { + "version": "3.6", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + }, + "files": [ + "phpcs.xml.dist" + ] + }, + "symfony/amqp-messenger": { + "version": "v6.0.7" + }, + "symfony/asset": { + "version": "v6.0.1" + }, + "symfony/asset-mapper": { + "version": "6.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.4", + "ref": "5ad1308aa756d58f999ffbe1540d1189f5d7d14a" + }, + "files": [ + "assets/app.js", + "assets/styles/app.css", + "config/packages/asset_mapper.yaml", + "importmap.php" + ] + }, + "symfony/cache": { + "version": "v6.0.2" + }, + "symfony/cache-contracts": { + "version": "v3.0.0" + }, + "symfony/config": { + "version": "v6.0.2" + }, + "symfony/console": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.3", + "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" + }, + "files": [ + "bin/console" + ] + }, + "symfony/debug-bundle": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.1", + "ref": "0ce7a032d344fb7b661cd25d31914cd703ad445b" + }, + "files": [ + "config/packages/dev/debug.yaml" + ] + }, + "symfony/dependency-injection": { + "version": "v6.0.2" + }, + "symfony/deprecation-contracts": { + "version": "v3.0.0" + }, + "symfony/doctrine-bridge": { + "version": "v6.0.7" + }, + "symfony/dotenv": { + "version": "v6.0.2" + }, + "symfony/error-handler": { + "version": "v6.0.2" + }, + "symfony/event-dispatcher": { + "version": "v6.0.2" + }, + "symfony/event-dispatcher-contracts": { + "version": "v3.0.0" + }, + "symfony/filesystem": { + "version": "v6.0.0" + }, + "symfony/finder": { + "version": "v6.0.2" + }, + "symfony/flex": { + "version": "2.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/form": { + "version": "7.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.2", + "ref": "7d86a6723f4a623f59e2bf966b6aad2fc461d36b" + }, + "files": [ + "config/packages/csrf.yaml" + ] + }, + "symfony/framework-bundle": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.4", + "ref": "d4131812e20853626928e73d3effef44014944c0" + }, + "files": [ + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/preload.php", + "config/routes/framework.yaml", + "config/services.yaml", + "public/index.php", + "src/Controller/.gitignore", + "src/Kernel.php" + ] + }, + "symfony/http-client": { + "version": "v6.0.2" + }, + "symfony/http-client-contracts": { + "version": "v3.0.0" + }, + "symfony/http-foundation": { + "version": "v6.0.2" + }, + "symfony/http-kernel": { + "version": "v6.0.2" + }, + "symfony/intl": { + "version": "v6.0.3" + }, + "symfony/mercure-bundle": { + "version": "0.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "0.3", + "ref": "528285147494380298f8f991ee8c47abebaf79db" + }, + "files": [ + "config/packages/mercure.yaml" + ] + }, + "symfony/messenger": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "25e3c964d3aee480b3acc3114ffb7940c89edfed" + }, + "files": [ + "config/packages/messenger.yaml" + ] + }, + "symfony/monolog-bridge": { + "version": "v6.0.3" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "213676c4ec929f046dfde5ea8e97625b81bc0578" + }, + "files": [ + "config/packages/monolog.yaml" + ] + }, + "symfony/options-resolver": { + "version": "v6.0.0" + }, + "symfony/password-hasher": { + "version": "v6.0.3" + }, + "symfony/phpunit-bridge": { + "version": "6.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "819d3d2ffa4590eba0b8f4f3e5e89415ee4e45c3" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-grapheme": { + "version": "v1.24.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.24.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.25.0" + }, + "symfony/polyfill-php81": { + "version": "v1.25.0" + }, + "symfony/polyfill-uuid": { + "version": "v1.25.0" + }, + "symfony/process": { + "version": "v6.0.8" + }, + "symfony/proxy-manager-bridge": { + "version": "v6.0.6" + }, + "symfony/psr-http-message-bridge": { + "version": "v2.1.2" + }, + "symfony/routing": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "6.0", + "ref": "ab9ad892b7bba7ac584f6dc2ccdb659d358c63c5" + }, + "files": [ + "config/packages/routing.yaml", + "config/routes.yaml" + ] + }, + "symfony/runtime": { + "version": "v6.0.0" + }, + "symfony/scheduler": { + "version": "7.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.2", + "ref": "caea3c928ee9e1b21288fd76aef36f16ea355515" + }, + "files": [ + "src/Schedule.php" + ] + }, + "symfony/security-bundle": { + "version": "6.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.4", + "ref": "2ae08430db28c8eb4476605894296c82a642028f" + }, + "files": [ + "config/packages/security.yaml", + "config/routes/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v6.0.3" + }, + "symfony/service-contracts": { + "version": "v3.0.0" + }, + "symfony/stimulus-bundle": { + "version": "2.19", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.13", + "ref": "6acd9ff4f7fd5626d2962109bd4ebab351d43c43" + }, + "files": [ + "assets/bootstrap.js", + "assets/controllers.json", + "assets/controllers/hello_controller.js" + ] + }, + "symfony/stopwatch": { + "version": "v6.0.0" + }, + "symfony/string": { + "version": "v6.0.2" + }, + "symfony/translation-contracts": { + "version": "v3.0.0" + }, + "symfony/twig-bridge": { + "version": "v6.0.2" + }, + "symfony/twig-bundle": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.4", + "ref": "bffbb8f1a849736e64006735afae730cb428b6ff" + }, + "files": [ + "config/packages/twig.yaml", + "templates/base.html.twig" + ] + }, + "symfony/uid": { + "version": "6.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.2", + "ref": "d294ad4add3e15d7eb1bae0221588ca89b38e558" + }, + "files": [ + "config/packages/uid.yaml" + ] + }, + "symfony/ux-live-component": { + "version": "2.24", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.6", + "ref": "73e69baf18f47740d6f58688c5464b10cdacae06" + }, + "files": [ + "config/routes/ux_live_component.yaml" + ] + }, + "symfony/ux-turbo": { + "version": "2.19", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.19", + "ref": "9dd2778a116b6e5e01e5e1582d03d5a9e82630de" + } + }, + "symfony/ux-twig-component": { + "version": "2.22", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.13", + "ref": "67814b5f9794798b885cec9d3f48631424449a01" + }, + "files": [ + "config/packages/twig_component.yaml" + ] + }, + "symfony/validator": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "c32cfd98f714894c4f128bb99aa2530c1227603c" + }, + "files": [ + "config/packages/validator.yaml" + ] + }, + "symfony/var-dumper": { + "version": "v6.0.2" + }, + "symfony/var-exporter": { + "version": "v6.0.0" + }, + "symfony/web-profiler-bundle": { + "version": "6.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" + }, + "files": [ + "config/packages/dev/web_profiler.yaml", + "config/packages/test/web_profiler.yaml", + "config/routes/dev/web_profiler.yaml" + ] + }, + "symfony/webpack-encore-bundle": { + "version": "1.14", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.10", + "ref": "2858aeed7e1d81a45365c049eb533cc8827e380b" + }, + "files": [ + "assets/app.js", + "assets/bootstrap.js", + "assets/controllers.json", + "assets/controllers/hello_controller.js", + "assets/styles/app.css", + "config/packages/webpack_encore.yaml", + "package.json", + "webpack.config.js" + ] + }, + "symfony/yaml": { + "version": "v6.0.2" + }, + "symfonycasts/tailwind-bundle": { + "version": "v0.6.1" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "twig/extra-bundle": { + "version": "v3.3.8" + }, + "twig/intl-extra": { + "version": "v3.3.5" + }, + "twig/twig": { + "version": "v3.3.10" + }, + "webmozart/assert": { + "version": "1.10.0" + }, + "zenstruck/foundry": { + "version": "1.33", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.10", + "ref": "37c2f894cc098ab4c08874b80cccc8e2f8de7976" + }, + "files": [ + "config/packages/zenstruck_foundry.yaml" + ] + } +} diff --git a/system/Classes/Container/Alert.php b/system/Classes/Container/Alert.php deleted file mode 100644 index ece68ee12..000000000 --- a/system/Classes/Container/Alert.php +++ /dev/null @@ -1,70 +0,0 @@ -alerts[] = array($message, $type); - return $this->size() - 1; - } - - public function clear() { - $this->alerts = array(); - } - - /** - * @return int - */ - public function size() { - return count($this->alerts); - } - - /** - * @param int $position - * @return array|boolean - */ - public function get($position) { - if (isset($this->alerts[$position])) { - return $this->alerts[$position]; - } - return false; - } - - /** - * @param string $tag - * @param string $type - * @return string - */ - public function getAlerts($tag, $type = ALERT_DEFAULT) { - $format = ''; - foreach ($this->alerts as $k) { - if ($type != ALERT_DEFAULT AND $type = $k[1]) { - $format .= '<' . $tag . ' class="alert_' . $k[1] . '">' . $k[0] . ''; - } - } - return $format; - } - - /** - * @param string $path - * @param boolean $date - * @param array $supp - */ - public function logAlerts($path, $date = TRUE, $supp = array()) { - # TODO - } - - public function readUrl() { - if (isset($_GET['say'])) { - $this->alerts[] = array($_GET['say'], ALERT_URL_INFO); - } - } -} \ No newline at end of file diff --git a/system/Classes/Container/ArrayList.php b/system/Classes/Container/ArrayList.php deleted file mode 100644 index 2293d7a30..000000000 --- a/system/Classes/Container/ArrayList.php +++ /dev/null @@ -1,66 +0,0 @@ -elements); - } - - /** - * @param string $key - * @return mixed - */ - public function get($key) { - if (isset($this->elements[$key])) { - return $this->elements[$key]; - } - return null; - } - - /** - * @param string $key - * @return boolean - */ - public function exist($key) { - return isset($this->elements[$key]); - } - - /** - * @param string $key - * @param mixed $value - * @return boolean - */ - public function equal($key, $value) { - return (($this->exist($key) && $this->get($key) == $value)); - } - - /** - * @param string $key - * @param mixed $value - */ - public function add($key, $value) { - $this->elements[$key] = $value; - } - - /** - * @param string $key - * @return boolean - */ - public function remove($key) { - if (isset($this->elements[$key])) { - unset($this->elements[$key]); - } - return false; - } - - public function clear() { - $this->elements = array(); - } -} \ No newline at end of file diff --git a/system/Classes/Container/Cookie.php b/system/Classes/Container/Cookie.php deleted file mode 100644 index bf4f40ae0..000000000 --- a/system/Classes/Container/Cookie.php +++ /dev/null @@ -1,64 +0,0 @@ -elements[$key] = $value; - - if ($new === true) { - $this->newElements[$key] = $value; - } - } - - /** - * @param string $key - * @return mixed - */ - public function get($key, $default = null) { - if (isset($this->elements[$key])) { - return $this->elements[$key]; - } - return $default; - } - - /** - * @param string $key - * @return boolean - */ - public function remove($key) { - if (!isset($this->elements[$key])) { - return false; - } - unset($this->elements[$key]); - } - - public function clear() { - $this->elements = array(); - } - - /** - * @return array - */ - public function all() - { - return $this->elements; - } - - /** - * @return array - */ - public function getNewElements() - { - return $this->newElements; - } -} \ No newline at end of file diff --git a/system/Classes/Container/EventList.php b/system/Classes/Container/EventList.php deleted file mode 100644 index d3c363488..000000000 --- a/system/Classes/Container/EventList.php +++ /dev/null @@ -1,106 +0,0 @@ -events); - } - - /** - * @param int $index - * @return ArrayList - */ - public function get($index = 0) { - if (isset($this->events[$index])) { - return $this->events[$index]; - } - return null; - } - - /** - * @param string $date - * @return \Asylamba\Classes\Container\StackList - */ - public function getPastEvents($date) { - $past = new StackList(); - foreach($this->events AS $e) { - if ($e->get('date') <= $date) { - $past->append($e); - } - } - return $past; - } - - /** - * @param string $date - */ - public function clearPastEvents($date) { - $size = $this->size() - 1; - for ($i = $size; $i >= 0; $i--) { - if ($this->events[$i]->get('date') <= $date) { - $this->remove($i); - $i--; - } - } - } - - /** - * @param string $date - * @param string $eventType - * @param string $eventId - * @param string $eventInfo - */ - public function add($date, $eventType, $eventId, $eventInfo = NULL) { - $event = new ArrayList(); - $event->add('date', $date); - $event->add('eventType', $eventType); - $event->add('eventId', $eventId); - $event->add('eventInfo', $eventInfo); - - $index = 0; - $found = FALSE; - foreach($this->events AS $e) { - if ($e->get('date') > $date) { - $found = TRUE; - break; - } - $index++; - } - if ($found) { - $begin = array_slice($this->events, 0, $index); - $begin[] = $event; - $end = array_slice($this->events, $index); - $this->events = array_merge($begin, $end); - } else { - $this->events[] = $event; - } - } - - /** - * @param int $index - * @return boolean - */ - public function remove($index) { - if ($index < 0) { - $index = count($this->events) + $index; - } - if (!isset($this->events[$index])) { - return false; - } - $begin = array_slice($this->events, 0, $index); - $end = array_slice($this->events, $index+1); - $this->events = array_merge($begin, $end); - } - - public function clear() { - $this->events = array(); - } -} \ No newline at end of file diff --git a/system/Classes/Container/History.php b/system/Classes/Container/History.php deleted file mode 100644 index 0a9e8dd6e..000000000 --- a/system/Classes/Container/History.php +++ /dev/null @@ -1,41 +0,0 @@ -events, $path); - if (count($this->events) > self::MAX_SIZE) { - $this->events = array_slice($this->events, 0, self::MAX_SIZE); - } - } - - /** - * @return string - */ - public function getCurrentPath() { - return $this->events[0]; - } - - /** - * @param int $larger - * @return string - */ - public function getPastPath($larger = 0) { - if (isset($this->events[$larger])) { - return $this->events[$larger]; - } - } - - public function clear() { - $this->events = array(); - } -} \ No newline at end of file diff --git a/system/Classes/Container/Params.php b/system/Classes/Container/Params.php deleted file mode 100644 index e44c4aec7..000000000 --- a/system/Classes/Container/Params.php +++ /dev/null @@ -1,35 +0,0 @@ - true, - self::SHOW_MAP_MINIMAP => true, - self::SHOW_MAP_RC => true, - self::SHOW_MAP_ANTISPY => true, - self::SHOW_MAP_FLEETOUT => true, - self::SHOW_MAP_FLEETIN => true, - self::SHOW_ATTACK_REPORT=> true, - self::SHOW_REBEL_REPORT => true, - self::REDIRECT_CHAT => false, - ]; - - /** - * @return array - */ - public static function getParams() { - return self::$params; - } -} diff --git a/system/Classes/Container/StackList.php b/system/Classes/Container/StackList.php deleted file mode 100644 index 6a833de49..000000000 --- a/system/Classes/Container/StackList.php +++ /dev/null @@ -1,103 +0,0 @@ -elements); - } - - /** - * @param int $index - * @return mixed - */ - public function get($index = 0) { - if (isset($this->elements[$index])) { - return $this->elements[$index]; - } - return NULL; - } - - /** - * @param int $index - * @return boolean - */ - public function exist($index) { - return (isset($this->elements[$index])); - } - - /** - * @param string $key - * @param mixed $value - */ - public function add($key, $value) { - $this->elements[$key] = $value; - } - - /** - * @param string $key - * @param mixed $value - */ - public function increase($key, $value) { - $this->elements[$key] = - (isset($this->elements[$key])) - ? $this->elements[$key] + $value - : $value - ; - } - - /** - * @param string $key - * @param mixed $value - */ - public function insert($key, $value) { - if (count($this->elements) < $key) { - $this->elements[$key] = $value; - } else { - // décalage des tous les index qui suivent - $begin = array_slice($this->elements, 0, $key); - $begin[] = $value; - $end = array_slice($this->elements, $key); - $this->elements = array_merge($begin, $end); - } - } - - /** - * @param mixed $element - */ - public function append($value) { - $this->elements[] = $value; - } - - /** - * @param mixed $value - */ - public function prepend($value) { - array_unshift($this->elements, $value); - } - - /** - * @param int $index - */ - public function remove($index) { - if ($index < 0) { - $index = count($this->elements) + $index; - } - if (!isset($this->elements[$index])) { - return false; - } - $begin = array_slice($this->elements, 0, $index); - $end = array_slice($this->elements, $index+1); - $this->elements = array_merge($begin, $end); - } - - public function clear() { - $this->elements = array(); - } -} diff --git a/system/Classes/Daemon/Client.php b/system/Classes/Daemon/Client.php deleted file mode 100644 index e32a26686..000000000 --- a/system/Classes/Daemon/Client.php +++ /dev/null @@ -1,91 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param \DateTime $lastConnectedAt - * @return \Asylamba\Classes\Daemon\Client - */ - public function setLastConnectedAt(\DateTime $lastConnectedAt) - { - $this->lastConnectedAt = $lastConnectedAt; - - return $this; - } - - /** - * @return \DateTime - */ - public function getLastConnectedAt() - { - return $this->lastConnectedAt; - } - - /** - * @param boolean $isFirstConnection - * @return $this - */ - public function setIsFirstConnection($isFirstConnection) - { - $this->isFirstConnection = $isFirstConnection; - - return $this; - } - - /** - * @return boolean - */ - public function getIsFirstConnection() - { - return $this->isFirstConnection; - } - - /** - * @param int $playerId - * @return Client - */ - public function setPlayerId($playerId) - { - $this->playerId = $playerId; - - return $this; - } - - /** - * @return int - */ - public function getPlayerId() - { - return $this->playerId; - } -} \ No newline at end of file diff --git a/system/Classes/Daemon/ClientManager.php b/system/Classes/Daemon/ClientManager.php deleted file mode 100644 index 0b5f99458..000000000 --- a/system/Classes/Daemon/ClientManager.php +++ /dev/null @@ -1,143 +0,0 @@ -redisManager = $redisManager; - $this->sessionWrapper = $sessionWrapper; - $this->sessionLifetime = $sessionLifetime; - } - - /** - * @return array - */ - public function getClients() - { - return $this->clients; - } - - /** - * @param Request $request - * @return Client - */ - public function getClient(Request $request) - { - if (!$request->cookies->exist('session_id')) { - return null; - } - $sessionId = $request->cookies->get('session_id'); - if (!isset($this->clients[$sessionId])) { - return null; - } - $client = $this->clients[$sessionId]; - $client->setIsFirstConnection(false); - $client->setLastConnectedAt(new \DateTime()); - if (($session = $this->sessionWrapper->fetchSession($sessionId)) === null) { - return null; - } - $this->sessionWrapper->setCurrentSession($session); - return $client; - } - - /** - * @param Request $request - * @return Client - */ - public function createClient(Request $request) - { - $client = - (new Client()) - ->setId($this->generateClientId()) - ->setIsFirstConnection(true) - ->setLastConnectedAt(new \DateTime()) - ; - $this->clients[$client->getId()] = $client; - $this->sessionWrapper->setCurrentSession($this->sessionWrapper->createSession($client->getId())); - return $client; - } - - /** - * @param string $sessionId - * @param int $playerId - */ - public function bindPlayerId($sessionId, $playerId) - { - $this->clients[$sessionId]->setPlayerId($playerId); - - $this->redisManager->getConnection()->set('player:' . $playerId, $sessionId); - } - - /** - * @param int $playerId - * @return Session - */ - public function getSessionByPlayerId($playerId) - { - if (($sessionId = $this->redisManager->getConnection()->get('player:' . $playerId)) === false) { - return null; - } - return $this->sessionWrapper->fetchSession($sessionId); - } - - /** - * @return string - */ - protected function generateClientId() - { - do { - $id = uniqid(); - } while (isset($this->clients[$id])); - - return $id; - } - - /** - * @param int $clientId - * @return boolean - */ - public function removeClient($clientId) - { - if (!isset($this->clients[$clientId])) { - return false; - } - $this->redisManager->getConnection()->delete('player:' . $this->clients[$clientId]->getPlayerId()); - unset($this->clients[$clientId]); - return true; - } - - public function clear() - { - $limitDatetime = (new \DateTime("-{$this->sessionLifetime} seconds")); - - foreach ($this->clients as $client) - { - if ($client->getLastConnectedAt() < $limitDatetime) { - $this->removeClient($client->getId()); - } - } - } -} \ No newline at end of file diff --git a/system/Classes/Daemon/Server.php b/system/Classes/Daemon/Server.php deleted file mode 100644 index 24eff0b33..000000000 --- a/system/Classes/Daemon/Server.php +++ /dev/null @@ -1,173 +0,0 @@ -container->get(EntityManager::class)->clear(); - - /** @var Manager $manager */ - foreach($this->statefulManagers as $manager) { - $manager->save(); - $manager->clean(); - } - } - - public function shutdown(): void - { - $this->shutdown = true; - foreach($this->inputs as $input) { - fclose($input); - } - foreach($this->outputs as $output) { - fclose($output); - } - } - - public function createHttpServer(): void - { - $stream = stream_socket_server("tcp://0.0.0.0:{$this->port}", $errno, $errstr); - if (!$stream) { - throw new ErrorException("$errstr ($errno)"); - } - $this->inputs['http_server'] = $stream; - } - - public function listen() - { - $inputs = $this->inputs; - $outputs = $this->outputs; - $errors = null; - \gc_disable(); - while ($this->shutdown === false && ($nbUpgradedStreams = \stream_select($inputs, $outputs, $errors, $this->serverCycleTimeout)) !== false) { - if ($nbUpgradedStreams === 0) { - $this->prepareStreamsState($inputs, $outputs, $errors); - continue; - } - foreach ($inputs as $stream) { - $name = \array_search($stream, $this->inputs); - if ($name === 'http_server') { - $this->treatHttpInput(\stream_socket_accept($stream)); - } - } - $this->prepareStreamsState($inputs, $outputs, $errors); - } - } - - protected function treatHttpInput($input) - { - $client = $request = $response = null; - try { - $data = \fread($input, 8192); - if (empty($data)) { - \fclose($input); - return; - } - $request = $this->requestFactory->createRequestFromInput($data); - $this->container->set('app.request', $request); - if (($client = $this->clientManager->getClient($request)) === null) { - $client = $this->clientManager->createClient($request); - } - $response = $this->router->processRequest($request); - $this->container->set('app.response', $response); - $this->responseFactory->processResponse($request, $response, $client); - } catch (\Throwable $ex) { - $this->eventDispatcher->dispatch($event = new ExceptionEvent($request, $ex)); - $response = $event->getResponse(); - $this->responseFactory->processResponse($request, $response, $client); - } finally { - // @TODO Needs further investigation - if ($response !== null) { - \fputs($input, $response->send()); - \fclose($input); - } - $this->nbUncollectedCycles++; - $this->container->get(SessionWrapper::class)->clearWrapper(); - } - } - - protected function prepareStreamsState(array &$inputs, array &$outputs, ?array &$errors) - { - $this->cleanApplication(); - - $inputs = $this->inputs; - $outputs = $this->outputs; - $errors = null; - - $this->cyclicActionScheduler->execute(); - - if ($this->nbUncollectedCycles > $this->collectionCyclesNumber) { - $this->container->get(Database::class)->refresh(); - $this->clientManager->clear(); - \gc_collect_cycles(); - $this->nbUncollectedCycles = 0; - } - } - - /** - * @param resource $input - */ - public function addInput(string $name, $input): void - { - $this->inputs[$name] = $input; - } - - /** - * @param resource $output - */ - public function addOutput(string $name, $output): void - { - $this->outputs[$name] = $output; - } - - public function removeInput(string $name): void - { - unset($this->inputs[$name]); - } - - public function removeOutput($name): void - { - unset($this->outputs[$name]); - } -} diff --git a/system/Classes/Database/Database.php b/system/Classes/Database/Database.php deleted file mode 100644 index c77d5517f..000000000 --- a/system/Classes/Database/Database.php +++ /dev/null @@ -1,100 +0,0 @@ -refresh(); - } - - public static function getNbrOfQuery(): int - { - return self::$nbrOfQuery; - } - - public function init($dumpFile) - { - $statement = $this->query("SHOW TABLES FROM {$this->name}"); - if ($statement->fetch() !== false) { - return; - } - $this->execute(file_get_contents($dumpFile)); - } - - public function refresh() - { - try { - // Close previous connection - $this->connection = null; - $this->connection = new \PDO( - "mysql:dbname={$this->name};host={$this->host};charset=utf8", - $this->user, - $this->password, - [ - \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, - \PDO::ATTR_EMULATE_PREPARES => false, - \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC - ] - ); - } catch (\PDOException $e) { - die('Erreur de connection à la base de données : ' . $e->getMessage()); - } - } - - public function beginTransaction(): bool - { - return $this->connection->beginTransaction(); - } - - public function inTransaction(): bool - { - return $this->connection->inTransaction(); - } - - public function commit(): bool - { - return $this->connection->commit(); - } - - public function rollBack(): bool - { - return $this->connection->rollBack(); - } - - public function query($query) { - self::$nbrOfQuery++; - return $this->connection->query($query); - } - - public function prepare($query) { - self::$nbrOfQuery++; - return $this->connection->prepare($query); - } - - public function exec($query) - { - self::$nbrOfQuery++; - return $this->connection->exec($query); - } - - public function execute($query) { - return $this->connection->exec($query); - } - - public function lastInsertId() { - return $this->connection->lastInsertId(); - } - - public function quote($query) { - return $this->connection->quote($query); - } -} diff --git a/system/Classes/Database/DatabaseAdmin.php b/system/Classes/Database/DatabaseAdmin.php deleted file mode 100644 index a4633e711..000000000 --- a/system/Classes/Database/DatabaseAdmin.php +++ /dev/null @@ -1,52 +0,0 @@ -connection = new \PDO("mysql:dbname=$name;host=$host;charset=utf8", $user, $password, [ - \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, - \PDO::ATTR_EMULATE_PREPARES => true - ]); - } catch (\PDOException $e) { - die('Erreur de connection à la base de données : ' . $e->getMessage()); - } - } - - public function query($query) { - self::$nbrOfQuery++; - return $this->connection->query($query); - } - - public function prepare($query) { - self::$nbrOfQuery++; - return $this->connection->prepare($query); - } - - public function execute($query) { - return $this->connection->exec($query); - } - - public function lastInsertId() { - return $this->connection->lastInsertId(); - } - - public function quote($query) { - return $this->connection->quote($query); - } -} diff --git a/system/Classes/Entity/AbstractRepository.php b/system/Classes/Entity/AbstractRepository.php deleted file mode 100644 index 45fc7d3ba..000000000 --- a/system/Classes/Entity/AbstractRepository.php +++ /dev/null @@ -1,54 +0,0 @@ -connection = $connection; - $this->unitOfWork = $unitOfWork; - } - - /** - * @param object $entity - */ - abstract public function insert($entity); - - /** - * @param object $entity - */ - abstract public function update($entity); - - /** - * @param object $entity - */ - abstract public function remove($entity); - - /** - * @param array $orderBy - * @return string - */ - protected function getOrderByClause($orderBy = []) - { - if(empty($orderBy)) { - return; - } - $clause = 'ORDER BY '; - foreach ($orderBy as $column => $order) { - $clause .= "$column $order,"; - } - return substr($clause, 0, -1); - } -} \ No newline at end of file diff --git a/system/Classes/Entity/EntityManager.php b/system/Classes/Entity/EntityManager.php deleted file mode 100644 index ab37db101..000000000 --- a/system/Classes/Entity/EntityManager.php +++ /dev/null @@ -1,100 +0,0 @@ -connection = $connection; - } - - public function init() - { - $this->unitOfWork = new UnitOfWork($this); - } - - public function beginTransaction(): bool - { - return $this->connection->beginTransaction(); - } - - public function inTransaction(): bool - { - return $this->connection->inTransaction(); - } - - public function commit(): bool - { - return $this->connection->commit(); - } - - public function rollBack(): bool - { - return $this->connection->rollBack(); - } - - public function getRepository(string $entityClass): AbstractRepository - { - if (!isset($this->repositories[$entityClass])) { - $repositoryClass = str_replace('Model', 'Repository', $entityClass) . 'Repository'; - $this->repositories[$entityClass] = new $repositoryClass($this->connection, $this->unitOfWork); - } - return $this->repositories[$entityClass]; - } - - public function persist(object $entity): void - { - $this->unitOfWork->addObject($entity, UnitOfWork::METADATA_STAGED); - } - - public function remove(object $entity): void - { - $this->unitOfWork->removeObject($entity); - } - - public function flush(mixed $entity = null): void - { - switch(gettype($entity)) { - case 'NULL': - $this->unitOfWork->flushAll(); - break; - case 'string': - $this->unitOfWork->flushEntity($entity); - break; - case 'object': - $className = get_class($entity); - $this->unitOfWork->flushObject($this->getRepository($className), $className, $entity); - break; - } - } - - public function clear(mixed $entity = null): void - { - switch(gettype($entity)) { - case 'NULL': - $this->unitOfWork->clearAll(); - break; - case 'string': - $this->unitOfWork->clearEntity($entity); - break; - case 'object': - $this->unitOfWork->clearObject($entity); - break; - } - } - - public function getUnitOfWork(): UnitOfWork - { - return $this->unitOfWork; - } - - public function getConnection(): Connection - { - return $this->connection; - } -} diff --git a/system/Classes/Entity/UnitOfWork.php b/system/Classes/Entity/UnitOfWork.php deleted file mode 100644 index 13294ca3c..000000000 --- a/system/Classes/Entity/UnitOfWork.php +++ /dev/null @@ -1,135 +0,0 @@ -entityManager = $entityManager; - } - - public function addObject($object, $state = self::METADATA_PERSISTED) - { - $identifier = ($object->getId() !== null) ? (int) $object->getId() : spl_object_hash($object); - - $this->entities[get_class($object)][$identifier] = [ - 'state' => $state, - 'instance' => $object - ]; - } - - public function hasObject($object) - { - return isset($this->entities[get_class($object)][(int) $object->getId()]); - } - - public function getObject($entityClass, $id) - { - if (!isset($this->entities[$entityClass][(int) $id])) { - return null; - } - return $this->entities[$entityClass][(int) $id]['instance']; - } - - /** - * @param object $object - */ - public function removeObject($object) - { - if (!isset($this->entities[get_class($object)][$object->getId()]['instance'])) { - return; - } - $this->entities[get_class($object)][$object->getId()]['state'] = self::METADATA_REMOVED; - } - - public function flushAll() - { - foreach (array_keys($this->entities) as $entityClass) { - $this->flushEntity($entityClass); - } - } - - /** - * @param string $entityClass - */ - public function flushEntity($entityClass) - { - // If the entity was never persisted, just return - if (!isset($this->entities[$entityClass])) { - return; - } - $repository = $this->entityManager->getRepository($entityClass); - foreach ($this->entities[$entityClass] as $entity) { - $this->flushObject($repository, $entityClass, $entity['instance']); - } - } - - /** - * @param AbstractRepository $repository - * @param string $className - * @param object $object - */ - public function flushObject(AbstractRepository $repository, $className, $object) - { - $identifier = ($object->getId() !== null) ? $object->getId() : spl_object_hash($object); - if (!isset($this->entities[$className][$identifier])) { - return false; - } - switch($this->entities[$className][$identifier]['state']) { - case self::METADATA_STAGED: - $repository->insert($object); - unset($this->entities[$className][$identifier]); - $this->entities[$className][(int) $object->getId()] = [ - 'state' => self::METADATA_PERSISTED, - 'instance' => $object - ]; - break; - case self::METADATA_PERSISTED: $repository->update($object); break; - case self::METADATA_REMOVED: - $repository->remove($object); - unset($this->entities[$className][$identifier]); - break; - } - } - - public function clearAll() - { - $this->entities = []; - } - - /** - * @param string $entityClass - */ - public function clearEntity($entityClass) - { - unset($this->entities[$entityClass]); - } - - /** - * @param object $object - */ - public function clearObject($object) - { - $className = get_class($object); - // It is not mandatory to test the existence of the object SPL hash in the stack - // the unset function won't cause errors if it does not exist - if(isset($this->entities[$className])) { - unset($this->entities[$className][spl_object_hash($object)]); - } - } -} \ No newline at end of file diff --git a/system/Classes/Event/ErrorEvent.php b/system/Classes/Event/ErrorEvent.php deleted file mode 100644 index 7b75862c5..000000000 --- a/system/Classes/Event/ErrorEvent.php +++ /dev/null @@ -1,62 +0,0 @@ -request = $request; - $this->error = $error; - } - - /** - * @return Request - */ - public function getRequest() - { - return $this->request; - } - - /** - * @return \Error - */ - public function getError() - { - return $this->error; - } - - /** - * @param Response $response - * @return \Asylamba\Classes\Event\ErrorEvent - */ - public function setResponse(Response $response) - { - $this->response = $response; - - return $this; - } - - /** - * @return Response - */ - public function getResponse() - { - return $this->response; - } -} \ No newline at end of file diff --git a/system/Classes/Event/ExceptionEvent.php b/system/Classes/Event/ExceptionEvent.php deleted file mode 100644 index 49ea1ff12..000000000 --- a/system/Classes/Event/ExceptionEvent.php +++ /dev/null @@ -1,35 +0,0 @@ -request; - } - - public function getThrowable(): \Throwable - { - return $this->throwable; - } - - public function setResponse(Response $response): void - { - $this->response = $response; - } - - public function getResponse(): Response - { - return $this->response; - } -} diff --git a/system/Classes/Event/ServerInitEvent.php b/system/Classes/Event/ServerInitEvent.php deleted file mode 100644 index 2831688e0..000000000 --- a/system/Classes/Event/ServerInitEvent.php +++ /dev/null @@ -1,8 +0,0 @@ -amqpConnection->setup(); - $this->amqpConnection->purgeQueues(); - - $this->logger->info('AMQP queues have been setup'); - } -} diff --git a/system/Classes/EventListener/SchedulerInitListener.php b/system/Classes/EventListener/SchedulerInitListener.php deleted file mode 100644 index eab5241c0..000000000 --- a/system/Classes/EventListener/SchedulerInitListener.php +++ /dev/null @@ -1,45 +0,0 @@ -logger->info('Scheduling planned tasks'); - - $this->commanderManager->scheduleMovements(); - $this->buildingQueueManager->scheduleActions(); - $this->commercialShippingManager->scheduleShippings(); - $this->recyclingMissionManager->scheduleMissions(); - $this->shipQueueManager->scheduleActions(); - $this->technologyQueueManager->scheduleQueues(); - $this->factionManager->scheduleSenateUpdate(); - $this->factionManager->scheduleCampaigns(); - $this->factionManager->scheduleElections(); - $this->factionManager->scheduleBallot(); - } -} diff --git a/system/Classes/EventSubscriber/ExceptionSubscriber.php b/system/Classes/EventSubscriber/ExceptionSubscriber.php deleted file mode 100644 index 01f6871d5..000000000 --- a/system/Classes/EventSubscriber/ExceptionSubscriber.php +++ /dev/null @@ -1,146 +0,0 @@ - [ - ['onCoreException'], - ], - WorkerMessageFailedEvent::class => [ - ['onWorkerException'], - ], - ]; - } - - public function onCoreException(ExceptionEvent $event): void - { - $exception = $event->getThrowable(); - - \Sentry\captureException($exception); - - $this->process( - $event, - $exception->getMessage(), - $exception->getFile(), - $exception->getLine(), - ($exception instanceof FormException) ? '' : $exception->getTraceAsString(), - LogLevel::ERROR, - ($exception instanceof FormException) ? Flashbag::TYPE_FORM_ERROR : Flashbag::TYPE_STD_ERROR, - ($exception instanceof FormException) ? $exception->getRedirect() : null - ); - } - - public function onWorkerException(WorkerMessageFailedEvent $event): void - { - $throwable = $event->getThrowable(); - - \Sentry\captureException($throwable); - - $this->logger->log( - LogLevel::CRITICAL, - 'Handler failed to execute: {message} at {file}.l{line}. Trace: {trace}', - [ - 'message' => $throwable->getMessage(), - 'file' => $throwable->getFile(), - 'line' => $throwable->getLine(), - ], - ); - - if ($this->database->inTransaction()) { - $this->database->rollBack(); - } - } - - /** - * @param $event - * @param string $message - * @param string $file - * @param int $line - * @param string $trace - * @param string $level - * @param int $flashbagLevel - */ - public function process($event, $message, $file, $line, $trace, $level, $flashbagLevel, $redirect = null) - { - $request = $event->getRequest(); - $this->logger->log($level, $message, [ - 'request' => [ - 'method' => $request->getMethod(), - 'path' => $request->getPath(), - 'body' => $request->body - ], - 'session' => [ - 'player_id' => $this->sessionWrapper->get('playerId') - ], - 'file' => $file, - 'line' => $line - ]); - - $this->sessionWrapper->addFlashbag($message, $flashbagLevel); - - if ($this->database->inTransaction()) { - $this->database->rollBack(); - } - - $response = new Response(); - $redirectionData = $this->getRedirection($request, $redirect); - if (isset($redirectionData['redirect'])) { - $response->redirect($redirectionData['redirect']); - } else { - $response->setStatusCode(Response::STATUS_INTERNAL_SERVER_ERROR); - $response->addTemplate($redirectionData['template']); - } - $event->setResponse($response); - } - - /** - * @return array - */ - public function getRedirection(Request $request, string $redirect = null): array - { - if ($redirect !== null) { - return ['redirect' => $redirect]; - } - - $history = $this->sessionWrapper->getHistory(); - - if (($nbPaths = count($history)) === 0) { - return ['redirect' => '/']; - } - if (($redirect = '/' . $this->sessionWrapper->getLastHistory()) === $request->getPath()) { - // We get the path before the last one if available - $redirect = ($nbPaths > 1) ? $history[$nbPaths - 2] : '/'; - } - // In this case, it means the user is in an error loop - if ($nbPaths > 3 && $redirect === $history[$nbPaths - 4]) { - return [ - 'template' => $this->templatePath . 'fatal.php' - ]; - } - return ['redirect' => $redirect]; - } -} diff --git a/system/Classes/Exception/CriticalException.php b/system/Classes/Exception/CriticalException.php deleted file mode 100644 index 174189044..000000000 --- a/system/Classes/Exception/CriticalException.php +++ /dev/null @@ -1,7 +0,0 @@ -redirect = $redirect; - } - - public function getRedirect() - { - return $this->redirect; - } -} \ No newline at end of file diff --git a/system/Classes/Exception/RequestException.php b/system/Classes/Exception/RequestException.php deleted file mode 100644 index 9bb2f5d49..000000000 --- a/system/Classes/Exception/RequestException.php +++ /dev/null @@ -1,7 +0,0 @@ -container = $this->buildContainer(); - $this->container->compile(true); - $this->init(); - } - - public function init(): void - { - if (!empty($sentryDsn = $this->container->getParameter('sentry_dsn'))) { - $this->initSentry($sentryDsn); - } - $this->container->get(Database::class)->init($this->container->getParameter('root_path') . '/build/database/structure.sql'); - $this->container->get(EntityManager::class)->init(); - $this->container->get(CyclicActionScheduler::class)->init(); - $this->container->get(SectorManager::class)->initOwnershipData(); - - /** @var EventDispatcherInterface $eventDispatcher */ - $eventDispatcher = $this->container->get(EventDispatcherInterface::class); - $eventDispatcher->dispatch(new ServerInitEvent(), ServerInitEvent::NAME); - - $server = $this->container->get(Server::class); - $server->createHttpServer(); - $server->listen(); - } -} diff --git a/system/Classes/Kernel/Kernel.php b/system/Classes/Kernel/Kernel.php deleted file mode 100644 index 1355bd95f..000000000 --- a/system/Classes/Kernel/Kernel.php +++ /dev/null @@ -1,129 +0,0 @@ -set('container', $containerBuilder); - $containerBuilder->setParameter('root_path', $this->projectDir); - $this->buildEventDispatcher($containerBuilder); - - $this->loadEnvironment($containerBuilder); - - $loader = new YamlFileLoader($containerBuilder, new FileLocator($this->projectDir . '/config/')); - $loader->load('services.yml'); - - $this->buildMessenger($containerBuilder); - - $this->registerModules($containerBuilder); - $containerBuilder->registerForAutoconfiguration(Manager::class)->addTag('app.stateful_manager'); - - return $containerBuilder; - } - - protected function buildEventDispatcher(ContainerBuilder $containerBuilder): void - { - $containerBuilder->addCompilerPass(new RegisterListenersPass()); - $containerBuilder->register(EventDispatcherInterface::class, EventDispatcher::class); - $containerBuilder->setAlias('event_dispatcher', EventDispatcherInterface::class); - } - - protected function buildMessenger(ContainerBuilder $containerBuilder): void - { - $containerBuilder->addCompilerPass(new MessengerPass()); - - $enableLogs = $containerBuilder->resolveEnvPlaceholders($containerBuilder->getParameter('messenger_logs'), true); - - if (true === $enableLogs) { - return; - } - - $workerDefinition = $containerBuilder->getDefinition(Worker::class); - $workerDefinition->setArgument('$logger', null); - } - - protected function initSentry(string $dsn): void - { - \Sentry\init(['dsn' => $dsn]); - } - - protected function loadEnvironment(ContainerBuilder $container): void - { - foreach(explode(',', getenv('SYMFONY_DOTENV_VARS')) as $key) { - $container->setParameter(strtolower($key), getenv($key)); - } - } - - protected function registerModules(ContainerBuilder $containerBuilder): void - { - foreach ($this->getRegisteredModules() as $moduleClass) { - /** @var Module $module */ - $module = new $moduleClass(); - $module->configure($containerBuilder, $this->projectDir); - - $this->modules[strtolower($module->getName())] = $module; - } - } - - protected function getRegisteredModules(): array - { - return [ - AresModule::class, - ArtemisModule::class, - AthenaModule::class, - AtlasModule::class, - DemeterModule::class, - GaiaModule::class, - HephaistosModule::class, - HermesModule::class, - PrometheeModule::class, - ZeusModule::class, - ]; - } - - public function getModules(): array - { - return $this->modules; - } - - public function getModule(string $name): Module - { - return $this->modules[$name]; - } - - public function getContainer(): ContainerBuilder - { - return $this->container; - } -} diff --git a/system/Classes/Kernel/KernelInterface.php b/system/Classes/Kernel/KernelInterface.php deleted file mode 100644 index 4a8ddd2d7..000000000 --- a/system/Classes/Kernel/KernelInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -container = $this->buildContainer(); - $this->container->setParameter('app.name', $this->name); - $this->container->compile(true); - $this->init(); - } - - public function init(): void - { - if (!empty($sentryDsn = $this->container->getParameter('sentry_dsn'))) { - $this->initSentry($sentryDsn); - } - $this->container->get(Database::class)->init($this->container->getParameter('root_path') . '/build/database/structure.sql'); - $this->container->get(EntityManager::class)->init(); - $this->container->get(Worker::class)->run(); - } -} diff --git a/system/Classes/Library/Benchmark.php b/system/Classes/Library/Benchmark.php deleted file mode 100644 index 72e722519..000000000 --- a/system/Classes/Library/Benchmark.php +++ /dev/null @@ -1,103 +0,0 @@ -start(); - } - } - - public function getTime($mode = 's', $precision = 3) { - if ($this->running) { $this->end(); } - return $this->formatTime($mode, $precision); - } - - public function getInterTime($mode = 's', $precision = 3) { - return $this->formatTime($mode, $precision); - } - - public function printTime($mode = 's', $precision = 3) { - if ($this->running) { $this->end(); } - echo $this->formatTime($mode, $precision) . '
'; - } - - public function printInterTime($mode = 's', $precision = 3) { - echo $this->formatTime($mode, $precision) . '
'; - } - - public function start() { - if (!$this->running) { - $this->bTime = $this->getMicrotime(); - $this->running = TRUE; - } else { - throw new \Exception('Benchmark object is currently running', 1); - } - } - - public function end() { - if ($this->running) { - $this->eTime = $this->getMicrotime(); - $this->rTime = $this->eTime - $this->bTime; - $this->running = FALSE; - } else { - throw new \Exception('Benchmark object is not running', 1); - } - } - - public function clear() { - $this->bTime = 0; - $this->eTime = 0; - $this->rTime = 0; - $this->running = FALSE; - $this->formatTime = 's'; - $this->precision = 3; - } - - protected function formatTime($mode, $precision) { - switch ($mode) { - case 'mcs': $formatTime = $this->rTime * 1000000; - break; - case 'mls': $formatTime = $this->rTime * 1000; - break; - case 's' : $formatTime = $this->rTime; - break; - case 'm' : $formatTime = $this->rTime / 60; - break; - case 'h' : $formatTime = $this->rTime / 360; - break; - default : throw new \Exception('Unknow return time format', 1); - } - - if ($precision < -10 OR $precision > 10) { - throw new \Exception('Out of range time precision', 1); - } - - $formatTime = round($formatTime, $precision); - return $formatTime; - } - - public static function getMicrotime() { - list($usec, $sec) = explode(' ', microtime()); - return ((float)$usec + (float)$sec); - } -} diff --git a/system/Classes/Library/Benchtime.php b/system/Classes/Library/Benchtime.php deleted file mode 100644 index ea793d689..000000000 --- a/system/Classes/Library/Benchtime.php +++ /dev/null @@ -1,91 +0,0 @@ -name = $name; - $this->makePoint('Start'); - } - - # démarre un nouveau temps - public function makePoint($name = FALSE) { - $this->time[] = array( - 'name' => ucfirst($name ? $name : 'Breakpoint'), - 'time' => $this->getMicrotime() - ); - } - - public function getResult($mode = FALSE) { - $interval = $this->transform(); - $mode = $mode ? $mode : self::HTML; - $ret = ''; - - if ($mode == self::TXT) { - $ret .= $this->name . "\r\n"; - $ret .= '-------------------' . "\r\n"; - $ret .= ' | time | name ' . "\r\n"; - $ret .= '---|-------|-------' . "\r\n"; - - foreach ($interval as $k => $v) { - $ret .= '#' . ($k + 1) . ' | ' . number_format($v['time'], 3, '.', ' ') . ' | ' . $v['name'] . "\r\n"; - } - } elseif ($mode == self::HTML) { - $ret .= '
'; - $ret .= ''; - $ret .= ''; - $ret .= ''; - $ret .= ''; - $ret .= ''; - - foreach ($interval as $k => $v) { - $ret .= ''; - $ret .= ''; - $ret .= ''; - $ret .= ''; - $ret .= ''; - } - $ret .= '
timename
#' . ($k + 1) . '' . number_format($v['time'], 3, '.', ' ') . '' . $v['name'] . '
'; - } elseif ($mode == self::PHP) { - $ret = $interval; - } - - return $ret; - } - - protected function transform() { - $interval = array(); - - for ($i = 1; $i < count($this->time); $i++) { - $interval[] = array( - 'name' => $this->time[$i]['name'], - 'time' => $this->time[$i]['time'] - $this->time[$i - 1]['time'] - ); - } - - return $interval; - } - - protected function getMicrotime() { - list($usec, $sec) = explode(' ', microtime()); - return ((float)$usec + (float)$sec); - } -} -?> diff --git a/system/Classes/Library/Bug.php b/system/Classes/Library/Bug.php deleted file mode 100644 index 5b2a776b7..000000000 --- a/system/Classes/Library/Bug.php +++ /dev/null @@ -1,49 +0,0 @@ -'; - var_export($data); - echo ''; - } - } - - // DONNE LE TEMPS ACTUEL EN MICROSECONDE - - private static $benchTime = 0; - - public static function benchTime() { - list($usec, $sec) = explode(' ', microtime()); - $ret = ((float)$usec + (float)$sec); - - if (self::$benchTime == 0) { - self::$benchTime = $ret; - } else { - self::$benchTime = $ret - self::$benchTime; - } - } - - public static function benchReturn($mode = '') { - $ret = self::$benchTime; - self::$benchTime = 0; - - if ($mode == 'ms') { - return floor($ret * 1000) . 'ms'; - } elseif ($mode == 'se') { - return $ret . 's'; - } - } - - public static function writeLog($target, $content) { - file_put_contents($target, $content . "\n\r", FILE_APPEND); - } -} diff --git a/system/Classes/Library/Chronos.php b/system/Classes/Library/Chronos.php deleted file mode 100644 index 4deec72ad..000000000 --- a/system/Classes/Library/Chronos.php +++ /dev/null @@ -1,106 +0,0 @@ - minutes - * : str 's' => secondes - */ - public static function getTimer($type) { - $ret = 60 - (date($type) + 1); - if ($ret < 10) { - $ret = '0' . $ret; - } - return (int) $ret; - } - - /* - * retourne le temps écoulé depuis le début du serveur - * arg : $type - * : str 'str' => strates - * : str 'seg' => segments - * : str 'rel' => relèves - * : str 'min' => minutes - * : str 'sec' => secondes - */ - public static function getDate($type) { - $now = time(); - $date = strtotime($_ENV['SERVER_START_TIME']); - $intr = $now - $date; - $rel = (floor($intr / 3600)) + ($_ENV['SEGMENT_SHIFT'] * Chronos::CO_SEG); - - if ($type == 'str') { - return floor($rel / Chronos::CO_STR); - } elseif ($type == 'seg') { - return floor($rel / Chronos::CO_SEG); - } elseif ($type == 'rel') { - $str = floor($rel / Chronos::CO_STR); - $seg = floor(($rel - ($str * Chronos::CO_STR)) / Chronos::CO_SEG); - return $rel - ($str * Chronos::CO_STR) - ($seg * Chronos::CO_SEG) ; - } - } - - private static function getRel($date) { - $origin = strtotime($_ENV['SERVER_START_TIME']); - $date = strtotime($date); - $intr = $date - $origin; - - return (floor($intr / 3600)) + ($_ENV['SEGMENT_SHIFT'] * Chronos::CO_SEG); - } - - /* - * transforme une date en temps de jeu - * arg : $date - * : str => date au format sql (2012-08-01 18:30:00) - */ - public static function transform($date) { - $date = new \DateTime($date); - - $releve = self::getRel($date->format('Y-m-d H:i:s')); - $segment = floor($releve / Chronos::CO_SEG); - $releve -= $segment * Chronos::CO_SEG; - - $return = 'SEG' . $segment . ' REL' . $releve; - $title = $date->format('j.m.Y à H:i:s'); - - return '' . $return . ''; - } - - public static function secondToFormat($seconds, $format = 'large') { - $return = ''; - $rel = floor($seconds / 3600); - $min = floor(($seconds - ($rel * 3600)) / 60); - $sec = $seconds - ($rel * 3600) - ($min * 60); - - if ($format == 'large') { - $return .= ($rel > 0) ? $rel . ' ' . Chronos::LN_REL . Format::addPlural($rel) . ', ' : ''; - $return .= ($min > 0) ? $min . ' ' . Chronos::LN_MIN . Format::addPlural($min) . ', ' : ''; - $return .= ($sec > 0) ? $sec . ' ' . Chronos::SN_SEC : ''; - } elseif ($format == 'short') { - $return .= $rel . ' ' . Chronos::SN_REL . Format::addPlural($rel) . ', ' . $min . ' ' . Chronos::SN_MIN . ', ' . $sec . ' ' . Chronos::SN_SEC; - } elseif ($format == 'lite') { - $min = ($min > 9) ? $min : '0' . $min; - $sec = ($sec > 9) ? $sec : '0' . $sec; - $return .= $rel . ':' . $min . ':' . $sec; - } - - return trim($return, ', '); - } -} diff --git a/system/Classes/Library/DataAnalysis.php b/system/Classes/Library/DataAnalysis.php deleted file mode 100644 index 9c0205c6c..000000000 --- a/system/Classes/Library/DataAnalysis.php +++ /dev/null @@ -1,14 +0,0 @@ - 0) ? $diff * 1000 : 0; - } -} diff --git a/system/Classes/Library/Flashbag.php b/system/Classes/Library/Flashbag.php deleted file mode 100644 index 6a5bdb8fd..000000000 --- a/system/Classes/Library/Flashbag.php +++ /dev/null @@ -1,65 +0,0 @@ -message = $message; - $this->type = $type; - } - - /** - * @return string - */ - public function getMessage() - { - return $this->message; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } -} \ No newline at end of file diff --git a/system/Classes/Library/Format.php b/system/Classes/Library/Format.php deleted file mode 100644 index 46118b582..000000000 --- a/system/Classes/Library/Format.php +++ /dev/null @@ -1,121 +0,0 @@ - nombre qui définit ou non le pluriel - * arg : $return * - * : str => retourne la chaine (ou s si non spécifié) si number est supérieur à 1 - * arg : - */ - public static function addPlural($number, $return = '', $expression = '') { - if ($number > 1) { - return ($expression == '' AND $return == '') - ? 's' - : $return; - } else { - return ($expression == '') - ? NULL - : $expression; - } - } - - public static function ordinalNumber($nbr) { - switch ($nbr) { - case 1: - return 'premier'; - case 2: - return 'deuxième'; - case 3: - return 'troisième'; - case 4: - return 'quatrième'; - case 5: - return 'cinquième'; - case 6: - return 'sixième'; - case 7: - return 'septième'; - default: - return $nbr . 'ème'; - } - } - - public static function plural($number, $return = '', $expression = '') { - return self::addPlural($number, $return, $expression); - } - - /* - * retourne un nombre formté - * - en mettant des espaces chaque milliers - * - en choisissant le nombre de chiffre après la virgule - * arg : $number - * : int => nombre à formater - * arg : $decimal * - * : int => nombre de chiffre après la virgule - */ - public static function numberFormat($number, $decimals = 0) { - return self::number($number, $decimals); - } - - public static function number($number, $decimals = 0) { - if ($decimals == -2 AND $number > 999999) { - return number_format(ceil($number / 1000000), $decimals, ',', ' ') . ' Mio'; - } elseif ($decimals <= -1 AND $number > 9999) { - return number_format(ceil($number / 1000), $decimals, ',', ' ') . ' k'; - } else { - return number_format($number, $decimals, ',', ' '); - } - } - - public static function percent($number, $base, $ceil = TRUE) { - return ($base == 0) - ? 0 - : ($ceil - ? ceil(($number / $base) * 100) - : ($number / $base) * 100 - ); - } - - public static function rankingFormat($number) { - if ($number == 1) { - return '1er'; - } else { - return $number . 'ème'; - } - } - - public static function actionBuilder($action, $token, $params = array(), $hasRoot = TRUE) { - $url = ''; - if ($hasRoot) { - // @TODO replace with app_root - $url .= '/'; - } - $url .= 'action/'; - $url .= 'a-' . $action . '/'; - - foreach ($params as $key => $value) { - $url .= $key . '-' . $value . '/'; - } - $url .= 'token-' . $token; - return $url; - } - - public static function paddingNumber($number, $size) { - $digits = strlen((string) $number); - - if ($digits < $size) { - for ($i = 0; $i < $size - $digits; $i++) { - $number = '0' . $number; - } - } - - return $number; - } -} diff --git a/system/Classes/Library/Game.php b/system/Classes/Library/Game.php deleted file mode 100644 index 5eae25b08..000000000 --- a/system/Classes/Library/Game.php +++ /dev/null @@ -1,431 +0,0 @@ - 0) { - return '⟨' . $sectorLocation . '⟩ ' . $xCoord . ':' . $yCoord . ':' . $planetPosition . ''; - } elseif ($planetPosition > 0) { - return $xCoord . ':' . $yCoord . ':' . $planetPosition; - } else { - return $xCoord . ':' . $yCoord; - } - } - - public static function resourceProduction($coeffRefinery, $coeffPlanet) { - return $coeffRefinery * $coeffPlanet; - } - - public static function getDistance($xa, $xb, $ya, $yb) { - $distance = floor((sqrt((($xa - $xb) * ($xa - $xb)) + (($ya - $yb) * ($ya - $yb))))); - return ($distance < 1) ? 1 : $distance; - } - - public static function getFleetSpeed($bonus) { - $b = $bonus != NULL - ? Commander::FLEETSPEED * (3 * ($bonus->get(PlayerBonus::SHIP_SPEED) / 100)) : 0; - return Commander::FLEETSPEED + $b; - } - - public static function getMaxTravelDistance($bonus) { - return Commander::DISTANCEMAX; - } - - public static function getTimeToTravelCommercial($startPlace, $destinationPlace, $bonus = NULL) { - return round(self::getTimeToTravel($startPlace, $destinationPlace, $bonus) * self::COMMERCIAL_TIME_TRAVEL); - } - - public static function getTimeToTravel($startPlace, $destinationPlace, $bonus = NULL) { - # $startPlace and $destinationPlace are instance of Place - return self::getTimeTravel( - $startPlace->getRSystem(), - $startPlace->getPosition(), - $startPlace->getXSystem(), - $startPlace->getYSystem(), - $destinationPlace->getRSystem(), - $destinationPlace->getPosition(), - $destinationPlace->getXSystem(), - $destinationPlace->getYSystem(), - $bonus - ); - } - - public static function getTimeTravelCommercial($systemFrom, $positionFrom, $xFrom, $yFrom, $systemTo, $positionTo, $xTo, $yTo, $bonus = NULL) { - return round(self::getTimeTravel($systemFrom, $positionFrom, $xFrom, $yFrom, $systemTo, $positionTo, $xTo, $yTo, $bonus) * self::COMMERCIAL_TIME_TRAVEL); - } - - public static function getTimeTravel($systemFrom, $positionFrom, $xFrom, $yFrom, $systemTo, $positionTo, $xTo, $yTo, $bonus = NULL) { - return $systemFrom == $systemTo - ? Game::getTimeTravelInSystem($positionFrom, $positionTo) - : Game::getTimeTravelOutOfSystem($bonus, $xFrom, $yFrom, $xTo, $yTo); - } - - public static function getTimeTravelInSystem($startPosition, $destinationPosition) { - $distance = abs($startPosition - $destinationPosition); - return round((Commander::COEFFMOVEINSYSTEM * $distance) * ((40 - $distance) / 50) + 180); - } - - public static function getTimeTravelOutOfSystem($bonus, $startX, $startY, $destinationX, $destinationY) { - $distance = self::getDistance($startX, $destinationX, $startY, $destinationY); - $time = Commander::COEFFMOVEOUTOFSYSTEM; - $time += round((Commander::COEFFMOVEINTERSYSTEM * $distance) / self::getFleetSpeed($bonus)); - return $time; - } - - public static function getRCPrice($distance) { - return $distance * CommercialRoute::COEF_PRICE; - } - - public static function getRCIncome($distance, $bonusA = 1, $bonusB = 1) { - $income = CommercialRoute::COEF_INCOME_2 * sqrt($distance * CommercialRoute::COEF_INCOME_1); - $maxIncome = CommercialRoute::COEF_INCOME_2 * sqrt(100 * CommercialRoute::COEF_INCOME_1); - if ($income > $maxIncome) { - $income = $maxIncome; - } - return round($income * $bonusA * $bonusB); - } - - public static function getTaxFromPopulation($population, $typeOfBase, $taxCoeff) { - $tax = ((180 * $population) + 1500) * $taxCoeff; - $tax *= PlaceResource::get($typeOfBase, 'tax'); - return $tax; - } - - public static function getAntiSpyRadius($investment, $mode = self::ANTISPY_DISPLAY_MODE) { - return $mode == self::ANTISPY_DISPLAY_MODE - # en pixels : sert à l'affichage - ? sqrt($investment / 3.14) * 20 - # en position du jeu (250x250) - : sqrt($investment / 3.14); - } - - public static function antiSpyArea($startPlace, $destinationPlace, $arrivalDate) { - # dans le même système - if ($startPlace->getRSystem() == $destinationPlace->getRSystem()) { - return self::ANTISPY_LITTLE_CIRCLE; - } else { - $duration = self::getTimeToTravel($startPlace, $destinationPlace); - - $secRemaining = strtotime($arrivalDate) - strtotime(Utils::now()); - $ratioRemaining = $secRemaining / $duration; - - $distance = self::getDistance($startPlace->getXSystem(), $destinationPlace->getXSystem(), $startPlace->getYSystem(), $destinationPlace->getYSystem()); - $distanceRemaining = $distance * $ratioRemaining; - - $antiSpyRadius = self::getAntiSpyRadius($destinationPlace->getAntiSpyInvest(), 1); - - if ($antiSpyRadius >= $distanceRemaining) { - if ($distanceRemaining < $antiSpyRadius / 3) { - return self::ANTISPY_LITTLE_CIRCLE; - } elseif ($distanceRemaining < $antiSpyRadius / 3 * 2) { - return self::ANTISPY_MIDDLE_CIRCLE; - } else { - return self::ANTISPY_BIG_CIRCLE; - } - } else { - return self::ANTISPY_OUT_OF_CIRCLE; - } - } - } - - public static function getAntiSpyEntryTime($startPlace, $destinationPlace, $arrivalDate) { - # dans le même système - if ($startPlace->getRSystem() == $destinationPlace->getRSystem()) { - return array(TRUE, TRUE, TRUE); - } else { - $duration = self::getTimeToTravel($startPlace, $destinationPlace); - - $secRemaining = strtotime($arrivalDate) - strtotime(Utils::now()); - $ratioRemaining = $secRemaining / $duration; - - $distance = self::getDistance($startPlace->getXSystem(), $destinationPlace->getXSystem(), $startPlace->getYSystem(), $destinationPlace->getYSystem()); - $distanceRemaining = $distance * $ratioRemaining; - - $antiSpyRadius = self::getAntiSpyRadius($destinationPlace->getAntiSpyInvest(), 1); - - if ($distanceRemaining < $antiSpyRadius / 3) { - return array(TRUE, TRUE, TRUE); - } elseif ($distanceRemaining < $antiSpyRadius / 3 * 2) { - $ratio = ($antiSpyRadius / 3) / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate = Utils::addSecondsToDate($arrivalDate, -$sec); - - return array(TRUE, TRUE, $newDate); - } elseif ($distanceRemaining < $antiSpyRadius) { - $ratio = ($antiSpyRadius / 3 * 2) / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate1 = Utils::addSecondsToDate($arrivalDate, -$sec); - - $ratio = ($antiSpyRadius / 3) / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate2 = Utils::addSecondsToDate($arrivalDate, -$sec); - - return array(TRUE, $newDate1, $newDate2); - } else { - $ratio = $antiSpyRadius / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate1 = Utils::addSecondsToDate($arrivalDate, -$sec); - - $ratio = ($antiSpyRadius / 3 * 2) / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate2 = Utils::addSecondsToDate($arrivalDate, -$sec); - - $ratio = ($antiSpyRadius / 3) / $distanceRemaining; - $sec = $ratio * $secRemaining; - $newDate3 = Utils::addSecondsToDate($arrivalDate, -$sec); - - return array($newDate1, $newDate2, $newDate3); - } - } - } - - public static function getCommercialShipQuantityNeeded($transactionType, $quantity, $identifier = 0) { - switch ($transactionType) { - case Transaction::TYP_RESOURCE : - # 1000 ressources => 1 commercialShip - $needed = ceil($quantity / 1000); - break; - case Transaction::TYP_SHIP : - # 1 PEV => 1 commercialShip - if (ShipResource::isAShip($identifier) AND $quantity > 0) { - $needed = $quantity * ShipResource::getInfo($identifier, 'pev'); - } else { - $needed = FALSE; - } - break; - case Transaction::TYP_COMMANDER : - # 1 commander => 1 commercialShip - $needed = 1; - break; - default : - $needed = FALSE; - break; - } - return $needed; - } - - public static function calculateCurrentRate($currentRate, $transactionType, $quantity, $identifier, $price) { - # calculate the new rate (when a transaction is accepted) - switch ($transactionType) { - case Transaction::TYP_RESOURCE : - # 1 resource = x credit - $thisRate = $price / $quantity; - # dilution of 1% - $newRate = (($quantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $quantity); - return max($newRate, Transaction::MIN_RATE_RESOURCE); - break; - case Transaction::TYP_SHIP : - # 1 resource = x credit - if (ShipResource::isAShip($identifier)) { - $resourceQuantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; - $thisRate = $price / $resourceQuantity; - # dilution of 1% - $newRate = (($resourceQuantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $resourceQuantity); - return max($newRate, Transaction::MIN_RATE_SHIP); - } else { - return FALSE; - } - break; - case Transaction::TYP_COMMANDER : - # 1 experience = x credit - $thisRate = $price / $quantity; - # dilution of 1% - $newRate = (($quantity * $thisRate) + (50000 * (99 * $currentRate)) / 100) / (50000 + $quantity); - return max($newRate, Transaction::MIN_RATE_COMMANDER); - break; - default : - return 0; - break; - } - } - - public static function calculateRate($transactionType, $quantity, $identifier, $price) { - switch ($transactionType) { - case Transaction::TYP_RESOURCE : - # 1 resource = x credit - return $price / $quantity; - break; - case Transaction::TYP_SHIP : - # 1 resource = x credit - if (ShipResource::isAShip($identifier)) { - $resourceQuantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; - return $price / $resourceQuantity; - } else { - return FALSE; - } - break; - case Transaction::TYP_COMMANDER : - # 1 experience = x credit - return $price / $quantity; - break; - default : - return FALSE; - break; - } - } - - public static function getMinPriceRelativeToRate($transactionType, $quantity, $identifier = FALSE) { - switch ($transactionType) { - case Transaction::TYP_RESOURCE: - $minRate = Transaction::MIN_RATE_RESOURCE; - break; - case Transaction::TYP_SHIP: - $minRate = Transaction::MIN_RATE_SHIP; - $quantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; - break; - case Transaction::TYP_COMMANDER: - $minRate = Transaction::MIN_RATE_COMMANDER; - break; - default: - return FALSE; - } - - $price = round($quantity * $minRate); - if ($price < 1) { - $price = 1; - } - return $price; - } - - public static function getMaxPriceRelativeToRate($transactionType, $quantity, $identifier = FALSE) { - switch ($transactionType) { - case Transaction::TYP_RESOURCE: - $minRate = Transaction::MAX_RATE_RESOURCE; - break; - case Transaction::TYP_SHIP: - $minRate = Transaction::MAX_RATE_SHIP; - $quantity = ShipResource::getInfo($identifier, 'resourcePrice') * $quantity; - break; - case Transaction::TYP_COMMANDER: - $minRate = Transaction::MAX_RATE_COMMANDER; - break; - default: - return FALSE; - } - - $price = $quantity * $minRate; - return round($price); - } - - public static function getSpySuccess($antiSpy, $priceInvested) { - # spy success must be between 0 and 100 - $antiSpy = $antiSpy == 0 ? 1 : $antiSpy; - $ratio = $priceInvested / $antiSpy; - $percent = round($ratio * 33); - # ça veut dire qu'il payer 3x plus que ce que le gars investi pour tout voir - if ($percent > 100) { - $percent = 100; - } - return $percent; - } - - public static function getTypeOfSpy($success, $antiSpy) { - if ($antiSpy < 1000) { - return SpyReport::TYP_NOT_CAUGHT; - } - - $percent = rand(0, 100); - if ($success < 40) { - if ($percent < 5) { - return SpyReport::TYP_NOT_CAUGHT; # 5% - } elseif ($percent < 50) { - return SpyReport::TYP_ANONYMOUSLY_CAUGHT; # 45% - } else { - return SpyReport::TYP_CAUGHT; # 50% - } - } else if ($success < 80) { - if ($percent < 30) { - return SpyReport::TYP_NOT_CAUGHT; # 30% - } elseif ($percent < 60) { - return SpyReport::TYP_ANONYMOUSLY_CAUGHT; # 30% - } else { - return SpyReport::TYP_CAUGHT; # 40% - } - } else if ($success < 100) { - if ($percent < 50) { - return SpyReport::TYP_NOT_CAUGHT; # 50% - } elseif ($percent < 80) { - return SpyReport::TYP_ANONYMOUSLY_CAUGHT; # 30% - } else { - return SpyReport::TYP_CAUGHT; # 20% - } - } else { # success == 100 - if ($percent < 70) { - return SpyReport::TYP_NOT_CAUGHT; # 70% - } elseif ($percent < 90) { - return SpyReport::TYP_ANONYMOUSLY_CAUGHT; # 20% - } else { - return SpyReport::TYP_CAUGHT; # 10% - } - } - } - - public static function getImprovementFromScientificCoef($coef) { - # transform scientific coefficient of a place - # into improvement coefficient for the technosphere - if ($coef < 10) { - return 0; - } elseif ($coef >= 100) { - return 40; - } else { - return ceil(0.004 * $coef * $coef - 0.01 * $coef + 0.7); - } - } - - public static function getFleetCost($ships, $affected = TRUE) { - $cost = 0; - for ($i = 0; $i < ShipResource::SHIP_QUANTITY; $i++) { - $cost += ShipResource::getInfo($i, 'cost') * $ships[$i]; - } - if (!$affected) { - $cost *= ShipResource::COST_REDUCTION; - } - return ceil($cost); - } -} diff --git a/system/Classes/Library/Http/JsonResponse.php b/system/Classes/Library/Http/JsonResponse.php deleted file mode 100644 index 701dd6852..000000000 --- a/system/Classes/Library/Http/JsonResponse.php +++ /dev/null @@ -1,8 +0,0 @@ -headers = new ParameterBag(); - $this->request = new ParameterBag(); - $this->query = new ParameterBag(); - $this->cookies = new Cookie(); - } - - /** - * @param string $method - */ - public function setMethod($method) - { - $this->method = $method; - } - - /** - * @return string - */ - public function getMethod() - { - return $this->method; - } - - /** - * @param string $protocol - */ - public function setProtocol($protocol) - { - $this->protocol = $protocol; - } - - /** - * @return string - */ - public function getProtocol() - { - return $this->protocol; - } - - /** - * @param string $path - */ - public function setPath($path) - { - $this->path = $path; - } - - /** - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * @param string $externalDomain - * @return \Asylamba\Classes\Library\Http\Request - */ - public function setCrossDomain($externalDomain) - { - $this->externalDomain = $externalDomain; - $this->isCrossDomain = true; - - return $this; - } - - /** - * @return boolean - */ - public function getCrossDomain() - { - return $this->isCrossDomain; - } -} \ No newline at end of file diff --git a/system/Classes/Library/Http/RequestFactory.php b/system/Classes/Library/Http/RequestFactory.php deleted file mode 100644 index 852918899..000000000 --- a/system/Classes/Library/Http/RequestFactory.php +++ /dev/null @@ -1,168 +0,0 @@ -requestPart = self::REQUEST_PART_PROTOCOL; - foreach ($rows as $row) { - $row = trim($row); - if ($this->isStreamEnd($row, $checkForEnding)) { - break; - } - switch ($this->requestPart) { - case self::REQUEST_PART_PROTOCOL: - $this->parseProtocol($request, $row); - break; - case self::REQUEST_PART_HEADERS: - $this->parseHeader($request, $row); - break; - case self::REQUEST_PART_BODY: - $request->body .= $row; - break; - } - } - $this->parseCookies($request); - $this->parseBody($request); - return $request; - } - - /** - * This method checks if a stream pipe has read all of the current content - * The rule is, if two empty lines are following one another, we consider the stream as fully read - * - * @param string $row - * @param boolean $checkForEnding - * @return boolean - */ - protected function isStreamEnd($row, &$checkForEnding) - { - $isEmpty = empty($row); - if ($isEmpty && $checkForEnding === true) { - return true; - } - // If the row is empty, we set the check for the next row - // If not, we disable the check - $checkForEnding = $isEmpty; - return false; - } - - /** - * @param Request $request - * @param string $row - */ - protected function parseProtocol(Request $request, $row) - { - if (empty($row)) { - throw new RequestException('Invalid request format'); - } - $data = explode(' ', $row); - $request->setMethod($data[0]); - - $pathData = explode('?', $data[1]); - $request->setPath($pathData[0]); - $request->setProtocol($data[2]); - - if (isset($pathData[1])) { - $this->parseQueryParameters($request, $pathData[1]); - } - $this->requestPart = self::REQUEST_PART_HEADERS; - } - - /** - * @param Request $request - * @param string $query - */ - protected function parseQueryParameters(Request $request, $query) - { - $parameters = explode('&', $query); - - foreach($parameters as $parameter) { - $data = explode('=', $parameter); - - $request->query->set($data[0], urldecode($data[1])); - } - } - - /** - * @param Request $request - * @param string $row - */ - protected function parseHeader(Request $request, $row) - { - if (empty($row)) { - $this->requestPart = self::REQUEST_PART_BODY; - return; - } - $data = explode(': ', $row); - $request->headers->set(strtolower($data[0]), $data[1]); - } - - /** - * @param Request $request - * @param string $row - */ - protected function parseBody(Request $request) - { - if (empty($request->body) || !$request->headers->has('content-type')) { - return; - } - switch ($request->headers->get('content-type')) { - case 'application/json': - $this->processJsonBody($request); - break; - case 'application/x-www-form-urlencoded': - $this->processFormBody($request); - break; - } - } - - protected function processJsonBody(Request $request) - { - $data = json_decode($request->body); - - foreach($data as $key => $element) { - $request->request->set($key, $element); - } - } - - protected function processFormBody(Request $request) - { - $data = explode('&', $request->body); - - foreach($data as $parameter) { - $parsedParameter = explode('=', $parameter); - $request->request->set(htmlspecialchars($parsedParameter[0]), htmlspecialchars(urldecode($parsedParameter[1]))); - } - } - - /** - * @param Request $request - */ - protected function parseCookies(Request $request) - { - if (!$request->headers->has('cookie')) { - return; - } - $cookies = explode(';', $request->headers->get('cookie')); - foreach ($cookies as $cookie) { - $data = explode('=', $cookie); - $request->cookies->add(trim($data[0]), urldecode($data[1])); - } - } -} diff --git a/system/Classes/Library/Http/Response.php b/system/Classes/Library/Http/Response.php deleted file mode 100644 index 6a4ee68a7..000000000 --- a/system/Classes/Library/Http/Response.php +++ /dev/null @@ -1,124 +0,0 @@ - **/ - protected array $statuses = [ - self::STATUS_OK => 'OK', - self::STATUS_REDIRECT => 'Found', - self::STATUS_NOT_FOUND => 'Not Found', - self::STATUS_INTERNAL_SERVER_ERROR => 'Internal Server Error' - ]; - - const STATUS_OK = 200; - const STATUS_REDIRECT = 302; - const STATUS_NOT_FOUND = 404; - const STATUS_INTERNAL_SERVER_ERROR = 500; - - public function __construct() - { - $this->headers = new ParameterBag(); - } - - public function setProtocol(string $protocol): void - { - $this->protocol = $protocol; - } - - public function getProtocol(): string - { - return $this->protocol; - } - - public function setStatusCode(int $statusCode): void - { - $this->statusCode = $statusCode; - } - - public function getStatusCode(): int - { - return $this->statusCode; - } - - public function setTitle(string $title): void - { - $this->title = $title; - } - - public function getTitle(): string - { - return $this->title; - } - - public function setPage(string $page): void - { - $this->page = $page; - } - - public function getPage(): ?string - { - return $this->page; - } - - public function redirect(string $path): void - { - $this->redirect = $path; - $this->statusCode = self::STATUS_REDIRECT; - } - - public function getRedirect(): ?string - { - return $this->redirect; - } - - public function addTemplate(string $template): void - { - $this->templates[] = $template; - } - - public function getTemplates(): array - { - return $this->templates; - } - - public function setBody(string $body): void - { - $this->body = $body; - } - - public function getBody(): string - { - return $this->body ?? ''; - } - - public function getStatus(): string - { - return $this->statuses[$this->statusCode]; - } - - public function send(): string - { - $this->headers->set('Content-Length', strlen($this->getBody())); - $message = "{$this->protocol} {$this->statusCode} {$this->statuses[$this->statusCode]}\n"; - - foreach ($this->headers->all() as $header => $value) { - $message .= "$header: $value\n"; - } - $message .= "\n"; - $message .= $this->getBody(); - return $message; - } -} diff --git a/system/Classes/Library/Http/ResponseFactory.php b/system/Classes/Library/Http/ResponseFactory.php deleted file mode 100644 index 43205985c..000000000 --- a/system/Classes/Library/Http/ResponseFactory.php +++ /dev/null @@ -1,80 +0,0 @@ -templating = $renderer; - $this->sessionLifetime = ini_get("session.gc_maxlifetime"); - } - - public function processResponse(Request $request, Response $response, Client $client): void - { - $response->setProtocol($request->getProtocol()); - $this->templating->render($response); - $this->createHeaders($request, $response); - $this->createCookies($request, $response, $client); - if ($response->getStatusCode() !== 302) { - $response->setBody(\sprintf("%s\n%s", $response->getBody(), \ob_get_clean())); - } else { - \ob_end_clean(); - } - } - - protected function createHeaders(Request $request, Response $response): void - { - $contentType = ('public' === $response->getPage()) - ? $this->guessMimeType($request) - : (($response instanceof JsonResponse) ? 'application/json' : 'text/html'); - $response->headers->set('Content-Type', $contentType); - $response->headers->set('Date', gmdate('D, d M Y H:i:s T')); - $response->headers->set('Status', $response->getStatusCode() . ' ' . $response->getStatus()); - - if ($response->getStatusCode() === 302) { - $response->headers->set('Location', - (!\str_starts_with($response->getRedirect(), 'http')) - ? \sprintf( - 'http://%s%s', - $request->headers->get('host'), - (str_starts_with($response->getRedirect(), '/') ? $response->getRedirect() : \sprintf("/%s", $response->getRedirect())), - ) - : $response->getRedirect() - ); - } - } - - protected function guessMimeType(Request $request): string - { - $fileParts = \explode('.', $request->getPath()); - - return match (\end($fileParts)) { - 'css' => 'text/css', - 'js' => 'text/javascript', - 'png' => 'image/png', - 'jpg' => 'image/jpeg', - }; - } - - protected function createCookies(Request $request, Response $response, Client $client): void - { - $cookies = []; - if (!$request->cookies->exist('session_id') || $request->cookies->get('session_id') !== $client->getId()) { - $cookies[] = 'session_id=' . $client->getId() . '; path=/; expires=' . gmdate('D, d M Y H:i:s T', time() + $this->sessionLifetime) . '; HttpOnly;'; - } - foreach ($request->cookies->getNewElements() as $key => $value) { - $cookies[] = $key . '=' . $value . '; path=/; expires=' . gmdate('D, d M Y H:i:s T', time() + 3000000000) . '; HttpOnly;'; - } - if (!empty($cookies)) { - $response->headers->set('Set-Cookie', implode(',', $cookies)); - } - } -} diff --git a/system/Classes/Library/Parser.php b/system/Classes/Library/Parser.php deleted file mode 100644 index 8aebfbfb2..000000000 --- a/system/Classes/Library/Parser.php +++ /dev/null @@ -1,167 +0,0 @@ -playerManager = $playerManager; - } - - #[Required] - public function setPlaceManager(PlaceManager $placeManager): void - { - $this->placeManager = $placeManager; - } - - public function parse(string $string): string - { - $string = $this->protect($string); - - if ($this->parseLink) { $string = $this->parseLink($string); } - if ($this->parseIcon) { $string = $this->parseIcon($string); } - if ($this->parseSmile) { $string = $this->parseSmile($string); } - if ($this->parsePlayer) { $string = $this->parsePlayer($string); } - if ($this->parsePlace) { $string = $this->parsePlace($string); } - if ($this->parseTag) { $string = $this->parseTag($string); } - if ($this->parseBigTag) { $string = $this->parseBigTag($string); } - - return $string; - } - - public static function protect(string $string): string - { - $string = trim($string); - $string = htmlspecialchars($string); - $string = nl2br($string); - - return $string; - } - - public function getToolbar(): string - { - $tl = ''; - if ($this->parseTag) { - $tl .= ''; - $tl .= ''; - } - if ($this->parseIcon) { - # $tl .= ''; - } - if ($this->parsePlayer) { - $tl .= ''; - } - if ($this->parsePlace) { - $tl .= ''; - } - $tl .= ''; - - return $tl; - } - - protected function parseIcon(string $string): string - { - $string = \preg_replace('#\[pa\]#', 'pa', $string); - $string = \preg_replace('#\[pev\]#', 'pev', $string); - $string = \preg_replace('#\[credit\]#', 'credit', $string); - $string = \preg_replace('#\[ressource\]#', 'resource', $string); - $string = \preg_replace('#\[releve\]#', 'time', $string); - - $string = \preg_replace('#\[attaque\]#', 'attack', $string); - $string = \preg_replace('#\[vie\]#', 'life', $string); - $string = \preg_replace('#\[defense\]#', 'defense', $string); - $string = \preg_replace('#\[vitesse\]#', 'speed', $string); - - return $string; - } - - protected function parseLink(string $string): string - { - return \preg_replace_callback( - "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/", - function($m) { - $url = $m[0]; - $str = $url; - $str = preg_replace('#^https?://#', '', $str); - $str = strlen($str) > 32 ? substr($str, 0, 32) . '...' : $str; - return '' . $str . ''; - }, - $string - ); - } - - protected function parseSmile(string $string): string - { - return $string; - } - - protected function parsePlayer(string $string): string - { - return preg_replace_callback( - '#\[\@(.+)\]#isU', - function($m) { - return - (($player = $this->playerManager->getByName($m[1])) !== null) - ? '' . $player->getName() . '' - : $m[0] - ; - }, - $string - ); - } - - protected function parsePlace($string) { - return \preg_replace_callback( - '#\[\#(.+)\]#isU', - function($m) { - if (($place = $this->placeManager->get($m[1]))) { - if ($place->getTypeOfBase() > 0) { - return '' . $place->getBaseName() . ''; - } else { - return 'planète rebelle'; - } - } - return $m[0]; - }, - $string - ); - } - - protected function parseTag(string $string): string - { - $string = \preg_replace('#\[b\](.+)\[/b\]#isU', '$1', $string); - $string = \preg_replace('#\[i\](.+)\[/i\]#isU', '$1', $string); - - return $string; - } - - protected function parseBigTag(string $string): string - { - return $string; - } -} diff --git a/system/Classes/Library/Security.php b/system/Classes/Library/Security.php deleted file mode 100644 index 3b072d3fb..000000000 --- a/system/Classes/Library/Security.php +++ /dev/null @@ -1,60 +0,0 @@ -serverKey, - 0, - $this->iv - )); - - return rtrim(strtr(base64_encode($data), '+/', '~_'), '='); - } - - public function uncrypt(string $cipher): string|false - { - $data = base64_decode(str_pad(strtr($cipher, '~_', '+/'), strlen($cipher) % 4, '=', STR_PAD_RIGHT)); - - return openssl_decrypt(urldecode($data), self::CYPHER_ALGO, $this->serverKey, 0, $this->iv); - } - - public function buildBindkey(string $bindKey): string - { - return str_replace( - '%', - '___', - \sprintf('%s-%s-%s', Utils::generateString(5), $bindKey, time()) - ); - } - - public function extractBindKey(string $key): ?string - { - $data = explode('-', $key); - - return $data[1] ?? null; - } - - public function extractTime(string $key): ?string - { - $data = explode('-', $key); - - return $data[2] ?? null; - } -} diff --git a/system/Classes/Library/Session/Session.php b/system/Classes/Library/Session/Session.php deleted file mode 100644 index 7fdc2a2f5..000000000 --- a/system/Classes/Library/Session/Session.php +++ /dev/null @@ -1,246 +0,0 @@ -flashbags[] = new Flashbag($message, $type); - } - - /** - * @return array - */ - public function getFlashbags() - { - return $this->flashbags; - } - - public function flushFlashbags() - { - $this->flashbags = []; - } - - /** - * @param string $key - * @param string $value - */ - public function add($key, $value) - { - $this->items[$key] = $value; - } - - /** - * @param string $key - * @return boolean - */ - public function exist($key) - { - return isset($this->items[$key]); - } - - /** - * @param string $key - * @return mixed - */ - public function get($key) - { - return $this->exist($key) ? $this->items[$key] : null; - } - - /** - * @return array - */ - public function all() - { - return $this->items; - } - - /** - * @param string $key - * @return boolean - */ - public function remove($key) { - if (isset($this->items[$key])) { - unset($this->items[$key]); - } - return false; - } - - public function destroy() { - $this->items = []; - $this->flashbags = []; - $this->history = []; - } - - public function clear() { - $this->remove('playerInfo'); - $this->remove('playerBase'); - $this->remove('playerEvent'); - } - - ## - - public function initPlayerInfo() { - $this->add('playerInfo', new ArrayList()); - } - - public function initPlayerBase() { - $a = new ArrayList(); - $a->add('ob', new StackList()); - $a->add('ms', new StackList()); - - $this->add('playerBase', $a); - } - - public function initPlayerEvent() { - $this->add('playerEvent', new EventList()); - } - - public function initLastUpdate() { - $l = new ArrayList(); - $l->add('game', Utils::now()); - $l->add('event', Utils::now()); - - $this->add('lastUpdate', $l); - } - - public function initPlayerBonus() { - $this->add('playerBonus', new StackList()); - } - - ## - /** - * @param string $key - * @param int $id - * @param string $name - * @param string $sector - * @param string $system - * @param string $img - * @param string $type - * @return boolean - */ - public function addBase($key, $id, $name, $sector, $system, $img, $type): bool - { - if ($this->exist('playerBase')) { - if ($key != 'ob' && $key != 'ms') { - return false; - } - $a = new ArrayList(); - - $a->add('id', $id); - $a->add('name', $name); - $a->add('sector', $sector); - $a->add('system', $system); - $a->add('img', $img); - $a->add('type', $type); - - $this->get('playerBase')->get($key)->append($a); - - return true; - } - return false; - } - - /** - * @param string $key - * @param int $id - */ - public function removeBase($key, $id) { - if ($this->exist('playerBase')) { - $size = $this->get('playerBase')->get($key)->size(); - for ($i = 0; $i < $size; $i++) { - if ($this->get('playerBase')->get($key)->get($i)->get('id') == $id) { - $this->get('playerBase')->get($key)->remove($i); - return; - } - } - } - } - - /** - * @param int $id - * @return boolean - */ - public function baseExist($id) { - $obSize = $this->get('playerBase')->get('ob')->size(); - for ($i = 0; $i < $obSize; $i++) { - if ($id == $this->get('playerBase')->get('ob')->get($i)->get('id')) { - return TRUE; - } - } - $msSize = $this->get('playerBase')->get('ms')->size(); - for ($i = 0; $i < $msSize; $i++) { - if ($id == $this->get('playerBase')->get('ms')->get($i)->get('id')) { - return TRUE; - } - } - return FALSE; - } - - /** - * @param string $path - */ - public function addHistory($path) - { - $this->history[] = $path; - } - - /** - * @return array - */ - public function getHistory() - { - return $this->history; - } - - /** - * @return string - */ - public function getLastHistory() - { - return $this->history[count($this->history) - 1]; - } - - /** - * @return int - */ - public function getLifetime() - { - return $this->lifetime; - } - - public function setData($data) - { - $this->history = $data['history']; - $this->flashbags = $data['flashbags']; - $this->items = $data['items']; - } - - public function getData() - { - return [ - 'history' => $this->history, - 'flashbags' => $this->flashbags, - 'items' => $this->items - ]; - } -} diff --git a/system/Classes/Library/Session/SessionWrapper.php b/system/Classes/Library/Session/SessionWrapper.php deleted file mode 100644 index 657f9780a..000000000 --- a/system/Classes/Library/Session/SessionWrapper.php +++ /dev/null @@ -1,244 +0,0 @@ -redisManager = $redisManager; - } - - public function setCurrentSession(Session $session) - { - $this->currentSession = $session; - } - - public function getCurrentSession(): Session - { - return $this->currentSession; - } - - /** - * @param int $sessionId - * @return Session - */ - public function createSession($sessionId) - { - $session = new Session(); - $session->add('session_id', $sessionId); - - $this->save($session); - - return $session; - } - - public function save(Session $session) - { - $redisConnection = $this->redisManager->getConnection(); - $redisConnection->set('session:' . $session->get('session_id'), serialize($session->getData())); - } - - /** - * @param string $sessionId - * @return \Asylamba\Classes\Library\Session\Session - */ - public function fetchSession($sessionId) - { - if (($data = $this->redisManager->getConnection()->get('session:' . $sessionId)) === false) { - return null; - } - $session = new Session(); - $session->setData(unserialize($data)); - return $session; - } - - public function clearWrapper() - { - if ($this->currentSession !== null) { - $this->save($this->currentSession); - } - $this->currentSession = null; - } - - public function add($key, $value): void - { - if ($this->currentSession === null) { - return; - } - $this->currentSession->add($key, $value); - } - - public function addBase($key, $id, $name, $sector, $system, $img, $type): bool - { - if ($this->currentSession === null) { - return false; - } - return $this->currentSession->addBase($key, $id, $name, $sector, $system, $img, $type); - } - - public function addFlashbag($message, $type) - { - if ($this->currentSession === null) { - return; - } - $this->currentSession->addFlashbag($message, $type); - } - - public function addHistory($path) - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->addHistory($path); - } - - public function all() - { - if ($this->currentSession === null) { - return []; - } - return $this->currentSession->all(); - } - - public function baseExist($id) - { - if ($this->currentSession === null) { - return false; - } - return $this->currentSession->baseExist($id); - } - - public function clear() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->clear(); - } - - public function destroy() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->destroy(); - } - - public function exist($key) - { - if ($this->currentSession === null) { - return false; - } - return $this->currentSession->exist($key); - } - - public function flushFlashbags(): void - { - if ($this->currentSession === null) { - return; - } - $this->currentSession->flushFlashbags(); - } - - public function getFlashbags(): array - { - if ($this->currentSession === null) { - return []; - } - return $this->currentSession->getFlashbags(); - } - - public function getHistory() - { - if ($this->currentSession === null) { - return []; - } - return $this->currentSession->getHistory(); - } - - public function getLastHistory() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->getLastHistory(); - } - - public function getLifetime() - { - if ($this->currentSession === null) { - return 0; - } - return $this->currentSession->getLifetime(); - } - - public function initLastUpdate() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->initLastUpdate(); - } - - public function initPlayerBase() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->initPlayerBase(); - } - - public function initPlayerBonus() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->initPlayerBonus(); - } - - public function initPlayerEvent() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->initPlayerEvent(); - } - - public function initPlayerInfo() - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->initPlayerInfo(); - } - - public function remove($key) - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->remove($key); - } - - public function removeBase($key, $id) - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->removeBase($key, $id); - } - - public function get($key) - { - if ($this->currentSession === null) { - return null; - } - return $this->currentSession->get($key); - } -} diff --git a/system/Classes/Library/Utils.php b/system/Classes/Library/Utils.php deleted file mode 100644 index 17a81a91a..000000000 --- a/system/Classes/Library/Utils.php +++ /dev/null @@ -1,221 +0,0 @@ -add(\DateInterval::createFromDateString('1 hour')); - - if ($cursor->getTimestamp() <= $tail->getTimestamp()) { - $dates[] = $cursor->format('Y-m-d H:i:s'); - } else { - break; - } - } - } elseif ($precision == 'd') { - # the changement is at 01:00:00 - $daysInterval = floor((abs(strtotime($date1) - strtotime($date2))) / (60 * 60 * 24)); - - $seconds = strtotime($baseDate) + 86400; - $nextDay = floor($seconds / 86400) * 86400; - $fullDay = date('Y-m-d H:i:s', $nextDay); - - for ($i = 0; $i < $daysInterval; $i++) { - # add date to array - $dates[] = $fullDay; - # compute next date - $newTime = strtotime($fullDay) + 86400; - $fullDay = date('Y-m-d H:i:s', $newTime); - } - # if there is an hour change at the end - if ($fullDay < $endDate) { - $dates[] = $fullDay; - } - } - - return $dates; - } - - public static function hasAlreadyHappened($date, $now = FALSE) { - if ($now === FALSE) { - $now = self::now(); - } - - if (strtotime($date) <= strtotime($now)) { - return TRUE; - } else { - return FALSE; - } - } - - public static function addSecondsToDate($date, $seconds) { - return date('Y-m-d H:i:s', strtotime($date) + $seconds); - } - - public static function nextOClock($date, $i = 1) { - list($left, $right) = explode(' ', $date); - list($h, $m, $s) = explode(':', $right); - - return $left . ' ' . ($h + $i) . ':00:00'; - } - - public static function getDateFromTimestamp($timestamp) { - return date('Y-m-d H:i:s', $timestamp); - } - - public static function generateString($nbr) { - $password = ''; - for ($i = 0; $i < $nbr; $i++) { - $aleaChar = self::$autorizedChar[rand(0, count(self::$autorizedChar) - 1)]; - $password .= $aleaChar; - } - return $password; - } - - public static function check($string, $mode = '') { - $string = trim($string); - $string = htmlspecialchars($string); - if ($mode == 'complex') { - $string = nl2br($string); - $string = preg_replace('`http://[a-z0-9._,;/?!&=#-]+`i', '$0', $string); - } - return $string; - } - - public static function arrayToWhere($array, $prefix = '') { - if (!empty($array)) { - $i = 0; $return = ''; - - foreach ($array AS $k => $v) { - if ($i == 0) { - $return .= 'WHERE '; - } else { - $return .= ' AND '; - } - if (is_array($v)) { - $return .= ' ('; - for ($j = 0; $j < count($v); $j++) { - if ($j == 0) { - $return .= $prefix . $k . ' = ?'; - } else { - $return .= ' OR ' . $prefix . $k . ' = ?'; - } - } - $return .= ') '; - } else { - $return .= $prefix . $k . ' = ? '; - } - $i++; - } - return $return; - } - } - - public static function arrayToOrder($array, $prefix = '') { - if (!empty($array)) { - $return = 'ORDER BY'; - $i = 0; - foreach ($array AS $k) { - if ($i % 2 != 1 AND $i != 0) { - $return .= ','; - } - $return .= ' ' . $prefix . $k; - $i++; - } - return $return; - } - } - - public static function arrayToLimit($array) { - if (empty($array)) { - return ''; - } else { - return 'LIMIT ' . $array[0] . ', ' . $array[1]; - } - } - - public static function hashAndSalt($string) { - return sha1($string . 'abdelazer'); - } - - public static function shuffle(&$array) { - $keys = array_keys($array); - - shuffle($keys); - - foreach($keys as $key) { - $new[$key] = $array[$key]; - } - - $array = $new; - return true; - } -} diff --git a/system/Classes/Logger/AbstractLogger.php b/system/Classes/Logger/AbstractLogger.php deleted file mode 100644 index bb932cfad..000000000 --- a/system/Classes/Logger/AbstractLogger.php +++ /dev/null @@ -1,67 +0,0 @@ -log(LogLevel::ALERT, $message, $context); - } - - public function critical(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - public function debug(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - public function emergency(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::EMERGENCY, $message, $context); - } - - public function error(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::ERROR, $message, $context); - } - - public function info(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::INFO, $message, $context); - } - - public function notice(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - public function warning(\Stringable|string $message, array $context = []): void - { - $this->log(LogLevel::WARNING, $message, $context); - } - - public function formatMessage(string $level, string $message, \DateTime $datetime, array $context = []): string - { - return \sprintf( - "[%s] %s: %s {%s}\n", - $datetime->format('H:i:s'), - strtoupper($level), - $message, - json_encode($context), - ); - } - - protected function getType(): string - { - return match (PROCESS_NAME) { - 'application' => 'php', - default => 'proc', - }; - } -} diff --git a/system/Classes/Logger/ConsoleLogger.php b/system/Classes/Logger/ConsoleLogger.php deleted file mode 100644 index 90725beef..000000000 --- a/system/Classes/Logger/ConsoleLogger.php +++ /dev/null @@ -1,11 +0,0 @@ -formatMessage($level, $message, new \DateTime(), $context)); - } -} diff --git a/system/Classes/Logger/FileLogger.php b/system/Classes/Logger/FileLogger.php deleted file mode 100644 index 41bb33cf5..000000000 --- a/system/Classes/Logger/FileLogger.php +++ /dev/null @@ -1,27 +0,0 @@ -getFilePath($dateTime), - $this->formatMessage($level, $message, $dateTime, $context), - FILE_APPEND - ); - } - - protected function getFilePath(\DateTime $dateTime): string - { - return \sprintf('%s/%s/%s.log', $this->logDirectory, $this->getType(), $dateTime->format('Y-m-d')); - } -} diff --git a/system/Classes/Memory/MemoryManager.php b/system/Classes/Memory/MemoryManager.php deleted file mode 100644 index 36083209b..000000000 --- a/system/Classes/Memory/MemoryManager.php +++ /dev/null @@ -1,57 +0,0 @@ -poolMemory = memory_get_usage(); - $this->poolAllocatedMemory = memory_get_usage(true); - - foreach ($processes as $process) { - $this->poolMemory += $process->getMemory(); - $this->poolAllocatedMemory += $process->getAllocatedMemory(); - } - } - - /** - * {inheritdoc} - */ - public function refreshNodeMemory() - { - $this->isUpdated = true; - $this->nodeMemory = memory_get_usage(); - $this->nodeAllocatedMemory = memory_get_usage(true); - } - - public function getNodeMemory() - { - $data = [ - 'memory' => $this->nodeMemory, - 'allocated_memory' => $this->nodeAllocatedMemory, - 'is_updated' => $this->isUpdated - ]; - $this->isUpdated = false; - return $data; - } - - public function getPoolMemory() - { - return [ - 'memory' => $this->poolMemory, - 'allocated_memory' => $this->poolAllocatedMemory - ]; - } -} \ No newline at end of file diff --git a/system/Classes/Router/Router.php b/system/Classes/Router/Router.php deleted file mode 100644 index 2aa262118..000000000 --- a/system/Classes/Router/Router.php +++ /dev/null @@ -1,220 +0,0 @@ - ['profil', 'Profil'], - 'message' => ['message', 'Messagerie'], - 'fleet' => ['fleet', 'Flottes'], - 'financial' => ['financial', 'Finances'], - 'technology' => ['technology', 'Technologie'], - 'spying' => ['spying', 'Espionnage'], - - 'diary' => ['diary', 'Journal'], - 'embassy' => ['embassy', 'Ambassades'], - - 'bases' => ['bases', 'Vos Bases'], - - 'map' => ['map', 'Carte'], - - 'faction' => ['faction', 'Votre Faction'], - 'params' => ['params', 'Paramètres'], - 'sponsorship' => ['sponsorship', 'Parrainage'], - 'rank' => ['rank', 'Classements'], - - 'admin' => ['admin', 'Administration'], - - '404' => ['notfound', '404'], - - 'action' => ['action', 'Action'], - 'ajax' => ['ajax', 'Ajax'], - 'inscription' => ['inscription', 'Inscription'], - 'connection' => ['connection', 'Connexion'], - 'api' => ['api', 'API'], - 'script' => ['script', 'Script'], - 'buffer' => ['buffer', 'Bienvenue'] - ]; - - public function __construct( - protected SessionWrapper $sessionWrapper, - protected string $appRoot, - protected string $rootPath, - protected string $getOutRoot, - protected string $actionPath, - protected string $ajaxPath, - protected string $connectionPath, - protected string $registrationPath, - protected string $bufferPath, - protected string $apiPath, - protected string $templatePath, - protected string $scriptPath, - protected string $pagesPath, - protected string $eventPath, - ) { - } - - public function processRequest(Request $request): Response - { - $response = new Response(); - $this->parseRoute($request, $response); - $this->checkPermission($request, $response); - - if (!empty($response->getRedirect())) { - return $response; - } - - $this->getInclude($response); - return $response; - } - - protected function parseRoute(Request $request, Response $response): void - { - $requestURI = array_values(array_diff( - explode('/', $request->getPath()), - explode('/', $_SERVER['SCRIPT_NAME']) - )); - - if ($this->isResource($requestURI)) { - $this->serveResource($response, $requestURI); - return; - } - - $temp = array_keys($this->pageResources); - $page = (empty($requestURI)) ? $temp[0] : ((empty($requestURI[0])) ? $requestURI[1] : $requestURI[0]); - - if (in_array($page, array_keys($this->pageResources))) { - $response->setTitle($this->pageResources[$page][1]); - } else { - $response->setTitle('Page non trouvée'); - $page = '404'; - } - $response->setPage($page); - // Fill the history - if (!in_array($page, array('404', 'action', 'ajax', 'connection', 'api', 'script'))) { - $newURI = - (implode('/', $requestURI) == '') - ? 'profil' - : implode('/', $requestURI) - ; - $this->sessionWrapper->addHistory($newURI); - } - - $nbParams = count($requestURI); - // remplir les paramètres depuis le routing - for ($i = 1; $i < $nbParams; ++$i) { - $param = explode('-', $requestURI[$i]); - if (count($param) === 2) { - $request->query->set($param[0], $param[1]); - } - } - $this->sessionWrapper->add('screenmode', - (($screenMode = $request->query->get('screenmode')) && in_array($screenMode, ['desktop', 'mobile'])) - ? $screenMode - : 'desktop' - ); - } - - protected function isResource(array $requestURI): bool - { - $lastUrlPart = $requestURI[\array_key_last($requestURI)]; - $fileParts = explode('.', $lastUrlPart); - - if (2 > \count($fileParts)) { - return false; - } - return \in_array(end($fileParts), ['css', 'js', 'png', 'jpg']) && \is_file($this->getResourcePath($requestURI)); - } - - protected function serveResource(Response $response, array $requestURI): void - { - $response->setStatusCode(Response::STATUS_OK); - $response->setPage('public'); - $response->setBody(\file_get_contents($this->getResourcePath($requestURI))); - } - - protected function getResourcePath(array $requestURI): string - { - return \sprintf('%s%s', $this->rootPath, implode('/', $requestURI)); - } - - public function checkPermission(Request $request, Response $response): void - { - $page = $response->getPage(); - - if ($page === 'inscription') { - if ($this->sessionWrapper->exist('playerId')) { - $response->redirect($this->appRoot); - } - } elseif ($page === 'connection') { - if (!$this->sessionWrapper->exist('playerId')) { - if (!$request->query->has('bindkey')) { - $response->redirect($this->getOutRoot . 'accueil/speak-wrongargument'); - } - } else { - $response->redirect($this->appRoot); - } - } elseif (\in_array($page, array('api', 'script', 'buffer', 'public'))) { - # doing nothing - } else { - if (!$this->sessionWrapper->exist('playerId')) { - $response->redirect($this->getOutRoot . 'accueil/speak-loginrequired'); - } - } - } - - public function getInclude(Response $response) { - $page = $response->getPage(); - $screenMode = $this->sessionWrapper->get('screenmode'); - switch($page) { - case 'action': - $response->addTemplate($this->actionPath . 'main.php'); - break; - case 'ajax': - $response->addTemplate($this->ajaxPath . 'main.php'); - break; - case 'api': - $response->addTemplate($this->apiPath . 'main.php'); - break; - case 'buffer': - $response->addTemplate($this->bufferPath . 'main.php'); - break; - case 'script': - $response->addTemplate($this->scriptPath . 'main.php'); - break; - case 'connection': - $response->addTemplate($this->connectionPath . 'main.php'); - break; - case '404': - $response->setStatusCode(404); - $response->addTemplate($this->templatePath . 'notfound.php'); - break; - case 'inscription': - $response->addTemplate($this->registrationPath . 'check.php'); - if (!$response->getRedirect()) { - $response->addTemplate($this->templatePath . $screenMode . '/open.php'); - $response->addTemplate($this->templatePath . $screenMode . '/stepbar.php'); - $response->addTemplate($this->registrationPath . '/content.php'); - $response->addTemplate($this->templatePath . $screenMode . '/btmbar.php'); - $response->addTemplate($this->templatePath . $screenMode . '/alert.php'); - $response->addTemplate($this->templatePath . $screenMode . '/close.php'); - } - break; - case 'public': break; - default: - $response->addTemplate($this->eventPath . 'loadEvent.php'); - $response->addTemplate($this->templatePath . $screenMode . '/open.php'); - $response->addTemplate($this->templatePath . $screenMode . '/navbar.php'); - $response->addTemplate($this->pagesPath . $screenMode . '/' . $page . '.php'); - $response->addTemplate($this->templatePath . $screenMode . '/toolbar.php'); - $response->addTemplate($this->templatePath . $screenMode . '/alert.php'); - $response->addTemplate($this->templatePath . $screenMode . '/close.php'); - break; - } - } -} diff --git a/system/Classes/Scheduler/CyclicActionScheduler.php b/system/Classes/Scheduler/CyclicActionScheduler.php deleted file mode 100644 index a0bfc2042..000000000 --- a/system/Classes/Scheduler/CyclicActionScheduler.php +++ /dev/null @@ -1,79 +0,0 @@ -> **/ - protected array $queues = [ - self::TYPE_DAILY => [ - DailyRoutineMessage::class, - FactionRankingMessage::class, - PlayerRankingMessage::class, - ], - self::TYPE_HOURLY => [ - BasesUpdateMessage::class, - CommandersExperienceMessage::class, - NpcsPlacesUpdateMessage::class, - PlayersCreditsUpdateMessage::class, - PlayersPlacesUpdateMessage::class, - ], - ]; - - const TYPE_HOURLY = 'hourly'; - const TYPE_DAILY = 'daily'; - - public function __construct( - protected MessageBusInterface $messageBus, - protected int $dailyScriptHour - ) { - } - - public function init(): void - { - $this->execute(); - } - - public function execute() - { - if (($currentHour = intval(date('H'))) === $this->lastExecutedHour) { - return; - } - $this->executeHourly(); - $this->executeDaily($currentHour); - $this->lastExecutedHour = $currentHour; - } - - protected function executeHourly(): void - { - $this->processQueue(self::TYPE_HOURLY); - } - - protected function executeDaily(int $currentHour): void - { - if (($currentDay = intval(date('d'))) === $this->lastExecutedDay || ($currentHour < $this->dailyScriptHour)) { - return; - } - $this->processQueue(self::TYPE_DAILY); - $this->lastExecutedDay = $currentDay; - } - - protected function processQueue(string $queue): void - { - foreach ($this->queues[$queue] as $messageClass) { - $this->messageBus->dispatch(new $messageClass()); - } - } -} diff --git a/system/Classes/Templating/Renderer.php b/system/Classes/Templating/Renderer.php deleted file mode 100644 index bf7b504e6..000000000 --- a/system/Classes/Templating/Renderer.php +++ /dev/null @@ -1,30 +0,0 @@ -container = $container; - } - - public function render(Response $response) - { - \ob_start(); - foreach($response->getTemplates() as $template) - { - include $template; - } - } - - public function getContainer(): Container - { - return $this->container; - } -} diff --git a/system/Classes/Worker/API.php b/system/Classes/Worker/API.php deleted file mode 100644 index 200322fed..000000000 --- a/system/Classes/Worker/API.php +++ /dev/null @@ -1,94 +0,0 @@ - $v) { - $targ .= $k . '-' . $v . '/'; - } - - $this->query = $this->getOutRoot . 'api/s-' . $this->serverId . '/a-' . $this->security->crypt('a-' . $api . '/' . $targ, $this->apiKey); - - \curl_setopt($ch, CURLOPT_URL, $this->query); - \curl_setopt($ch, CURLOPT_RETURNTRANSFER , TRUE); - $answer = \curl_exec($ch); - \curl_close($ch); - - if ($answer !== FALSE) { - $this->data = \unserialize($answer); - return true; - } - return false; - } - - public function userExist($bindkey) { - if ($this->query('userexist', array('bindkey' => $bindkey))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function confirmInscription($bindkey) { - if ($this->query('confirminscription', array('bindkey' => $bindkey, 'serverid' => $this->serverId))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function confirmConnection($bindkey) { - if ($this->query('confirmconnection', array('bindkey' => $bindkey, 'serverid' => $this->serverId))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function playerIsDead($bindkey, $serverId) { - if ($this->query('playerisdead', array('bindkey' => $bindkey, 'serverid' => $serverId))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function sendMail($bindkey, $template) { - if ($this->query('sendmail', array('bindkey' => $bindkey, 'serverid' => $this->serverId, 'template' => $template))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function sendMail2($email, $serverId, $template, $playerId) { - if ($this->query('sendmail2', array('email' => $email, 'serverid' => $serverId, 'template' => $template, 'playerid' => $playerId))) { - return ($this->data['statement'] == 'success'); - } - return false; - } - - public function abandonServer($bindkey) { - if ($this->query('abandonserver', array('bindkey' => $bindkey, 'serverid' => $this->serverId))) { - return ($this->data['statement'] == 'success'); - } - return false; - } -} diff --git a/system/Classes/Worker/Manager.php b/system/Classes/Worker/Manager.php deleted file mode 100644 index 14c2b1501..000000000 --- a/system/Classes/Worker/Manager.php +++ /dev/null @@ -1,222 +0,0 @@ -newSession(); - } - - public function newSession($uMode = ASM_UMODE) { - $this->statSessions++; - $this->statChangeSessions++; - - if (count($this->sessions) == 0) { - $session = new ManagerSession('_1', $this->managerType, ASM_UMODE); - } else { - $session = new ManagerSession('_' . (count($this->sessions) + 1), $this->managerType, $uMode); - } - $this->currentSession = $session; - $this->sessions[] = $session; - - $this->objects[$session->getId()] = array(); - $this->origin[$session->getId()] = array(); - - return $session; - } - - public function changeSession(ManagerSession $session) { - $this->statChangeSessions++; - - if (in_array($session, $this->sessions) AND $session->getType() == $this->managerType) { - $this->currentSession = $session; - return TRUE; - } else { - return FALSE; - } - } - - public function getCurrentSession() { return $this->currentSession; } - public function getFirstSession() { return $this->sessions[0]; } - - // OBJECT MANAGER CORE - protected $objects = array(); - protected $origin = array(); - - public function get($i = 0) { - if (isset($this->objects[$this->currentSession->getId()][$i])) { - return $this->objects[$this->currentSession->getId()][$i]; - } else { - return FALSE; - } - } - - public function getById($id) { - foreach ($this->objects[$this->currentSession->getId()] as $o) { - if ($o->getId() == $id) { - return $o; - } - } - return FALSE; - } - - public function getAll() { - return $this->objects[$this->currentSession->getId()]; - } - - public function size() { - return count($this->objects[$this->currentSession->getId()]); - } - - protected function _ObjectExist($object) { - foreach ($this->sessions as $s) { - foreach ($this->origin[$s->getId()] as $k => $o) { - if ($o->getId() == $object->getId()) { - if ($s->getId() == $this->currentSession->getId()) { - return TRUE; - } else { - return $this->objects[$s->getId()][$k]; - } - } - } - } - return FALSE; - } - - protected function _Add($object) { - $element = $this->_ObjectExist($object); - - if ($element === FALSE) { - $this->statObject++; - $this->statRealObject++; - - $this->objects[$this->currentSession->getId()][] = $object; - $this->origin[$this->currentSession->getId()][] = clone($object); - return $object; - } elseif ($element === TRUE) { - $currentIdSession = $this->currentSession->getId(); - foreach ($this->origin[$currentIdSession] as $k => $o) { - if ($o == $object) { - return $this->objects[$currentIdSession][$k]; - } - } - return FALSE; - } else { - $this->statObject++; - $this->statReferenceObject++; - - $this->objects[$this->currentSession->getId()][] = $element; - $this->origin[$this->currentSession->getId()][] = $element; - return $element; - } - } - - protected function _Remove($id) { - foreach ($this->sessions as $session) { - foreach ($this->objects[$session->getId()] as $k => $o) { - if ($o->getId() == $id) { - unset($this->objects[$session->getId()][$k]); - unset($this->origin[$session->getId()][$k]); - } - } - $this->objects[$session->getId()] = array_values($this->objects[$session->getId()]); - $this->origin[$session->getId()] = array_values($this->origin[$session->getId()]); - } - return NULL; - } - - public function _Save() { - $savingList = array(); - if (!empty($this->objects)) { - foreach ($this->sessions as $s) { - foreach ($this->objects[$s->getId()] as $k => $o) { - if ($this->objects[$s->getId()][$k] != $this->origin[$s->getId()][$k]) { - $savingList[] = $o; - } - } - } $this->statSavingObject = count($savingList); - } - return $savingList; - } - - public function clean() - { - $this->sessions = []; - $this->objects = []; - $this->origin = []; - - $this->newSession(); - } - - public function _EmptyCurrentSession() { - $currentSessionId = $this->currentSession->getId(); - foreach ($this->objects[$currentSessionId] as $k => $o) { - # code... - unset($this->objects[$currentSessionId][$k]); - unset($this->origin[$currentSessionId][$k]); - } - } - - // DEBUG & STATISTIC MANAGER CORE - protected $statObject = 0; - protected $statRealObject = 0; - protected $statReferenceObject = 0; - protected $statSavingObject = 0; - - protected $statSessions = 0; - protected $statChangeSessions = 0; - - public function saveStat($path) { - $ret = 'objet ' . $this->managerType . '
'; - $ret .= 'object : ' . $this->statObject . '
'; - $ret .= 'real object : ' . $this->statRealObject . '
'; - $ret .= 'ref object : ' . $this->statReferenceObject . '
'; - $ret .= 'saving object : ' . $this->statSavingObject . '
'; - - $ret .= 'sessions : ' . $this->statSessions . '
'; - $ret .= 'change sessions : ' . $this->statChangeSessions . '
'; - $ret .= '-----------------------------------------------------
'; - Bug::writeLog($path, $ret); - } - - public function showStat() { - $ret = 'objet ' . $this->managerType . '
'; - $ret .= 'object : ' . $this->statObject . '
'; - $ret .= 'real object : ' . $this->statRealObject . '
'; - $ret .= 'ref object : ' . $this->statReferenceObject . '
'; - $ret .= 'saving object : ' . $this->statSavingObject . '
'; - - $ret .= 'sessions : ' . $this->statSessions . '
'; - $ret .= 'change sessions : ' . $this->statChangeSessions . '
'; - $ret .= '-----------------------------------------------------
'; - echo $ret; - } - - public function show($flag = 1) { - if ($flag == 1) { - var_dump($this->objects); - } elseif ($flag == 2) { - var_dump($this->origin); - } else { - var_dump($this->objects); - var_dump($this->origin); - } - for ($i = 0; $i < 200; $i++) { - echo '-'; - } - } -} diff --git a/system/Classes/Worker/ManagerSession.php b/system/Classes/Worker/ManagerSession.php deleted file mode 100644 index fe353d477..000000000 --- a/system/Classes/Worker/ManagerSession.php +++ /dev/null @@ -1,54 +0,0 @@ -id = $id; - $this->type = $type; - $this->uMode = $uMode; - } - - /** - * @return int - */ - public function getId() { - return $this->id; - } - - /** - * @return string - */ - public function getType() { - return $this->type; - } - - /** - * @return string - */ - public function getUMode() { - return $this->uMode; - } - - /** - * @return string - */ - public function toString() { - return - 'id = ' . $this->id . ', type = ' . $this->type . - ', uMode = ' . $this->uMode . ' ' - ; - } -} diff --git a/system/Modules/Ares/AresModule.php b/system/Modules/Ares/AresModule.php deleted file mode 100644 index 090d2b71b..000000000 --- a/system/Modules/Ares/AresModule.php +++ /dev/null @@ -1,13 +0,0 @@ -commanderManager->get($commanderTravelMessage->getCommanderId()); - - match($commander->getTravelType()) { - Commander::MOVE => $this->commanderManager->uChangeBase($commander), - Commander::LOOT => $this->lootManager->loot($commander), - Commander::COLO => $this->conquestManager->conquer($commander), - Commander::BACK => $this->moveBack($commander), - }; - } - - protected function moveBack(Commander $commander): void - { - $place = $this->placeManager->get($commander->rDestinationPlace); - $commanderBase = $this->orbitalBaseManager->get($commander->rBase); - - $this->commanderManager->endTravel($commander, Commander::AFFECTED); - - $this->placeManager->sendNotif($place, Place::COMEBACK, $commander); - - if ($commander->resources > 0) { - $this->orbitalBaseManager->increaseResources($commanderBase, $commander->resources, TRUE); - $commander->resources = 0; - } - $this->entityManager->flush($commander); - } -} diff --git a/system/Modules/Ares/Handler/CommandersExperienceHandler.php b/system/Modules/Ares/Handler/CommandersExperienceHandler.php deleted file mode 100644 index f8cd4d2e4..000000000 --- a/system/Modules/Ares/Handler/CommandersExperienceHandler.php +++ /dev/null @@ -1,63 +0,0 @@ -entityManager->getRepository(Commander::class)->getAllByStatements([Commander::INSCHOOL]); - $this->entityManager->beginTransaction(); - - foreach ($commanders as $commander) { - // If the commander was updated recently, we skip him - if (Utils::interval($commander->uCommander, $now, 'h') === 0) { - continue; - } - - $nbrHours = Utils::intervalDates($now, $commander->uCommander); - $commander->uCommander = $now; - $orbitalBase = $this->orbitalBaseManager->get($commander->rBase); - - $playerBonus = $this->playerBonusManager->getBonusByPlayer($this->playerManager->get($commander->rPlayer)); - $this->playerBonusManager->load($playerBonus); - $playerBonus = $playerBonus->bonus; - foreach ($nbrHours as $hour) { - $invest = $orbitalBase->iSchool; - $invest += $invest * $playerBonus->get(PlayerBonus::COMMANDER_INVEST) / 100; - - # xp gagnée - $earnedExperience = $invest / Commander::COEFFSCHOOL; - $earnedExperience += (rand(0, 1) == 1) - ? rand(0, intval(round($earnedExperience / 20))) - : -(rand(0, intval(round($earnedExperience / 20)))); - $earnedExperience = max(round($earnedExperience), 0); - - $this->commanderManager->upExperience($commander, $earnedExperience); - } - } - $this->entityManager->commit(); - } -} diff --git a/system/Modules/Ares/Manager/CommanderManager.php b/system/Modules/Ares/Manager/CommanderManager.php deleted file mode 100644 index 6039ee740..000000000 --- a/system/Modules/Ares/Manager/CommanderManager.php +++ /dev/null @@ -1,563 +0,0 @@ -fightManager = $fightManager; - } - - #[Required] - public function setPlayerManager(PlayerManager $playerManager): void - { - $this->playerManager = $playerManager; - } - - public function get(int $id): Commander - { - return $this->entityManager->getRepository(Commander::class)->get($id); - } - - public function getBaseCommanders(int $orbitalBaseId, array $statements = [], array $orderBy = []): array - { - return $this->entityManager->getRepository(Commander::class)->getBaseCommanders($orbitalBaseId, $statements, $orderBy); - } - - public function getPlayerCommanders(int $playerId, array $statements = [], array $orderBy = []): array - { - return $this->entityManager->getRepository(Commander::class)->getPlayerCommanders($playerId, $statements, $orderBy); - } - - /** - * @return list - */ - public function getMovingCommanders(): array - { - return $this->entityManager->getRepository(Commander::class)->getMovingCommanders(); - } - - public function getCommandersByIds(array $ids): array - { - return $this->entityManager->getRepository(Commander::class)->getCommandersByIds($ids); - } - - public function getCommandersByLine(int $orbitalBaseId, int $line): array - { - return $this->entityManager->getRepository(Commander::class)->getCommandersByLine($orbitalBaseId, $line); - } - - public function getIncomingAttacks(int $playerId): array - { - return $this->entityManager->getRepository(Commander::class)->getIncomingAttacks($playerId); - } - - public function getVisibleIncomingAttacks(int $playerId): array - { - $attackingCommanders = $this->getIncomingAttacks($playerId) ; - $incomingCommanders = [] ; - - foreach ($attackingCommanders as $commander) { - # va chercher les heures auxquelles il rentre dans les cercles d'espionnage - $startPlace = $this->placeManager->get($commander->getRBase()); - $destinationPlace = $this->placeManager->get($commander->getRPlaceDestination()); - $times = Game::getAntiSpyEntryTime($startPlace, $destinationPlace, $commander->getArrivalDate()); - - if (strtotime(Utils::now()) >= strtotime($times[0])) { - # ajout de l'événement - $incomingCommanders[] = $commander; - } - } - return $incomingCommanders; - } - - public function getOutcomingAttacks(int $playerId): array - { - return $this->entityManager->getRepository(Commander::class)->getOutcomingAttacks($playerId); - } - - public function getIncomingCommanders(int $place): array - { - return $this->entityManager->getRepository(Commander::class)->getIncomingCommanders($place); - } - - public function scheduleMovements(): void - { - $commanders = $this->getMovingCommanders(); - - foreach ($commanders as $commander) { - $this->messageBus->dispatch( - new CommanderTravelMessage($commander->getId()), - [DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], - ); - } - } - - public function countCommandersByLine(int $orbitalBaseId, int $line): int - { - return $this->entityManager->getRepository(Commander::class)->countCommandersByLine($orbitalBaseId, $line); - } - - public function setEarnedExperience(Commander $commander, Commander $enemyCommander): void - { - $commander->setArmy(); - $finalOwnPev = 0; - - foreach ($commander->army as $squadron) { - foreach ($squadron->getSquadron() as $ship) { - $finalOwnPev += $ship->getPev(); - } - } - $importance = (($finalOwnPev + 1) * ($enemyCommander->getPevInBegin())) / - ((($commander->pevInBegin + 1) * (($enemyCommander->getLevel() + 1) / - ($commander->level + 1)))); - - $commander->earnedExperience = $importance * Commander::COEFFEARNEDEXP; - if($commander->winner) { - LiveReport::$importance = $importance; - } - - if ($commander->rPlayer > 0) { - $exp = round($commander->earnedExperience / Commander::COEFFEXPPLAYER); - $this->playerManager->increaseExperience($this->playerManager->get($commander->rPlayer), $exp); - - if ($enemyCommander->isAttacker == TRUE) { - LiveReport::$expPlayerD = $exp; - } else { - LiveReport::$expPlayerA = $exp; - } - } - } - - public function setBonus(Commander $commander): void - { - $commander->setArmy(); - $playerBonus = new PlayerBonus($commander->rPlayer); - $playerBonus->load(); - - foreach ($commander->army as $squadron) { - foreach ($squadron->squadron as $ship) { - $ship->setBonus($playerBonus->bonus); - } - } - } - - public function upExperience(Commander $commander, $earnedExperience) { - $commander->experience += $earnedExperience; - $initialLevel = $commander->getLevel(); - - while ($commander->experience >= $this->experienceToLevelUp($commander)) { - $commander->setLevel($commander->getLevel() + 1); - } - $this->entityManager->getRepository(Commander::class)->updateExperience( - $commander, - $earnedExperience, - $commander->getLevel() - $initialLevel - ); - } - - public function nbLevelUp($level, $newExperience) { - $oLevel = $level; - $nLevel = $level; - while (1) { - if ($newExperience >= (pow(2, $nLevel) * $this->commanderBaseLevel)) { - $nLevel++; - } else { - break; - } - } - return $nLevel - $oLevel; - } - - public function experienceToLevelUp(Commander $commander) { - return pow(2, $commander->level) * $this->commanderBaseLevel; - } - - public function emptySquadrons(Commander $commander) { - if (($orbitalBase = $this->orbitalBaseManager->get($commander->rBase)) === null) { - return; - } - $nbSquadrons = count($commander->squadronsIds); - for ($i = 0; $i < $nbSquadrons; ++$i) { - for ($j = 0; $j < 12; $j++) { - $orbitalBase->setShipStorage($j, $orbitalBase->getShipStorage($j) + $commander->getSquadron($i)->getNbrShipByType($j)); - } - $commander->getSquadron($i)->emptySquadron(); - } - } - - public function move(Commander $commander, int $rDestinationPlace, int $rStartPlace, string $travelType, int $travelLength, int $duration): void - { - $commander->rDestinationPlace = $rDestinationPlace; - $commander->rStartPlace = $rStartPlace; - $commander->travelType = $travelType; - $commander->travelLength = $travelLength; - $commander->statement = Commander::MOVING; - - $commander->dStart = ($travelType != 3) ? Utils::now() : $commander->dArrival; - $commander->destinationPlaceName = ($travelType != 3) ? $commander->destinationPlaceName : $commander->startPlaceName; - $commander->startPlaceName = ($travelType != 3) ? $commander->oBName : $commander->destinationPlaceName; - $date = new \DateTime($commander->dStart); - $date->modify('+' . $duration . 'second'); - $commander->dArrival = $date->format('Y-m-d H:i:s'); - - $this->messageBus->dispatch( - new CommanderTravelMessage($commander->getId()), - [DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], - ); - } - - public function resultOfFight(Commander $commander, $isWinner, $enemyCommander) { - if ($isWinner == TRUE) { - $this->setEarnedExperience($commander, $enemyCommander); - $commander->earnedExperience = round($commander->earnedExperience); - LiveReport::$expCom = $commander->earnedExperience; - - $commander->winner = TRUE; - $commander->palmares++; - $commander->setArmyAtEnd(); - $this->upExperience($commander, $commander->earnedExperience); - $commander->hasChanged = TRUE; - } else { - /** @TOVERIFY **/ - $this->setEarnedExperience($commander, $commander, $enemyCommander); - $commander->earnedExperience = round($commander->earnedExperience); - - $commander->winner = FALSE; - $commander->setArmyAtEnd(); - $this->upExperience($commander, $commander->earnedExperience); - $commander->hasChanged = TRUE; - } - } - - # ENGAGE UN COMBAT ENTRE CHAQUE SQUADRON CONTRE UN COMMANDANT - public function engage(Commander $commander, $enemyCommander) { - $commander->setArmy(); - - for ($i = 0; $i < count($commander->squadronsIds); $i++) { - $commander->getSquadron($i)->relId = 0; - } - $idSquadron = 0; - foreach ($commander->army as $squadron) { - if ($squadron->getNbrShips() != 0 AND $squadron->getLineCoord() * 3 <= FightManager::getCurrentLine()) { - $enemyCommander = $squadron->engage($enemyCommander, $idSquadron, $commander->id, $commander->name, $commander); - } - $idSquadron++; - } - return $enemyCommander; - } - - public function getPosition(Commander $commander, $x1, $y1, $x2, $y2) { - $x = $x1; - $y = $y1; - if ($commander->statement == Commander::MOVING) { - $parcouredTime = Utils::interval($commander->dStart, Utils::now(), 's'); - $totalTime = Utils::interval($commander->dStart, $commander->dArrival, 's'); - $progression = $parcouredTime / $totalTime; - - $x = $x1 + $progression * ($x2-$x1); - $y = $y1 + $progression * ($y2-$y1); - } - return array($x, $y); - } - - public function getEventInfo(Commander $commander) { - $info = new ArrayList(); - $info->add('id', $commander->id); - $info->add('name', $commander->name); - $info->add('avatar', $commander->avatar); - $info->add('level', $commander->level); - - $info->add('dStart', $commander->dStart); - $info->add('rStart', $commander->rStartPlace); - $info->add('nStart', $commander->startPlaceName); - $info->add('dArrival', $commander->dArrival); - $info->add('rArrival', $commander->rDestinationPlace); - $info->add('nArrival', $commander->destinationPlaceName); - - $info->add('travelType', $commander->travelType); - $info->add('resources', $commander->resources); - - return $info; - } - - public function uChangeBase(Commander $commander): void - { - $place = $this->placeManager->get($commander->rDestinationPlace); - $place->commanders = $this->getBaseCommanders($place->id); - $commanderPlace = $this->placeManager->get($commander->rBase); - $player = $this->playerManager->get($commander->rPlayer); - $playerBonus = $this->playerBonusManager->getBonusByPlayer($player); - $this->playerBonusManager->load($playerBonus); - # si la place et la flotte ont la même couleur - # on pose la flotte si il y a assez de place - # sinon on met la flotte dans les hangars - if ($place->playerColor !== $commander->playerColor or $place->typeOfBase !== Place::TYP_ORBITALBASE) { - # retour forcé - $this->comeBack($place, $commander, $commanderPlace, $playerBonus); - $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); - $this->entityManager->flush(); - return; - } - $maxCom = - ($place->typeOfOrbitalBase == OrbitalBase::TYP_MILITARY || $place->typeOfOrbitalBase == OrbitalBase::TYP_CAPITAL) - ? OrbitalBase::MAXCOMMANDERMILITARY - : OrbitalBase::MAXCOMMANDERSTANDARD - ; - - # si place a assez de case libre : - if (count($place->commanders) < $maxCom) { - $comLine2 = 0; - - foreach ($place->commanders as $com) { - if ($com->line == 2) { - $comLine2++; - } - } - - if ($maxCom == OrbitalBase::MAXCOMMANDERMILITARY) { - if ($comLine2 < 2) { - $commander->line = 2; - } else { - $commander->line = 1; - } - } else { - if ($comLine2 < 1) { - $commander->line = 2; - } else { - $commander->line = 1; - } - } - - # changer rBase commander - $commander->rBase = $place->id; - $this->endTravel($commander, Commander::AFFECTED); - - # ajouter à la place le commandant - $place->commanders[] = $commander; - - # envoi de notif - $this->placeManager->sendNotif($place, Place::CHANGESUCCESS, $commander); - } else { - # changer rBase commander - $commander->rBase = $place->id; - $this->endTravel($commander, Commander::RESERVE); - - $this->emptySquadrons($commander); - - # envoi de notif - $this->placeManager->sendNotif($place, Place::CHANGEFAIL, $commander); - } - - # modifier le rPlayer (ne se modifie pas si c'est le même) - $commander->rPlayer = $place->rPlayer; - - # instance de la place d'envoie + suppr commandant de ses flottes - # enlever à rBase le commandant - for ($i = 0; $i < count($commanderPlace->commanders); $i++) { - if ($commanderPlace->commanders[$i]->id == $commander->id) { - unset($commanderPlace->commanders[$i]); - $commanderPlace->commanders = array_merge($commanderPlace->commanders); - } - } - $this->entityManager->flush(); - } - - /** - * @param Commander $commander - * @param string $statement - */ - public function endTravel(Commander $commander, $statement) - { - $commander->travelType = null; - $commander->travelLength = null; - $commander->dStart = null; - $commander->dArrival = null; - $commander->rStartPlace = null; - $commander->rDestinationPlace = null; - $commander->statement = $statement; - } - - # HELPER - - # comeBack - public function comeBack(Place $place, $commander, $commanderPlace, $playerBonus) { - $length = Game::getDistance($place->getXSystem(), $commanderPlace->getXSystem(), $place->getYSystem(), $commanderPlace->getYSystem()); - $duration = Game::getTimeToTravel($commanderPlace, $place, $playerBonus->bonus); - - $this->move($commander, $commander->rBase, $place->id, Commander::BACK, $length, $duration); - } - - public function lootAnEmptyPlace(Place $place, $commander, $playerBonus) { - $bonus = $playerBonus->bonus->get(PlayerBonus::SHIP_CONTAINER); - - $storage = $commander->getPevToLoot() * Commander::COEFFLOOT; - $storage += round($storage * ((2 * $bonus) / 100)); - - $resourcesLooted = 0; - $resourcesLooted = ($storage > $place->resources) ? $place->resources : $storage; - - $place->resources -= $resourcesLooted; - $commander->resources = $resourcesLooted; - - LiveReport::$resources = $resourcesLooted; - } - - public function lootAPlayerPlace($commander, $playerBonus, $placeBase) { - $bonus = $playerBonus->bonus->get(PlayerBonus::SHIP_CONTAINER); - - $resourcesToLoot = $placeBase->getResourcesStorage() - Commander::LIMITTOLOOT; - - $storage = $commander->getPevToLoot() * Commander::COEFFLOOT; - $storage += round($storage * ((2 * $bonus) / 100)); - - $resourcesLooted = 0; - $resourcesLooted = ($storage > $resourcesToLoot) ? $resourcesToLoot : $storage; - - if ($resourcesLooted > 0) { - $this->orbitalBaseManager->decreaseResources($placeBase, $resourcesLooted); - $commander->resources = $resourcesLooted; - - LiveReport::$resources = $resourcesLooted; - } - } - - public function startFight(Place $place, $commander, $player, $enemyCommander = NULL, $enemyPlayer = NULL, $pvp = FALSE) { - if ($pvp == TRUE) { - $commander->setArmy(); - $enemyCommander->setArmy(); - - $this->fightManager->startFight($commander, $player, $enemyCommander, $enemyPlayer); - } else { - $commander->setArmy(); - $computerCommander = $this->createVirtualCommander($place); - - $this->fightManager->startFight($commander, $player, $computerCommander); - } - } - - public function createReport(Place $place) { - $report = new Report(); - - $report->rPlayerAttacker = LiveReport::$rPlayerAttacker; - $report->rPlayerDefender = LiveReport::$rPlayerDefender; - $report->rPlayerWinner = LiveReport::$rPlayerWinner; - $report->avatarA = LiveReport::$avatarA; - $report->avatarD = LiveReport::$avatarD; - $report->nameA = LiveReport::$nameA; - $report->nameD = LiveReport::$nameD; - $report->levelA = LiveReport::$levelA; - $report->levelD = LiveReport::$levelD; - $report->experienceA = LiveReport::$experienceA; - $report->experienceD = LiveReport::$experienceD; - $report->palmaresA = LiveReport::$palmaresA; - $report->palmaresD = LiveReport::$palmaresD; - $report->resources = LiveReport::$resources; - $report->expCom = LiveReport::$expCom; - $report->expPlayerA = LiveReport::$expPlayerA; - $report->expPlayerD = LiveReport::$expPlayerD; - $report->rPlace = $place->id; - $report->type = LiveReport::$type; - $report->round = LiveReport::$round; - $report->importance = LiveReport::$importance; - $report->squadrons = LiveReport::$squadrons; - $report->dFight = LiveReport::$dFight; - $report->isLegal = LiveReport::$isLegal; - $report->placeName = ($place->baseName == '') ? 'planète rebelle' : $place->baseName; - $report->setArmies(); - $report->setPev(); - - $this->reportManager->add($report); - LiveReport::clear(); - - return $report; - } - - /** - * @param Place $place - * @return Commander - */ - public function createVirtualCommander(Place $place) { - $vCommander = new Commander(); - $vCommander->id = 'Null'; - $vCommander->rPlayer = $this->gaiaId; - $vCommander->name = 'rebelle'; - $vCommander->avatar = 't3-c4'; - $vCommander->sexe = 1; - $vCommander->age = 42; - $vCommander->statement = 1; - $vCommander->level = ceil((((($place->maxDanger / (Place::DANGERMAX / Place::LEVELMAXVCOMMANDER))) * 9) + ($place->population / (Place::POPMAX / Place::LEVELMAXVCOMMANDER))) / 10); - - $nbrsquadron = ceil($vCommander->level * (($place->danger + 1) / ($place->maxDanger + 1))); - - $army = array(); - $squadronsIds = array(); - - for ($i = 0; $i < $nbrsquadron; $i++) { - $aleaNbr = ($place->coefHistory * $place->coefResources * $place->position * $i) % SquadronResource::size(); - $army[] = SquadronResource::get($vCommander->level, $aleaNbr); - $squadronsIds[] = 0; - } - - for ($i = $vCommander->level - 1; $i >= $nbrsquadron; $i--) { - $army[$i] = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Utils::now()); - $squadronsIds[] = 0; - } - - $vCommander->setSquadronsIds($squadronsIds); - $vCommander->setArmyInBegin($army); - $vCommander->setArmy(); - $vCommander->setPevInBegin(); - - return $vCommander; - } -} diff --git a/system/Modules/Ares/Manager/ConquestManager.php b/system/Modules/Ares/Manager/ConquestManager.php deleted file mode 100644 index aed3c16b2..000000000 --- a/system/Modules/Ares/Manager/ConquestManager.php +++ /dev/null @@ -1,246 +0,0 @@ -placeManager->get($commander->rDestinationPlace); - $place->commanders = $this->commanderManager->getBaseCommanders($place->id); - $placeBase = $this->orbitalBaseManager->get($place->id); - $commanderPlace = $this->placeManager->get($commander->rBase); - $commanderPlayer = $this->playerManager->get($commander->rPlayer); - $commanderColor = $this->colorManager->get($commanderPlayer->rColor); - $baseCommanders = $this->commanderManager->getBaseCommanders($place->getId()); - $playerBonus = $this->playerBonusManager->getBonusByPlayer($commanderPlayer); - $this->playerBonusManager->load($playerBonus); - # conquete - if (null !== $place->rPlayer) { - $placePlayer = $this->playerManager->get($place->rPlayer); - if (($place->playerColor != $commander->getPlayerColor() && $place->playerLevel > 3 && $commanderColor->colorLink[$place->playerColor] != Color::ALLY) || ($place->playerColor == 0)) { - $tempCom = array(); - - for ($i = 0; $i < count($place->commanders); $i++) { - if ($place->commanders[$i]->line <= 1) { - $tempCom[] = $place->commanders[$i]; - } - } - for ($i = 0; $i < count($place->commanders); $i++) { - if ($place->commanders[$i]->line >= 2) { - $tempCom[] = $place->commanders[$i]; - } - } - - $place->commanders = $tempCom; - - $nbrBattle = 0; - $reportIds = array(); - $reportArray = array(); - - while ($nbrBattle < count($place->commanders)) { - if ($place->commanders[$nbrBattle]->statement == Commander::AFFECTED) { - LiveReport::$type = Commander::COLO; - LiveReport::$dFight = $commander->dArrival; - - if ($commanderColor->colorLink[$place->playerColor] == Color::ALLY || $commanderColor->colorLink[$place->playerColor] == Color::PEACE) { - LiveReport::$isLegal = Report::ILLEGAL; - } else { - LiveReport::$isLegal = Report::LEGAL; - } - - $this->commanderManager->startFight($place, $commander, $commanderPlayer, $place->commanders[$nbrBattle], $placePlayer, TRUE); - - $report = $this->commanderManager->createReport($place); - $reportArray[] = $report; - $reportIds[] = $report->id; - # PATCH DEGUEU POUR LES MUTLIS-COMBATS - $this->entityManager->clear($report); - $reports = $this->reportManager->getByAttackerAndPlace($commander->rPlayer, $place->id, $commander->dArrival); - foreach($reports as $r) { - if ($r->id == $report->id) { - continue; - } - $r->statementAttacker = Report::DELETED; - $r->statementDefender = Report::DELETED; - } - $this->entityManager->flush(Report::class); - $this->entityManager->clear(Report::class); - ######################################## - - # mettre à jour armyInBegin si prochain combat pour prochain rapport - for ($j = 0; $j < count($commander->armyAtEnd); $j++) { - for ($i = 0; $i < 12; $i++) { - $commander->armyInBegin[$j][$i] = $commander->armyAtEnd[$j][$i]; - } - } - for ($j = 0; $j < count($place->commanders[$nbrBattle]->armyAtEnd); $j++) { - for ($i = 0; $i < 12; $i++) { - $place->commanders[$nbrBattle]->armyInBegin[$j][$i] = $place->commanders[$nbrBattle]->armyAtEnd[$j][$i]; - } - } - - $nbrBattle++; - # mort du commandant - # arrêt des combats - if ($commander->getStatement() == Commander::DEAD) { - break; - } - } else { - $nbrBattle++; - } - } - - # victoire - if ($commander->getStatement() != Commander::DEAD) { - if ($nbrBattle == 0) { - $this->placeManager->sendNotif($place, Place::CONQUERPLAYERWHITOUTBATTLESUCCESS, $commander, NULL); - } else { - $this->placeManager->sendNotifForConquest($place, Place::CONQUERPLAYERWHITBATTLESUCCESS, $commander, $reportIds); - } - - - #attribuer le joueur à la place - $place->commanders = array(); - $place->playerColor = $commander->playerColor; - $place->rPlayer = $commander->rPlayer; - - # changer l'appartenance de la base (et de la place) - $this->orbitalBaseManager->changeOwnerById($place->id, $placeBase, $commander->getRPlayer(), $baseCommanders); - $place->commanders[] = $commander; - - $commander->rBase = $place->id; - $this->commanderManager->endTravel($commander, Commander::AFFECTED); - $commander->line = 2; - - $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place), PlaceOwnerChangeEvent::NAME); - - # PATCH DEGUEU POUR LES MUTLIS-COMBATS - $this->notificationManager->patchForMultiCombats($commander->rPlayer, $place->rPlayer, $commander->dArrival); - # défaite - } else { - for ($i = 0; $i < count($place->commanders); $i++) { - if ($place->commanders[$i]->statement == Commander::DEAD) { - unset($place->commanders[$i]); - $place->commanders = array_merge($place->commanders); - } - } - - $this->placeManager->sendNotifForConquest($place, Place::CONQUERPLAYERWHITBATTLEFAIL, $commander, $reportIds); - } - - } else { - # si c'est la même couleur - if ($place->rPlayer == $commander->rPlayer) { - # si c'est une de nos planètes - # on tente de se poser - $this->commanderManager->uChangeBase($commander); - } else { - # si c'est une base alliée - # on repart - $this->commanderManager->comeBack($place, $commander, $commanderPlace, $playerBonus); - $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); - } - } - - # colonisation - } else { - # faire un combat - LiveReport::$type = Commander::COLO; - LiveReport::$dFight = $commander->dArrival; - LiveReport::$isLegal = Report::LEGAL; - - $this->commanderManager->startFight($place, $commander, $commanderPlayer); - - # victoire - if ($commander->getStatement() !== Commander::DEAD) { - # attribuer le rPlayer à la Place ! - $place->rPlayer = $commander->rPlayer; - $place->commanders[] = $commander; - $place->playerColor = $commander->playerColor; - $place->typeOfBase = 4; - - # créer une base - $ob = new OrbitalBase(); - $ob->rPlace = $place->id; - $ob->setRPlayer($commander->getRPlayer()); - $ob->setName('colonie'); - $ob->iSchool = 500; - $ob->iAntiSpy = 500; - $ob->resourcesStorage = 2000; - $ob->uOrbitalBase = Utils::now(); - $ob->dCreation = Utils::now(); - $this->orbitalBaseManager->updatePoints($ob); - - $this->orbitalBaseManager->add($ob); - - # attibuer le commander à la place - $commander->rBase = $place->id; - $this->commanderManager->endTravel($commander, Commander::AFFECTED); - $commander->line = 2; - - # création du rapport - $report = $this->commanderManager->createReport($place); - - $place->danger = 0; - - $this->placeManager->sendNotif($place, Place::CONQUEREMPTYSSUCCESS, $commander, $report->id); - - $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place), PlaceOwnerChangeEvent::NAME); - - # défaite - } else { - # création du rapport - $report = $this->commanderManager->createReport($place); - - # mise à jour du danger - $percentage = (($report->pevAtEndD + 1) / ($report->pevInBeginD + 1)) * 100; - $place->danger = round(($percentage * $place->danger) / 100); - - $this->placeManager->sendNotif($place, Place::CONQUEREMPTYFAIL, $commander); - - # enlever le commandant de la place - foreach ($commanderPlace->commanders as $placeCommander) { - if ($placeCommander->getId() == $commander->getId()) { - unset($placeCommander); - $commanderPlace->commanders = array_merge($commanderPlace->commanders); - } - } - } - } - $this->entityManager->flush(Commander::class); - $this->entityManager->flush($place); - } -} diff --git a/system/Modules/Ares/Manager/FightManager.php b/system/Modules/Ares/Manager/FightManager.php deleted file mode 100644 index f6da8a112..000000000 --- a/system/Modules/Ares/Manager/FightManager.php +++ /dev/null @@ -1,346 +0,0 @@ -isAFight = $isAFight; - } - - # GETTER - - public static function getCurrentLine() { - return self::$currentLine; - } - - public static function getAFighterBonus($i) { - return self::$AFighterBonus[$i]; - } - public static function getACorvetteBonus($i) { - return self::$ACorvetteBonus[$i]; - } - public static function getAFrigateBonus($i) { - return self::$AFrigateBonus[$i]; - } - public static function getADestroyerBonus($i) { - return self::$ADestroyerBonus[$i]; - } - - public static function getDFighterBonus($i) { - return self::$DFighterBonus[$i]; - } - public static function getDCorvetteBonus($i) { - return self::$DCorvetteBonus[$i]; - } - public static function getDFrigateBonus($i) { - return self::$DFrigateBonus[$i]; - } - public static function getDDestroyerBonus($i) { - return self::$DDestroyerBonus[$i]; - } - - - - // SETTER - - public function setPlayerBonus($ABonus, $DBonus) { - if (isset($ABonus['global'])) { - for($i = 0; $i < 4; $i++) { - self::$AFighterBonus[$i] += $ABonus['global'][$i]; - self::$ACorvetteBonus[$i] += $ABonus['global'][$i]; - self::$AFrigateBonus[$i] += $ABonus['global'][$i]; - self::$ADestroyerBonus[$i] += $ABonus['global'][$i]; - } - } - - if (isset($ABonus['fighter'])) { - for($i = 0; $i < 4; $i++) { - self::$AFighterBonus[$i] += $ABonus['fighter'][$i]; - } - } - - if (isset($ABonus['corvette'])) { - for($i = 0; $i < 4; $i++) { - self::$ACorvetteBonus[$i] += $ABonus['corvette'][$i]; - } - } - - if (isset($ABonus['frigate'])) { - for($i = 0; $i < 4; $i++) { - self::$AFrigateBonus[$i] += $ABonus['frigate'][$i]; - } - } - - if (isset($ABonus['destroyer'])) { - for($i = 0; $i < 4; $i++) { - self::$ADestroyerBonus[$i] += $ABonus['destroyer'][$i]; - } - } - - if (isset($DBonus['global'])) { - for($i = 0; $i < 4; $i++) { - self::$DFighterBonus[$i] += $DBonus['global'][$i]; - self::$DCorvetteBonus[$i] += $DBonus['global'][$i]; - self::$DFrigateBonus[$i] += $DBonus['global'][$i]; - self::$DDestroyerBonus[$i] += $DBonus['global'][$i]; - } - } - - if (isset($DBonus['fighter'])) { - for($i = 0; $i < 4; $i++) { - self::$DFighterBonus[$i] += $DBonus['fighter'][$i]; - } - } - - if (isset($DBonus['corvette'])) { - for($i = 0; $i < 4; $i++) { - self::$DCorvetteBonus[$i] += $DBonus['corvette'][$i]; - } - } - - if (isset($DBonus['frigate'])) { - for($i = 0; $i < 4; $i++) { - self::$DFrigateBonus[$i] += $DBonus['frigate'][$i]; - } - } - - if (isset($DBonus['destroyer'])) { - for($i = 0; $i < 4; $i++) { - self::$DDestroyerBonus[$i] += $DBonus['destroyer'][$i]; - } - } - - } - - public function setEnvironmentBonus($ABonus, $DBonus) { - if (isset($ABonus['global'])) { - for($i = 0; $i < 4; $i++) { - self::$AFighterBonus[$i] += $ABonus['global'][$i]; - self::$ACorvetteBonus[$i] += $ABonus['global'][$i]; - self::$AFrigateBonus[$i] += $ABonus['global'][$i]; - self::$ADestroyerBonus[$i] += $ABonus['global'][$i]; - } - } - - if (isset($ABonus['fighter'])) { - for($i = 0; $i < 4; $i++) { - self::$AFighterBonus[$i] += $ABonus['fighter'][$i]; - } - } - - if (isset($ABonus['corvette'])) { - for($i = 0; $i < 4; $i++) { - self::$ACorvetteBonus[$i] += $ABonus['corvette'][$i]; - } - } - - if (isset($ABonus['frigate'])) { - for($i = 0; $i < 4; $i++) { - self::$AFrigateBonus[$i] += $ABonus['frigate'][$i]; - } - } - - if (isset($ABonus['destroyer'])) { - for($i = 0; $i < 4; $i++) { - self::$ADestroyerBonus[$i] += $ABonus['destroyer'][$i]; - } - } - - if (isset($DBonus['global'])) { - for($i = 0; $i < 4; $i++) { - self::$DFighterBonus[$i] += $DBonus['global'][$i]; - self::$DCorvetteBonus[$i] += $DBonus['global'][$i]; - self::$DFrigateBonus[$i] += $DBonus['global'][$i]; - self::$DDestroyerBonus[$i] += $DBonus['global'][$i]; - } - } - - if (isset($DBonus['fighter'])) { - for($i = 0; $i < 4; $i++) { - self::$DFighterBonus[$i] += $DBonus['fighter'][$i]; - } - } - - if (isset($DBonus['corvette'])) { - for($i = 0; $i < 4; $i++) { - self::$DCorvetteBonus[$i] += $DBonus['corvette'][$i]; - } - } - - if (isset($DBonus['frigate'])) { - for($i = 0; $i < 4; $i++) { - self::$DFrigateBonus[$i] += $DBonus['frigate'][$i]; - } - } - - if (isset($DBonus['destroyer'])) { - for($i = 0; $i < 4; $i++) { - self::$DDestroyerBonus[$i] += $DBonus['destroyer'][$i]; - } - } - } - - /** - * DEMARE LE COMBAT ENTRE DEUX COMMANDANT - * COMPTE L'ARMEE D - * si 0 vaisseaux - * A gagne - * SINON COMBAT - * COMPTE L'ARMEE A - * si 0 vaisseaux - * D gagne - * SINON COMBAT - */ - - public function startFight($commanderA, $playerA, $commanderD, $playerD = NULL) { - $commanderA->setIsAttacker(TRUE); - $commanderD->setIsAttacker(FALSE); - - $commanderA->setPevInBegin(); - $commanderD->setPevInBegin(); - - LiveReport::$rPlayerAttacker = $commanderA->rPlayer; - LiveReport::$rPlayerDefender = $commanderD->rPlayer; - - LiveReport::$avatarA = $commanderA->avatar; - LiveReport::$avatarD = $commanderD->avatar; - LiveReport::$nameA = $commanderA->name; - LiveReport::$nameD = $commanderD->name; - LiveReport::$levelA = $commanderA->level; - LiveReport::$levelD = $commanderD->level; - LiveReport::$experienceA = $commanderA->experience; - LiveReport::$experienceD = $commanderD->experience; - LiveReport::$palmaresA = $commanderA->palmares; - LiveReport::$palmaresD = $commanderD->palmares; - - $shipsA = $commanderA->getNbrShipByType(); - $shipsD = $commanderD->getNbrShipByType(); - $weight = 0; - - for ($i = 0; $i < count($shipsA); $i++) { - $weight += DataAnalysis::resourceToStdUnit(ShipResource::getInfo($i, 'resourcePrice') * $shipsA[$i]); - $weight += DataAnalysis::resourceToStdUnit(ShipResource::getInfo($i, 'resourcePrice') * $shipsD[$i]); - } - - LiveReport::$importance = $weight; - - $i = 0; - foreach ($commanderA->armyInBegin AS $s) { - LiveReport::$squadrons[] = array(0, $i, 0, 0, $commanderA->id, $s[0], $s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11]); - $i++; - } - $i = 0; - foreach ($commanderD->armyInBegin AS $s) { - LiveReport::$squadrons[] = array(0, $i, 0, 0, $commanderD->id, $s[0], $s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11]); - $i++; - } - - while(1) { - if (LiveReport::$round == 1000) { - break; - } - $nbrShipsD = 0; - $nbrShipsA = 0; - - foreach ($commanderA->getArmy() as $squadronA) { - $nbrShipsA += $squadronA->getNbrShips(); - } - if ($nbrShipsA == 0) { - $this->commanderManager->resultOfFight($commanderD, TRUE, $commanderA); - $this->commanderManager->resultOfFight($commanderA, FALSE, $commanderD); - $commanderA->setStatement(3); - $commanderD->setDDeath(Utils::now()); - LiveReport::$rPlayerWinner = $commanderD->rPlayer; - - if ($commanderD->rPlayer != $this->gaiaId) { - $playerD->increaseVictory(1); - $playerA->increaseDefeat(1); - } else{ - $playerA->increaseDefeat(1); - } - - break; - } else { - $commanderA = $this->commanderManager->engage($commanderD, $commanderA); - LiveReport::$halfround++; - } - - foreach ($commanderD->getArmy() as $squadronD) { - $nbrShipsD += $squadronD->getNbrShips(); - } - if($nbrShipsD == 0) { - $this->commanderManager->resultOfFight($commanderA, TRUE, $commanderD); - $this->commanderManager->resultOfFight($commanderD, FALSE, $commanderA); - $commanderD->setStatement(3); - $commanderD->setDDeath(Utils::now()); - LiveReport::$rPlayerWinner = $commanderA->rPlayer; - - if ($commanderD->rPlayer != $this->gaiaId) { - $playerA->increaseVictory(1); - $playerD->increaseDefeat(1); - } else { - $playerA->increaseVictory(1); - } - - break; - } else { - $commanderD = $this->commanderManager->engage($commanderA, $commanderD); - LiveReport::$halfround++; - } - - LiveReport::$round++; - self::$currentLine++; - } - - $i = 0; - foreach ($commanderA->armyAtEnd AS $s) { - LiveReport::$squadrons[] = array(0, $i, 0, -1, $commanderA->id, $s[0], $s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11]); - $i++; - } - $i = 0; - foreach ($commanderD->armyAtEnd AS $s) { - LiveReport::$squadrons[] = array(0, $i, 0, -1, $commanderD->id, $s[0], $s[1], $s[2], $s[3], $s[4], $s[5], $s[6], $s[7], $s[8], $s[9], $s[10], $s[11]); - $i++; - } - return array($commanderA, $commanderD); - } -} diff --git a/system/Modules/Ares/Manager/LiveReportManager.php b/system/Modules/Ares/Manager/LiveReportManager.php deleted file mode 100644 index 94abd536a..000000000 --- a/system/Modules/Ares/Manager/LiveReportManager.php +++ /dev/null @@ -1,92 +0,0 @@ -entityManager->getRepository(LiveReport::class)->get($id); - } - - /** - * @param int $playerId - * @return array - */ - public function getPlayerReports($playerId) - { - return $this->entityManager->getRepository(LiveReport::class)->getPlayerReports($playerId); - } - - /** - * @param int $playerId - * @param array $places - * @return array - */ - public function getAttackReportsByPlaces($playerId, $places) - { - return $this->entityManager->getRepository(LiveReport::class)->getAttackReportsByPlaces($playerId, $places); - } - - /** - * @param int $playerId - * @param boolean $hasRebels - * @param boolean $isArchive - * @return array - */ - public function getAttackReportsByMode($playerId, $hasRebels, $isArchive) - { - return $this->entityManager->getRepository(LiveReport::class)->getAttackReportsByMode($playerId, $hasRebels, $isArchive); - } - - /** - * @param int $playerId - * @param boolean $hasRebels - * @param boolean $isArchive - * @return array - */ - public function getDefenseReportsByMode($playerId, $hasRebels, $isArchive) - { - return $this->entityManager->getRepository(LiveReport::class)->getDefenseReportsByMode($playerId, $hasRebels, $isArchive); - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionAttackReports($factionId) - { - return $this->entityManager->getRepository(LiveReport::class)->getFactionAttackReports($factionId); - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionDefenseReports($factionId) - { - return $this->entityManager->getRepository(LiveReport::class)->getFactionDefenseReports($factionId); - } -} diff --git a/system/Modules/Ares/Manager/LootManager.php b/system/Modules/Ares/Manager/LootManager.php deleted file mode 100644 index e3cda3baf..000000000 --- a/system/Modules/Ares/Manager/LootManager.php +++ /dev/null @@ -1,165 +0,0 @@ -placeManager->get($commander->rDestinationPlace); - $place->commanders = $this->commanderManager->getBaseCommanders($place->id); - $placePlayer = $this->playerManager->get($place->rPlayer); - $placeBase = $this->orbitalBaseManager->get($place->id); - $commanderPlace = $this->placeManager->get($commander->rBase); - $commanderPlayer = $this->playerManager->get($commander->rPlayer); - $commanderColor = $this->colorManager->get($commanderPlayer->rColor); - $playerBonus = $this->playerBonusManager->getBonusByPlayer($commanderPlayer); - $this->playerBonusManager->load($playerBonus); - LiveReport::$type = Commander::LOOT; - LiveReport::$dFight = $commander->dArrival; - - # si la planète est vide - if ($place->rPlayer == NULL) { - LiveReport::$isLegal = Report::LEGAL; - - # planète vide : faire un combat - $this->commanderManager->startFight($place, $commander, $commanderPlayer); - - # victoire - if ($commander->getStatement() != Commander::DEAD) { - # piller la planète - $this->commanderManager->lootAnEmptyPlace($place, $commander, $playerBonus); - # création du rapport de combat - $report = $this->commanderManager->createReport($place); - - # réduction de la force de la planète - $percentage = (($report->pevAtEndD + 1) / ($report->pevInBeginD + 1)) * 100; - $place->danger = round(($percentage * $place->danger) / 100); - - $this->commanderManager->comeBack($place, $commander, $commanderPlace, $playerBonus); - $this->placeManager->sendNotif($place, Place::LOOTEMPTYSSUCCESS, $commander, $report->id); - } else { - # si il est mort - # enlever le commandant de la session - for ($i = 0; $i < count($commanderPlace->commanders); $i++) { - if ($commanderPlace->commanders[$i]->getId() == $commander->getId()) { - unset($commanderPlace->commanders[$i]); - $commanderPlace->commanders = array_merge($commanderPlace->commanders); - } - } - - # création du rapport de combat - $report = $this->commanderManager->createReport($place); - $this->placeManager->sendNotif($place, Place::LOOTEMPTYFAIL, $commander, $report->id); - - # réduction de la force de la planète - $percentage = (($report->pevAtEndD + 1) / ($report->pevInBeginD + 1)) * 100; - $place->danger = round(($percentage * $place->danger) / 100); - } - # si il y a une base d'un joueur - } else { - if ($commanderColor->colorLink[$place->playerColor] == Color::ALLY || $commanderColor->colorLink[$place->playerColor] == Color::PEACE) { - LiveReport::$isLegal = Report::ILLEGAL; - } else { - LiveReport::$isLegal = Report::LEGAL; - } - - # planète à joueur : si $this->rColor != commandant->rColor - # si il peut l'attaquer - if (($place->playerColor != $commander->getPlayerColor() && $place->playerLevel > 1 && $commanderColor->colorLink[$place->playerColor] != Color::ALLY) || ($place->playerColor == 0)) { - $dCommanders = array(); - foreach ($place->commanders as $dCommander) { - if ($dCommander->statement == Commander::AFFECTED && $dCommander->line == 1) { - $dCommanders[] = $dCommander; - } - } - - # il y a des commandants en défense : faire un combat avec un des commandants - if (count($dCommanders) != 0) { - $aleaNbr = rand(0, count($dCommanders) - 1); - $this->commanderManager->startFight($place, $commander, $commanderPlayer, $dCommanders[$aleaNbr], $placePlayer, TRUE); - - # victoire - if ($commander->getStatement() != Commander::DEAD) { - # piller la planète - $this->commanderManager->lootAPlayerPlace($commander, $playerBonus, $placeBase); - $this->commanderManager->comeBack($place, $commander, $commanderPlace, $playerBonus); - - # suppression des commandants - unset($place->commanders[$aleaNbr]); - $place->commanders = array_merge($place->commanders); - - # création du rapport - $report = $this->commanderManager->createReport($place); - - $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITBATTLESUCCESS, $commander, $report->id); - - # défaite - } else { - # enlever le commandant de la session - for ($i = 0; $i < count($commanderPlace->commanders); $i++) { - if ($commanderPlace->commanders[$i]->getId() == $commander->getId()) { - unset($commanderPlace->commanders[$i]); - $commanderPlace->commanders = array_merge($commanderPlace->commanders); - } - } - - # création du rapport - $report = $this->commanderManager->createReport($place); - - # mise à jour des flottes du commandant défenseur - for ($j = 0; $j < count($dCommanders[$aleaNbr]->armyAtEnd); $j++) { - for ($i = 0; $i < 12; $i++) { - $dCommanders[$aleaNbr]->armyInBegin[$j][$i] = $dCommanders[$aleaNbr]->armyAtEnd[$j][$i]; - } - } - - $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITBATTLEFAIL, $commander, $report->id); - } - } else { - $this->commanderManager->lootAPlayerPlace($commander, $playerBonus, $placeBase); - $this->commanderManager->comeBack($place, $commander, $commanderPlace, $playerBonus); - $this->placeManager->sendNotif($place, Place::LOOTPLAYERWHITOUTBATTLESUCCESS, $commander); - } - - } else { - # si c'est la même couleur - if ($place->rPlayer == $commander->rPlayer) { - # si c'est une de nos planètes - # on tente de se poser - $this->commanderManager->uChangeBase($commander); - } else { - # si c'est une base alliée - # on repart - $this->commanderManager->comeBack($place, $commander, $commanderPlace, $playerBonus); - $this->placeManager->sendNotif($place, Place::CHANGELOST, $commander); - } - } - } - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Ares/Manager/ReportManager.php b/system/Modules/Ares/Manager/ReportManager.php deleted file mode 100644 index eb2599576..000000000 --- a/system/Modules/Ares/Manager/ReportManager.php +++ /dev/null @@ -1,59 +0,0 @@ -entityManager->getRepository(Report::class)->get($id); - } - - /** - * @param int $attackerId - * @param int $placeId - * @param string $dFight - * @return array - */ - public function getByAttackerAndPlace($attackerId, $placeId, $dFight) - { - return $this->entityManager->getRepository(Report::class)->getByAttackerAndPlace($attackerId, $placeId, $dFight); - } - - /** - * @param Report $report - */ - public function add(Report $report) { - $this->entityManager->persist($report); - $this->entityManager->flush($report); - } - - /** - * @param int $playerId - */ - public function removePlayerReports($playerId) - { - $this->entityManager->getRepository(Report::class)->removePlayerReports($playerId); - } -} diff --git a/system/Modules/Ares/Manager/SquadronManager.php b/system/Modules/Ares/Manager/SquadronManager.php deleted file mode 100644 index aff5d4896..000000000 --- a/system/Modules/Ares/Manager/SquadronManager.php +++ /dev/null @@ -1,33 +0,0 @@ -entityManager->getRepository(Squadron::class)->getCommanderSquadrons($commander->getId()); - } - - /** - * @param int $id - * @return Squadron - */ - public function get($id) - { - return $this->entityManager->getRepository(Squadron::class)->get($id); - } -} diff --git a/system/Modules/Ares/Message/CommanderTravelMessage.php b/system/Modules/Ares/Message/CommanderTravelMessage.php deleted file mode 100644 index f03e3d7cb..000000000 --- a/system/Modules/Ares/Message/CommanderTravelMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -commanderId; - } -} diff --git a/system/Modules/Ares/Message/CommandersExperienceMessage.php b/system/Modules/Ares/Message/CommandersExperienceMessage.php deleted file mode 100644 index 4c6f36ec9..000000000 --- a/system/Modules/Ares/Message/CommandersExperienceMessage.php +++ /dev/null @@ -1,8 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param string $name - * @return $this - */ - public function setName($name) - { - $this->name = $name; - - return $this; - } - - /** - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * @param string $avatar - * @return $this - */ - public function setAvatar($avatar) - { - $this->avatar = $avatar; - - return $this; - } - - /** - * @return string - */ - public function getAvatar() - { - return $this->avatar; - } - - /** - * @param int $rPlayer - * @return $this - */ - public function setRPlayer($rPlayer) - { - $this->rPlayer = $rPlayer; - - return $this; - } - - /** - * @return int - */ - public function getRPlayer() - { - return $this->rPlayer; - } - - /** - * @param string $playerName - * @return $this - */ - public function setPlayerName($playerName) - { - $this->playerName = $playerName; - - return $this; - } - - /** - * @return string - */ - public function getPlayerName() - { - return $this->playerName; - } - - /** - * @param int $playerColor - * @return $this - */ - public function setPlayerColor($playerColor) - { - $this->playerColor = $playerColor; - - return $this; - } - - /** - * @return int - */ - public function getPlayerColor() - { - return $this->playerColor; - } - - /** - * @param int $rBase - * @return $this - */ - public function setRBase($rBase) - { - $this->rBase = $rBase; - - return $this; - } - - /** - * @return int - */ - public function getRBase() - { - return $this->rBase; - } - - /** - * @param string $comment - * @return $this - */ - public function setComment($comment) - { - $this->comment = $comment; - - return $this; - } - - /** - * @return string - */ - public function getComment() - { - return $this->comment; - } - - /** - * @param int $sexe - * @return $this - */ - public function setSexe($sexe) - { - $this->sexe = $sexe; - - return $this; - } - - /** - * @return int - */ - public function getSexe() - { - return $this->sexe; - } - - /** - * @param int $age - * @return $this - */ - public function setAge($age) - { - $this->age = $age; - - return $this; - } - - /** - * @return int - */ - public function getAge() - { - return $this->age; - } - - /** - * @param int $level - * @return $this - */ - public function setLevel($level) - { - $this->level = $level; - - return $this; - } - - /** - * @return int - */ - public function getLevel() - { - return $this->level; - } - - /** - * @param int $experience - * @return $this - */ - public function setExperience($experience) - { - $this->experience = $experience; - - return $this; - } - - /** - * @return int - */ - public function getExperience() - { - return $this->experience; - } - - /** - * @param int $earnedExperience - * @return $this - */ - public function setEarnedExperience($earnedExperience) - { - $this->earnedExperience = $earnedExperience; - - return $this; - } - - /** - * @return int - */ - public function getEarnedExperience() - { - return $this->earnedExperience; - } - - /** - * @param string $updatedAt - * @return $this - */ - public function setUpdatedAt($updatedAt) - { - $this->uCommander = $updatedAt; - - return $this; - } - - /** - * @return string - */ - public function getUpdatedAt() - { - return $this->uCommander; - } - - /** - * @param int $palmares - * @return $this - */ - public function setPalmares($palmares) - { - $this->palmares = $palmares; - - return $this; - } - - /** - * @return int - */ - public function getPalmares() - { - return $this->palmares; - } - - /** - * @param int $travelType - */ - public function setTravelType($travelType) - { - $this->travelType = $travelType; - - return $this; - } - - /** - * @return int - */ - public function getTravelType() - { - return $this->travelType; - } - - /** - * @param int $travelLength - * @return Commander - */ - public function setTravelLength($travelLength) - { - $this->travelLength = $travelLength; - - return $this; - } - - /** - * @return int - */ - public function getTravelLength() - { - return $this->travelLength; - } - - /** - * @param int $startPlaceId - * @return Commander - */ - public function setStartPlaceId($startPlaceId) - { - $this->rStartPlace = $startPlaceId; - - return $this; - } - - /** - * @return int - */ - public function getStartPlaceId() - { - return $this->rStartPlace; - } - - /** - * @param int $rDestinationPlace - * @return $this - */ - public function setRPlaceDestination($rDestinationPlace) - { - $this->rDestinationPlace = $rDestinationPlace; - - return $this; - } - - /** - * @return int - */ - public function getRPlaceDestination() - { - return $this->rDestinationPlace; - } - - /** - * @param int $resources - * @return $this - */ - public function setResources($resources) - { - $this->resources = $resources; - - return $this; - } - - /** - * @return int - */ - public function getResources() - { - return $this->resources; - } - - /** - * @param int $statement - * @return $this - */ - public function setStatement($statement) - { - $this->statement = $statement; - - return $this; - } - - /** - * @return int - */ - public function getStatement() - { - return $this->statement; - } - - /** - * @param string $dCreation - * @return $this - */ - public function setDCreation($dCreation) - { - $this->dCreation = $dCreation; - - return $this; - } - - /** - * @return string - */ - public function getDCreation() - { - return $this->dCreation; - } - - /** - * @param string $dAffectation - * @return $this - */ - public function setDAffectation($dAffectation) - { - $this->dAffectation = $dAffectation; - - return $this; - } - - /** - * @return string - */ - public function getDAffectation() - { - return $this->dAffectation; - } - - /** - * @param string $startedAt - * @return \Asylamba\Modules\Ares\Model\Commander - */ - public function setStartedAt($startedAt) - { - $this->dStart = $startedAt; - - return $this; - } - - /** - * @return string - */ - public function getStartedAt() - { - return $this->dStart; - } - - /** - * @param string $arrivalDate - * @return $this - */ - public function setArrivalDate($arrivalDate) - { - $this->dArrival = $arrivalDate; - - return $this; - } - - /** - * @return string - */ - public function getArrivalDate() - { - return $this->dArrival; - } - - /** - * @param string $dDeath - * @return $this - */ - public function setDDeath($dDeath) - { - $this->dDeath = $dDeath; - - return $this; - } - - /** - * @return string - */ - public function getDDeath() - { - return $this->dDeath; - } - - /** - * @param int $lengthTravel - * @return $this - */ - public function setLengthTravel($lengthTravel) - { - $this->lengthTravel = $lengthTravel; - - return $this; - } - - /** - * @return int - */ - public function getLengthTravel() - { - return $this->lengthTravel; - } - - /** - * @param string $oBName - * @return $this - */ - public function setBaseName($oBName) - { - $this->oBName = $oBName; - - return $this; - } - - /** - * @return string - */ - public function getBaseName() - { - return $this->oBName; - } - - /** - * @param string $doName - * @return $this - */ - public function setDestinationPlaceName($doName) - { - $this->destinationPlaceName = $doName; - - return $this; - } - - /** - * @return string - */ - public function getDestinationPlaceName() - { - return $this->destinationPlaceName; - } - - /** - * @param array $squadronsIds - * @return $this - */ - public function setSquadronsIds($squadronsIds) - { - $this->squadronsIds = $squadronsIds; - - return $this; - } - - /** - * @param int $squadronId - * @return $this - */ - public function addSquadronId($squadronId) - { - $this->squadronsIds[] = $squadronId; - - return $this; - } - - /** - * @return array - */ - public function getSquadronsIds() - { - return $this->squadronsIds; - } - - /** - * @param array $armyInBegin - * @return $this - */ - public function setArmyInBegin($armyInBegin) - { - $this->armyInBegin = $armyInBegin; - - return $this; - } - - /** - * @param array $army - * @return $this - */ - public function addArmyInBegin($army) - { - $this->armyInBegin[] = $army; - - return $this; - } - - /** - * @return array - */ - public function getArmyInBegin() - { - return $this->armyInBegin; - } - - /** - * @param bool $isAttacker - * @return $this - */ - public function setIsAttacker($isAttacker) - { - $this->isAttacker = $isAttacker; - - return $this; - } - - /** - * @return bool - */ - public function getIsAttacker() - { - return $this->isAttacker; - } - - public function setArmy() - { - if (!$this->hasArmySetted) { - for( $i = 0; $i < count($this->squadronsIds) AND $i < 25; $i++) { - $this->army[$i] = new Squadron( - $this->armyInBegin[$i], - $this->squadronsIds[$i], - self::$LINECOORD[$i], - $i, - $this->id); - } - $this->setPevInBegin(); - $this->hasArmySetted = TRUE; - } - } - - public function getArmy() - { - $this->setArmy(); - return $this->army; - } - - public function setPevInBegin() { - $pev = 0; - foreach ($this->armyInBegin as $squadron) { - for ($i = 0; $i < 12; $i++) { - $pev += $squadron[$i] * ShipResource::getInfo($i, 'pev'); - } - } - $this->pevInBegin = $pev; - } - - public function getPevInBegin() - { - return $this->pevInBegin; - } - - public function getPev() { - $pev = 0; - foreach ($this->armyInBegin as $squadron) { - for ($i = 0; $i < 12; $i++) { - $pev += $squadron[$i] * ShipResource::getInfo($i, 'pev'); - } - } - return $pev; - } - - public function setArmyAtEnd() - { - $this->setArmy(); - $i = 0; - foreach ($this->army AS $squadron) { - $this->armyAtEnd[$i] = $squadron->getArrayOfShips(); - $i++; - } - } - - public function getArmyAtEnd() - { - return $this->armyAtEnd; - } - - public function getFormatLineCoord() - { - $return = array(); - - for ($i = 0; $i < ($this->level + 1); $i++) { - $return[] = self::$LINECOORD[$i]; - } - return $return; - } - - public function getSizeArmy() - { - return count($this->squadronsIds); - } - - public function getPevToLoot() - { - $pev = 0; - foreach ($this->armyAtEnd as $squadron) { - for ($i = 0; $i < 12; $i++) { - $pev += $squadron[$i] * ShipResource::getInfo($i, 'pev'); - } - } - - if ($pev != 0) { - return $pev; - } else { - return $this->getPev(); - } - } - - public function getSquadron($i) - { - $this->setArmy(); - if (!empty($this->army[$i])) { - return $this->army[$i]; - } else { - return FALSE; - } - } - - # renvoie un tableau de nombre de vaisseaux - public function getNbrShipByType() - { - $array = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - foreach ($this->armyInBegin as $squadron) { - for ($i = 0; $i < 12; $i++) { - $array[$i] += $squadron[$i]; - } - } - return $array; - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Model/LiveReport.php b/system/Modules/Ares/Model/LiveReport.php deleted file mode 100644 index db8dfdd34..000000000 --- a/system/Modules/Ares/Model/LiveReport.php +++ /dev/null @@ -1,79 +0,0 @@ -id; } - - public function getTypeOfReport($playerColor) { - $place = '' . $this->placeName . ''; - - if ($this->colorA == $playerColor) { - if ($this->rPlayerWinner == $this->rPlayerAttacker) { - if ($this->type == Commander::LOOT) { - $title = 'Pillage de ' . $place; - $img = 'loot.png'; - } else { - $title = $this->rPlayerDefender == 0 - ? 'Colonisation réussie' - : 'Conquête de ' . $place; - $img = 'colo.png'; - } - } else { - if ($this->type == Commander::LOOT) { - $title = 'Pillage raté de ' . $place; - $img = 'loot.png'; - } else { - $title = $this->rPlayerDefender == 0 - ? 'Colonisation ratée' - : 'Conquête ratée de ' . $place; - $img = 'colo.png'; - } - } - } else { - if ($this->rPlayerWinner == $this->rPlayerDefender) { - $title = $this->type == Commander::LOOT - ? 'Pillage repoussé' - : 'Conquête repoussée'; - $img = 'shield.png'; - } else { - $title = $this->type == Commander::LOOT - ? 'Défense ratée lors d\'un pillage' - : 'Défense ratée lors d\'une conquête'; - $img = 'shield.png'; - } - } - - return [$title, $img]; - } - - public function setPev() { - for ($i = 0; $i < 12; $i++) { - $this->pevInBeginA += ShipResource::getInfo($i, 'pev') * $this->totalInBeginA[$i]; - $this->pevInBeginD += ShipResource::getInfo($i, 'pev') * $this->totalInBeginD[$i]; - $this->pevAtEndA += ShipResource::getInfo($i, 'pev') * $this->totalAtEndA[$i]; - $this->pevAtEndD += ShipResource::getInfo($i, 'pev') * $this->totalAtEndD[$i]; - } - } - - public function setArmies() { - if ($this->setArmiesDone == FALSE) { - # squadron(id, pos, rReport, round, rCommander, ship0, ..., ship11) - - $rCommanderA = $this->squadrons[0][4]; - - foreach ($this->squadrons AS $sq) { - if ($sq[3] == 0) { - if ($sq[4] == $rCommanderA) { - $this->armyInBeginA[] = $sq; - } else { - $this->armyInBeginD[] = $sq; - } - } elseif ($sq[3] > 0) { - $this->fight[] = $sq; - } else { - if ($sq[4] == $rCommanderA) { - $this->armyAtEndA[] = $sq; - } else { - $this->armyAtEndD[] = $sq; - } - } - } - - foreach ($this->armyInBeginA AS $sq) { - for ($i = 5; $i <= 16; $i++) { - $this->totalInBeginA[$i - 5] += $sq[$i]; - } - } - foreach ($this->armyInBeginD AS $sq) { - for ($i = 5; $i <= 16; $i++) { - $this->totalInBeginD[$i - 5] += $sq[$i]; - } - } - foreach ($this->armyAtEndA AS $sq) { - for ($i = 5; $i <= 16; $i++) { - $this->totalAtEndA[$i - 5] += $sq[$i]; - } - } - foreach ($this->armyAtEndD AS $sq) { - for ($i = 5; $i <= 16; $i++) { - $this->totalAtEndD[$i - 5] += $sq[$i]; - } - } - - for ($i = 0; $i < 12; $i++) { - $this->diferenceA[$i] = $this->totalInBeginA[$i] - $this->totalAtEndA[$i]; - } - for ($i = 0; $i < 12; $i++) { - $this->diferenceD[$i] = $this->totalInBeginD[$i] - $this->totalAtEndD[$i]; - } - - $this->setArmiesDone = TRUE; - } - } -} diff --git a/system/Modules/Ares/Model/Ship.php b/system/Modules/Ares/Model/Ship.php deleted file mode 100644 index 6420101f5..000000000 --- a/system/Modules/Ares/Model/Ship.php +++ /dev/null @@ -1,164 +0,0 @@ -nbrName = $nbrName; - $this->isAttacker = $isAttacker; - - $this->name = ShipResource::getInfo($nbrName, 'name'); - $this->codeName = ShipResource::getInfo($nbrName, 'codeName'); - $this->life = ShipResource::getInfo($nbrName, 'life'); - $this->speed = ShipResource::getInfo($nbrName, 'speed'); - $this->attack = ShipResource::getInfo($nbrName, 'attack'); - $this->defense = ShipResource::getInfo($nbrName, 'defense'); - $this->pev = ShipResource::getInfo($nbrName, 'pev'); - - $this->nbrAttack = count($this->attack); - } - - public function setBonus($bonus) { - switch(ShipResource::getInfo($nbrName, 'class')) { - case 0: - if ($isAttacker == TRUE) { - $this->speed += round($this->speed * $bonus->get(PlayerBonus::FIGHTER_SPEED) / 100); - for ($i = 0; $i < $this->nbrAttack; $i++) { - $this->attack[$i] += round($this->attack[$i] * $bonus->get(PlayerBonus::FIGHTER_ATTACK) / 100); - } - $this->defense += round($this->defense * $bonus->get(PlayerBonus::FIGHTER_DEFENSE) / 100); - } - break; - - case 1: - if ($isAttacker == TRUE) { - $this->speed += round($this->speed * $bonus->get(PlayerBonus::CORVETTE_SPEED) / 100); - for ($i = 0; $i < $this->nbrAttack; $i++) { - $this->attack[$i] += round($this->attack[$i] * $bonus->get(PlayerBonus::CORVETTE_ATTACK) / 100); - } - $this->defense += round($this->defense * $bonus->get(PlayerBonus::CORVETTE_DEFENSE) / 100); - } - break; - - case 2: - if ($isAttacker == TRUE) { - $this->speed += round($this->speed * $bonus->get(PlayerBonus::FRIGATE_SPEED) / 100); - for ($i = 0; $i < $this->nbrAttack; $i++) { - $this->attack[$i] += round($this->attack[$i] * $bonus->get(PlayerBonus::FRIGATE_ATTACK) / 100); - } - $this->defense += round($this->defense * $bonus->get(PlayerBonus::FRIGATE_DEFENSE) / 100); - } - break; - - case 3: - if ($isAttacker == TRUE) { - $this->speed += round($this->speed * $bonus->get(PlayerBonus::DESTROYER_SPEED) / 100); - for ($i = 0; $i < $this->nbrAttack; $i++) { - $this->attack[$i] += round($this->attack[$i] * $bonus->get(PlayerBonus::DESTROYER_ATTACK) / 100); - } - $this->defense += round($this->defense * $bonus->get(PlayerBonus::DESTROYER_DEFENSE) / 100); - } - break; - } - } - - public function engage ($enemySquadron) { - for ($i = 0; $i < $this->nbrAttack; $i++) { - if ($enemySquadron->getNbrShips() == 0) { - break; - } - $keyOfEnemyShip = $this->chooseEnemy($enemySquadron); - if ($this->avoidance($enemySquadron->getShip($keyOfEnemyShip)) == 1) { - $this->attack($keyOfEnemyShip, $i, $enemySquadron); - } - } - return $enemySquadron; - } - - protected function chooseEnemy($enemySquadron) { - $aleaNbr = rand(0, $enemySquadron->getNbrShips() - 1); - return $aleaNbr; - } - - protected function attack($key, $i, $enemySquadron) { - $damages = ceil(log(($this->attack[$i] / $enemySquadron->getShip($key)->getDefense()) + 1) * 4 * $this->attack[$i]); - $enemySquadron->getShip($key)->receiveDamages($damages, $enemySquadron, $key); - } - - protected function avoidance($enemyShip) { - $avoidance = rand(0, $enemyShip->getSpeed()); - if ($avoidance > 80) { - return 0; - } else { - return 1; - } - } - - public function receiveDamages ($damages, $squadron, $key) { - $this->life -= $damages; - if($this->life <= 0) { - $this->life = 0; - $squadron->destructShip($key); - } - } - - public function affectId ($id) { - $this->id = $id + 1; - } - - //-----------------Getters------------------------ - - public function getId() - { return $this->id;} - public function getName() - { return $this->name;} - public function getCodeName() - { return $this->codeName;} - public function getNbrName() - { return $this->nbrName;} - public function getLife() - { return $this->life;} - public function getSpeed() - { return $this->speed;} - public function getAttack() - { return $this->attack;} - public function getDefense() - { return $this->defense;} - public function getPev() - { return $this->pev;} - -//--------------Setters-------------- - - public function setId($id) - { - $this->id = $id; - return $this; - } -} -?> diff --git a/system/Modules/Ares/Model/Squadron.php b/system/Modules/Ares/Model/Squadron.php deleted file mode 100644 index 0f26214c6..000000000 --- a/system/Modules/Ares/Model/Squadron.php +++ /dev/null @@ -1,186 +0,0 @@ -id; } - public function getLineCoord() { return $this->lineCoord; } - public function getNbrShips() { return $this->nbrShips; } - public function getRCommander() { return $this->rCommander; } - public function getPosition() { return $this->position; } - public function getSquadron() { return $this->squadron; } - public function getArrayOfShips() { return $this->arrayOfShips; } - public function getDLastModification() { return $this->dLAstModification; } - - public function getShip($key) { return $this->squadron[$key]; } - public function getNbrShipByType($i) - { - return $this->arrayOfShips[$i]; - } - - public function getPev() { - $pev = 0; - foreach ($this->squadron AS $ship) { - $pev += $ship->getPev(); - } - return $pev; - } - - private function getPv() { - $pv = 0; - foreach ($this->squadron as $ship) { - $pv += $ship->getLife(); - } - return $pv; - } - - private function howManyLostPv($squadron1, $squadron2) { - $lostPv = abs($squadron1->getPv() - $squadron2->getPv()); - return $lostPv; - } - - public function setId($id) { $this->id = $id; } - - public function isEmpty() { - if ($this->getPev() == 0) { - return TRUE; - } else { - return FALSE; - } - } - - public function setRelId($id) { $this->relId = $id; } - - public function __construct($vector, $id, $lineCoord, $position, $rCommander, $isAttacker = NULL) { - for($i = 0; $i < 12; $i++) { - $this->arrayOfShips[] = $vector[$i]; - } - - $this->dLastModification = $vector[12]; - $this->lineCoord = $lineCoord; - $this->id = $id; - $this->rCommander = $rCommander; - $this->position = $position; - - for($i = 0; $i < 12; $i++) { - for ($j = 0; $j < $vector[$i]; $j++) { - $this->squadron[] = new Ship($i, $isAttacker); - $this->squadron[$this->nbrShips]->affectId($this->nbrShips); - $this->nbrShips++; - } - } - } - - public function updateShip($shipNbrName, $nbr) { - $this->arrayOfShips[$shipNbrName] += $nbr; - } - - public function emptySquadron() { - for ($i = 0; $i < 12; $i++) { - $this->arrayOfShips[$i] = 0; - } - } - - # méthodes de combat - public function engage($enemyCommander, $position, $idCommander, $nameCommander, $thisCommander) { - $this->relId = $this->chooseEnemy($enemyCommander); - if ($this->relId !== NULL) { - - $thisSquadronBefore = $this; - $enemySquadron = $enemyCommander->getSquadron($this->relId); - - LiveReport::$littleRound++; - $this->fight($enemyCommander->getSquadron($this->relId)); - LiveReport::$squadrons[] = array(0, $this->position, 0, LiveReport::$littleRound, $this->rCommander, $this->arrayOfShips[0], $this->arrayOfShips[1], $this->arrayOfShips[2], $this->arrayOfShips[3], $this->arrayOfShips[4], $this->arrayOfShips[5], $this->arrayOfShips[6], $this->arrayOfShips[7], $this->arrayOfShips[8], $this->arrayOfShips[9], $this->arrayOfShips[10], $this->arrayOfShips[11]); - LiveReport::$squadrons[] = array(0, $enemySquadron->position, 0, LiveReport::$littleRound, $enemySquadron->rCommander, $enemySquadron->arrayOfShips[0], $enemySquadron->arrayOfShips[1], $enemySquadron->arrayOfShips[2], $enemySquadron->arrayOfShips[3], $enemySquadron->arrayOfShips[4], $enemySquadron->arrayOfShips[5], $enemySquadron->arrayOfShips[6], $enemySquadron->arrayOfShips[7], $enemySquadron->arrayOfShips[8], $enemySquadron->arrayOfShips[9], $enemySquadron->arrayOfShips[10], $enemySquadron->arrayOfShips[11]); - - $enemyCommander->getSquadron($this->relId)->setRelId($this->position); - $enemyCommander->getSquadron($this->relId)->fight($thisCommander->getSquadron($this->position)); - } - return $enemyCommander; - } - - private function chooseEnemy(Commander $enemyCommander) { - $nbrShipsInLine = 0; - foreach ($enemyCommander->getArmy() as $enemySquadron) { - if ($enemySquadron->getLineCoord() * 3 <= FightManager::getCurrentLine()) { - $nbrShipsInLine += $enemySquadron->getNbrShips(); - } - } - if ($nbrShipsInLine == 0) { - return NULL; - } elseif ($this->relId != NULL AND $enemyCommander->getSquadron($this->relId)->getNbrShips() > 0) { - return $this->relId; - } else { - $aleaNbr = rand(0, count($enemyCommander->squadronsIds) - 1); - for($i = 0; $i < $enemyCommander->getLevel(); $i++) { - if ($enemyCommander->getSquadron($aleaNbr)->getLineCoord() * 3 <= FightManager::getCurrentLine() AND $enemyCommander->getSquadron($aleaNbr)->getNbrShips() > 0) { - break; - } else { - if ($aleaNbr == count($enemyCommander->squadronsIds) - 1) { - $aleaNbr = 0; - } else { - $aleaNbr++; - } - } - } - return $aleaNbr; - } - } - - public function fight($enemySquadron) { - foreach ($this->squadron as $ship) { - if ($enemySquadron->getNbrShips() == 0) { - break; - } - $enemySquadron = $ship->engage($enemySquadron); - } - } - - public function destructShip($key) { - $this->deleteOffset($this->squadron[$key]->getNbrName()); - - $this->squadron[$key] = NULL; - $newSquadron = array(); - foreach ($this->squadron as $offset) { - if ($offset != NULL) { - $newSquadron[] = $offset; - } - } - $this->squadron = $newSquadron; - } - - private function deleteOffset($i) { - $this->arrayOfShips[$i]--; - $this->nbrShips--; - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Repository/CommanderRepository.php b/system/Modules/Ares/Repository/CommanderRepository.php deleted file mode 100644 index 070e18aaa..000000000 --- a/system/Modules/Ares/Repository/CommanderRepository.php +++ /dev/null @@ -1,577 +0,0 @@ -connection->prepare( - 'SELECT c.*, - o.iSchool, o.name AS oName, - p.name AS pName, - p.rColor AS pColor, - pd.population AS destinationPlacePop, - ps.population AS startPlacePop, - dp.name AS dpName, - sp.name AS spName, - sq.id AS sqId, - sq.ship0 AS sqShip0, - sq.ship1 AS sqShip1, - sq.ship2 AS sqShip2, - sq.ship3 AS sqShip3, - sq.ship4 AS sqShip4, - sq.ship5 AS sqShip5, - sq.ship6 AS sqShip6, - sq.ship7 AS sqShip7, - sq.ship8 AS sqShip8, - sq.ship9 AS sqShip9, - sq.ship10 AS sqShip10, - sq.ship11 AS sqShip11, - sq.dCreation AS sqDCreation, - sq.DLastModification AS sqDLastModification - FROM commander AS c - LEFT JOIN orbitalBase AS o ON o.rPlace = c.rBase - LEFT JOIN player AS p ON p.id = c.rPlayer - LEFT JOIN orbitalBase AS dp ON dp.rPlace = c.rDestinationPlace - LEFT JOIN place AS pd ON pd.id = c.rDestinationPlace - LEFT JOIN orbitalBase AS sp ON sp.rPlace = c.rStartPlace - LEFT JOIN place AS ps ON ps.id = c.rStartPlace - LEFT JOIN squadron AS sq ON sq.rCommander = c.id - ' . $clause - ); - $statement->execute($params); - return $statement; - } - - /** - * - * @param int $id - * @return Commander - */ - public function get($id) - { - if (($c = $this->unitOfWork->getObject(Commander::class, $id)) !== null) { - return $c; - } - $statement = $this->select('WHERE c.id = :id', ['id' => $id]); - if ($statement->rowCount() === 0) { - return null; - } - $commanders = []; - $currentId = 0; - while ($row = $statement->fetch()) { - $this->format($row, $commanders, $currentId); - } - return $commanders[$currentId]; - } - - /** - * @param int $baseId - * @param array $statements - * @param array $orderBy - * @return array - */ - public function getBaseCommanders($baseId, $statements = [], $orderBy = []) - { - $statementClause = (!empty($statements)) ? ' AND c.statement IN (' . implode(',', $statements) . ') ' : ''; - $statement = $this->select('WHERE c.rBase = :base_id ' . $statementClause . $this->getOrderByClause($orderBy), ['base_id' => $baseId]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param array $statements - * @return array - */ - public function getAllByStatements($statements) - { - $statement = $this->select('WHERE c.statement IN (' . implode(',', $statements) . ')'); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param array $ids - * @return array - */ - public function getCommandersByIds($ids = []) - { - $statement = $this->select('WHERE c.id IN (' . implode(',', $ids) . ')'); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @return array - */ - public function getMovingCommanders() - { - $statement = $this->select('WHERE c.statement = ' . Commander::MOVING); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param int $playerId - * @param array $statements - * @param array $orderBy - * @return array - */ - public function getPlayerCommanders($playerId, $statements = [], $orderBy = []) - { - $statementClause = (!empty($statements)) ? ' AND c.statement IN (' . implode(',', $statements) . ') ' : ''; - $statement = $this->select('WHERE c.rPlayer = :player_id ' . $statementClause . $this->getOrderByClause($orderBy), ['player_id' => $playerId]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param int $orbitalBaseId - * @param int $line - * @return array - */ - public function getCommandersByLine($orbitalBaseId, $line) - { - $statement = $this->select('WHERE c.rBase = :base_id AND c.line = :line', ['base_id' => $orbitalBaseId, 'line' => $line]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param int $playerId - * @return array - */ - public function getIncomingAttacks($playerId) - { - $statement = $this->select( - 'WHERE dp.rPlayer = :player_id '. - 'AND c.statement = ' . Commander::MOVING . ' ' . - 'AND c.travelType IN (' . Commander::COLO . ', ' . Commander::LOOT. ')' - , ['player_id' => $playerId]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param int $playerId - * @return array - */ - public function getOutcomingAttacks($playerId) - { - $statement = $this->select( - 'WHERE o.rPlayer = :player_id '. - 'AND c.statement = ' . Commander::MOVING - , ['player_id' => $playerId]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param array $placeId - * @return array - */ - public function getIncomingCommanders($placeId) - { - $statement = $this->select( - 'WHERE c.rDestinationPlace = :place_id AND c.statement = ' . Commander::MOVING . ' ORDER BY c.dArrival ASC' - , ['place_id' => $placeId]); - $commanders = []; - $currentId = 0; - $persisted = []; - $unPersisted = []; - while ($row = $statement->fetch()) { - if (in_array($row['id'], $persisted)) { - continue; - } - if (!in_array($row['id'], $unPersisted) && ($c = $this->unitOfWork->getObject(Commander::class, $row['id'])) !== null) { - $currentId = $row['id']; - $commanders[$row['id']] = $c; - $persisted[] = $row['id']; - continue; - } - $this->format($row, $commanders, $currentId, $unPersisted); - } - return array_values($commanders); - } - - /** - * @param int $orbitalBaseId - * @param int $line - * @return int - */ - public function countCommandersByLine($orbitalBaseId, $line) - { - $statement = $this->connection->prepare('SELECT COUNT(*) AS nb_commanders FROM commander WHERE statement IN (' . Commander::AFFECTED . ', ' . Commander::MOVING . ') AND rBase = :orbital_base_id AND line = :line'); - $statement->execute(['orbital_base_id' => $orbitalBaseId, 'line' => $line]); - return (int) $statement->fetch()['nb_commanders']; - } - - public function insert($commander) - { - $statement = $this->connection->prepare( - 'INSERT INTO commander SET - name = :name, - avatar = :avatar, - rPlayer = :player_id, - rBase = :base_id, - sexe = :gender, - age = :age, - level = :level, - experience = :experience, - uCommander = :u_commander, - statement = :statement, - dCreation = :created_at' - ); - $statement->execute([ - 'name' => $commander->name, - 'avatar' => $commander->avatar, - 'player_id' => $commander->rPlayer, - 'base_id' => $commander->rBase, - 'gender' => $commander->sexe, - 'age' => $commander->age, - 'level' => $commander->level, - 'experience' => $commander->experience, - 'u_commander' => Utils::now(), - 'statement' => $commander->statement, - 'created_at' => $commander->dCreation, - ]); - $commander->setId($this->connection->lastInsertId()); - $nbrSquadrons = $commander->getLevel(); - - $squadronStatement = $this->connection->prepare('INSERT INTO squadron(rCommander, dCreation) VALUES(:commander_id, NOW())'); - - for ($i = 0; $i < $nbrSquadrons; $i++) { - $squadronStatement->execute(['commander_id' => $commander->getId()]); - } - - $lastSquadronId = $this->connection->lastInsertId(); - $armySize = count($commander->getArmy()); - for ($i = 0; $i < $armySize; $i++) { - $commander->getSquadron[$i]->setId($lastSquadronId); - $lastSquadronId--; - } - } - - public function update($commander) - { - $statement = $this->connection->prepare( - 'UPDATE commander SET - name = :name, - avatar = :avatar, - rPlayer = :player_id, - rBase = :base_id, - comment = :comment, - sexe = :gender, - age = :age, - level = :level, - experience = :experience, - uCommander = :u_commander, - palmares = :palmares, - statement = :statement, - `line` = :line, - dStart = :started_at, - dArrival = :arrived_at, - resources = :resources, - travelType = :travel_type, - travelLength = :travel_length, - rStartPlace = :start_place_id, - rDestinationPlace = :destination_place_id, - dCreation = :created_at, - dAffectation = :affected_at, - dDeath = :died_at - WHERE id = :id' - ); - $statement->execute([ - 'name' => $commander->name, - 'avatar' => $commander->avatar, - 'player_id' => $commander->rPlayer, - 'base_id' => $commander->rBase, - 'comment' => $commander->comment, - 'gender' => $commander->sexe, - 'age' => $commander->age, - 'level' => $commander->level, - 'experience' => $commander->experience, - 'u_commander' => $commander->uCommander, - 'palmares' => $commander->palmares, - 'statement' => $commander->statement, - 'line' => $commander->line, - 'started_at' => $commander->dStart, - 'arrived_at' => $commander->dArrival, - 'resources' => $commander->resources, - 'travel_type' => $commander->travelType, - 'travel_length' => $commander->travelLength, - 'start_place_id' => $commander->rStartPlace, - 'destination_place_id' => $commander->rDestinationPlace, - 'created_at' => $commander->dCreation, - 'affected_at' => $commander->dAffectation, - 'died_at' => $commander->dDeath, - 'id' => $commander->id - ]); - $squadronStatement = $this->connection->prepare( - 'UPDATE squadron SET - rCommander = :commander_id, - ship0 = :ship_0, - ship1 = :ship_1, - ship2 = :ship_2, - ship3 = :ship_3, - ship4 = :ship_4, - ship5 = :ship_5, - ship6 = :ship_6, - ship7 = :ship_7, - ship8 = :ship_8, - ship9 = :ship_9, - ship10 = :ship_10, - ship11 = :ship_11, - DLAstModification = NOW() - WHERE id = :id' - ); - foreach($commander->getArmy() as $squadron) { - if ($squadron->getId() === 0) { - continue; - } - $squadronStatement->execute([ - 'commander_id' => $squadron->getRCommander(), - 'ship_0' => $squadron->getNbrShipByType(0), - 'ship_1' => $squadron->getNbrShipByType(1), - 'ship_2' => $squadron->getNbrShipByType(2), - 'ship_3' => $squadron->getNbrShipByType(3), - 'ship_4' => $squadron->getNbrShipByType(4), - 'ship_5' => $squadron->getNbrShipByType(5), - 'ship_6' => $squadron->getNbrShipByType(6), - 'ship_7' => $squadron->getNbrShipByType(7), - 'ship_8' => $squadron->getNbrShipByType(8), - 'ship_9' => $squadron->getNbrShipByType(9), - 'ship_10' => $squadron->getNbrShipByType(10), - 'ship_11' => $squadron->getNbrShipByType(11), - 'id' => $squadron->getId() - ]); - } - if ($commander->getLevel() > $commander->getSizeArmy()) { - //on créé un nouveau squadron avec rCommander correspondant - $nbrSquadronToCreate = $commander->getLevel() - $commander->getSizeArmy(); - $qr = $this->connection->prepare('INSERT INTO squadron (rCommander, dCreation) VALUES (?, NOW())'); - for ($i = 0; $i < $nbrSquadronToCreate; $i++) { - $qr->execute([$commander->getId()]); - $commander->squadronsIds[] = $this->connection->lastInsertId(); - } - } - } - - /** - * @param Commander $commander - */ - public function updateExperience(Commander $commander, $earnedExperience, $earnedLevel) - { - $statement = $this->connection->prepare( - 'UPDATE commander SET - experience = experience + :experience, - level = level + :level, - uCommander = :updated_at - WHERE id = :id' - ); - $statement->execute([ - 'experience' => $earnedExperience, - 'level' => $earnedLevel, - 'updated_at' => $commander->getUpdatedAt(), - 'id' => $commander->getId() - ]); - } - - public function remove($commander) - { - $statement = $this->connection->prepare('DELETE FROM commander WHERE id = :id'); - $statement->execute(['id' => $commander->getId()]); - } - - public function format($data, &$commanders, &$currentId = null, &$unPersisted = []) - { - if ($currentId === null || (int) $data['id'] !== $currentId) { - $currentId = $data['id']; - $commanders[$currentId] = new Commander(); - - $commanders[$currentId]->id = (int) $data['id']; - $commanders[$currentId]->name = $data['name']; - $commanders[$currentId]->avatar = $data['avatar']; - $commanders[$currentId]->rPlayer = (int) $data['rPlayer']; - $commanders[$currentId]->playerName = $data['pName']; - $commanders[$currentId]->playerColor = $data['pColor']; - $commanders[$currentId]->rBase = (int) $data['rBase']; - $commanders[$currentId]->comment = $data['comment']; - $commanders[$currentId]->sexe = $data['sexe']; - $commanders[$currentId]->age = (int) $data['age']; - $commanders[$currentId]->level = (int) $data['level']; - $commanders[$currentId]->experience = (int) $data['experience']; - $commanders[$currentId]->uCommander = $data['uCommander']; - $commanders[$currentId]->palmares = $data['palmares']; - $commanders[$currentId]->statement = (int) $data['statement']; - $commanders[$currentId]->line = (int) $data['line']; - $commanders[$currentId]->dCreation = $data['dCreation']; - $commanders[$currentId]->dAffectation = $data['dAffectation']; - $commanders[$currentId]->dDeath = $data['dDeath']; - $commanders[$currentId]->oBName = $data['oName']; - - $commanders[$currentId]->dStart = $data['dStart']; - $commanders[$currentId]->dArrival = $data['dArrival']; - $commanders[$currentId]->resources = (int) $data['resources']; - $commanders[$currentId]->travelType = $data['travelType']; - $commanders[$currentId]->travelLength = $data['travelLength']; - $commanders[$currentId]->rStartPlace = $data['rStartPlace']; - $commanders[$currentId]->rDestinationPlace = $data['rDestinationPlace']; - - $commanders[$currentId]->startPlaceName = ($data['spName'] == '') ? 'planète rebelle' : $data['spName']; - $commanders[$currentId]->destinationPlaceName = ($data['dpName'] == '') ? 'planète rebelle' : $data['dpName']; - $commanders[$currentId]->destinationPlacePop = $data['destinationPlacePop']; - $commanders[$currentId]->startPlacePop = $data['startPlacePop']; - - $this->unitOfWork->addObject($commanders[$currentId]); - $unPersisted[] = $currentId; - } - $commanders[$currentId]->squadronsIds[] = (int) $data['sqId']; - $commanders[$currentId]->armyInBegin[] = [ - $data['sqShip0'], - $data['sqShip1'], - $data['sqShip2'], - $data['sqShip3'], - $data['sqShip4'], - $data['sqShip5'], - $data['sqShip6'], - $data['sqShip7'], - $data['sqShip8'], - $data['sqShip9'], - $data['sqShip10'], - $data['sqShip11'], - $data['sqDCreation'], - $data['sqDLastModification'] - ]; - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Repository/LiveReportRepository.php b/system/Modules/Ares/Repository/LiveReportRepository.php deleted file mode 100644 index a177051f3..000000000 --- a/system/Modules/Ares/Repository/LiveReportRepository.php +++ /dev/null @@ -1,230 +0,0 @@ -connection->prepare( - 'SELECT r.*, - p1.rColor AS colorA, - p2.rColor AS colorD, - p1.name AS playerNameA, - p2.name AS playerNameD - FROM report AS r - LEFT JOIN player AS p1 - ON p1.id = r.rPlayerAttacker - LEFT JOIN player AS p2 - ON p2.id = r.rPlayerDefender - WHERE ' . $clause - ); - $statement->execute($params); - return $statement; - } - - public function get($id) - { - $query = $this->select('r.id = :id', ['id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - return $this->format($row); - } - - public function getPlayerReports($playerId) - { - $statement = $this->select( - '(rPlayerAttacker = ? AND statementAttacker = ?) OR (rPlayerDefender = ? AND statementDefender = ?)' - , [ - $playerId, - Report::STANDARD, - $playerId, - Report::STANDARD - ]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function getAttackReportsByPlaces($playerId, $places) - { - $statement = $this->select( - 'r.rPlayerAttacker = ? AND r.rPlace IN (' . implode(',', $places) . ') ORDER BY r.dFight DESC LIMIT 30' - , [$playerId]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function getAttackReportsByMode($playerId, $hasRebels, $isArchived) - { - $statement = $this->select( - 'rPlayerAttacker = ? AND statementAttacker = ? ' . (($hasRebels) ? '' : 'AND p2.rColor != 0') . ' ORDER BY dFight DESC LIMIT 0, 50' - , [$playerId, $isArchived]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function getDefenseReportsByMode($playerId, $hasRebels, $isArchived) - { - $statement = $this->select( - 'rPlayerDefender = ? AND statementDefender = ? ' . (($hasRebels) ? '' : 'AND p2.rColor != 0') . ' ORDER BY dFight DESC LIMIT 0, 50' - , [$playerId, $isArchived]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function getFactionAttackReports($factionId) - { - $statement = $this->select( - 'p1.rColor = ? AND p2.rColor != 0 ORDER BY dFight DESC LIMIT 0, 30' - , [$factionId]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function getFactionDefenseReports($factionId) - { - $statement = $this->select( - 'p2.rColor = ? AND p1.rColor != 0 ORDER BY dFight DESC LIMIT 0, 30' - , [$factionId]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function insert($report) - { - - } - - public function update($report) - { - $statement = $this->connection->prepare( - 'UPDATE report SET - rPlayerAttacker = ?, - rPlayerDefender = ?, - rPlayerWinner = ?, - avatarA = ?, - avatarD = ?, - nameA = ?, - nameD = ?, - levelA = ?, - levelD = ?, - experienceA = ?, - experienceD = ?, - palmaresA = ?, - palmaresD = ?, - resources = ?, - expCom = ?, - expPlayerA = ?, - expPlayerD = ?, - rPlace = ?, - isLegal = ?, - placeName = ?, - type = ?, - round = ?, - importance = ?, - statementAttacker = ?, - statementDefender = ?, - dFight = ? - WHERE id = ?' - ); - $aw = $statement->execute(array( - $report->rPlayerAttacker, - $report->rPlayerDefender, - $report->rPlayerWinner, - $report->avatarA, - $report->avatarD, - $report->nameA, - $report->nameD, - $report->levelA, - $report->levelD, - $report->experienceA, - $report->experienceD, - $report->palmaresA, - $report->palmaresD, - $report->resources, - $report->expCom, - $report->expPlayerA, - $report->expPlayerD, - $report->rPlace, - $report->isLegal, - $report->placeName, - $report->type, - $report->round, - $report->importance, - $report->statementAttacker, - $report->statementDefender, - $report->dFight, - $report->id - ) - ); - } - - public function remove($report) - { - - } - - public function format($data) - { - $report = new Report(); - - $report->id = (int) $data['id']; - $report->rPlayerAttacker = (int) $data['rPlayerAttacker']; - $report->rPlayerDefender = (int) $data['rPlayerDefender']; - $report->rPlayerWinner = (int) $data['rPlayerWinner']; - $report->avatarA = $data['avatarA']; - $report->avatarD = $data['avatarD']; - $report->nameA = $data['nameA']; - $report->nameD = $data['nameD']; - $report->levelA = (int) $data['levelA']; - $report->levelD = (int) $data['levelD']; - $report->experienceA = (int) $data['experienceA']; - $report->experienceD = (int) $data['experienceD']; - $report->palmaresA = $data['palmaresA']; - $report->palmaresD = $data['palmaresD']; - $report->resources = (int) $data['resources']; - $report->expCom = (int) $data['expCom']; - $report->expPlayerA = (int) $data['expPlayerA']; - $report->expPlayerD = (int) $data['expPlayerD']; - $report->rPlace = (int) $data['rPlace']; - $report->isLegal = (bool) $data['isLegal']; - $report->placeName = $data['placeName']; - $report->type = $data['type']; - $report->round = $data['round']; - $report->importance = $data['importance']; - $report->statementAttacker = $data['statementAttacker']; - $report->statementDefender = $data['statementDefender']; - $report->dFight = $data['dFight']; - - $report->colorA = $data['colorA']; - $report->colorD = $data['colorD']; - $report->playerNameA = $data['playerNameA']; - $report->playerNameD = $data['playerNameD']; - - return $report; - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Repository/ReportRepository.php b/system/Modules/Ares/Repository/ReportRepository.php deleted file mode 100644 index cdd8242a8..000000000 --- a/system/Modules/Ares/Repository/ReportRepository.php +++ /dev/null @@ -1,362 +0,0 @@ -unitOfWork->getObject(Report::class, $id)) !== null) { - return $report; - } - $query = $this->connection->prepare( - 'SELECT r.*, - sq.id AS sqId, - sq.position AS sqPosition, - sq.rReport AS sqRReport, - sq.round AS sqRound, - sq.rCommander AS sqRCommander, - sq.ship0 AS sqShip0, - sq.ship1 AS sqShip1, - sq.ship2 AS sqShip2, - sq.ship3 AS sqShip3, - sq.ship4 AS sqShip4, - sq.ship5 AS sqShip5, - sq.ship6 AS sqShip6, - sq.ship7 AS sqShip7, - sq.ship8 AS sqShip8, - sq.ship9 AS sqShip9, - sq.ship10 AS sqShip10, - sq.ship11 AS sqShip11 - FROM report AS r - LEFT JOIN squadronReport AS sq ON sq.rReport = r.id - WHERE r.id = :id' - ); - $query->execute(['id' => $id]); - $result = $this->formatResult($query); - return (isset($result[0])) ? $result[0] : null; - } - - /** - * @param int $attackerId - * @param int $placeId - * @param string $dFight - * @return array - */ - public function getByAttackerAndPlace($attackerId, $placeId, $dFight) - { - $query = $this->connection->prepare( - 'SELECT r.*, - sq.id AS sqId, - sq.position AS sqPosition, - sq.rReport AS sqRReport, - sq.round AS sqRound, - sq.rCommander AS sqRCommander, - sq.ship0 AS sqShip0, - sq.ship1 AS sqShip1, - sq.ship2 AS sqShip2, - sq.ship3 AS sqShip3, - sq.ship4 AS sqShip4, - sq.ship5 AS sqShip5, - sq.ship6 AS sqShip6, - sq.ship7 AS sqShip7, - sq.ship8 AS sqShip8, - sq.ship9 AS sqShip9, - sq.ship10 AS sqShip10, - sq.ship11 AS sqShip11 - FROM report AS r - LEFT JOIN squadronReport AS sq ON sq.rReport = r.id - WHERE r.rPlayerAttacker = :attacker_id AND r.rPlace = :place_id AND r.dFight = :fight' - ); - $query->execute([ - 'attacker_id' => $attackerId, - 'place_id' => $placeId, - 'fight' => $dFight - ]); - return $this->formatResult($query); - } - - public function formatResult($statement) - { - $currentId = null; - $data = []; - while ($row = $statement->fetch()) { - // @TODO get the existing object if it is in UnitOfWork already - // This code block is executed one time only, when the current row concerns the next report - if ($currentId !== (int) $row['id']) { - // $currentReport is the previous report here - // We set the army with the squadron data and set it to the results - if (isset($currentReport)) { - $currentReport->setArmies(); - $data[] = $currentReport; - if (!$this->unitOfWork->hasObject($currentReport)) { - $this->unitOfWork->addObject($currentReport); - } - } - // Now the variable represents the new report - $currentReport = $this->format($row); - $currentId = $currentReport->id; - } - // Here, $currentReport is the right report - if (!empty($row['sqId'])) { - $currentReport->squadrons[] = $this->formatSquadron($row); - } - } - // Set the armies of the last report - // The isset ensures that at least one report was fetched - if (isset($currentReport)) { - $currentReport->setArmies(); - $data[] = $currentReport; - if (!$this->unitOfWork->hasObject($currentReport)) { - $this->unitOfWork->addObject($currentReport); - } - } - return $data; - } - - /** - * @param Report $report - */ - public function insert($report) - { - $query = $this->connection->prepare('INSERT INTO report SET - rPlayerAttacker = :attacker_player_id, rPlayerDefender = :defender_player_id, - rPlayerWinner = :winner_player_id, avatarA = :attacker_avatar, avatarD = :defender_avatar, - nameA = :attacker_name, nameD = :defender_name, levelA = :attacker_level, - levelD = :defender_level, experienceA = :attacker_experience, experienceD = :defender_experience, - palmaresA = :attacker_palmares, palmaresD = :defender_palmares, resources = :resources, - expCom = :commander_experience, expPlayerA = :attacker_player_experience, expPlayerD = :defender_player_experience, - rPlace = :place_id, placeName = :place_name, type = :type, isLegal = :is_legal, hasBeenPunished = :has_been_punished, - round = :round, importance = :importance, pevInBeginA = :attacker_pev_in_begin, - pevInBeginD = :defender_pev_in_begin, pevAtEndA = :attacker_pev_at_end, pevAtEndD = :defender_pev_at_end, - statementAttacker = :attacker_statement, statementDefender = :defender_statement, dFight = :fight' - ); - $query->execute(array( - 'attacker_player_id' => $report->rPlayerAttacker, - 'defender_player_id' => $report->rPlayerDefender, - 'winner_player_id' => $report->rPlayerWinner, - 'attacker_avatar' => $report->avatarA, - 'defender_avatar' => $report->avatarD, - 'attacker_name' => $report->nameA, - 'defender_name' => $report->nameD, - 'attacker_level' => $report->levelA, - 'defender_level' => $report->levelD, - 'attacker_experience' => $report->experienceA, - 'defender_experience' => $report->experienceD, - 'attacker_palmares' => $report->palmaresA, - 'defender_palmares' => $report->palmaresD, - 'resources' => $report->resources, - 'commander_experience' => $report->expCom, - 'attacker_player_experience' => $report->expPlayerA, - 'defender_player_experience' => $report->expPlayerD, - 'place_id' => $report->rPlace, - 'place_name' => $report->placeName, - 'type' => $report->type, - 'is_legal' => $report->isLegal, - 'has_been_punished' => $report->hasBeenPunished, - 'round' => $report->round, - 'importance' => $report->importance, - 'attacker_pev_in_begin' => $report->pevInBeginA, - 'defender_pev_in_begin' => $report->pevInBeginD, - 'attacker_pev_at_end' => $report->pevAtEndA, - 'defender_pev_at_end' => $report->pevAtEndD, - 'attacker_statement' => $report->statementAttacker, - 'defender_statement' => $report->statementDefender, - 'fight' => $report->dFight - )); - $report->id = $this->connection->lastInsertId(); - $this->insertSquadrons($report); - } - - /** - * @param Report $report - */ - public function insertSquadrons(Report $report) - { - $nbSquadrons = count($report->squadrons); - if ($nbSquadrons === 0) { - return; - } - for ($i = 0; $i < $nbSquadrons; $i++) { - $report->squadrons[$i][2] = $report->id; - } - $query = 'INSERT INTO squadronReport (position, rReport, round, rCommander, ship0, ship1, ship2, ship3, ship4, ship5, ship6, ship7, ship8, ship9, ship10, ship11) - VALUES'; - for ($j = 0; $j < count($report->squadrons); $j++) { - $query .= ' (' . $report->squadrons[$j][1]; - for ($i = 2; $i < 17; $i++) { - $query .= ', ' . $report->squadrons[$j][$i]; - } - $query .= ($j == count($report->squadrons) - 1) ? ');' : '),'; - } - - $statement = $this->connection->prepare($query); - $statement->execute(); - } - - /** - * @param Report $report - */ - public function update($report) - { - $query = $this->connection->prepare('UPDATE report SET - rPlayerAttacker = :attacker_player_id, rPlayerDefender = :defender_player_id, - rPlayerWinner = :winner_player_id, avatarA = :attacker_avatar, avatarD = :defender_avatar, - nameA = :attacker_name, nameD = :defender_name, levelA = :attacker_level, - levelD = :defender_level, experienceA = :attacker_experience, experienceD = :defender_experience, - palmaresA = :attacker_palmares, palmaresD = :defender_palmares, resources = :resources, - expCom = :commander_experience, expPlayerA = :attacker_player_experience, expPlayerD = :defender_player_experience, - rPlace = :place_id, placeName = :place_name, type = :type, isLegal = :is_legal, hasBeenPunished = :has_been_punished, - round = :round, importance = :importance, pevInBeginA = :attacker_pev_in_begin, - pevInBeginD = :defender_pev_in_begin, pevAtEndA = :attacker_pev_at_end, pevAtEndD = :defender_pev_at_end, - statementAttacker = :attacker_statement, statementDefender = :defender_statement, dFight = :fight - WHERE id = :id'); - $query->execute(array( - 'attacker_player_id' => $report->rPlayerAttacker, - 'defender_player_id' => $report->rPlayerDefender, - 'winner_player_id' => $report->rPlayerWinner, - 'attacker_avatar' => $report->avatarA, - 'defender_avatar' => $report->avatarD, - 'attacker_name' => $report->nameA, - 'defender_name' => $report->nameD, - 'attacker_level' => $report->levelA, - 'defender_level' => $report->levelD, - 'attacker_experience' => $report->experienceA, - 'defender_experience' => $report->experienceD, - 'attacker_palmares' => $report->palmaresA, - 'defender_palmares' => $report->palmaresD, - 'resources' => $report->resources, - 'commander_experience' => $report->expCom, - 'attacker_player_experience' => $report->expPlayerA, - 'defender_player_experience' => $report->expPlayerD, - 'place_id' => $report->rPlace, - 'place_name' => $report->placeName, - 'type' => $report->type, - 'is_legal' => $report->isLegal, - 'has_been_punished' => (int) $report->hasBeenPunished, - 'round' => $report->round, - 'importance' => $report->importance, - 'attacker_pev_in_begin' => $report->pevInBeginA, - 'defender_pev_in_begin' => $report->pevInBeginD, - 'attacker_pev_at_end' => $report->pevAtEndA, - 'defender_pev_at_end' => $report->pevAtEndD, - 'attacker_statement' => $report->statementAttacker, - 'defender_statement' => $report->statementDefender, - 'fight' => $report->dFight, - 'id' => $report->id - )); - } - - /** - * @param Report $report - */ - public function remove($report) - { - $query = $this->connection->prepare('DELETE FROM report WHERE id = :id'); - $query->execute(['id' => $report->id]); - - $squadronQuery = $this->connection->prepare('DELETE FROM squadronReport WHERE rReport = :report_id'); - $squadronQuery->execute(['report_id' => $report->id]); - } - - /** - * @param int $playerId - */ - public function removePlayerReports($playerId) - { - $this->connection->beginTransaction(); - $attackReportsStatement = $this->connection->prepare( - 'UPDATE report SET statementAttacker = :statement WHERE rPlayerAttacker = :player_id AND statementAttacker = :standard_statement' - ); - $attackReportsStatement->execute([ - 'player_id' => $playerId, - 'statement' => Report::DELETED, - 'standard_statement' => Report::STANDARD - ]); - $defenseReportsStatement = $this->connection->prepare( - 'UPDATE report SET statementDefender = :statement WHERE rPlayerDefender = :player_id AND statementDefender = :standard_statement' - ); - $defenseReportsStatement->execute([ - 'player_id' => $playerId, - 'statement' => Report::DELETED, - 'standard_statement' => Report::STANDARD - ]); - $this->connection->commit(); - } - - /** - * @param array $data - * @return Report - */ - public function format($data) - { - $report = new Report(); - $report->id = (int) $data['id']; - $report->rPlayerAttacker = (int) $data['rPlayerAttacker']; - $report->rPlayerDefender = (int) $data['rPlayerDefender']; - $report->rPlayerWinner = (int) $data['rPlayerWinner']; - $report->avatarA = $data['avatarA']; - $report->avatarD = $data['avatarD']; - $report->nameA = $data['nameA']; - $report->nameD = $data['nameD']; - $report->levelA = $data['levelA']; - $report->levelD = $data['levelD']; - $report->experienceA = (int) $data['experienceA']; - $report->experienceD = (int) $data['experienceD']; - $report->palmaresA = $data['palmaresA']; - $report->palmaresD = $data['palmaresD']; - $report->resources = (int) $data['resources']; - $report->expCom = (int) $data['expCom']; - $report->expPlayerA = (int) $data['expPlayerA']; - $report->expPlayerD = (int) $data['expPlayerD']; - $report->rPlace = (int) $data['rPlace']; - $report->placeName = $data['placeName']; - $report->type = $data['type']; - $report->isLegal = (bool) $data['isLegal']; - $report->hasBeenPunished = (bool) $data['hasBeenPunished']; - $report->round = $data['round']; - $report->importance = $data['importance']; - $report->pevInBeginA = (int) $data['pevInBeginA']; - $report->pevInBeginD = (int) $data['pevInBeginD']; - $report->pevAtEndA = (int) $data['pevAtEndA']; - $report->pevAtEndD = (int) $data['pevAtEndD']; - $report->statementAttacker = $data['statementAttacker']; - $report->statementDefender = $data['statementDefender']; - $report->dFight = $data['dFight']; - - return $report; - } - - /** - * @param array $data - * @return array - */ - public function formatSquadron($data) - { - return [ - $data['sqId'], - $data['sqPosition'], - $data['sqRReport'], - $data['sqRound'], - $data['sqRCommander'], - $data['sqShip0'], - $data['sqShip1'], - $data['sqShip2'], - $data['sqShip3'], - $data['sqShip4'], - $data['sqShip5'], - $data['sqShip6'], - $data['sqShip7'], - $data['sqShip8'], - $data['sqShip9'], - $data['sqShip10'], - $data['sqShip11'] - ]; - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Resource/CommanderResources.php b/system/Modules/Ares/Resource/CommanderResources.php deleted file mode 100755 index a264c417c..000000000 --- a/system/Modules/Ares/Resource/CommanderResources.php +++ /dev/null @@ -1,94 +0,0 @@ - '3ème Classe' - ), - array( - 'grade' => '2ème Classe' - ), - array( - 'grade' => '1ère Classe' - ), - array( - 'grade' => 'Quartier-Maître' - ), - array( - 'grade' => 'Sergent' - ), - array( - 'grade' => 'Enseigne' - ), - array( - 'grade' => 'Lieutenant' - ), - array( - 'grade' => 'Capitaine' - ), - array( - 'grade' => 'Major' - ), - array( - 'grade' => 'Colonel' - ), - array( - 'grade' => 'Commandant' - ), - array( - 'grade' => 'Commodore' - ), - array( - 'grade' => 'Contre-Amiral' - ), - array( - 'grade' => 'Vice-Amiral' - ), - array( - 'grade' => 'Amiral' - ), - array( - 'grade' => 'Grand Amiral' - ), - array( - 'grade' => 'Grand Amiral' - ), - array( - 'grade' => 'Grand Amiral' - ), - array( - 'grade' => 'Grand Amiral' - ), - array( - 'grade' => 'Grand Amiral' - ) - ); - - public static function getInfo($level, $info) { - if ($level <= self::size()) { - if (in_array($info, array('grade'))) { - return self::$commanders[$level - 1][$info]; - } else { - return FALSE; - } - } else { - return FALSE; - } - } - - public static function size() { - return count(self::$commanders); - } -} \ No newline at end of file diff --git a/system/Modules/Ares/Resource/config/config.yml b/system/Modules/Ares/Resource/config/config.yml deleted file mode 100644 index bea5c4326..000000000 --- a/system/Modules/Ares/Resource/config/config.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- -parameters: - ares.commander.base_level: 100 - ares.commander.income_level: 200 - - ares.coeff.move_in_system: 584 - ares.coeff.move_out_of_system: 600 - ares.coeff.move_intersystem: 1000 - - ares.coeff.colonization_cost: 80000 - ares.coeff.conquest_cost: 150000 - - ares.loot_limit: 5000 - ares.coeff.loot: 275 - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Ares\Handler\: - resource: '%root_path%/system/Modules/Ares/Handler/*' - - Asylamba\Modules\Ares\Manager\: - resource: '%root_path%/system/Modules/Ares/Manager/*' - - Asylamba\Modules\Ares\Manager\CommanderManager: - arguments: - $commanderBaseLevel: "%ares.commander.base_level%" - $gaiaId: '%id_gaia%' - - Asylamba\Modules\Ares\Manager\FightManager: - arguments: - $gaiaId: '%id_gaia%' diff --git a/system/Modules/Artemis/ArtemisModule.php b/system/Modules/Artemis/ArtemisModule.php deleted file mode 100644 index 2e2f94ede..000000000 --- a/system/Modules/Artemis/ArtemisModule.php +++ /dev/null @@ -1,13 +0,0 @@ -database->prepare('SELECT sr.*, - p.typeOfPlace AS typeOfPlace, - p.position AS position, - p.population AS population, - p.coefResources AS coefResources, - p.coefHistory AS coefHistory, - s.rSector AS rSector, - s.xPosition AS xPosition, - s.yPosition AS yPosition, - s.typeOfSystem AS typeOfSystem - FROM spyReport AS sr - LEFT JOIN place AS p - ON sr.rPlace = p.id - LEFT JOIN system AS s - ON p.rSystem = s.id - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if(empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($aw = $qr->fetch()) { - $sr = new SpyReport(); - - $sr->id = $aw['id']; - $sr->rPlayer = $aw['rPlayer']; - $sr->price = $aw['price']; - $sr->rPlace = $aw['rPlace']; - $sr->placeColor = $aw['placeColor']; - $sr->typeOfBase = $aw['typeOfBase']; - $sr->typeOfOrbitalBase = $aw['typeOfOrbitalBase']; - $sr->placeName = $aw['placeName']; - $sr->points = $aw['points']; - $sr->rEnemy = $aw['rEnemy']; - $sr->enemyName = $aw['enemyName']; - $sr->enemyAvatar = $aw['enemyAvatar']; - $sr->enemyLevel = $aw['enemyLevel']; - $sr->resources = $aw['resources']; - $sr->shipsInStorage = $aw['shipsInStorage']; - $sr->antiSpyInvest = $aw['antiSpyInvest']; - $sr->commercialRouteIncome = $aw['commercialRouteIncome']; - $sr->commanders = $aw['commanders']; - $sr->success = $aw['success']; - $sr->type = $aw['type']; - $sr->dSpying = $aw['dSpying']; - - $sr->typeOfPlace = $aw['typeOfPlace']; - $sr->position = $aw['position']; - $sr->population = $aw['population']; - $sr->coefResources = $aw['coefResources']; - $sr->coefHistory = $aw['coefHistory']; - $sr->rSector = $aw['rSector']; - $sr->xPosition = $aw['xPosition']; - $sr->yPosition = $aw['yPosition']; - $sr->typeOfSystem = $aw['typeOfSystem']; - - $currentT = $this->_Add($sr); - } - } - - public function add(SpyReport $sr) { - $qr = $this->database->prepare('INSERT INTO - spyReport(rPlayer, price, rPlace, placeColor, typeOfBase, typeOfOrbitalBase, placeName, points, rEnemy, enemyName, enemyAvatar, enemyLevel, resources, shipsInStorage, antiSpyInvest, commercialRouteIncome, commanders, success, type, dSpying) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $sr->rPlayer, - $sr->price, - $sr->rPlace, - $sr->placeColor, - $sr->typeOfBase, - $sr->typeOfOrbitalBase, - $sr->placeName, - $sr->points, - $sr->rEnemy, - $sr->enemyName, - $sr->enemyAvatar, - $sr->enemyLevel, - $sr->resources, - $sr->shipsInStorage, - $sr->antiSpyInvest, - $sr->commercialRouteIncome, - $sr->commanders, - $sr->success, - $sr->type, - $sr->dSpying - )); - - $sr->id = $this->database->lastInsertId(); - - $this->_Add($sr); - } - - public function save() { - $reports = $this->_Save(); - - foreach ($reports AS $sr) { - $qr = $this->database->prepare('UPDATE spyReport - SET id = ?, - rPlayer = ?, - price = ?, - rPlace = ?, - placeColor = ?, - typeOfBase = ?, - typeOfOrbitalBase = ?, - placeName = ?, - points = ?, - rEnemy = ?, - enemyName = ?, - enemyAvatar = ?, - enemyLevel = ?, - resources = ?, - shipsInStorage = ?, - antiSpyInvest = ?, - commercialRouteIncome = ?, - commanders = ?, - success = ?, - type = ?, - dSpying = ? - WHERE id = ?'); - $qr->execute(array( - $sr->id, - $sr->rPlayer, - $sr->price, - $sr->rPlace, - $sr->placeColor, - $sr->typeOfBase, - $sr->typeOfOrbitalBase, - $sr->placeName, - $sr->points, - $sr->rEnemy, - $sr->enemyName, - $sr->enemyAvatar, - $sr->enemyLevel, - $sr->resources, - $sr->shipsInStorage, - $sr->antiSpyInvest, - $sr->commercialRouteIncome, - $sr->commanders, - $sr->success, - $sr->type, - $sr->dSpying, - $sr->id - )); - } - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM spyReport WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public function deleteByRPlayer($rPlayer) { - $qr = $this->database->prepare('DELETE FROM spyReport WHERE rPlayer = ?'); - $qr->execute(array($rPlayer)); - - $nbrDeleted = 0; - for ($i = 0; $i < $this->size(); $i++) { - if ($this->get($i)->rPlayer == $rPlayer) { - $nbrDeleted++; - } - - $this->_Remove($this->get($i)->getId()); - } - - return $nbrDeleted; - } -} diff --git a/system/Modules/Artemis/Model/SpyReport.php b/system/Modules/Artemis/Model/SpyReport.php deleted file mode 100644 index 358026e7e..000000000 --- a/system/Modules/Artemis/Model/SpyReport.php +++ /dev/null @@ -1,73 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Artemis/Resource/config/config.yml b/system/Modules/Artemis/Resource/config/config.yml deleted file mode 100644 index 210e8e395..000000000 --- a/system/Modules/Artemis/Resource/config/config.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - #Asylamba\Modules\Artemis\Handler\: - # resource: '%root_path%/system/Modules/Artemis/Handler/*' - - Asylamba\Modules\Artemis\Manager\: - resource: '%root_path%/system/Modules/Artemis/Manager/*' diff --git a/system/Modules/Athena/AthenaModule.php b/system/Modules/Athena/AthenaModule.php deleted file mode 100644 index a96390436..000000000 --- a/system/Modules/Athena/AthenaModule.php +++ /dev/null @@ -1,13 +0,0 @@ -entityManager->getRepository(OrbitalBase::class); - $bases = $repository->getAll(); - $this->entityManager->beginTransaction(); - $now = Utils::now(); - - foreach ($bases as $base) { - # update time - $hours = Utils::intervalDates($now, $base->uOrbitalBase); - - if (count($hours) === 0) { - continue; - } - $player = $this->playerManager->get($base->rPlayer); - $playerBonus = $this->playerBonusManager->getBonusByPlayer($player); - $this->playerBonusManager->load($playerBonus); - $base->setUpdatedAt($now); - $initialResources = $base->resourcesStorage; - $initialAntiSpyAverage = $base->antiSpyAverage; - - foreach ($hours as $hour) { - $this->updateResources($base, $playerBonus); - $this->updateAntiSpy($base); - } - - $repository->updateBase( - $base, - $base->resourcesStorage - $initialResources, - $base->antiSpyAverage - $initialAntiSpyAverage - ); - } - $this->entityManager->commit(); - } - - protected function updateResources(OrbitalBase $orbitalBase, PlayerBonus $playerBonus): void - { - $addResources = Game::resourceProduction($this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'level', $orbitalBase->levelRefinery, 'refiningCoefficient'), $orbitalBase->planetResources); - $addResources += $addResources * $playerBonus->bonus->get(PlayerBonus::REFINERY_REFINING) / 100; - - $this->orbitalBaseManager->increaseResources($orbitalBase, (int) $addResources, false, false); - } - - protected function updateAntiSpy(OrbitalBase $orbitalBase): void - { - $orbitalBase->antiSpyAverage = round((($orbitalBase->antiSpyAverage * (24 - 1)) + ($orbitalBase->iAntiSpy)) / 24); - } -} diff --git a/system/Modules/Athena/Handler/Building/BuildingQueueHandler.php b/system/Modules/Athena/Handler/Building/BuildingQueueHandler.php deleted file mode 100644 index 8b8bfac68..000000000 --- a/system/Modules/Athena/Handler/Building/BuildingQueueHandler.php +++ /dev/null @@ -1,64 +0,0 @@ -logger->info('Handle building completion for queue {queueId}', [ - 'queueId' => $message->getBuildingQueueId(), - ]); - $queue = $this->buildingQueueManager->get($message->getBuildingQueueId()); - $orbitalBase = $this->orbitalBaseManager->get($queue->rOrbitalBase); - $player = $this->playerManager->get($orbitalBase->rPlayer); - # update builded building - $orbitalBase->setBuildingLevel($queue->buildingNumber, ($orbitalBase->getBuildingLevel($queue->buildingNumber) + 1)); - # update the points of the orbitalBase - $earnedPoints = $this->orbitalBaseManager->updatePoints($orbitalBase); - $this->entityManager->getRepository(OrbitalBase::class)->increaseBuildingLevel( - $orbitalBase, - $this->orbitalBaseHelper->getBuildingInfo($queue->buildingNumber, 'column'), - $earnedPoints - ); - # increase player experience - $experience = $this->orbitalBaseHelper->getBuildingInfo($queue->buildingNumber, 'level', $queue->targetLevel, 'points'); - $this->playerManager->increaseExperience($player, $experience); - - # alert - if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { - $session->addFlashbag('Construction de votre ' . $this->orbitalBaseHelper->getBuildingInfo($queue->buildingNumber, 'frenchName') . ' niveau ' . $queue->targetLevel . ' sur ' . $orbitalBase->name . ' terminée. Vous gagnez ' . $experience . ' point' . Format::addPlural($experience) . ' d\'expérience.', Flashbag::TYPE_GENERATOR_SUCCESS); - $this->sessionWrapper->save($session); - } - # delete queue in database - $this->entityManager->remove($queue); - $this->entityManager->flush($queue); - $this->logger->info('Construction done'); - } -} diff --git a/system/Modules/Athena/Handler/RecyclingMissionHandler.php b/system/Modules/Athena/Handler/RecyclingMissionHandler.php deleted file mode 100644 index fd7720b0f..000000000 --- a/system/Modules/Athena/Handler/RecyclingMissionHandler.php +++ /dev/null @@ -1,226 +0,0 @@ -recyclingMissionManager->get($message->getRecyclingMissionId()); - $orbitalBase = $this->orbitalBaseManager->get($mission->rBase); - $targetPlace = $this->placeManager->get($mission->rTarget); - - $player = $this->playerManager->get($orbitalBase->getRPlayer()); - if ($targetPlace->typeOfPlace != Place::EMPTYZONE) { - # make the recycling : decrease resources on the target place - $totalRecycled = $mission->recyclerQuantity * RecyclingMission::RECYCLER_CAPACTIY; - $targetPlace->resources -= $totalRecycled; - # if there is no more resource - if ($targetPlace->resources <= 0) { - // Avoid out of range errors - $targetPlace->resources = 0; - # the place become an empty place - $this->placeManager->turnAsEmptyPlace($targetPlace); - - # stop the mission - $mission->statement = RecyclingMission::ST_DELETED; - - # send notification to the player - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Arrêt de mission de recyclage'); - $n->addBeg()->addTxt('Un '); - $n->addLnk('map/place-' . $mission->rTarget, 'lieu'); - $n->addTxt(' que vous recycliez est désormais totalement dépourvu de ressources et s\'est donc transformé en lieu vide.'); - $n->addSep()->addTxt('Vos recycleurs restent donc stationnés sur votre '); - $n->addLnk('map/place-' . $orbitalBase->rPlace, 'base orbitale')->addTxt(' le temps que vous programmiez une autre mission.'); - $n->addEnd(); - $this->notificationManager->add($n); - } - - # if the sector change its color between 2 recyclings - if ($player->rColor != $targetPlace->sectorColor && $targetPlace->sectorColor != ColorResource::NO_FACTION) { - # stop the mission - $mission->statement = RecyclingMission::ST_DELETED; - - # send notification to the player - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Arrêt de mission de recyclage'); - $n->addBeg()->addTxt('Le secteur d\'un '); - $n->addLnk('map/place-' . $mission->rTarget, 'lieu'); - $n->addTxt(' que vous recycliez est passé à l\'ennemi, vous ne pouvez donc plus y envoyer vos recycleurs. La mission est annulée.'); - $n->addSep()->addTxt('Vos recycleurs restent donc stationnés sur votre '); - $n->addLnk('map/place-' . $orbitalBase->rPlace, 'base orbitale')->addTxt(' le temps que vous programmiez une autre mission.'); - $n->addEnd(); - $this->notificationManager->add($n); - } - - $creditRecycled = round($targetPlace->population * $totalRecycled * 10 / 100); - $resourceRecycled = round($targetPlace->coefResources * $totalRecycled / 100); - $shipRecycled = round($targetPlace->coefHistory * $totalRecycled / 100); - - # diversify a little (resource and credit) - $percent = rand(-5, 5); - $diffAmountCredit = round($creditRecycled * $percent / 100); - $diffAmountResource = round($resourceRecycled * $percent / 100); - $creditRecycled += $diffAmountCredit; - $resourceRecycled -= $diffAmountResource; - - if ($creditRecycled < 0) { $creditRecycled = 0; } - if ($resourceRecycled < 0) { $resourceRecycled = 0; } - - # convert shipRecycled to real ships - $pointsToRecycle = round($shipRecycled * RecyclingMission::COEF_SHIP); - $shipsArray1 = array(); - $buyShip = array(); - for ($i = 0; $i < ShipResource::SHIP_QUANTITY; $i++) { - if (floor($pointsToRecycle / ShipResource::getInfo($i, 'resourcePrice')) > 0) { - $shipsArray1[] = array( - 'ship' => $i, - 'price' => ShipResource::getInfo($i, 'resourcePrice'), - 'canBuild' => TRUE); - } - $buyShip[] = 0; - } - - shuffle($shipsArray1); - $shipsArray = array(); - $onlyThree = 0; - foreach ($shipsArray1 as $key => $value) { - $onlyThree++; - $shipsArray[] = $value; - if ($onlyThree == 3) { - break; - } - } - $continue = TRUE; - if (count($shipsArray) > 0) { - while($continue) { - foreach ($shipsArray as $key => $line) { - if ($line['canBuild']) { - $nbmax = floor($pointsToRecycle / $line['price']); - if ($nbmax < 1) { - $shipsArray[$key]['canBuild'] = FALSE; - } else { - $qty = rand(1, $nbmax); - $pointsToRecycle -= $qty * $line['price']; - $buyShip[$line['ship']] += $qty; - } - } - } - - $canBuild = FALSE; - # verify if we can build one more ship - foreach ($shipsArray as $key => $line) { - if ($line['canBuild']) { - $canBuild = TRUE; - break; - } - } - if (!$canBuild) { - # if the 3 types of ships can't be build anymore --> stop - $continue = FALSE; - } - } - } - - # create a RecyclingLog - $rl = new RecyclingLog(); - $rl->rRecycling = $mission->id; - $rl->resources = $resourceRecycled; - $rl->credits = $creditRecycled; - $rl->ship0 = $buyShip[0]; - $rl->ship1 = $buyShip[1]; - $rl->ship2 = $buyShip[2]; - $rl->ship3 = $buyShip[3]; - $rl->ship4 = $buyShip[4]; - $rl->ship5 = $buyShip[5]; - $rl->ship6 = $buyShip[6]; - $rl->ship7 = $buyShip[7]; - $rl->ship8 = $buyShip[8]; - $rl->ship9 = $buyShip[9]; - $rl->ship10 = $buyShip[10]; - $rl->ship11 = $buyShip[11]; - $rl->dLog = Utils::addSecondsToDate($mission->uRecycling, $mission->cycleTime); - $this->recyclingLogManager->add($rl); - - # give to the orbitalBase ($orbitalBase) and player what was recycled - $this->orbitalBaseManager->increaseResources($orbitalBase, $resourceRecycled); - for ($i = 0; $i < ShipResource::SHIP_QUANTITY; $i++) { - $this->orbitalBaseManager->addShipToDock($orbitalBase, $i, $buyShip[$i]); - } - $this->playerManager->increaseCredit($player, $creditRecycled); - - # add recyclers waiting to the mission - $mission->recyclerQuantity += $mission->addToNextMission; - $mission->addToNextMission = 0; - - # if a mission is stopped by the user, delete it - if ($mission->statement == RecyclingMission::ST_BEING_DELETED) { - $mission->statement = RecyclingMission::ST_DELETED; - } - - # update u - $mission->uRecycling = Utils::addSecondsToDate($mission->uRecycling, $mission->cycleTime); - // Schedule the next mission if there is still resources - if ($mission->getStatement() !== RecyclingMission::ST_DELETED) { - $this->messageBus->dispatch( - new RecyclingMissionMessage($mission->getId()), - [DateTimeConverter::to_delay_stamp($mission->uRecycling)] - ); - } - } else { - # the place become an empty place - $targetPlace->resources = 0; - - # stop the mission - $mission->statement = RecyclingMission::ST_DELETED; - - # send notification to the player - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Arrêt de mission de recyclage'); - $n->addBeg()->addTxt('Un '); - $n->addLnk('map/place-' . $mission->rTarget, 'lieu'); - $n->addTxt(' que vous recycliez est désormais totalement dépourvu de ressources et s\'est donc transformé en lieu vide.'); - $n->addSep()->addTxt('Vos recycleurs restent donc stationnés sur votre '); - $n->addLnk('map/place-' . $orbitalBase->rPlace, 'base orbitale')->addTxt(' le temps que vous programmiez une autre mission.'); - $n->addEnd(); - $this->notificationManager->add($n); - } - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Athena/Handler/Ship/ShipQueueHandler.php b/system/Modules/Athena/Handler/Ship/ShipQueueHandler.php deleted file mode 100644 index 78daa7a11..000000000 --- a/system/Modules/Athena/Handler/Ship/ShipQueueHandler.php +++ /dev/null @@ -1,59 +0,0 @@ -shipQueueManager->get($message->getShipQueueId()); - $orbitalBase = $this->orbitalBaseManager->get($queue->rOrbitalBase); - $player = $this->playerManager->get($orbitalBase->rPlayer); - # vaisseau construit - $orbitalBase->setShipStorage($queue->shipNumber, $orbitalBase->getShipStorage($queue->shipNumber) + $queue->quantity); - # increase player experience - $experience = $queue->quantity * ShipResource::getInfo($queue->shipNumber, 'points'); - $this->playerManager->increaseExperience($player, $experience); - - # alert - if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { - $shipName = ShipResource::getInfo($queue->shipNumber, 'codeName'); - $session->addFlashbag(\sprintf( - 'Construction de %s
sur %s terminée. Vous gagnez %s point%s d\'expérience.', - ($queue->quantity > 1) - ? \sprintf('vos %s %ss', $queue->quantity, $shipName) - : \sprintf('votre %s', $shipName), - $orbitalBase->name, - $experience, - Format::addPlural($experience), - ), 1 === $queue->dockType ? Flashbag::TYPE_DOCK1_SUCCESS : Flashbag::TYPE_DOCK2_SUCCESS); - $this->sessionWrapper->save($session); - } - $this->entityManager->remove($queue); - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Athena/Handler/Trade/CommercialShippingHandler.php b/system/Modules/Athena/Handler/Trade/CommercialShippingHandler.php deleted file mode 100644 index 2904fe8ab..000000000 --- a/system/Modules/Athena/Handler/Trade/CommercialShippingHandler.php +++ /dev/null @@ -1,85 +0,0 @@ -commercialShippingManager->get($message->getCommercialShippingId()); - $transaction = $this->transactionManager->get($cs->getTransactionId()); - $orbitalBase = $this->orbitalBaseManager->get($cs->getBaseId()); - $destOB = $this->orbitalBaseManager->get($cs->getDestinationBaseId()); - $commander = - ($transaction !== null && $transaction->type === Transaction::TYP_COMMANDER) - ? $this->commanderManager->get($transaction->identifier) - : null - ; - - switch ($cs->statement) { - case CommercialShipping::ST_GOING : - # shipping arrived, delivery of items to rBaseDestination - $this->commercialShippingManager->deliver($cs, $transaction, $destOB, $commander); - # prepare commercialShipping for moving back - $cs->statement = CommercialShipping::ST_MOVING_BACK; - $timeToTravel = strtotime($cs->dArrival) - strtotime($cs->dDeparture); - $cs->dDeparture = $cs->dArrival; - $cs->dArrival = Utils::addSecondsToDate($cs->dArrival, $timeToTravel); - - $this->messageBus->dispatch(new CommercialShippingMessage($cs->getId()), [DateTimeConverter::to_delay_stamp($cs->getArrivedAt())]); - break; - case CommercialShipping::ST_MOVING_BACK : - # shipping arrived, release of the commercial ships - # send notification - $n = new Notification(); - $n->setRPlayer($cs->rPlayer); - $n->setTitle('Retour de livraison'); - if ($cs->shipQuantity == 1) { - $n->addBeg()->addTxt('Votre vaisseau commercial est de retour sur votre '); - } else { - $n->addBeg()->addTxt('Vos vaisseaux commerciaux sont de retour sur votre '); - } - $n->addLnk('map/place-' . $cs->rBase, 'base orbitale')->addTxt(' après avoir livré du matériel sur une autre '); - $n->addLnk('map/place-' . $cs->rBaseDestination, 'base')->addTxt(' . '); - if ($cs->shipQuantity == 1) { - $n->addSep()->addTxt('Votre vaisseau de commerce est à nouveau disponible pour faire d\'autres transactions ou routes commerciales.'); - } else { - $n->addSep()->addTxt('Vos ' . $cs->shipQuantity . ' vaisseaux de commerce sont à nouveau disponibles pour faire d\'autres transactions ou routes commerciales.'); - } - $n->addEnd(); - $this->notificationManager->add($n); - # delete commercialShipping - $this->entityManager->remove($cs); - break; - default :break; - } - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Athena/Helper/OrbitalBaseHelper.php b/system/Modules/Athena/Helper/OrbitalBaseHelper.php deleted file mode 100644 index 2b83e988b..000000000 --- a/system/Modules/Athena/Helper/OrbitalBaseHelper.php +++ /dev/null @@ -1,197 +0,0 @@ - 2, - OrbitalBase::TYP_MILITARY, OrbitalBase::TYP_CAPITAL => 5, - default => 0, - }; - } - - public function getInfo($buildingNumber, $info, $level = 0, $sup = 'default') { - return $this->getBuildingInfo($buildingNumber, $info, $level, $sup); - } - - public function getBuildingInfo($buildingNumber, $info, $level = 0, $sup = 'default') { - if($this->isABuilding($buildingNumber)) { - if (\in_array($info, ['name', 'column', 'frenchName', 'imageLink', 'description'])) { - return OrbitalBaseResource::$building[$buildingNumber][$info]; - } elseif ($info == 'techno') { - if (\in_array($buildingNumber, array(3,4,6,8,9))) { - return OrbitalBaseResource::$building[$buildingNumber][$info]; - } else { - return -1; - } - } elseif ($info == 'maxLevel') { - # $level is the type of the base - return OrbitalBaseResource::$building[$buildingNumber][$info][$level]; - - } elseif ($info == 'level') { - if ($level <= 0 OR $level > count(OrbitalBaseResource::$building[$buildingNumber]['level'])) { - return FALSE; - } - if ($sup == 'time') { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][0]; - } elseif($sup == 'resourcePrice') { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][1]; - } elseif($sup == 'points') { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][2]; - } else { - if ($sup == 'nbQueues') { - if ($buildingNumber == 0 OR $buildingNumber == 2 OR $buildingNumber == 3 OR $buildingNumber == 5) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } - } elseif ($sup == 'storageSpace') { - if ($buildingNumber == 7) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } elseif ($buildingNumber == 2 OR $buildingNumber == 3) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][4]; - } - } elseif ($sup == 'refiningCoefficient' AND $buildingNumber == 1) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } elseif ($sup == 'releasedShip' AND ($buildingNumber == 2 OR $buildingNumber == 3)) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][5]; - } elseif ($sup == 'releasedShip' AND $buildingNumber == 4) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][4]; - } elseif ($sup == 'nbCommercialShip' AND $buildingNumber == 6) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } elseif ($sup == 'nbRecyclers' AND $buildingNumber == 8) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } elseif ($sup == 'nbRoutesMax' AND $buildingNumber == 9) { - return OrbitalBaseResource::$building[$buildingNumber][$info][$level-1][3]; - } else { - throw new \ErrorException('4e argument invalide dans getBuildingInfo de OrbitalBaseResource'); - } - } - } else { - throw new \ErrorException('2e argument invalide dans getBuildingInfo de OrbitalBaseResource'); - } - } else { - throw new \ErrorException('1er argument invalide (entre 0 et 7) dans getBuildingInfo de OrbitalBaseResource'); - } - return FALSE; - } - - public function haveRights($buildingId, $level, $type, $sup) { - if ($this->isABuilding($buildingId)) { - switch($type) { - // assez de ressources pour contruire ? - case 'resource' : - return ($sup < $this->getBuildingInfo($buildingId, 'level', $level, 'resourcePrice')) ? FALSE : TRUE; - break; - // encore de la place dans la queue ? - // $sup est le nombre de batiments dans la queue - case 'queue' : - // $buildingId n'est pas utilisé - return ($sup < $this->getBuildingInfo($buildingId, 'level', $level, 'nbQueues')) ? TRUE : FALSE; - break; - // droit de construire le batiment ? - // $sup est un objet de type OrbitalBase - case 'buildingTree' : - $diminution = NULL; - switch ($buildingId) { - case OrbitalBaseResource::GENERATOR : - $diminution = 0; - break; - case OrbitalBaseResource::REFINERY : - $diminution = 0; - break; - case OrbitalBaseResource::DOCK1 : - $diminution = 0; - break; - case OrbitalBaseResource::DOCK2 : - $diminution = 20; - break; - case OrbitalBaseResource::DOCK3 : - $diminution = 30; - break; - case OrbitalBaseResource::TECHNOSPHERE : - $diminution = 0; - break; - case OrbitalBaseResource::COMMERCIAL_PLATEFORME : - $diminution = 10; - break; - case OrbitalBaseResource::STORAGE : - $diminution = 0; - break; - case OrbitalBaseResource::RECYCLING : - $diminution = 10; - break; - case OrbitalBaseResource::SPATIOPORT : - $diminution = 20; - break; - default : - throw new \ErrorException('buildingId invalide (entre 0 et 9) dans haveRights de OrbitalBaseResource'); - } - if ($diminution !== NULL) { - if ($buildingId == OrbitalBaseResource::GENERATOR) { - if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$sup->typeOfBase]) { - return 'niveau maximum atteint'; - } else { - return TRUE; - } - } else { - if ($level == 1 AND $sup->typeOfBase == OrbitalBase::TYP_NEUTRAL AND ($buildingId == OrbitalBaseResource::SPATIOPORT OR $buildingId == OrbitalBaseResource::DOCK2)) { - return 'vous devez évoluer votre colonie pour débloquer ce bâtiment'; - } - if ($level > OrbitalBaseResource::$building[$buildingId]['maxLevel'][$sup->typeOfBase]) { - return 'niveau maximum atteint'; - } elseif ($level > ($sup->realGeneratorLevel - $diminution)) { - return 'le niveau du générateur n\'est pas assez élevé'; - } else { - return TRUE; - } - } - } - break; - // a la technologie pour construire ce bâtiment ? - // $sup est un objet de type Technology - case 'techno' : - if ($this->getBuildingInfo($buildingId, 'techno') == -1) { return TRUE; } - if ($sup->getTechnology($this->getBuildingInfo($buildingId, 'techno')) == 1) { - return TRUE; - } else { - return 'il vous faut développer la technologie ' . $this->technologyHelper->getInfo($this->getBuildingInfo($buildingId, 'techno'), 'name'); - } - break; - default : - throw new \ErrorException('$type invalide (entre 1 et 4) dans haveRights de OrbitalBaseResource'); - } - } else { - throw new \ErrorException('buildingId invalide (entre 0 et 9) dans haveRights de OrbitalBaseResource'); - } - } -} diff --git a/system/Modules/Athena/Helper/ShipHelper.php b/system/Modules/Athena/Helper/ShipHelper.php deleted file mode 100644 index bcfbf525c..000000000 --- a/system/Modules/Athena/Helper/ShipHelper.php +++ /dev/null @@ -1,151 +0,0 @@ -orbitalBaseHelper = $orbitalBaseHelper; - } - - public function haveRights($shipId, $type, $sup, $quantity = 1): bool - { - if (ShipResource::isAShip($shipId)) { - switch ($type) { - // assez de ressources pour construire ? - case 'resource' : - $price = ShipResource::getInfo($shipId, 'resourcePrice') * $quantity; - if ($shipId == ShipResource::CERBERE || $shipId == ShipResource::PHENIX) { - if ($this->sessionWrapper->get('playerInfo')->get('color') == ColorResource::EMPIRE) { - # bonus if the player is from the Empire - $price -= round($price * ColorResource::BONUS_EMPIRE_CRUISER / 100); - } - } - return !($sup < $price); - // assez de points d'action pour construire ? - case 'pa' : - return !($sup < self::getInfo($shipId, 'pa')); - // encore de la place dans la queue ? - // $sup est un objet de type OrbitalBase - // $quantity est le nombre de batiments dans la queue - case 'queue' : - if ($this->orbitalBaseHelper->isAShipFromDock1($shipId)) { - $maxQueue = $this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK1, 'level', $sup->levelDock1, 'nbQueues'); - } elseif ($this->orbitalBaseHelper->isAShipFromDock2($shipId)) { - $maxQueue = $this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK2, 'level', $sup->levelDock2, 'nbQueues'); - } else { - $maxQueue = 0; - } - return ($quantity < $maxQueue); - // droit de construire le vaisseau ? - // $sup est un objet de type OrbitalBase - case 'shipTree' : - if (ShipResource::isAShipFromDock1($shipId)) { - $level = $sup->getLevelDock1(); - return ($shipId < $this->orbitalBaseHelper->getBuildingInfo(2, 'level', $level, 'releasedShip')); - } else if (ShipResource::isAShipFromDock2($shipId)) { - $level = $sup->getLevelDock2(); - return (($shipId - 6) < $this->orbitalBaseHelper->getBuildingInfo(3, 'level', $level, 'releasedShip')); - } else { - $level = $sup->getLevelDock3(); - return (($shipId - 12) < $this->orbitalBaseHelper->getBuildingInfo(4, 'level', $level, 'releasedShip')); - } - break; - // assez de pev dans le storage et dans la queue ? - // $sup est un objet de type OrbitalBase - case 'pev' : - if (ShipResource::isAShipFromDock1($shipId)) { - //place dans le hangar - $totalSpace = $this->orbitalBaseHelper->getBuildingInfo(2, 'level', $sup->getLevelDock1(), 'storageSpace'); - //ce qu'il y a dans le hangar - $storage = $sup->getShipStorage(); - $inStorage = 0; - for ($i = 0; $i < 6; $i++) { - $inStorage += ShipResource::getInfo($i, 'pev') * $storage[$i]; - } - //ce qu'il y a dans la queue - $inQueue = 0; - $shipQueues = $this->shipQueueManager->getByBaseAndDockType($sup->rPlace, 1); - foreach ($shipQueues as $shipQueue) { - $inQueue += ShipResource::getInfo($shipQueue->shipNumber, 'pev') * $shipQueue->quantity; - } - //ce qu'on veut rajouter - $wanted = ShipResource::getInfo($shipId, 'pev') * $quantity; - //comparaison - return ($wanted + $inQueue + $inStorage <= $totalSpace); - } elseif (ShipResource::isAShipFromDock2($shipId)) { - //place dans le hangar - $totalSpace = $this->orbitalBaseHelper->getBuildingInfo(3, 'level', $sup->getLevelDock2(), 'storageSpace'); - //ce qu'il y a dans le hangar - $storage = $sup->getShipStorage(); - $inStorage = 0; - for ($i = 6; $i < 12; $i++) { - $inStorage += ShipResource::getInfo($i, 'pev') * $storage[$i]; - } - //ce qu'il y a dans la queue - $inQueue = 0; - $shipQueues = $this->shipQueueManager->getByBaseAndDockType($sup->rPlace, 2); - foreach ($shipQueues as $shipQueue) { - $inQueue += ShipResource::getInfo($shipQueue->shipNumber, 'pev') * 1; - } - //ce qu'on veut rajouter - $wanted = ShipResource::getInfo($shipId, 'pev') * $quantity; - //comparaison - return ($wanted + $inQueue + $inStorage <= $totalSpace); - } else { - return TRUE; - } - break; - // a la technologie nécessaire pour constuire ce vaisseau ? - // $sup est un objet de type Technology - case 'techno' : - if ($sup->getTechnology(ShipResource::getInfo($shipId, 'techno')) == 1) { - return TRUE; - } else { - return 'il vous faut développer la technologie ' . $this->technologyHelper->getInfo(ShipResource::getInfo($shipId, 'techno'), 'name'); - } - break; - default : - throw new \ErrorException('type invalide dans haveRights de ShipResource'); - } - } else { - throw new \ErrorException('shipId invalide (entre 0 et 14) dans haveRights de ShipResource'); - } - } - - public function dockLevelNeededFor($shipId) { - if (ShipResource::isAShipFromDock1($shipId)) { - $building = OrbitalBaseResource::DOCK1; $size = 40; $shipId++; - } elseif (ShipResource::isAShipFromDock2($shipId)) { - $building = OrbitalBaseResource::DOCK2; $size = 20; $shipId -= 5; - } else { - $building = OrbitalBaseResource::DOCK3; $size = 10; $shipId -= 11; - } - for ($i = 0; $i <= $size; $i++) { - $relasedShip = $this->orbitalBaseHelper->getBuildingInfo($building, 'level', $i, 'releasedShip'); - if ($relasedShip == $shipId) { - return $i; - } - } - } -} diff --git a/system/Modules/Athena/Manager/BuildingQueueManager.php b/system/Modules/Athena/Manager/BuildingQueueManager.php deleted file mode 100644 index ce8d68521..000000000 --- a/system/Modules/Athena/Manager/BuildingQueueManager.php +++ /dev/null @@ -1,55 +0,0 @@ -entityManager->getRepository(BuildingQueue::class)->get($id); - } - - public function getBaseQueues(int $baseId): array - { - return $this->entityManager->getRepository(BuildingQueue::class)->getBaseQueues($baseId); - } - - public function scheduleActions(): void - { - $buildingQueues = $this->entityManager->getRepository(BuildingQueue::class)->getAll(); - - /** @var BuildingQueue $buildingQueue */ - foreach ($buildingQueues as $buildingQueue) { - $this->messenger->dispatch(new BuildingQueueMessage($buildingQueue->id), [DateTimeConverter::to_delay_stamp($buildingQueue->getDEnd())]); - } - } - - public function add(BuildingQueue $buildingQueue): void - { - $this->entityManager->persist($buildingQueue); - $this->entityManager->flush($buildingQueue); - $this->messenger->dispatch(new BuildingQueueMessage($buildingQueue->id), [DateTimeConverter::to_delay_stamp($buildingQueue->getDEnd())]); - } -} diff --git a/system/Modules/Athena/Manager/CommercialRouteManager.php b/system/Modules/Athena/Manager/CommercialRouteManager.php deleted file mode 100644 index 3709f04d2..000000000 --- a/system/Modules/Athena/Manager/CommercialRouteManager.php +++ /dev/null @@ -1,172 +0,0 @@ -entityManager = $entityManager; - } - - /** - * @param int $id - * @return CommercialRoute - */ - public function get($id) - { - return $this->entityManager->getRepository(CommercialRoute::class)->get($id); - } - - /** - * @param int $id - * @param int $baseId - * @return CommercialRoute - */ - public function getByIdAndBase($id, $baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getByIdAndBase($id, $baseId); - } - - /** - * @param int $id - * @param int $baseId - * @return CommercialRoute - */ - public function getByIdAndDistantBase($id, $baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getByIdAndDistantBase($id, $baseId); - } - - /** - * @param int $baseId - * @return array - */ - public function getByBase($baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getByBase($baseId); - } - - /** - * @param int $baseId - * @return array - */ - public function getByDistantBase($baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getByDistantBase($baseId); - } - - /** - * @param int $baseId - * @param int $distantBaseId - * @return CommercialRoute - */ - public function getExistingRoute($baseId, $distantBaseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getExistingRoute($baseId, $distantBaseId); - } - - /** - * @param OrbitalBase $orbitalBase - * @return int - */ - public function getBaseIncome(OrbitalBase $orbitalBase) - { - return $this->entityManager->getRepository(CommercialRoute::class)->getBaseIncome($orbitalBase->getId()); - } - - /** - * @param int $baseId - * @param int $distantBaseId - * @return bool - */ - public function isAlreadyARoute($baseId, $distantBaseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->isAlreadyARoute($baseId, $distantBaseId); - } - - /** - * @param int $baseId - * @return int - */ - public function countBaseRoutes($baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->countBaseRoutes($baseId); - } - - /** - * @param int $baseId - * @return int - */ - public function countBaseActiveAndStandbyRoutes($baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->countBaseActiveAndStandbyRoutes($baseId); - } - - - /** - * @param int $baseId - * @return int - */ - public function countBaseActiveRoutes($baseId) - { - return $this->entityManager->getRepository(CommercialRoute::class)->countBaseActiveRoutes($baseId); - } - - /** - * @param CommercialRoute $commercialRoute - */ - public function add(CommercialRoute $commercialRoute) { - $this->entityManager->persist($commercialRoute); - $this->entityManager->flush(); - } - - /** - * @param CommercialRoute $commercialRoute - */ - public function remove(CommercialRoute $commercialRoute) { - $this->entityManager->remove($commercialRoute); - $this->entityManager->flush(); - } - - public function removeBaseRoutes(OrbitalBase $orbitalBase) - { - $repository = $this->entityManager->getRepository(CommercialRoute::class); - - $routes = array_merge( - $repository->getByBase($orbitalBase->getId()), - $repository->getByDistantBase($orbitalBase->getId()) - ); - foreach($routes as $route) { - $this->entityManager->remove($route); - // @TODO notifications - } - $this->entityManager->flush(); - } - - /** - * @param Color $faction - * @param Color $otherFaction - */ - public function freezeRoute(Color $faction, Color $otherFaction) { - $freeze = TRUE; - if (!($faction->colorLink[$otherFaction->id] == Color::ENEMY || $otherFaction->colorLink[$faction->id] == Color::ENEMY)) { - $freeze = FALSE; - } - $this->entityManager->getRepository(CommercialRoute::class)->freezeRoutes($faction, $otherFaction, $freeze); - } -} diff --git a/system/Modules/Athena/Manager/CommercialShippingManager.php b/system/Modules/Athena/Manager/CommercialShippingManager.php deleted file mode 100644 index c10932c1b..000000000 --- a/system/Modules/Athena/Manager/CommercialShippingManager.php +++ /dev/null @@ -1,259 +0,0 @@ -entityManager->getRepository(CommercialShipping::class)->getMoving(); - - /** @var CommercialShipping $commercialShipping */ - foreach ($shippings as $commercialShipping) { - $this->messageBus->dispatch( - new CommercialShippingMessage($commercialShipping->getId()), - [DateTimeConverter::to_delay_stamp($commercialShipping->getArrivedAt())], - ); - } - } - - public function get(int $id): ?CommercialShipping - { - return $this->entityManager->getRepository(CommercialShipping::class)->get($id); - } - - public function getByTransactionId(int $id): ?CommercialShipping - { - return $this->entityManager->getRepository(CommercialShipping::class)->getByTransactionId($id); - } - - public function getByBase(int $orbitalBaseId): array - { - return $this->entityManager->getRepository(CommercialShipping::class)->getByBase($orbitalBaseId); - } - - public function add(CommercialShipping $commercialShipping): void - { - $this->entityManager->persist($commercialShipping); - $this->entityManager->flush($commercialShipping); - - if (CommercialShipping::ST_WAITING !== $commercialShipping->getStatement()) { - $this->messageBus->dispatch( - new CommercialShippingMessage($commercialShipping->getId()), - [DateTimeConverter::to_delay_stamp($commercialShipping->getArrivedAt())], - ); - } - } - - public function deliver(CommercialShipping $commercialShipping, $transaction, $destOB, $commander) { - if ($transaction !== NULL AND $transaction->statement == Transaction::ST_COMPLETED) { - - switch ($transaction->type) { - case Transaction::TYP_RESOURCE: - $this->orbitalBaseManager->increaseResources($destOB, $transaction->quantity, TRUE); - - # notif pour l'acheteur - $n = new Notification(); - $n->setRPlayer($destOB->getRPlayer()); - $n->setTitle('Ressources reçues'); - $n->addBeg()->addTxt('Vous avez reçu les ' . $transaction->quantity . ' ressources que vous avez achetées au marché.'); - $n->addEnd(); - $this->notificationManager->add($n); - - break; - case Transaction::TYP_SHIP: - $this->orbitalBaseManager->addShipToDock($destOB, $transaction->identifier, $transaction->quantity); - - # notif pour l'acheteur - $n = new Notification(); - $n->setRPlayer($destOB->getRPlayer()); - if ($commercialShipping->resourceTransported == NULL) { - # transaction - if ($transaction->quantity == 1) { - $n->setTitle('Vaisseau reçu'); - $n->addBeg()->addTxt('Vous avez reçu le vaisseau de type ' . ShipResource::getInfo($transaction->identifier, 'codeName') . ' que vous avez acheté au marché.'); - $n->addSep()->addTxt('Il a été ajouté à votre hangar.'); - } else { - $n->setTitle('Vaisseaux reçus'); - $n->addBeg()->addTxt('Vous avez reçu les ' . $transaction->quantity . ' vaisseaux de type ' . ShipResource::getInfo($transaction->identifier, 'codeName') . ' que vous avez achetés au marché.'); - $n->addSep()->addTxt('Ils ont été ajoutés à votre hangar.'); - } - } else { - # ships sending - if ($transaction->quantity == 1) { - $n->setTitle('Vaisseau reçu'); - $n->addBeg()->addTxt('Vous avez reçu le vaisseau de type ' . ShipResource::getInfo($transaction->identifier, 'codeName') . ' envoyé par un marchand galactique.'); - $n->addSep()->addTxt('Il a été ajouté à votre hangar.'); - } else { - $n->setTitle('Vaisseaux reçus'); - $n->addBeg()->addTxt('Vous avez reçu les ' . $transaction->quantity . ' vaisseaux de type ' . ShipResource::getInfo($transaction->identifier, 'codeName') . ' envoyés par un marchand galactique.'); - $n->addSep()->addTxt('Ils ont été ajoutés à votre hangar.'); - } - } - $n->addEnd(); - $this->notificationManager->add($n); - break; - case Transaction::TYP_COMMANDER: - $commander->setStatement(Commander::RESERVE); - $commander->setRPlayer($destOB->getRPlayer()); - $commander->setRBase($commercialShipping->rBaseDestination); - - # notif pour l'acheteur - $n = new Notification(); - $n->setRPlayer($destOB->getRPlayer()); - $n->setTitle('Commandant reçu'); - $n->addBeg()->addTxt('Le commandant ' . $commander->getName() . ' que vous avez acheté au marché est bien arrivé.'); - $n->addSep()->addTxt('Il se trouve pour le moment dans votre école de commandement'); - $n->addEnd(); - $this->notificationManager->add($n); - break; - default: - throw new ErrorException('type de transaction inconnue dans deliver()'); - } - - $commercialShipping->statement = CommercialShipping::ST_MOVING_BACK; - - } elseif ($transaction === NULL AND $commercialShipping->rTransaction == NULL AND $commercialShipping->resourceTransported != NULL) { - # resource sending - - $this->orbitalBaseManager->increaseResources($destOB, $commercialShipping->resourceTransported, TRUE); - - # notif for the player who receive the resources - $n = new Notification(); - $n->setRPlayer($destOB->getRPlayer()); - $n->setTitle('Ressources reçues'); - $n->addBeg()->addTxt('Vous avez bien reçu les ' . $commercialShipping->resourceTransported . ' ressources sur votre base orbitale ' . $destOB->name . '.'); - $n->addEnd(); - $this->notificationManager->add($n); - - $commercialShipping->statement = CommercialShipping::ST_MOVING_BACK; - } else { - throw new ErrorException('impossible de délivrer ce chargement'); - } - } - - public function render(CommercialShipping $commercialShipping) { - switch ($commercialShipping->typeOfTransaction) { - case Transaction::TYP_RESOURCE: $class = 'resources'; break; - case Transaction::TYP_COMMANDER: $class = 'commander'; break; - case Transaction::TYP_SHIP: - $class = 'ship'; - break; - default: break; - } - - echo '
'; - if ($commercialShipping->statement != CommercialShipping::ST_MOVING_BACK) { - echo '
'; - if ($commercialShipping->statement == CommercialShipping::ST_WAITING) { - echo '×'; - } - if ($commercialShipping->typeOfTransaction == Transaction::TYP_RESOURCE) { - echo ''; - echo '
'; - if ($commercialShipping->resourceTransported == NULL) { - # transaction - echo Format::numberFormat($commercialShipping->quantity) . ' '; - } else { - # resources sending - echo Format::numberFormat($commercialShipping->resourceTransported) . ' '; - } - echo '
'; - } elseif ($commercialShipping->typeOfTransaction == Transaction::TYP_COMMANDER) { - echo ''; - echo '
'; - echo '' . CommanderResources::getInfo($commercialShipping->commanderLevel, 'grade') . ' ' . $commercialShipping->commanderName . ''; - echo '' . Format::numberFormat($commercialShipping->commanderExperience) . ' xp | ' . $commercialShipping->commanderVictory . ' victoire' . Format::addPlural($commercialShipping->commanderVictory) . ''; - echo '
'; - } elseif ($commercialShipping->typeOfTransaction == Transaction::TYP_SHIP) { - echo ''; - echo '
'; - echo '' . $commercialShipping->quantity . ' ' . ShipResource::getInfo($commercialShipping->identifier, 'codeName') . Format::plural($commercialShipping->quantity) . ''; - echo '' . ShipResource::getInfo($commercialShipping->identifier, 'name') . ' / ' . ShipResource::getInfo($commercialShipping->identifier, 'pev') . ' pev'; - echo '
'; - } - - if ($commercialShipping->resourceTransported === NULL) { - # transaction - echo '
'; - echo 'pour'; - echo '
'; - echo '
'; - echo Format::numberFormat($commercialShipping->price) . ' '; - echo '
'; - } elseif ($commercialShipping->resourceTransported == 0) { - # ships sending - echo '
'; - echo '
'; - echo 'envoi de vaisseaux'; - echo '
'; - } else { - # resources sending - echo '
'; - echo '
'; - echo 'envoi de ressources'; - echo '
'; - } - echo '
'; - } - - $totalTime = Utils::interval($commercialShipping->dDeparture, $commercialShipping->dArrival, 's'); - $currentTime = Utils::interval(Utils::now(), $commercialShipping->dDeparture, 's'); - - echo ($commercialShipping->statement != CommercialShipping::ST_WAITING) - ?'
' - : '
'; - echo ''; - echo ''; - echo ''; - - echo '
'; - echo $commercialShipping->shipQuantity; - echo ''; - echo '
'; - - if ($commercialShipping->statement == CommercialShipping::ST_WAITING) { - echo '
à quai
'; - } else { - echo '
'; - } - echo '
'; - echo '
'; - } -} diff --git a/system/Modules/Athena/Manager/CommercialTaxManager.php b/system/Modules/Athena/Manager/CommercialTaxManager.php deleted file mode 100644 index a323cff09..000000000 --- a/system/Modules/Athena/Manager/CommercialTaxManager.php +++ /dev/null @@ -1,124 +0,0 @@ -database->prepare('SELECT * FROM commercialTax WHERE faction = :faction_id AND relatedFaction = :related_faction_id'); - $statement->execute([ - 'faction_id' => $faction->getId(), - 'related_faction_id' => $relatedFaction->getId(), - ]); - - return (false !== ($result = $statement->fetch())) ? $this->format($result) : null; - } - - public function load($where = array(), $order = array(), $limit = array()) - { - $formatWhere = Utils::arrayToWhere($where); - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $this->database->prepare('SELECT * - FROM commercialTax - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if(empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($data = $qr->fetch()) { - $currentT = $this->_Add($this->format($data)); - } - } - - protected function format(array $data): CommercialTax - { - $ct = new CommercialTax(); - - $ct->id = $data['id']; - $ct->faction = $data['faction']; - $ct->relatedFaction = $data['relatedFaction']; - $ct->exportTax = $data['exportTax']; - $ct->importTax = $data['importTax']; - - return $ct; - } - - public function add(CommercialTax $ct) { - $qr = $this->database->prepare('INSERT INTO - commercialTax(faction, relatedFaction, exportTax, importTax) - VALUES(?, ?, ?, ?)'); - $qr->execute(array( - $ct->faction, - $ct->relatedFaction, - $ct->exportTax, - $ct->importTax - )); - - $ct->id = $this->database->lastInsertId(); - - $this->_Add($ct); - } - - public function save() { - $commercialTaxes = $this->_Save(); - - foreach ($commercialTaxes AS $t) { - $qr = $this->database->prepare('UPDATE commercialTax - SET id = ?, - faction = ?, - relatedFaction = ?, - exportTax = ?, - importTax = ? - WHERE id = ?'); - $qr->execute(array( - $t->id, - $t->faction, - $t->relatedFaction, - $t->exportTax, - $t->importTax, - $t->id - )); - } - } -} diff --git a/system/Modules/Athena/Manager/OrbitalBaseManager.php b/system/Modules/Athena/Manager/OrbitalBaseManager.php deleted file mode 100644 index 937461a83..000000000 --- a/system/Modules/Athena/Manager/OrbitalBaseManager.php +++ /dev/null @@ -1,445 +0,0 @@ -commanderManager = $commanderManager; - } - - #[Required] - public function setCommercialShippingManager(\Asylamba\Modules\Athena\Manager\CommercialShippingManager $commercialShippingManager): void - { - $this->commercialShippingManager = $commercialShippingManager; - } - - #[Required] - public function setPlayerManager(PlayerManager $playerManager): void - { - $this->playerManager = $playerManager; - } - - /** - * @param int $id - * @return OrbitalBase - */ - public function get($id) - { - if (($orbitalBase = $this->entityManager->getRepository(OrbitalBase::class)->get($id)) !== null) { - $this->fill($orbitalBase); - } - return $orbitalBase; - } - - /** - * @param int $baseId - * @param int $playerId - * @return OrbitalBase - */ - public function getPlayerBase($baseId, $playerId) - { - $orbitalBase = $this->entityManager->getRepository(OrbitalBase::class)->getPlayerBase($baseId, $playerId); - $this->fill($orbitalBase); - return $orbitalBase; - } - - /** - * @param int $playerId - * @return array - */ - public function getPlayerBases($playerId) - { - $bases = $this->entityManager->getRepository(OrbitalBase::class)->getPlayerBases($playerId); - foreach($bases as $base) { - $this->fill($base); - } - return $bases; - } - - /** - * @param int $sectorId - * @return array - */ - public function getSectorBases($sectorId) - { - $bases = $this->entityManager->getRepository(OrbitalBase::class)->getSectorBases($sectorId); - foreach($bases as $base) { - $this->fill($base); - } - return $bases; - } - - /** - * @param System $system - * @return array - */ - public function getSystemBases(System $system) - { - $bases = $this->entityManager->getRepository(OrbitalBase::class)->getSystemBases($system->getId()); - foreach($bases as $base) { - $this->fill($base); - } - return $bases; - } - - public function search($search, $order = array(), $limit = array()) { - $search = '%' . $search . '%'; - - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $this->database->prepare('SELECT - ob.*, - p.position AS position, - p.rSystem AS system, - s.xPosition AS xSystem, - s.yPosition AS ySystem, - s.rSector AS sector, - se.rColor AS sectorColor, - se.tax AS tax, - p.population AS planetPopulation, - p.coefResources AS planetResources, - p.coefHistory AS planetHistory, - (SELECT - MAX(bq.dEnd) - FROM orbitalBaseBuildingQueue AS bq - WHERE bq.rOrbitalBase = ob.rPlace) - AS termDateGenerator, - (SELECT - MAX(sq1.dEnd) - FROM orbitalBaseShipQueue AS sq1 - WHERE sq1.rOrbitalBase = ob.rPlace AND sq1.dockType = 1) - AS termDateDock1, - (SELECT - MAX(sq2.dEnd) - FROM orbitalBaseShipQueue AS sq2 - WHERE sq2.rOrbitalBase = ob.rPlace AND sq2.dockType = 2) - AS termDateDock2, - (SELECT - MAX(sq3.dEnd) - FROM orbitalBaseShipQueue AS sq3 - WHERE sq3.rOrbitalBase = ob.rPlace AND sq3.dockType = 3) - AS termDateDock3, - (SELECT - COUNT(cr.id) - FROM commercialRoute AS cr - WHERE (cr.rOrbitalBase = ob.rPlace OR cr.rOrbitalBaseLinked = ob.rPlace) AND cr.statement = 1) - AS routesNumber - FROM orbitalBase AS ob - LEFT JOIN place AS p - ON ob.rPlace = p.id - LEFT JOIN system AS s - ON p.rSystem = s.id - LEFT JOIN sector AS se - ON s.rSector = se.id - WHERE LOWER(name) LIKE LOWER(?) - ' . $formatOrder . ' - ' . $formatLimit - ); - - $qr->execute(array($search)); - - $this->fill($qr); - } - - /** - * - * @param OrbitalBase $orbitalBase - * @throws ErrorException - */ - protected function fill(OrbitalBase $orbitalBase) { - $buildingQueues = $this->buildingQueueManager->getBaseQueues($orbitalBase->getRPlace()); - - $realGeneratorLevel = $orbitalBase->getLevelGenerator(); - $realRefineryLevel = $orbitalBase->getLevelRefinery(); - $realDock1Level = $orbitalBase->getLevelDock1(); - $realDock2Level = $orbitalBase->getLevelDock2(); - $realDock3Level = $orbitalBase->getLevelDock3(); - $realTechnosphereLevel = $orbitalBase->getLevelTechnosphere(); - $realCommercialPlateformeLevel = $orbitalBase->getLevelCommercialPlateforme(); - $realStorageLevel = $orbitalBase->getLevelStorage(); - $realRecyclingLevel = $orbitalBase->getLevelRecycling(); - $realSpatioportLevel = $orbitalBase->getLevelSpatioport(); - - foreach ($buildingQueues as $buildingQueue) { - switch ($buildingQueue->buildingNumber) { - case 0 : - $realGeneratorLevel++; - break; - case 1 : - $realRefineryLevel++; - break; - case 2 : - $realDock1Level++; - break; - case 3 : - $realDock2Level++; - break; - case 4 : - $realDock3Level++; - break; - case 5 : - $realTechnosphereLevel++; - break; - case 6 : - $realCommercialPlateformeLevel++; - break; - case 7 : - $realStorageLevel++; - break; - case 8 : - $realRecyclingLevel++; - break; - case 9 : - $realSpatioportLevel++; - break; - default : - throw new ErrorException('Erreur dans la base de données dans load() de OrbitalBaseManager'); - } - } - - $orbitalBase->setRealGeneratorLevel($realGeneratorLevel); - $orbitalBase->setRealRefineryLevel($realRefineryLevel); - $orbitalBase->setRealDock1Level($realDock1Level); - $orbitalBase->setRealDock2Level($realDock2Level); - $orbitalBase->setRealDock3Level($realDock3Level); - $orbitalBase->setRealTechnosphereLevel($realTechnosphereLevel); - $orbitalBase->setRealCommercialPlateformeLevel($realCommercialPlateformeLevel); - $orbitalBase->setRealStorageLevel($realStorageLevel); - $orbitalBase->setRealRecyclingLevel($realRecyclingLevel); - $orbitalBase->setRealSpatioportLevel($realSpatioportLevel); - - $orbitalBase->buildingQueues = $buildingQueues; - $orbitalBase->technoQueues = $this->technologyQueueManager->getPlaceQueues($orbitalBase->getRPlace()); - $orbitalBase->commercialShippings = $this->commercialShippingManager->getByBase($orbitalBase->getRPlace()); - } - - public function add(OrbitalBase $orbitalBase) { - $this->entityManager->persist($orbitalBase); - $this->entityManager->flush($orbitalBase); - } - - public function changeOwnerById($id, $base, $newOwner, $baseCommanders) { - if ($base->getId() == 0) { - throw new ErrorException('Cette base orbitale n\'existe pas !'); - } - # changement de possesseur des offres du marché - $transactions = $this->transactionManager->getBasePropositions($base->rPlace); - - foreach ($transactions as $transaction) { - # change owner of transaction - $transaction->rPlayer = $newOwner; - - $commercialShipping = $this->commercialShippingManager->getByTransactionId($transaction->id); - # change owner of commercial shipping - $commercialShipping->rPlayer = $newOwner; - } - - # attribuer le rPlayer à la Base - $oldOwner = $base->rPlayer; - $base->setRPlayer($newOwner); - - # suppression des routes commerciales - $this->commercialRouteManager->removeBaseRoutes($base); - - # suppression des technologies en cours de développement - foreach ($base->technoQueues as $queue) { - $this->technologyQueueManager->remove($queue); - } - - # suppression des missions de recyclages ainsi que des logs de recyclages - $this->recyclingMissionManager->removeBaseMissions($base->getId()); - - # mise des investissements à 0 - $base->iSchool = 0; - $base->iAntiSpy = 0; - - # mise à jour de la date de création pour qu'elle soit dans l'ordre - $base->dCreation = Utils::now(); - - // If the new owner is connected, we add the base to his session - if (($session = $this->clientManager->getSessionByPlayerId($newOwner)) !== null) { - $session->addBase('ob', $base->getId(), $base->getName(), $base->getSector(), $base->getSystem(), '1-' . Game::getSizeOfPlanet($base->getPlanetPopulation()), $base->typeOfBase); - $this->sessionWrapper->save($session); - } - // If the previous owner is connected, we remove the base from his session - if (($session = $this->clientManager->getSessionByPlayerId($oldOwner)) !== null) { - $session->removeBase('ob', $base->getId()); - $this->sessionWrapper->save($session); - } - - # rendre déserteuses les flottes en voyage - foreach ($baseCommanders as $commander) { - if (in_array($commander->statement, [Commander::INSCHOOL, Commander::ONSALE, Commander::RESERVE])) { - $commander->rPlayer = $newOwner; - } else if ($commander->statement == Commander::MOVING) { - $this->commanderManager->endTravel($commander, Commander::RETIRED); - // @TODO handle cancellation - // $this->realtimeActionScheduler->cancel($commander, $commander->getArrivalDate()); - } else { - $commander->statement = Commander::DEAD; - } - } - - # vérifie si le joueur n'a plus de planète, si c'est le cas, il est mort, on lui redonne une planète - $oldPlayerBases = $this->getPlayerBases($oldOwner); - $nbOldPlayerBases = count($oldPlayerBases); - if ($nbOldPlayerBases === 0 || ($nbOldPlayerBases === 1 && $oldPlayerBases[0]->rPlace === $id)) { - $this->playerManager->reborn($oldOwner); - } - $this->entityManager->flush(); - } - - /** - * @param OrbitalBase $orbitalBase - * @return int - */ - public function updatePoints(OrbitalBase $orbitalBase) { - $initialPoints = $orbitalBase->getPoints(); - $points = 0; - - for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; $i++) { - for ($j = 0; $j < $orbitalBase->getBuildingLevel($i); $j++) { - $points += $this->orbitalBaseHelper->getBuildingInfo($i, 'level', $j + 1, 'resourcePrice') / 1000; - } - } - - $points = round($points); - $orbitalBase->setPoints($points); - return $points - $initialPoints; - } - - /** - * @param OrbitalBase $orbitalBase - * @param int $resources - * @param bool $offLimits - * @param bool $persist - */ - public function increaseResources(OrbitalBase $orbitalBase, $resources, $offLimits = false, $persist = true) - { - $playerBonus = $this->playerBonusManager->getBonusByPlayer($this->playerManager->get($orbitalBase->rPlayer)); - $this->playerBonusManager->load($playerBonus); - $maxStorage = $this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $orbitalBase->levelStorage, 'storageSpace'); - $maxStorage += $maxStorage * $playerBonus->bonus->get(PlayerBonus::REFINERY_STORAGE) / 100; - - if ($offLimits === true) { - $maxStorage += OrbitalBase::EXTRA_STOCK; - } - $addedResources = - (($orbitalBase->resourcesStorage + $resources) > $maxStorage) - ? $maxStorage - $orbitalBase->resourcesStorage - : $resources - ; - $orbitalBase->resourcesStorage += $addedResources; - if ($persist === true) { - $this->entityManager->getRepository(OrbitalBase::class)->increaseResources( - $orbitalBase, - $addedResources - ); - } - } - - /** - * @param OrbitalBase $orbitalBase - * @param int $resources - */ - public function decreaseResources(OrbitalBase $orbitalBase, $resources) - { - $substractedResources = - (($orbitalBase->resourcesStorage - $resources) < 0) - ? abs(0 - $orbitalBase->resourcesStorage) - : $resources - ; - $orbitalBase->resourcesStorage -= $substractedResources; - $this->entityManager->getRepository(OrbitalBase::class)->decreaseResources( - $orbitalBase, - $substractedResources - ); - } - - public function addShipToDock(OrbitalBase $orbitalBase, int $shipId, int $quantity): bool - { - if ($this->orbitalBaseHelper->isAShipFromDock1($shipId) || $this->orbitalBaseHelper->isAShipFromDock2($shipId)) { - $orbitalBase->setShipStorage($shipId, $orbitalBase->getShipStorage($shipId) + $quantity); - $this->entityManager->flush($orbitalBase); - return true; - } - return false; - } - - public function removeShipFromDock(OrbitalBase $orbitalBase, int $shipId, int $quantity) - { - if ($this->orbitalBaseHelper->isAShipFromDock1($shipId) || $this->orbitalBaseHelper->isAShipFromDock2($shipId)) { - if ($orbitalBase->getShipStorage($shipId) >= $quantity) { - $orbitalBase->setShipStorage($shipId, $orbitalBase->getShipStorage($shipId) - $quantity); - $this->entityManager->flush($orbitalBase); - - return true; - } - // @TODO: Check if this return mustn't be outside the if. If so, change the return type of the method - return false; - } - } -} diff --git a/system/Modules/Athena/Manager/RecyclingLogManager.php b/system/Modules/Athena/Manager/RecyclingLogManager.php deleted file mode 100644 index 68bb8efdf..000000000 --- a/system/Modules/Athena/Manager/RecyclingLogManager.php +++ /dev/null @@ -1,34 +0,0 @@ -entityManager->persist($recyclingLog); - $this->entityManager->flush($recyclingLog); - } - - public function getBaseActiveMissionsLogs(int $baseId): array - { - return $this->entityManager->getRepository(RecyclingLog::class)->getBaseActiveMissionsLogs($baseId); - } -} diff --git a/system/Modules/Athena/Manager/RecyclingMissionManager.php b/system/Modules/Athena/Manager/RecyclingMissionManager.php deleted file mode 100644 index c368843d4..000000000 --- a/system/Modules/Athena/Manager/RecyclingMissionManager.php +++ /dev/null @@ -1,73 +0,0 @@ -entityManager->getRepository(RecyclingMission::class)->getAll(); - - /** @var RecyclingMission $mission */ - foreach ($missions as $mission) { - $this->messageBus->dispatch(new RecyclingMissionMessage($mission->id), [DateTimeConverter::to_delay_stamp($mission->uRecycling)]); - } - } - - public function get(int $id): ?RecyclingMission - { - return $this->entityManager->getRepository(RecyclingMission::class)->get($id); - } - - public function getBaseMissions($baseId): array - { - return $this->entityManager->getRepository(RecyclingMission::class)->getBaseMissions($baseId); - } - - public function getBaseActiveMissions(int $baseId): array - { - return $this->entityManager->getRepository(RecyclingMission::class)->getBaseActiveMissions($baseId); - } - - public function add(RecyclingMission $recyclingMission): void - { - $this->entityManager->persist($recyclingMission); - $this->entityManager->flush($recyclingMission); - - $this->messageBus->dispatch( - new RecyclingMissionMessage($recyclingMission->id), - [DateTimeConverter::to_delay_stamp($recyclingMission->uRecycling)] - ); - } - - public function removeBaseMissions(int $baseId): void - { - // @TODO handle properly cancellations - //foreach ($this->getBaseActiveMissions($baseId) as $mission) { - //$this->realtimeActionScheduler->cancel($mission, $mission->uRecycling); - //} - $this->entityManager->getRepository(RecyclingMission::class)->removeBaseMissions($baseId); - } -} diff --git a/system/Modules/Athena/Manager/ShipQueueManager.php b/system/Modules/Athena/Manager/ShipQueueManager.php deleted file mode 100644 index c4cea7d2f..000000000 --- a/system/Modules/Athena/Manager/ShipQueueManager.php +++ /dev/null @@ -1,62 +0,0 @@ -entityManager->getRepository(ShipQueue::class)->get($id); - } - - public function getBaseQueues(int $orbitalBaseId): array - { - return $this->entityManager->getRepository(ShipQueue::class)->getBaseQueues($orbitalBaseId); - } - - public function getByBaseAndDockType(int $orbitalBaseId, int $dockType): array - { - return $this->entityManager->getRepository(ShipQueue::class)->getByBaseAndDockType($orbitalBaseId, $dockType); - } - - public function add(ShipQueue $shipQueue): void - { - $this->entityManager->persist($shipQueue); - $this->entityManager->flush($shipQueue); - - $this->messageBus->dispatch(new ShipQueueMessage($shipQueue->getId()), [DateTimeConverter::to_delay_stamp($shipQueue->dEnd)]); - } - - public function scheduleActions(): void - { - $queues = $this->entityManager->getRepository(ShipQueue::class)->getAll(); - - foreach ($queues as $queue) - { - $this->messageBus->dispatch(new ShipQueueMessage($queue->getId()), [DateTimeConverter::to_delay_stamp($queue->dEnd)]); - } - } -} diff --git a/system/Modules/Athena/Manager/TransactionManager.php b/system/Modules/Athena/Manager/TransactionManager.php deleted file mode 100644 index 2d9498b40..000000000 --- a/system/Modules/Athena/Manager/TransactionManager.php +++ /dev/null @@ -1,193 +0,0 @@ -entityManager->getRepository(Transaction::class)->get($id); - } - - /** - * @param int $type - * @return Transaction - */ - public function getLastCompletedTransaction($type) - { - return $this->entityManager->getRepository(Transaction::class)->getLastCompletedTransaction($type); - } - - /** - * @param int $type - * @return array - */ - public function getProposedTransactions($type) - { - return $this->entityManager->getRepository(Transaction::class)->getProposedTransactions($type); - } - - /** - * @param int $playerId - * @param int $type - * @return array - */ - public function getPlayerPropositions($playerId, $type) - { - return $this->entityManager->getRepository(Transaction::class)->getPlayerPropositions($playerId, $type); - } - - /** - * @param int $placeId - * @return array - */ - public function getBasePropositions($placeId) - { - return $this->entityManager->getRepository(Transaction::class)->getBasePropositions($placeId); - } - - - public function getExchangeRate($transactionType) { - return $this->entityManager->getRepository(Transaction::class)->getExchangeRate($transactionType); - } - - /** - * @param Transaction $transaction - */ - public function add(Transaction $transaction) { - $this->entityManager->persist($transaction); - $this->entityManager->flush($transaction); - } - - public function render(Transaction $transaction, $currentRate, $token, $ob) { - # $rv = '1:' . Format::numberFormat(Game::calculateRate($transaction->type, $transaction->quantity, $transaction->identifier, $transaction->price), 3); - $rv = round(Game::calculateRate($transaction->type, $transaction->quantity, $transaction->identifier, $transaction->price) / $currentRate * 100); - $time = Game::getTimeTravelCommercial($transaction->rSystem, $transaction->positionInSystem, $transaction->xSystem, $transaction->ySystem, $ob->getSystem(), $ob->getPosition(), $ob->getXSystem(), $ob->getYSystem()); - - $S_CTM_T = $this->commercialTaxManager->getCurrentSession(); - $this->commercialTaxManager->changeSession($token); - - $exportTax = 0; - $importTax = 0; - $exportFaction = 0; - $importFaction = 0; - - for ($i = 0; $i < $this->commercialTaxManager->size(); $i++) { - $comTax = $this->commercialTaxManager->get($i); - - if ($comTax->faction == $transaction->sectorColor AND $comTax->relatedFaction == $ob->sectorColor) { - $exportTax = $comTax->exportTax; - $exportFaction = $comTax->faction; - } - if ($comTax->faction == $ob->sectorColor AND $comTax->relatedFaction == $transaction->sectorColor) { - $importTax = $comTax->importTax; - $importFaction = $comTax->faction; - } - } - - $exportPrice = round($transaction->price * $exportTax / 100); - $importPrice = round($transaction->price * $importTax / 100); - $totalPrice = $transaction->price + $exportPrice + $importPrice; - - $this->commercialTaxManager->changeSession($S_CTM_T); - - switch ($transaction->type) { - case Transaction::TYP_RESOURCE: $type = 'resources'; break; - case Transaction::TYP_COMMANDER: $type = 'commander'; break; - case Transaction::TYP_SHIP: $type = 'ship'; break; - default: break; - } - - echo '
'; - echo '
'; - if ($transaction->type == Transaction::TYP_RESOURCE) { - echo ''; - echo '' . $rv . ' %'; - - echo '
'; - echo Format::numberFormat($transaction->quantity) . ' '; - echo '
'; - } elseif ($transaction->type == Transaction::TYP_COMMANDER) { - echo ''; - echo '' . $rv . ' %'; - - echo '
'; - echo '' . CommanderResources::getInfo($transaction->commanderLevel, 'grade') . ' ' . $transaction->commanderName . ''; - echo '' . $transaction->commanderExperience . ' xp | ' . $transaction->commanderVictory . ' victoire' . Format::addPlural($transaction->commanderVictory) . ''; - echo '
'; - } elseif ($transaction->type == Transaction::TYP_SHIP) { - echo ''; - echo '' . $rv . ' %'; - - echo '
'; - echo '' . $transaction->quantity . ' ' . ShipResource::getInfo($transaction->identifier, 'codeName') . Format::plural($transaction->quantity) . ''; - echo '' . ShipResource::getInfo($transaction->identifier, 'name') . ' / ' . ShipResource::getInfo($transaction->identifier, 'pev') . ' pev'; - echo '
'; - } - echo '
'; - echo 'pour'; - echo '
'; - echo '
'; - echo Format::numberFormat($totalPrice) . ' '; - echo '
'; - echo '
'; - - echo ''; - echo '
'; - } -} diff --git a/system/Modules/Athena/Message/Base/BasesUpdateMessage.php b/system/Modules/Athena/Message/Base/BasesUpdateMessage.php deleted file mode 100644 index 0ee5d4b4a..000000000 --- a/system/Modules/Athena/Message/Base/BasesUpdateMessage.php +++ /dev/null @@ -1,13 +0,0 @@ -buildingQueueId; - } -} diff --git a/system/Modules/Athena/Message/RecyclingMissionMessage.php b/system/Modules/Athena/Message/RecyclingMissionMessage.php deleted file mode 100644 index 7e8aa3b34..000000000 --- a/system/Modules/Athena/Message/RecyclingMissionMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -recyclingMissionId; - } -} diff --git a/system/Modules/Athena/Message/Ship/ShipQueueMessage.php b/system/Modules/Athena/Message/Ship/ShipQueueMessage.php deleted file mode 100644 index 511d64f06..000000000 --- a/system/Modules/Athena/Message/Ship/ShipQueueMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -shipQueueId; - } -} diff --git a/system/Modules/Athena/Message/Trade/CommercialShippingMessage.php b/system/Modules/Athena/Message/Trade/CommercialShippingMessage.php deleted file mode 100644 index 14e785e7a..000000000 --- a/system/Modules/Athena/Message/Trade/CommercialShippingMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -commercialShippingId; - } -} diff --git a/system/Modules/Athena/Model/BuildingQueue.php b/system/Modules/Athena/Model/BuildingQueue.php deleted file mode 100644 index f381da794..000000000 --- a/system/Modules/Athena/Model/BuildingQueue.php +++ /dev/null @@ -1,77 +0,0 @@ -id; - } - public function getROrbitalBase() - { - return $this->rOrbitalBase; - } - public function getBuildingNumber() - { - return $this->buildingNumber; - } - public function getTargetLevel() - { - return $this->targetLevel; - } - public function getDStart() - { - return $this->dStart; - } - public function getDEnd() - { - return $this->dEnd; - } - - public function setId($id) - { - $this->id=$id; - return $this; - } - public function setROrbitalBase($rOrbitalBase) - { - $this->rOrbitalBase=$rOrbitalBase; - return $this; - } - public function setBuildingLevel($buildingLevel) - { - $this->buildingLevel=$buildingLevel; - return $this; - } - public function setTargetLevel($targetLevel) - { - $this->targetLevel=$targetLevel; - return $this; - } - public function setDStart($dStart) - { - $this->dStart=$dStart; - return $this; - } - public function setDEnd($dEnd) - { - $this->dEnd=$dEnd; - return $this; - } -} diff --git a/system/Modules/Athena/Model/CommercialRoute.php b/system/Modules/Athena/Model/CommercialRoute.php deleted file mode 100644 index ea7ece62c..000000000 --- a/system/Modules/Athena/Model/CommercialRoute.php +++ /dev/null @@ -1,161 +0,0 @@ -id; } - public function getROrbitalBase() { return $this->rOrbitalBase; } - public function getROrbitalBaseLinked() { return $this->rOrbitalBaseLinked; } - public function getImageLink() { return $this->imageLink; } - public function getDistance() { return $this->distance; } - public function getPrice() { return $this->price; } - public function getIncome() { return $this->income; } - public function getDProposition() { return $this->dProposition; } - public function getDCreation() { return $this->dCreation; } - public function getStatement() { return $this->statement; } - - public function getBaseName1() { return $this->baseName1; } - public function getPlayerId1() { return $this->playerId1; } - public function getPlayerName1() { return $this->playerName1; } - public function getAvatar1() { return $this->avatar1; } - public function getPopulation1() { return $this->population1; } - - public function getBaseName2() { return $this->baseName2; } - public function getPlayerId2() { return $this->playerId2; } - public function getPlayerName2() { return $this->playerName2; } - public function getAvatar2() { return $this->avatar2; } - public function getPopulation2() { return $this->population2; } - - - //SETTERS - public function setId($v) { - $this->id = $v; - return $this; - } - public function setROrbitalBase($v) { - $this->rOrbitalBase = $v; - return $this; - } - public function setROrbitalBaseLinked($v) { - $this->rOrbitalBaseLinked = $v; - return $this; - } - public function setImageLink($v) { - $this->imageLink = $v; - return $this; - } - public function setDistance($v) { - $this->distance = $v; - return $this; - } - public function setPrice($v) { - $this->price = $v; - return $this; - } - public function setIncome($v) { - $this->income = $v; - return $this; - } - public function setDProposition($v) { - $this->dProposition = $v; - return $this; - } - public function setDCreation($v) { - $this->dCreation = $v; - return $this; - } - public function setStatement($v) { - $this->statement = $v; - return $this; - } - - public function setBaseName1($var) { - $this->baseName1 = $var; - return $this; - } - public function setPlayerId1($var) { - $this->playerId1 = $var; - return $this; - } - public function setPlayerName1($var) { - $this->playerName1 = $var; - return $this; - } - public function setAvatar1($var) { - $this->avatar1 = $var; - return $this; - } - public function setPopulation1($var) { - $this->population1 = $var; - return $this; - } - - public function setBaseName2($var) { - $this->baseName2 = $var; - return $this; - } - public function setPlayerId2($var) { - $this->playerId2 = $var; - return $this; - } - public function setPlayerName2($var) { - $this->playerName2 = $var; - return $this; - } - public function setAvatar2($var) { - $this->avatar2 = $var; - return $this; - } - public function setPopulation2($var) { - $this->population2 = $var; - return $this; - } -} diff --git a/system/Modules/Athena/Model/CommercialShipping.php b/system/Modules/Athena/Model/CommercialShipping.php deleted file mode 100644 index c11f90200..000000000 --- a/system/Modules/Athena/Model/CommercialShipping.php +++ /dev/null @@ -1,566 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $playerId - * @return CommercialShipping - */ - public function setPlayerId($playerId) - { - $this->rPlayer = $playerId; - - return $this; - } - - /** - * @return int - */ - public function getPlayerId() - { - return $this->rPlayer; - } - - /** - * @param int $baseId - * @return CommercialShipping - */ - public function setBaseId($baseId) - { - $this->rBase = $baseId; - - return $this; - } - - /** - * @return int - */ - public function getBaseId() - { - return $this->rBase; - } - - /** - * @param int $destinationId - * @return CommercialShipping - */ - public function setDestinationBaseId($destinationId) - { - $this->rBaseDestination = $destinationId; - - return $this; - } - - /** - * @return int - */ - public function getDestinationBaseId() - { - return $this->rBaseDestination; - } - - /** - * @param int $transactionId - * @return CommercialShipping - */ - public function setTransactionId($transactionId) - { - $this->rTransaction = $transactionId; - - return $this; - } - - /** - * @return int - */ - public function getTransactionId() - { - return $this->rTransaction; - } - - /** - * @param int $resources - * @return CommercialShipping - */ - public function setResources($resources) - { - $this->resourceTransported = $resources; - - return $this; - } - - /** - * @return int - */ - public function getResources() - { - return $this->resourceTransported; - } - - /** - * @param int $shipQuantity - * @return CommercialShipping - */ - public function setShipQuantity($shipQuantity) - { - $this->shipQuantity = $shipQuantity; - - return $this; - } - - /** - * @return int - */ - public function getShipQuantity() - { - return $this->shipQuantity; - } - - /** - * @param string $departedAt - * @return CommercialShipping - */ - public function setDepartedAt($departedAt) - { - $this->dDeparture = $departedAt; - - return $this; - } - - /** - * @return string - */ - public function getDepartedAt() - { - return $this->dDeparture; - } - - /** - * @param string $arrivedAt - * @return CommercialShipping - */ - public function setArrivedAt($arrivedAt) - { - $this->dArrival = $arrivedAt; - - return $this; - } - - /** - * @return string - */ - public function getArrivedAt() - { - return $this->dArrival; - } - - /** - * @param int $statement - * @return CommercialShipping - */ - public function setStatement($statement) - { - $this->statement = $statement; - - return $this; - } - - /** - * @return int - */ - public function getStatement() - { - return $this->statement; - } - - /** - * @param int $systemId - * @return CommercialShipping - */ - public function setBaseSystemId($systemId) - { - $this->baseRSystem = $systemId; - - return $this; - } - - /** - * @return int - */ - public function getBaseSystemId() - { - return $this->baseRSystem; - } - - /** - * @param int $position - * @return CommercialShipping - */ - public function setBasePosition($position) - { - $this->basePosition = $position; - - return $this; - } - - /** - * @return int - */ - public function getBasePosition() - { - return $this->basePosition; - } - - /** - * @param int $xPosition - * @return CommercialShipping - */ - public function setBaseSystemXPosition($xPosition) - { - $this->baseXSystem = $xPosition; - - return $this; - } - - /** - * @return int - */ - public function getBaseSystemXPosition() - { - return $this->baseXSystem; - } - - /** - * @param int $yPosition - * @return CommercialShipping - */ - public function setBaseSystemYPosition($yPosition) - { - $this->baseYSystem = $yPosition; - - return $this; - } - - /** - * @return int - */ - public function getBaseSystemYPosition() - { - return $this->baseYSystem; - } - - /** - * @param int $systemId - * @return CommercialShipping - */ - public function setDestinationBaseSystemId($systemId) - { - $this->destinationRSystem = $systemId; - - return $this; - } - - /** - * @return int - */ - public function getDestinationBaseSystemId() - { - return $this->destinationRSystem; - } - - /** - * @param int $position - * @return CommercialShipping - */ - public function setDestinationBasePosition($position) - { - $this->destinationPosition = $position; - - return $this; - } - - /** - * @return int - */ - public function getDestinationBasePosition() - { - return $this->destinationPosition; - } - - /** - * @param int $xPosition - * @return CommercialShipping - */ - public function setDestinationBaseSystemXPosition($xPosition) - { - $this->destinationXSystem = $xPosition; - - return $this; - } - - /** - * @return int - */ - public function getDestinationBaseSystemXPosition() - { - return $this->destinationXSystem; - } - - /** - * @param int $yPosition - * @return CommercialShipping - */ - public function setDestinationBaseSystemYPosition($yPosition) - { - $this->destinationYSystem = $yPosition; - - return $this; - } - - /** - * @return int - */ - public function getDestinationBaseSystemYPosition() - { - return $this->destinationYSystem; - } - - /** - * @param int $price - * @return CommercialShipping - */ - public function setPrice($price) - { - $this->price = $price; - - return $this; - } - - /** - * @return int - */ - public function getPrice() - { - return $this->price; - } - - /** - * @param int $transactionType - * @return CommercialShipping - */ - public function setTransactionType($transactionType) - { - $this->typeOfTransaction = $transactionType; - - return $this; - } - - /** - * @return int - */ - public function getTransactionType() - { - return $this->typeOfTransaction; - } - - /** - * @param int $quantity - * @return CommercialShipping - */ - public function setQuantity($quantity) - { - $this->quantity = $quantity; - - return $this; - } - - /** - * @return int - */ - public function getQuantity() - { - return $this->quantity; - } - - /** - * @param int $identifier - * @return CommercialShipping - */ - public function setIdentifier($identifier) - { - $this->identifier = $identifier; - - return $this; - } - - /** - * @return int - */ - public function getIdentifier() - { - return $this->identifier; - } - - /** - * @param string $avatar - * @return CommercialShipping - */ - public function setCommanderAvatar($avatar) - { - $this->commanderAvatar = $avatar; - - return $this; - } - - /** - * @return string - */ - public function getCommanderAvatar() - { - return $this->commanderAvatar; - } - - /** - * @param string $name - * @return CommercialShipping - */ - public function setCommanderName($name) - { - $this->commanderName = $name; - - return $this; - } - - /** - * @return string - */ - public function getCommanderName() - { - return $this->commanderName; - } - - /** - * @param int $level - * @return CommercialShipping - */ - public function setCommanderLevel($level) - { - $this->commanderLevel = $level; - - return $this; - } - - /** - * @return int - */ - public function getCommanderLevel() - { - return $this->commanderLevel; - } - - /** - * @param int $nbVictories - * @return CommercialShipping - */ - public function setCommanderVictory($nbVictories) - { - $this->commanderVictory = $nbVictories; - - return $this; - } - - /** - * @return int - */ - public function getCommanderVictory() - { - return $this->commanderVictory; - } - - /** - * @param int $experience - * @return CommercialShipping - */ - public function setCommanderExperience($experience) - { - $this->commanderExperience = $experience; - - return $this; - } - - /** - * @return int - */ - public function getCommanderExperience() - { - return $this->commanderExperience; - } -} diff --git a/system/Modules/Athena/Model/CommercialTax.php b/system/Modules/Athena/Model/CommercialTax.php deleted file mode 100644 index 4424a5c9e..000000000 --- a/system/Modules/Athena/Model/CommercialTax.php +++ /dev/null @@ -1,53 +0,0 @@ -id; } - public function getFaction() { return $this->faction; } - public function getRelatedFaction() { return $this->relatedFaction; } - public function getExportTax() { return $this->exportTax; } - public function getImportTax() { return $this->importTax; } - - public function setId( $id) - { - $this->id = $id; - return $this; - } - public function setFaction( $faction) - { - $this->faction = $faction; - return $this; - } - public function setRelatedFaction( $relatedFaction) - { - $this->relatedFaction = $relatedFaction; - return $this; - } - public function setExportTax( $exportTax) - { - $this->exportTax = $exportTax; - return $this; - } - public function setImportTax( $importTax) - { - $this->importTax = $importTax; - return $this; - } -} diff --git a/system/Modules/Athena/Model/OrbitalBase.php b/system/Modules/Athena/Model/OrbitalBase.php deleted file mode 100644 index 41baea326..000000000 --- a/system/Modules/Athena/Model/OrbitalBase.php +++ /dev/null @@ -1,377 +0,0 @@ -rPlace; } - public function getRPlace() { return $this->rPlace; } - public function getRPlayer() { return $this->rPlayer; } - public function getName() { return $this->name; } - public function getLevelGenerator() { return $this->levelGenerator; } - public function getLevelRefinery() { return $this->levelRefinery; } - public function getLevelDock1() { return $this->levelDock1; } - public function getLevelDock2() { return $this->levelDock2; } - public function getLevelDock3() { return $this->levelDock3; } - public function getLevelTechnosphere() { return $this->levelTechnosphere; } - public function getLevelCommercialPlateforme() { return $this->levelCommercialPlateforme; } - public function getLevelStorage() { return $this->levelStorage; } - public function getLevelRecycling() { return $this->levelRecycling; } - public function getLevelSpatioport() { return $this->levelSpatioport; } - public function getPoints() { return $this->points; } - public function getISchool() { return $this->iSchool; } - public function getIAntiSpy() { return $this->iAntiSpy; } - public function getAntiSpyAverage() { return $this->antiSpyAverage; } - public function getShipStorage($k = -1) {return ($k == -1) ? $this->shipStorage : $this->shipStorage[$k]; } - public function getResourcesStorage() { return $this->resourcesStorage; } - public function getDCreation() { return $this->dCreation; } - - public function getPosition() { return $this->position; } - public function getSystem() { return $this->system; } - public function getXSystem() { return $this->xSystem; } - public function getYSystem() { return $this->ySystem; } - public function getSector() { return $this->sector; } - public function getTax() { return $this->tax; } - public function getPlanetPopulation() { return $this->planetPopulation; } - public function getPlanetResources() { return $this->planetResources; } - public function getPlanetHistory() { return $this->planetHistory; } - - public function getRemainingTimeGenerator() { return $this->remainingTimeGenerator; } - public function getRemainingTimeDock1() { return $this->remainingTimeDock1; } - public function getRemainingTimeDock2() { return $this->remainingTimeDock2; } - public function getRemainingTimeDock3() { return $this->remainingTimeDock3; } - public function getRoutesNumber() { return $this->routesNumber; } - - public function getRealGeneratorLevel() { return $this->realGeneratorLevel; } - public function getRealRefineryLevel() { return $this->realRefineryLevel; } - public function getRealDock1Level() { return $this->realDock1Level; } - public function getRealDock2Level() { return $this->realDock2Level; } - public function getRealDock3Level() { return $this->realDock3Level; } - public function getRealTechnosphereLevel() { return $this->realTechnosphereLevel; } - public function getRealCommercialPlateformeLevel() { return $this->realCommercialPlateformeLevel; } - public function getRealStorageLevel() { return $this->realStorageLevel; } - public function getRealRecyclingLevel() { return $this->realRecyclingLevel; } - public function getRealSpatioportLevel() { return $this->realSpatioportLevel; } - - public function getBuildingLevel($buildingNumber) { - switch ($buildingNumber) { - case 0 : return $this->levelGenerator; - case 1 : return $this->levelRefinery; - case 2 : return $this->levelDock1; - case 3 : return $this->levelDock2; - case 4 : return $this->levelDock3; - case 5 : return $this->levelTechnosphere; - case 6 : return $this->levelCommercialPlateforme; - case 7 : return $this->levelStorage; - case 8 : return $this->levelRecycling; - case 9 : return $this->levelSpatioport; - default : - throw new ErrorException('Bâtiment invalide dans getBuildingLevel de OrbitalBase'); - return FALSE; - } - } - - //SETTERS - public function setId($var) { - $this->rPlace = $var; - return $this; - } - public function setRPlace($var) { - $this->rPlace = $var; - return $this; - } - public function setRPlayer($var) { - $this->rPlayer = $var; - return $this; - } - public function setName($var) { - $this->name = $var; - return $this; - } - public function setLevelGenerator($var) { - $this->levelGenerator = $var; - return $this; - } - public function setLevelRefinery($var) { - $this->levelRefinery = $var; - return $this; - } - public function setLevelDock1($var) { - $this->levelDock1 = $var; - return $this; - } - public function setLevelDock2($var) { - $this->levelDock2 = $var; - return $this; - } - public function setLevelDock3($var) { - $this->levelDock3 = $var; - return $this; - } - public function setLevelTechnosphere($var) { - $this->levelTechnosphere = $var; - return $this; - } - public function setLevelCommercialPlateforme($var) { - $this->levelCommercialPlateforme = $var; - return $this; - } - public function setLevelStorage($var) { - $this->levelStorage = $var; - return $this; - } - public function setLevelRecycling($var) { - $this->levelRecycling = $var; - return $this; - } - public function setLevelSpatioport($var) { - $this->levelSpatioport = $var; - return $this; - } - public function setPoints($var) { - $this->points = $var; - return $this; - } - public function setISchool($var) { - $this->iSchool = $var; - return $this; - } - public function setIAntiSpy($var) { - $this->iAntiSpy = $var; - return $this; - } - public function setAntiSpyAverage($var) { - $this->antiSpyAverage = $var; - return $this; - } - public function setShipStorage($k, $v) { - $this->shipStorage[$k] = $v; - return $this; - } - public function setResourcesStorage($var) { - $this->resourcesStorage = $var; - return $this; - } - public function setDCreation($var) { - $this->dCreation = $var; - return $this; - } - - public function setPosition($var) { - $this->position = $var; - return $this; - } - public function setSystem($var) { - $this->system = $var; - return $this; - } - public function setXSystem($var) { - $this->xSystem = $var; - return $this; - } - public function setYSystem($var) { - $this->ySystem = $var; - return $this; - } - public function setSector($var) { - $this->sector = $var; - return $this; - } - public function setTax($var) { - $this->tax = $var; - return $this; - } - public function setPlanetPopulation($var) { - $this->planetPopulation = $var; - return $this; - } - public function setPlanetResources($var) { - $this->planetResources = $var; - return $this; - } - public function setPlanetHistory($var) { - $this->planetHistory = $var; - return $this; - } - - public function setRemainingTimeGenerator($var) { - $this->remainingTimeGenerator = $var; - return $this; - } - public function setRemainingTimeDock1($var) { - $this->remainingTimeDock1 = $var; - return $this; - } - public function setRemainingTimeDock2($var) { - $this->remainingTimeDock2 = $var; - return $this; - } - public function setRemainingTimeDock3($var) { - $this->remainingTimeDock3 = $var; - return $this; - } - public function setRoutesNumber($var) { - $this->routesNumber = $var; - return $this; - } - - public function setRealGeneratorLevel($var) { - $this->realGeneratorLevel = $var; - return $this; - } - public function setRealRefineryLevel($var) { - $this->realRefineryLevel = $var; - return $this; - } - public function setRealDock1Level($var) { - $this->realDock1Level = $var; - return $this; - } - public function setRealDock2Level($var) { - $this->realDock2Level = $var; - return $this; - } - public function setRealDock3Level($var) { - $this->realDock3Level = $var; - return $this; - } - public function setRealTechnosphereLevel($var) { - $this->realTechnosphereLevel = $var; - return $this; - } - public function setRealCommercialPlateformeLevel($var) { - $this->realCommercialPlateformeLevel = $var; - return $this; - } - public function setRealStorageLevel($var) { - $this->realStorageLevel = $var; - return $this; - } - public function setRealRecyclingLevel($var) { - $this->realRecyclingLevel = $var; - return $this; - } - public function setRealSpatioportLevel($var) { - $this->realSpatioportLevel = $var; - return $this; - } - - public function setBuildingLevel($buildingNumber, $level) { - switch ($buildingNumber) { - case 0 : $this->levelGenerator = $level; break; - case 1 : $this->levelRefinery = $level; break; - case 2 : $this->levelDock1 = $level; break; - case 3 : $this->levelDock2 = $level; break; - case 4 : $this->levelDock3 = $level; break; - case 5 : $this->levelTechnosphere = $level; break; - case 6 : $this->levelCommercialPlateforme = $level; break; - case 7 : $this->levelStorage = $level; break; - case 8 : $this->levelRecycling = $level; break; - case 9 : $this->levelSpatioport = $level; break; - default : - throw new ErrorException('Bâtiment invalide dans setBuildingLevel de OrbitalBase'); - } - return $this; - } - - /** - * @param string $updatedAt - * @return OrbitalBase - */ - public function setUpdatedAt($updatedAt) - { - $this->uOrbitalBase = $updatedAt; - - return $this; - } - - /** - * @return string - */ - public function getUpdatedAt() - { - return $this->uOrbitalBase; - } -} diff --git a/system/Modules/Athena/Model/RecyclingLog.php b/system/Modules/Athena/Model/RecyclingLog.php deleted file mode 100644 index b68cc1ae1..000000000 --- a/system/Modules/Athena/Model/RecyclingLog.php +++ /dev/null @@ -1,138 +0,0 @@ -id; } - public function getRRecycling() { return $this->rRecycling; } - public function getResources() { return $this->resources; } - public function getCredits() { return $this->credits; } - public function getShip0() { return $this->ship0; } - public function getShip1() { return $this->ship1; } - public function getShip2() { return $this->ship2; } - public function getShip3() { return $this->ship3; } - public function getShip4() { return $this->ship4; } - public function getShip5() { return $this->ship5; } - public function getShip6() { return $this->ship6; } - public function getShip7() { return $this->ship7; } - public function getShip8() { return $this->ship8; } - public function getShip9() { return $this->ship9; } - public function getShip10() { return $this->ship10; } - public function getShip11() { return $this->ship11; } - public function getDLog() { return $this->dLog; } - - public function setId($id) - { - $this->id = $id; - return $this; - } - public function setRRecycling($rRecycling) - { - $this->rRecycling = $rRecycling; - return $this; - } - public function setResouces($resources) - { - $this->resources = $resources; - return $this; - } - public function setCredits($credits) - { - $this->credits = $credits; - return $this; - } - public function setShip0($ship0) - { - $this->ship0 = $ship0; - return $this; - } - public function setShip1($ship1) - { - $this->ship1 = $ship1; - return $this; - } - public function setShip2($ship2) - { - $this->ship2 = $ship2; - return $this; - } - public function setShip3($ship3) - { - $this->ship3 = $ship3; - return $this; - } - public function setShip4($ship4) - { - $this->ship4 = $ship4; - return $this; - } - public function setShip5($ship5) - { - $this->ship5 = $ship5; - return $this; - } - public function setShip6($ship6) - { - $this->ship6 = $ship6; - return $this; - } - public function setShip7($ship7) - { - $this->ship7 = $ship7; - return $this; - } - public function setShip8($ship8) - { - $this->ship8 = $ship8; - return $this; - } - public function setShip9($ship9) - { - $this->ship9 = $ship9; - return $this; - } - public function setShip10($ship10) - { - $this->ship10 = $ship10; - return $this; - } - public function setShip11($ship11) - { - $this->ship11 = $ship11; - return $this; - } - public function setDLog($dLog) - { - $this->dLog = $dLog; - return $this; - } -} diff --git a/system/Modules/Athena/Model/RecyclingMission.php b/system/Modules/Athena/Model/RecyclingMission.php deleted file mode 100644 index 9bcbd5f73..000000000 --- a/system/Modules/Athena/Model/RecyclingMission.php +++ /dev/null @@ -1,158 +0,0 @@ -id; } - public function getRBase() { return $this->rBase; } - public function getRTarget() { return $this->rTarget; } - public function getCycleTime() { return $this->cycleTime; } - public function getRecyclerQuantity() { return $this->recyclerQuantity; } - public function getAddToNextMission() { return $this->addToNextMission; } - public function getURecycling() { return $this->uRecycling; } - public function getStatement() { return $this->statement; } - - public function getTypeOfPlace() { return $this->typeOfPlace; } - public function getPosition() { return $this->position; } - public function getPopulation() { return $this->population; } - public function getCoefResources() { return $this->coefResources; } - public function getCoefHistory() { return $this->coefHistory; } - public function getResources() { return $this->resources; } - public function getSystemId() { return $this->systemId; } - public function getXSystem() { return $this->xSystem; } - public function getYSystem() { return $this->ySystem; } - public function getTypeOfSystem() { return $this->typeOfSystem; } - public function getSectorId() { return $this->sectorId; } - - public function setId($id) - { - $this->id = $id; - return $this; - } - public function setRBase($rBase) - { - $this->rBase = $rBase; - return $this; - } - public function setCycleTime($cycleTime) - { - $this->cycleTime = $cycleTime; - return $this; - } - public function setRecyclerQuantity($recyclerQuantity) - { - $this->recyclerQuantity = $recyclerQuantity; - return $this; - } - public function setAddToNextMission($addToNextMission) - { - $this->addToNextMission = $addToNextMission; - return $this; - } - public function setURecycling($uRecycling) - { - $this->uRecycling = $uRecycling; - return $this; - } - public function setStatement($statement) - { - $this->$statement = $statement; - return $this; - } - - public function setTypeOfPplace($typeOfPlace) - { - $this->typeOfPlace = $typeOfPlace; - return $this; - } - public function setPosition($position) - { - $this->position = $position; - return $this; - } - public function setPopulation($population) - { - $this->population = $population; - return $this; - } - public function setCoefResources($coefResources) - { - $this->coefResources = $coefResources; - return $this; - } - public function setCoefHistory($coefHistory) - { - $this->coefHistory = $coefHistory; - return $this; - } - public function setResources($resources) - { - $this->resources = $resources; - return $this; - } - public function setSystemId($systemId) - { - $this->systemId = $systemId; - return $this; - } - public function setXSystem($xSystem) - { - $this->xSystem = $xSystem; - return $this; - } - public function setYSystem($ySystem) - { - $this->ySystem = $ySystem; - return $this; - } - public function setTypeOfSystem($typeOfSystem) - { - $this->typeOfSystem = $typeOfSystem; - return $this; - } - public function setSectorId($sectorId) - { - $this->sectorId = $sectorId; - return $this; - } -} diff --git a/system/Modules/Athena/Model/ShipQueue.php b/system/Modules/Athena/Model/ShipQueue.php deleted file mode 100644 index 06167f238..000000000 --- a/system/Modules/Athena/Model/ShipQueue.php +++ /dev/null @@ -1,27 +0,0 @@ -id; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Model/Transaction.php b/system/Modules/Athena/Model/Transaction.php deleted file mode 100644 index d07525ba3..000000000 --- a/system/Modules/Athena/Model/Transaction.php +++ /dev/null @@ -1,109 +0,0 @@ - resource - # if ($type == TYP_SHIP) --> ship quantity - # if ($type == TYP_COMMANDER) --> experience - public $identifier; # if ($type == TYP_RESOURCE) --> NULL - # if ($type == TYP_SHIP) --> shipId - # if ($type == TYP_COMMANDER) --> rCommander - public $price = 0; - public $commercialShipQuantity = 0; # ship needed for the transport - public $statement = 0; - public $dPublication = ''; - public $dValidation = NULL; # date of acceptance or cancellation - public $currentRate; # 1 resource = x credits (for resources et ships) - # 1 experience = x credits - - # additionnal attributes - public $playerName; - public $playerColor; - public $placeName; - public $sector; - public $sectorColor; - public $rSystem; - public $positionInSystem; - public $xSystem; - public $ySystem; - - # attributes only for commanders - public $commanderName; - public $commanderLevel; - public $commanderVictory; - public $commanderExperience; - public $commanderAvatar; - - public function getId() { return $this->id; } - - public function getPriceToCancelOffer() { - # 5% of the price - return floor($this->price * self::PERCENTAGE_TO_CANCEL / 100); - } - - public function getExperienceEarned() { - return 1 + round($this->price / self::EXPERIENCE_DIVIDER); - } - - public static function getResourcesIcon($quantity) { - if (1000000 <= $quantity && $quantity < 5000000) { - return 5; - } elseif (500000 <= $quantity && $quantity < 1000000) { - return 4; - } elseif (100000 <= $quantity && $quantity < 500000) { - return 3; - } elseif (10000 <= $quantity && $quantity < 100000) { - return 2; - } else { - return 1; - } - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/BuildingQueueRepository.php b/system/Modules/Athena/Repository/BuildingQueueRepository.php deleted file mode 100644 index 6c724e4dc..000000000 --- a/system/Modules/Athena/Repository/BuildingQueueRepository.php +++ /dev/null @@ -1,128 +0,0 @@ -unitOfWork->getObject(BuildingQueue::class, $id)) !== null) { - return $bq; - } - $statement = $this->connection->prepare('SELECT * FROM orbitalBaseBuildingQueue WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $buildingQueue = $this->format($row); - $this->unitOfWork->addObject($buildingQueue); - return $buildingQueue; - } - - /** - * @param int $baseId - * @return array - */ - public function getBaseQueues($baseId) - { - $statement = $this->connection->prepare("SELECT * FROM orbitalBaseBuildingQueue WHERE rOrbitalBase = :base_id ORDER BY dEnd"); - $statement->execute(['base_id' => $baseId]); - - $data = []; - while($row = $statement->fetch()) { - if (($cr = $this->unitOfWork->getObject(BuildingQueue::class, $row['id'])) !== null) { - $data[] = $cr; - continue; - } - $buildingQueue = $this->format($row); - $this->unitOfWork->addObject($buildingQueue); - $data[] = $buildingQueue; - } - return $data; - } - - /** - * @return array - */ - public function getAll() - { - $query = $this->connection->query('SELECT * FROM orbitalBaseBuildingQueue'); - - $data = []; - while($row = $query->fetch()) { - if (($cr = $this->unitOfWork->getObject(BuildingQueue::class, $row['id'])) !== null) { - $data[] = $cr; - continue; - } - $buildingQueue = $this->format($row); - $this->unitOfWork->addObject($buildingQueue); - $data[] = $buildingQueue; - } - return $data; - } - - public function insert($buildingQueue) - { - $statement = $this->connection->prepare('INSERT INTO - orbitalBaseBuildingQueue(rOrbitalBase, buildingNumber, targetLevel, dStart, dEnd) - VALUES(?, ?, ?, ?, ?)'); - $statement->execute(array( - $buildingQueue->rOrbitalBase, - $buildingQueue->buildingNumber, - $buildingQueue->targetLevel, - $buildingQueue->dStart, - $buildingQueue->dEnd - )); - $buildingQueue->id = $this->connection->lastInsertId(); - } - - public function update($buildingQueue) - { - $statement = $this->connection->prepare('UPDATE orbitalBaseBuildingQueue - SET id = ?, - rOrbitalBase = ?, - buildingNumber = ?, - targetlevel = ?, - dStart = ?, - dEnd = ? - WHERE id = ?'); - $statement->execute(array( - $buildingQueue->id, - $buildingQueue->rOrbitalBase, - $buildingQueue->buildingNumber, - $buildingQueue->targetLevel, - $buildingQueue->dStart, - $buildingQueue->dEnd, - $buildingQueue->id - )); - } - - public function remove($buildingQueue) - { - $qr = $this->connection->prepare('DELETE FROM orbitalBaseBuildingQueue WHERE id = ?'); - $qr->execute(array($buildingQueue->id)); - } - - public function format($data) - { - $buildingQueue = new BuildingQueue(); - - $buildingQueue->id = (int) $data['id']; - $buildingQueue->rOrbitalBase = (int) $data['rOrbitalBase']; - $buildingQueue->buildingNumber = (int) $data['buildingNumber']; - $buildingQueue->targetLevel = (int) $data['targetLevel']; - $buildingQueue->dStart = $data['dStart']; - $buildingQueue->dEnd = $data['dEnd']; - - return $buildingQueue; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/CommercialRouteRepository.php b/system/Modules/Athena/Repository/CommercialRouteRepository.php deleted file mode 100644 index 2ad39a105..000000000 --- a/system/Modules/Athena/Repository/CommercialRouteRepository.php +++ /dev/null @@ -1,413 +0,0 @@ -connection->prepare( - 'SELECT cr.id AS id, - cr.rOrbitalBase AS rOrbitalBase, - cr.rOrbitalBaseLinked AS rOrbitalBaseLinked, - cr.imageLink AS imageLink, - cr.distance AS distance, - cr.price AS price, - cr.income AS income, - cr.dProposition AS dProposition, - cr.dCreation AS dCreation, - cr.statement AS statement, - - ob1.rPlayer AS playerId1, - ob1.name AS baseName1, - ob1.typeOfBase AS baseType1, - pl1.name AS playerName1, - pl1.rColor AS playerColor1, - pl1.avatar AS avatar1, - p1.population AS population1, - - ob2.rPlayer AS playerId2, - ob2.name AS baseName2, - ob2.typeOfBase AS baseType2, - pl2.name AS playerName2, - pl2.rColor AS playerColor2, - pl2.avatar AS avatar2, - p2.population AS population2 - - FROM commercialRoute AS cr - - LEFT JOIN orbitalBase AS ob1 ON cr.rOrbitalBase = ob1.rPlace - LEFT JOIN player AS pl1 ON ob1.rPlayer = pl1.id - LEFT JOIN place AS p1 ON ob1.rPlace = p1.id - - LEFT JOIN orbitalBase AS ob2 ON cr.rOrbitalBaseLinked = ob2.rPlace - LEFT JOIN player AS pl2 ON ob2.rPlayer = pl2.id - LEFT JOIN place AS p2 ON ob2.rPlace = p2.id - WHERE ' . $where - ); - $query->execute($params); - return $query; - } - - /** - * @param int $id - * @return CommercialRoute - */ - public function get($id) - { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $id)) !== null) { - return $cr; - } - $query = $this->select('cr.id = :id', ['id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - return $commercialRoute; - } - - /** - * @param int $id - * @param int $baseId - * @return CommercialRoute - */ - public function getByIdAndBase($id, $baseId) - { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $id)) !== null && $cr->getOrbitalBase() === (int) $baseId) { - return $cr; - } - $query = $this->select( - 'cr.id = :id AND rOrbitalBase = :base_id', - ['id' => $id, 'base_id' => $baseId]); - - if (($row = $query->fetch()) === false) { - return null; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - return $commercialRoute; - } - - /** - * @param int $id - * @param int $baseId - * @return CommercialRoute - */ - public function getByIdAndDistantBase($id, $baseId) - { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $id)) !== null && $cr->getROrbitalBaseLinked() === (int) $baseId) { - return $cr; - } - $query = $this->select( - 'cr.id = :id AND rOrbitalBaseLinked = :distant_base_id', - ['id' => $id, 'distant_base_id' => $baseId]); - - if (($row = $query->fetch()) === false) { - return null; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - return $commercialRoute; - } - - /** - * @param int $baseId - * @return array - */ - public function getByBase($baseId) - { - $query = $this->select('rOrbitalBase = :base_id', ['base_id' => $baseId]); - - $data = []; - while($row = $query->fetch()) { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $row['id'])) !== null) { - $data[] = $cr; - continue; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - $data[] = $commercialRoute; - } - return $data; - } - - /** - * @param int $baseId - * @return array - */ - public function getByDistantBase($baseId) - { - $query = $this->select('rOrbitalBaseLinked = :base_id', ['base_id' => $baseId]); - - $data = []; - while($row = $query->fetch()) { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $row['id'])) !== null) { - $data[] = $cr; - continue; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - $data[] = $commercialRoute; - } - return $data; - } - - /** - * @param int $baseId - * @param int $distantBaseId - * @return array - */ - public function getExistingRoute($baseId, $distantBaseId) - { - $query = $this->select( - '(rOrbitalBase = :base_id1 AND rOrbitalBaseLinked = :distant_base_id1) OR - (rOrbitalBase = :distant_base_id2 AND rOrbitalBaseLinked = :base_id2)' - , [ - 'base_id1' => $baseId, - 'base_id2' => $baseId, - 'distant_base_id1' => $distantBaseId, - 'distant_base_id2' => $distantBaseId - ]); - - $data = []; - while($row = $query->fetch()) { - if (($cr = $this->unitOfWork->getObject(CommercialRoute::class, $row['id'])) !== null) { - $data[] = $cr; - continue; - } - $commercialRoute = $this->format($row); - $this->unitOfWork->addObject($commercialRoute); - $data[] = $commercialRoute; - } - return $data; - } - - /** - * @param int $baseId - * @return int - */ - public function getBaseIncome($baseId) - { - $query = $this->connection->prepare( - 'SELECT SUM(income) AS total_income FROM commercialRoute - WHERE (rOrbitalBase = :base_id OR rOrbitalBaseLinked = :distant_base_id) AND statement = :active_statement ' - ); - $query->execute([ - 'base_id' => $baseId, - 'distant_base_id' => $baseId, - 'active_statement' => CommercialRoute::ACTIVE - ]); - if (($result = $query->fetch()) === false) { - return 0; - } - return (int) $result['total_income']; - } - - /** - * @param int $baseId - * @param int $distantBaseId - * @return bool - */ - public function isAlreadyARoute($baseId, $distantBaseId) - { - $query = $this->connection->prepare( - 'SELECT COUNT(*) as nb_routes FROM commercialRoute - WHERE (rOrbitalBase = :base_id1 AND rOrbitalBaseLinked = :distant_base_id1) OR - (rOrbitalBase = :distant_base_id2 AND rOrbitalBaseLinked = :base_id2)' - ); - $query->execute([ - 'base_id1' => $baseId, - 'base_id2' => $baseId, - 'distant_base_id1' => $distantBaseId, - 'distant_base_id2' => $distantBaseId - ]); - return (bool) $query->fetch()['nb_routes']; - } - - /** - * @param int $baseId - * @return int - */ - public function countBaseActiveAndStandbyRoutes($baseId) - { - $query = $this->connection->prepare( - 'SELECT COUNT(*) as nb_routes FROM commercialRoute - WHERE (rOrbitalBase = :base_id OR rOrbitalBaseLinked = :distant_base_id) - AND statement IN (:active_statement, :stand_by_statement)' - ); - $query->execute([ - 'base_id' => $baseId, - 'distant_base_id' => $baseId, - 'active_statement' => CommercialRoute::ACTIVE, - 'stand_by_statement' => CommercialRoute::STANDBY - ]); - return (int) $query->fetch()['nb_routes']; - } - - /** - * @param int $baseId - * @return int - */ - public function countBaseActiveRoutes($baseId) - { - $query = $this->connection->prepare( - 'SELECT COUNT(*) as nb_routes FROM commercialRoute - WHERE (rOrbitalBase = :base_id OR rOrbitalBaseLinked = :distant_base_id) - AND statement = :active_statement' - ); - $query->execute([ - 'base_id' => $baseId, - 'distant_base_id' => $baseId, - 'active_statement' => CommercialRoute::ACTIVE - ]); - return (int) $query->fetch()['nb_routes']; - } - - /** - * @param int $baseId - * @return int - */ - public function countBaseRoutes($baseId) - { - $query = $this->connection->prepare( - 'SELECT COUNT(*) as nb_routes FROM commercialRoute - WHERE rOrbitalBase = :base_id OR rOrbitalBaseLinked = :distant_base_id' - ); - $query->execute(['base_id' => $baseId, 'distant_base_id' => $baseId]); - return (int) $query->fetch()['nb_routes']; - } - - /** - * @param CommercialRoute $commercialRoute - */ - public function insert($commercialRoute) - { - $query = $this->connection->prepare('INSERT INTO - commercialRoute(rOrbitalBase, rOrbitalBaseLinked, imageLink, distance, price, income, dProposition, dCreation, statement) - VALUES(:orbital_base, :destination_base, :image_link, :distance, :price, :income, :proposition, :created_at, :statement)'); - $query->execute(array( - 'orbital_base' => $commercialRoute->getROrbitalBase(), - 'destination_base' => $commercialRoute->getROrbitalBaseLinked(), - 'image_link' => $commercialRoute->getImageLink(), - 'distance' => $commercialRoute->getDistance(), - 'price' => $commercialRoute->getPrice(), - 'income' => $commercialRoute->getIncome(), - 'proposition' => $commercialRoute->getDProposition(), - 'created_at' => $commercialRoute->getDCreation(), - 'statement' => $commercialRoute->getStatement() - )); - $commercialRoute->setId($this->connection->lastInsertId()); - } - - /** - * @param CommercialRoute $commercialRoute - */ - public function update($commercialRoute) - { - $query = $this->connection->prepare( - 'UPDATE commercialRoute SET - rOrbitalBase = :orbital_base, rOrbitalBaseLinked = :destination_base, imageLink = :image_link, - distance = :distance, price = :price, income = :income, dProposition = :proposition, - dCreation = :created_at, statement = :statement - WHERE id = :id' - ); - $query->execute(array( - 'orbital_base' => $commercialRoute->getROrbitalBase(), - 'destination_base' => $commercialRoute->getROrbitalBaseLinked(), - 'image_link' => $commercialRoute->getImageLink(), - 'distance' => $commercialRoute->getDistance(), - 'price' => $commercialRoute->getPrice(), - 'income' => $commercialRoute->getIncome(), - 'proposition' => $commercialRoute->getDProposition(), - 'created_at' => $commercialRoute->getDCreation(), - 'statement' => $commercialRoute->getStatement(), - 'id' => $commercialRoute->getId() - )); - } - - /** - * @param Color $faction - * @param Color $otherFaction - * @param boolean $freeze - */ - public function freezeRoutes(Color $faction, Color $otherFaction, $freeze) - { - $statement = $this->connection->prepare( - 'UPDATE commercialRoute AS cr - LEFT JOIN orbitalBase AS ob1 - ON cr.rOrbitalBase = ob1.rPlace - LEFT JOIN player AS pl1 - ON ob1.rPlayer = pl1.id - LEFT JOIN orbitalBase AS ob2 - ON cr.rOrbitalBaseLinked = ob2.rPlace - LEFT JOIN player AS pl2 - ON ob2.rPlayer = pl2.id - SET cr.statement = ? - WHERE - ((pl1.rColor = ? AND pl2.rColor = ?) OR - (pl1.rColor = ? AND pl2.rColor = ?)) AND - cr.statement = ?' - ); - $statement->execute([ - ($freeze === true) ? CommercialRoute::STANDBY : CommercialRoute::ACTIVE, - $faction->id, - $otherFaction->id, - $otherFaction->id, - $faction->id, - ($freeze === true) ? CommercialRoute::ACTIVE : CommercialRoute::STANDBY, - ]); - } - - /** - * @param CommercialRoute $commercialRoute - */ - public function remove($commercialRoute) - { - $query = $this->connection->prepare('DELETE FROM commercialRoute WHERE id = :id'); - $query->execute(['id' => $commercialRoute->id]); - } - - /** - * @param array $data - * @return CommercialRoute - */ - public function format($data) - { - $commercialRoute = new CommercialRoute(); - $commercialRoute->setId((int) $data['id']); - $commercialRoute->setROrbitalBase((int) $data['rOrbitalBase']); - $commercialRoute->setROrbitalBaseLinked((int) $data['rOrbitalBaseLinked']); - $commercialRoute->setImageLink($data['imageLink']); - $commercialRoute->setDistance($data['distance']); - $commercialRoute->setPrice((int) $data['price']); - $commercialRoute->setIncome((int) $data['income']); - $commercialRoute->setDProposition($data['dProposition']); - $commercialRoute->setDCreation($data['dCreation']); - $commercialRoute->setStatement((int) $data['statement']); - - $commercialRoute->setBaseName1($data['baseName1']); - $commercialRoute->baseType1 = $data['baseType1']; - $commercialRoute->setPlayerId1($data['playerId1']); - $commercialRoute->setPlayerName1($data['playerName1']); - $commercialRoute->playerColor1 = $data['playerColor1']; - $commercialRoute->setAvatar1($data['avatar1']); - $commercialRoute->setPopulation1($data['population1']); - - $commercialRoute->setBaseName2($data['baseName2']); - $commercialRoute->baseType2 = $data['baseType2']; - $commercialRoute->setPlayerId2($data['playerId2']); - $commercialRoute->setPlayerName2($data['playerName2']); - $commercialRoute->playerColor2 = $data['playerColor2']; - $commercialRoute->setAvatar2($data['avatar2']); - $commercialRoute->setPopulation2($data['population2']); - - return $commercialRoute; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/CommercialShippingRepository.php b/system/Modules/Athena/Repository/CommercialShippingRepository.php deleted file mode 100644 index 190e26133..000000000 --- a/system/Modules/Athena/Repository/CommercialShippingRepository.php +++ /dev/null @@ -1,239 +0,0 @@ -connection->prepare('SELECT cs.*, - p1.rSystem AS rSystem1, p1.position AS position1, s1.xPosition AS xSystem1, s1.yPosition AS ySystem1, - p2.rSystem AS rSystem2, p2.position AS position2, s2.xPosition AS xSystem2, s2.yPosition AS ySystem2, - t.type AS typeOfTransaction, t.quantity AS quantity, t.identifier AS identifier, t.price AS price, - c.avatar AS commanderAvatar, c.name AS commanderName, c.level AS commanderLevel, c.palmares AS commanderVictory, c.experience AS commanderExperience - FROM commercialShipping AS cs - LEFT JOIN place AS p1 - ON cs.rBase = p1.id - LEFT JOIN system AS s1 - ON p1.rSystem = s1.id - LEFT JOIN place AS p2 - ON cs.rBaseDestination = p2.id - LEFT JOIN system AS s2 - ON p2.rSystem = s2.id - LEFT JOIN transaction AS t - ON cs.rTransaction = t.id - LEFT JOIN commander AS c - ON t.identifier = c.id ' . $clause - ); - $statement->execute($params); - - return $statement; - } - - /** - * @param int $id - * @return CommercialShipping - */ - public function get($id) - { - if (($cs = $this->unitOfWork->getObject(CommercialShipping::class, $id)) !== null) { - return $cs; - } - $query = $this->select('WHERE cs.id = :id', ['id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - $commercialShipping = $this->format($row); - $this->unitOfWork->addObject($commercialShipping); - return $commercialShipping; - } - - /** - * @param int $id - * @return CommercialShipping - */ - public function getByTransactionId($id) - { - $query = $this->select('WHERE cs.rTransaction = :transaction_id', ['transaction_id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($cs = $this->unitOfWork->getObject(CommercialShipping::class, (int) $row['id'])) !== null) { - return $cs; - } - $commercialShipping = $this->format($row); - $this->unitOfWork->addObject($commercialShipping); - return $commercialShipping; - } - - public function getAll(): array - { - $query = $this->select(); - - $data = []; - while($row = $query->fetch()) { - if (($cs = $this->unitOfWork->getObject(CommercialShipping::class, $row['id'])) !== null) { - $data[] = $cs; - continue; - } - $commercialShipping = $this->format($row); - $this->unitOfWork->addObject($commercialShipping); - $data[] = $commercialShipping; - } - return $data; - } - - public function getMoving(): array - { - $query = $this->select('WHERE cs.statement != :waiting', ['waiting' => CommercialShipping::ST_WAITING]); - - $data = []; - while($row = $query->fetch()) { - if (($cs = $this->unitOfWork->getObject(CommercialShipping::class, $row['id'])) !== null) { - $data[] = $cs; - continue; - } - $commercialShipping = $this->format($row); - $this->unitOfWork->addObject($commercialShipping); - $data[] = $commercialShipping; - } - return $data; - } - - /** - * @param int $orbitalBaseId - * @return array - */ - public function getByBase($orbitalBaseId) - { - $query = $this->select('WHERE cs.rBase = :base_id OR cs.rBaseDestination = :destination_base_id', [ - 'base_id' => $orbitalBaseId, - 'destination_base_id' => $orbitalBaseId - ]); - - $data = []; - while($row = $query->fetch()) { - if (($cs = $this->unitOfWork->getObject(CommercialShipping::class, $row['id'])) !== null) { - $data[] = $cs; - continue; - } - $commercialShipping = $this->format($row); - $this->unitOfWork->addObject($commercialShipping); - $data[] = $commercialShipping; - } - return $data; - } - - /** - * @param CommercialShipping $commercialShipping - */ - public function insert($commercialShipping) - { - $qr = $this->connection->prepare('INSERT INTO - commercialShipping(rPlayer, rBase, rBaseDestination, rTransaction, resourceTransported, shipQuantity, dDeparture, dArrival, statement) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $commercialShipping->rPlayer, - $commercialShipping->rBase, - $commercialShipping->rBaseDestination, - $commercialShipping->rTransaction, - $commercialShipping->resourceTransported, - $commercialShipping->shipQuantity, - $commercialShipping->dDeparture, - $commercialShipping->dArrival, - $commercialShipping->statement - )); - $commercialShipping->id = $this->connection->lastInsertId(); - } - - /** - * @param CommercialShipping $commercialShipping - */ - public function update($commercialShipping) - { - $statement = $this->connection->prepare( - 'UPDATE commercialShipping - SET id = ?, - rPlayer = ?, - rBase = ?, - rBaseDestination = ?, - rTransaction = ?, - resourceTransported = ?, - shipQuantity = ?, - dDeparture = ?, - dArrival = ?, - statement = ? - WHERE id = ?'); - $statement->execute(array( - $commercialShipping->id, - $commercialShipping->rPlayer, - $commercialShipping->rBase, - $commercialShipping->rBaseDestination, - $commercialShipping->rTransaction, - $commercialShipping->resourceTransported, - $commercialShipping->shipQuantity, - $commercialShipping->dDeparture, - $commercialShipping->dArrival, - $commercialShipping->statement, - $commercialShipping->id - )); - } - - /** - * @param CommercialShipping $commercialShipping - */ - public function remove($commercialShipping) - { - $statement = $this->connection->prepare('DELETE FROM commercialShipping WHERE id = :id'); - $statement->execute(['id' => $commercialShipping->id]); - } - - /** - * @param array $data - * @return CommercialShipping - */ - public function format($data) - { - $commercialShipping = new CommercialShipping(); - - $commercialShipping->id = (int) $data['id']; - $commercialShipping->rPlayer = (int) $data['rPlayer']; - $commercialShipping->rBase = (int) $data['rBase']; - $commercialShipping->rBaseDestination = (int) $data['rBaseDestination']; - $commercialShipping->rTransaction = (int) $data['rTransaction']; - $commercialShipping->resourceTransported = (int) $data['resourceTransported']; - $commercialShipping->shipQuantity = (int) $data['shipQuantity']; - $commercialShipping->dDeparture = $data['dDeparture']; - $commercialShipping->dArrival = $data['dArrival']; - $commercialShipping->statement = (int) $data['statement']; - - $commercialShipping->price = (int) $data['price']; - - $commercialShipping->baseRSystem = (int) $data['rSystem1']; - $commercialShipping->basePosition = $data['position1']; - $commercialShipping->baseXSystem = $data['xSystem1']; - $commercialShipping->baseYSystem = $data['ySystem1']; - - $commercialShipping->destinationRSystem = (int) $data['rSystem2']; - $commercialShipping->destinationPosition = $data['position2']; - $commercialShipping->destinationXSystem = $data['xSystem2']; - $commercialShipping->destinationYSystem = $data['ySystem2']; - - $commercialShipping->typeOfTransaction = $data['typeOfTransaction']; - $commercialShipping->quantity = (int) $data['quantity']; - $commercialShipping->identifier = $data['identifier']; - $commercialShipping->commanderAvatar = $data['commanderAvatar']; - $commercialShipping->commanderName = $data['commanderName']; - $commercialShipping->commanderLevel = (int) $data['commanderLevel']; - $commercialShipping->commanderVictory = (int) $data['commanderVictory']; - $commercialShipping->commanderExperience = (int) $data['commanderExperience']; - - return $commercialShipping; - } -} diff --git a/system/Modules/Athena/Repository/OrbitalBaseRepository.php b/system/Modules/Athena/Repository/OrbitalBaseRepository.php deleted file mode 100644 index 1c1e3648f..000000000 --- a/system/Modules/Athena/Repository/OrbitalBaseRepository.php +++ /dev/null @@ -1,385 +0,0 @@ -connection->prepare( - 'SELECT ob.*, - p.position AS position, p.rSystem AS system, - s.xPosition AS xSystem, s.yPosition AS ySystem, s.rSector AS sector, - se.rColor AS sectorColor, se.tax AS tax, - p.population AS planetPopulation, p.coefResources AS planetResources, p.coefHistory AS planetHistory, - - (SELECT MAX(bq.dEnd) FROM orbitalBaseBuildingQueue AS bq WHERE bq.rOrbitalBase = ob.rPlace) AS termDateGenerator, - (SELECT MAX(sq1.dEnd) FROM orbitalBaseShipQueue AS sq1 WHERE sq1.rOrbitalBase = ob.rPlace AND sq1.dockType = 1) AS termDateDock1, - (SELECT MAX(sq2.dEnd) FROM orbitalBaseShipQueue AS sq2 WHERE sq2.rOrbitalBase = ob.rPlace AND sq2.dockType = 2) AS termDateDock2, - (SELECT MAX(sq3.dEnd) FROM orbitalBaseShipQueue AS sq3 WHERE sq3.rOrbitalBase = ob.rPlace AND sq3.dockType = 3) AS termDateDock3, - (SELECT COUNT(cr.id) FROM commercialRoute AS cr WHERE (cr.rOrbitalBase = ob.rPlace OR cr.rOrbitalBaseLinked = ob.rPlace) AND cr.statement = 1) AS routesNumber - - FROM orbitalBase AS ob - LEFT JOIN place AS p ON ob.rPlace = p.id - LEFT JOIN system AS s ON p.rSystem = s.id - LEFT JOIN sector AS se ON s.rSector = se.id ' . - $clause - ); - $statement->execute($params); - return $statement; - } - - /** - * @param int $id - * @return OrbitalBase - */ - public function get($id) - { - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $id)) !== null) { - return $ob; - } - $statement = $this->select('WHERE ob.rPlace = :id', ['id' => $id]); - if (($row = $statement->fetch()) === false) { - return null; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - return $orbitalBase; - } - - /** - * @return array - */ - public function getAll() - { - $statement = $this->select(); - $data = []; - while ($row = $statement->fetch()) { - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) { - $data[] = $ob; - continue; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - $data[] = $orbitalBase; - } - return $data; - } - - /** - * @param int $playerId - * @return array - */ - public function getPlayerBases($playerId) - { - $statement = $this->select('WHERE ob.rPlayer = :player_id ORDER BY ob.dCreation', ['player_id' => $playerId]); - $data = []; - while ($row = $statement->fetch()) { - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) { - $data[] = $ob; - continue; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - $data[] = $orbitalBase; - } - return $data; - } - - /** - * @param int $sectorId - * @return array - */ - public function getSectorBases($sectorId) - { - $statement = $this->select('WHERE se.id = :sector_id', ['sector_id' => $sectorId]); - $data = []; - while ($row = $statement->fetch()) { - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) { - $data[] = $ob; - continue; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - $data[] = $orbitalBase; - } - return $data; - } - - /** - * @param int $systemId - * @return array - */ - public function getSystemBases($systemId) - { - $statement = $this->select('WHERE s.id = :system_id', ['system_id' => $systemId]); - $data = []; - while ($row = $statement->fetch()) { - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) { - $data[] = $ob; - continue; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - $data[] = $orbitalBase; - } - return $data; - } - - /** - * @param int $baseId - * @param int $playerId - * @return OrbitalBase - */ - public function getPlayerBase($baseId, $playerId) - { - $statement = $this->select('WHERE ob.rPlace = :id AND ob.rPlayer = :player_id', ['id' => $baseId, 'player_id' => $playerId]); - if (($row = $statement->fetch()) === false) { - return null; - } - if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) { - return $ob; - } - $orbitalBase = $this->format($row); - $this->unitOfWork->addObject($orbitalBase); - return $orbitalBase; - } - - public function insert($orbitalBase) - { - $statement = $this->connection->prepare( - 'INSERT INTO orbitalBase(rPlace, rPlayer, name, typeOfBase, levelGenerator, - levelRefinery, levelDock1, levelDock2, levelDock3, levelTechnosphere, levelCommercialPlateforme, - levelStorage, levelRecycling, levelSpatioport, points, iSchool, iAntiSpy, antiSpyAverage, - pegaseStorage, satyreStorage, sireneStorage, dryadeStorage, chimereStorage, meduseStorage, - griffonStorage, cyclopeStorage, minotaureStorage, hydreStorage, cerbereStorage, phenixStorage, - resourcesStorage, uOrbitalBase, dCreation) - VALUES(:id, :player_id, :name, :type, :generator_level, :refinery_level, :dock1_level, :dock2_level, :dock3_level, - :technosphere_level, :commercial_platform_level, :storage_level, :recycling_level, :spatioport_level, :points, :school_investments, - :anti_spy_investments, :anti_spy_average, :pegase_storage, :satyre_storage, :sirene_storage, :dryade_storage, - :chimere_storage, :meduse_storage, :griffon_storage, :cyclope_storage, :minotaure_storage, :hydre_storage, :cerbere_storage, - :phenix_storage, :resources, :u_orbital_base, :created_at)' - ); - $statement->execute([ - 'id' => $orbitalBase->getRPlace(), - 'player_id' => $orbitalBase->getRPlayer(), - 'name' => $orbitalBase->getName(), - 'type' => $orbitalBase->typeOfBase, - 'generator_level' => $orbitalBase->getLevelGenerator(), - 'refinery_level' => $orbitalBase->getLevelRefinery(), - 'dock1_level' => $orbitalBase->getLevelDock1(), - 'dock2_level' => $orbitalBase->getLevelDock2(), - 'dock3_level' => $orbitalBase->getLevelDock3(), - 'technosphere_level' => $orbitalBase->getLevelTechnosphere(), - 'commercial_platform_level' => $orbitalBase->getLevelCommercialPlateforme(), - 'storage_level' => $orbitalBase->getLevelStorage(), - 'recycling_level' => $orbitalBase->getLevelRecycling(), - 'spatioport_level' => $orbitalBase->getLevelSpatioport(), - 'points' => $orbitalBase->getPoints(), - 'school_investments' => $orbitalBase->getISchool(), - 'anti_spy_investments' => $orbitalBase->getIAntiSpy(), - 'anti_spy_average' => $orbitalBase->getAntiSpyAverage(), - 'pegase_storage' => $orbitalBase->getShipStorage(0), - 'satyre_storage' => $orbitalBase->getShipStorage(1), - 'sirene_storage' => $orbitalBase->getShipStorage(2), - 'dryade_storage' => $orbitalBase->getShipStorage(3), - 'chimere_storage' => $orbitalBase->getShipStorage(4), - 'meduse_storage' => $orbitalBase->getShipStorage(5), - 'griffon_storage' => $orbitalBase->getShipStorage(6), - 'cyclope_storage' => $orbitalBase->getShipStorage(7), - 'minotaure_storage' => $orbitalBase->getShipStorage(8), - 'hydre_storage' => $orbitalBase->getShipStorage(9), - 'cerbere_storage' => $orbitalBase->getShipStorage(10), - 'phenix_storage' => $orbitalBase->getShipStorage(11), - 'resources' => $orbitalBase->getResourcesStorage(), - 'u_orbital_base' => $orbitalBase->uOrbitalBase, - 'created_at' => $orbitalBase->getDCreation() - ]); - $orbitalBase->setRPlace($this->connection->lastInsertId()); - } - - public function update($orbitalBase) - { - $statement = $this->connection->prepare( - 'UPDATE orbitalBase SET rPlayer = :player_id, name = :name, typeOfBase = :type, - iSchool = :school_investments, iAntiSpy = :anti_spy_investments, - pegaseStorage = :pegase_storage, satyreStorage = :satyre_storage, sireneStorage = :sirene_storage, dryadeStorage = :dryade_storage, - chimereStorage = :chimere_storage, meduseStorage = :meduse_storage, griffonStorage = :griffon_storage, - cyclopeStorage = :cyclope_storage, minotaureStorage = :minotaure_storage, hydreStorage = :hydre_storage, - cerbereStorage = :cerbere_storage, phenixStorage = :phenix_storage, dCreation = :created_at - WHERE rPlace = :id' - ); - $statement->execute(array( - 'player_id' => $orbitalBase->getRPlayer(), - 'name' => $orbitalBase->getName(), - 'type' => $orbitalBase->typeOfBase, - 'school_investments' => $orbitalBase->getISchool(), - 'anti_spy_investments' => $orbitalBase->getIAntiSpy(), - 'pegase_storage' => $orbitalBase->getShipStorage(0), - 'satyre_storage' => $orbitalBase->getShipStorage(1), - 'sirene_storage' => $orbitalBase->getShipStorage(2), - 'dryade_storage' => $orbitalBase->getShipStorage(3), - 'chimere_storage' => $orbitalBase->getShipStorage(4), - 'meduse_storage' => $orbitalBase->getShipStorage(5), - 'griffon_storage' => $orbitalBase->getShipStorage(6), - 'cyclope_storage' => $orbitalBase->getShipStorage(7), - 'minotaure_storage' => $orbitalBase->getShipStorage(8), - 'hydre_storage' => $orbitalBase->getShipStorage(9), - 'cerbere_storage' => $orbitalBase->getShipStorage(10), - 'phenix_storage' => $orbitalBase->getShipStorage(11), - 'created_at' => $orbitalBase->getDCreation(), - 'id' => $orbitalBase->getRPlace(), - )); - } - - /** - * @param OrbitalBase $orbitalBase - */ - public function updateBuildingLevels(OrbitalBase $orbitalBase) - { - $statement = $this->connection->prepare( - 'UPDATE orbitalBase SET - levelRefinery = :levelRefinery,levelDock1 = :levelDock1, levelDock2 = :levelDock2, levelDock3 = :levelDock3, - levelTechnosphere = :levelTechnosphere, levelCommercialPlateforme = :levelCommercialPlateforme, - levelStorage = :levelStorage, levelRecycling = :levelRecycling , levelSpatioport = :levelSpatioport - WHERE rPlace = :id' - ); - $statement->execute(array( - 'levelRefinery' => $orbitalBase->getLevelRefinery(), - 'levelDock1' => $orbitalBase->getlevelDock1(), - 'levelDock2' => $orbitalBase->getlevelDock2(), - 'levelDock3' => $orbitalBase->getlevelDock3(), - 'levelTechnosphere' => $orbitalBase->getlevelTechnosphere(), - 'levelCommercialPlateforme' => $orbitalBase->getlevelCommercialPlateforme(), - 'levelStorage' => $orbitalBase->getlevelStorage(), - 'levelRecycling' => $orbitalBase->getlevelRecycling(), - 'levelSpatioport' => $orbitalBase->getlevelSpatioport(), - 'id' => $orbitalBase->getRPlace(), - )); - } - - /** - * @param OrbitalBase $orbitalBase - * @param int $resources - * @param int $antiSpyAverage - */ - public function updateBase(OrbitalBase $orbitalBase, $resources, $antiSpyAverage) - { - $operator = ($antiSpyAverage > 0) ? '+' : '-'; - $statement = $this->connection->prepare( - "UPDATE orbitalBase SET resourcesStorage = resourcesStorage + :resources, - antiSpyAverage = antiSpyAverage $operator :anti_spy_average, uOrbitalBase = :updated_at WHERE rPlace = :id" - ); - $statement->execute([ - 'id' => $orbitalBase->getId(), - 'resources' => $resources, - 'anti_spy_average' => abs($antiSpyAverage), - 'updated_at' => $orbitalBase->getUpdatedAt() - ]); - } - - public function increaseBuildingLevel(OrbitalBase $orbitalBase, $buildingColumn, $earnedPoints) - { - $statement = $this->connection->prepare( - "UPDATE orbitalBase SET {$buildingColumn} = {$buildingColumn} + 1, points = points + :points WHERE rPlace = :id" - ); - $statement->execute([ - 'points' => $earnedPoints, - 'id' => $orbitalBase->getId() - ]); - } - - public function increaseResources(OrbitalBase $orbitalBase, $resources) - { - $statement = $this->connection->prepare( - "UPDATE orbitalBase SET resourcesStorage = resourcesStorage + :resources WHERE rPlace = :id" - ); - $statement->execute([ - 'resources' => $resources, - 'id' => $orbitalBase->getId() - ]); - } - - public function decreaseResources(OrbitalBase $orbitalBase, $resources) - { - $statement = $this->connection->prepare( - "UPDATE orbitalBase SET resourcesStorage = resourcesStorage - :resources WHERE rPlace = :id" - ); - $statement->execute([ - 'resources' => $resources, - 'id' => $orbitalBase->getId() - ]); - } - - public function remove($orbitalBase) - { - - } - - public function format($data) - { - $orbitalBase = new OrbitalBase(); - $orbitalBase->setRPlace((int) $data['rPlace']); - $orbitalBase->setRPlayer((int) $data['rPlayer']); - $orbitalBase->setName($data['name']); - $orbitalBase->typeOfBase = (int) $data['typeOfBase']; - $orbitalBase->setLevelGenerator((int) $data['levelGenerator']); - $orbitalBase->setLevelRefinery((int) $data['levelRefinery']); - $orbitalBase->setLevelDock1((int) $data['levelDock1']); - $orbitalBase->setLevelDock2((int) $data['levelDock2']); - $orbitalBase->setLevelDock3((int) $data['levelDock3']); - $orbitalBase->setLevelTechnosphere((int) $data['levelTechnosphere']); - $orbitalBase->setLevelCommercialPlateforme((int) $data['levelCommercialPlateforme']); - $orbitalBase->setLevelStorage((int) $data['levelStorage']); - $orbitalBase->setLevelRecycling((int) $data['levelRecycling']); - $orbitalBase->setLevelSpatioport((int) $data['levelSpatioport']); - $orbitalBase->setPoints((int) $data['points']); - $orbitalBase->setISchool((int) $data['iSchool']); - $orbitalBase->setIAntiSpy((int) $data['iAntiSpy']); - $orbitalBase->setAntiSpyAverage((int) $data['antiSpyAverage']); - $orbitalBase->setShipStorage(0 , (int) $data['pegaseStorage']); - $orbitalBase->setShipStorage(1 , (int) $data['satyreStorage']); - $orbitalBase->setShipStorage(2 , (int) $data['sireneStorage']); - $orbitalBase->setShipStorage(3 , (int) $data['dryadeStorage']); - $orbitalBase->setShipStorage(4 , (int) $data['chimereStorage']); - $orbitalBase->setShipStorage(5 , (int) $data['meduseStorage']); - $orbitalBase->setShipStorage(6 , (int) $data['griffonStorage']); - $orbitalBase->setShipStorage(7 , (int) $data['cyclopeStorage']); - $orbitalBase->setShipStorage(8 , (int) $data['minotaureStorage']); - $orbitalBase->setShipStorage(9 , (int) $data['hydreStorage']); - $orbitalBase->setShipStorage(10 , (int) $data['cerbereStorage']); - $orbitalBase->setShipStorage(11 , (int) $data['phenixStorage']); - $orbitalBase->setResourcesStorage((int) $data['resourcesStorage']); - $orbitalBase->uOrbitalBase = $data['uOrbitalBase']; - $orbitalBase->setDCreation($data['dCreation']); - - $orbitalBase->setPosition($data['position']); - $orbitalBase->setSystem($data['system']); - $orbitalBase->setXSystem($data['xSystem']); - $orbitalBase->setYSystem($data['ySystem']); - $orbitalBase->setSector($data['sector']); - $orbitalBase->sectorColor = (int) $data['sectorColor']; - $orbitalBase->setTax($data['tax']); - $orbitalBase->setPlanetPopulation((float) $data['planetPopulation']); - $orbitalBase->setPlanetResources($data['planetResources']); - $orbitalBase->setPlanetHistory($data['planetHistory']); - - $setRemainingTime = function (?string $term, callable $setter): void { - if (null !== $term) { - $setter(round(strtotime($term) - strtotime(Utils::now()), 1)); - } - }; - $setRemainingTime('termDateGenerator', fn(float $value) => $orbitalBase->setRemainingTimeGenerator($value)); - $setRemainingTime('termDateDock1', fn(float $value) => $orbitalBase->setRemainingTimeDock1($value)); - $setRemainingTime('termDateDock2', fn(float $value) => $orbitalBase->setRemainingTimeDock2($value)); - $setRemainingTime('termDateDock3', fn(float $value) => $orbitalBase->setRemainingTimeDock3($value)); - - $orbitalBase->setRoutesNumber($data['routesNumber']); - return $orbitalBase; - } -} diff --git a/system/Modules/Athena/Repository/RecyclingLogRepository.php b/system/Modules/Athena/Repository/RecyclingLogRepository.php deleted file mode 100644 index 463f9c29c..000000000 --- a/system/Modules/Athena/Repository/RecyclingLogRepository.php +++ /dev/null @@ -1,139 +0,0 @@ -connection->prepare( - 'SELECT rl.* FROM recyclingLog rl - INNER JOIN recyclingMission rm ON rm.id = rl.rRecycling - INNER JOIN place p ON p.id = rm.rBase - WHERE p.id = :base_id - ORDER BY rl.dLog DESC' - ); - $statement->execute(['base_id' => $baseId]); - $data = []; - while ($row = $statement->fetch()) { - $data[] = $this->format($row); - } - return $data; - } - - public function insert($recyclingLog) - { - $statement = $this->connection->prepare( - 'INSERT INTO - recyclingLog(rRecycling, resources, credits, ship0, ship1, ship2, ship3, ship4, ship5, ship6, ship7, - ship8, ship9, ship10, ship11, dLog) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' - ); - $statement->execute(array( - $recyclingLog->rRecycling, - $recyclingLog->resources, - $recyclingLog->credits, - $recyclingLog->ship0, - $recyclingLog->ship1, - $recyclingLog->ship2, - $recyclingLog->ship3, - $recyclingLog->ship4, - $recyclingLog->ship5, - $recyclingLog->ship6, - $recyclingLog->ship7, - $recyclingLog->ship8, - $recyclingLog->ship9, - $recyclingLog->ship10, - $recyclingLog->ship11, - $recyclingLog->dLog - )); - $recyclingLog->id = $this->connection->lastInsertId(); - } - - public function update($recyclingLog) - { -// $statement = $this->connection->prepare( -// 'UPDATE recyclingLog SET -// rRecycling = ?, -// resources = ?, -// credits = ?, -// ship0 = ?, -// ship1 = ?, -// ship2 = ?, -// ship3 = ?, -// ship4 = ?, -// ship5 = ?, -// ship6 = ?, -// ship7 = ?, -// ship8 = ?, -// ship9 = ?, -// ship10 = ?, -// ship11 = ?, -// dLog = ? -// WHERE id = ?'); -// $statement->execute(array( -// $recyclingLog->rRecycling, -// $recyclingLog->resources, -// $recyclingLog->credits, -// $recyclingLog->ship0, -// $recyclingLog->ship1, -// $recyclingLog->ship2, -// $recyclingLog->ship3, -// $recyclingLog->ship4, -// $recyclingLog->ship5, -// $recyclingLog->ship6, -// $recyclingLog->ship7, -// $recyclingLog->ship8, -// $recyclingLog->ship9, -// $recyclingLog->ship10, -// $recyclingLog->ship11, -// $recyclingLog->dLog, -// $recyclingLog->id -// )); - } - - public function remove($recyclingLog) - { - $statement = $this->connection->prepare('DELETE FROM recyclingLog WHERE id = :id'); - $statement->execute(['id' => $recyclingLog->id]); - } - - public function removeMissionLogs($recyclingMissionId) - { - $statement = $this->connection->prepare('DELETE FROM recyclingLog WHERE rRecycling = :mission_id'); - $statement->execute(['mission_id' => $recyclingMissionId]); - } - - public function format($data) - { - $recyclingLog = new RecyclingLog(); - - $recyclingLog->id = (int) $data['id']; - $recyclingLog->rRecycling = (int) $data['rRecycling']; - $recyclingLog->resources = (int) $data['resources']; - $recyclingLog->credits = (int) $data['credits']; - $recyclingLog->ship0 = (int) $data['ship0']; - $recyclingLog->ship1 = (int) $data['ship1']; - $recyclingLog->ship2 = (int) $data['ship2']; - $recyclingLog->ship3 = (int) $data['ship3']; - $recyclingLog->ship4 = (int) $data['ship4']; - $recyclingLog->ship5 = (int) $data['ship5']; - $recyclingLog->ship6 = (int) $data['ship6']; - $recyclingLog->ship7 = (int) $data['ship7']; - $recyclingLog->ship8 = (int) $data['ship8']; - $recyclingLog->ship9 = (int) $data['ship9']; - $recyclingLog->ship10 = (int) $data['ship10']; - $recyclingLog->ship11 = (int) $data['ship11']; - $recyclingLog->dLog = $data['dLog']; - - return $recyclingLog; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/RecyclingMissionRepository.php b/system/Modules/Athena/Repository/RecyclingMissionRepository.php deleted file mode 100644 index 13a21d593..000000000 --- a/system/Modules/Athena/Repository/RecyclingMissionRepository.php +++ /dev/null @@ -1,188 +0,0 @@ -connection->prepare( - "SELECT rm.*, - p.typeOfPlace AS typeOfPlace, - p.position AS position, - p.population AS population, - p.coefResources AS coefResources, - p.coefHistory AS coefHistory, - p.resources AS resources, - p.rSystem AS systemId, - s.xPosition AS xPosition, - s.yPosition AS yPosition, - s.typeOfSystem AS typeOfSystem, - s.rSector AS sectorId - FROM recyclingMission AS rm - LEFT JOIN place AS p - ON rm.rTarget = p.id - LEFT JOIN system AS s - ON p.rSystem = s.id $clause" - ); - $statement->execute($parameters); - return $statement; - } - - public function get($id) - { - if (($rm = $this->unitOfWork->getObject(RecyclingMission::class, $id)) !== null) { - return $rm; - } - $statement = $this->select('WHERE rm.id = :id', ['id' => $id]); - if (($row = $statement->fetch()) === false) { - return null; - } - $recyclingMission = $this->format($row); - $this->unitOfWork->addObject($recyclingMission); - return $recyclingMission; - } - - public function getAll() - { - $statement = $this->select(); - - $data = []; - while ($row = $statement->fetch()) { - if (($rm = $this->unitOfWork->getObject(RecyclingMission::class, (int) $row['id'])) !== null) { - $data[] = $rm; - continue; - } - $recyclingMission = $this->format($row); - $this->unitOfWork->addObject($recyclingMission); - $data[] = $recyclingMission; - } - return $data; - } - - public function getBaseMissions($baseId) - { - $statement = $this->select('WHERE rm.rBase = :base_id', ['base_id' => $baseId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($rm = $this->unitOfWork->getObject(RecyclingMission::class, (int) $row['id'])) !== null) { - $data[] = $rm; - continue; - } - $recyclingMission = $this->format($row); - $this->unitOfWork->addObject($recyclingMission); - $data[] = $recyclingMission; - } - return $data; - } - - public function getBaseActiveMissions($baseId) - { - $statement = $this->select( - 'WHERE rm.rBase = :base_id AND rm.statement IN (' . implode(',', [RecyclingMission::ST_ACTIVE, RecyclingMission::ST_BEING_DELETED]) . ')', - ['base_id' => $baseId] - ); - - $data = []; - while ($row = $statement->fetch()) { - if (($rm = $this->unitOfWork->getObject(RecyclingMission::class, (int) $row['id'])) !== null) { - $data[] = $rm; - continue; - } - $recyclingMission = $this->format($row); - $this->unitOfWork->addObject($recyclingMission); - $data[] = $recyclingMission; - } - return $data; - } - - public function insert($recyclingMission) - { - $statement = $this->connection->prepare( - 'INSERT INTO - recyclingMission(rBase, rTarget, cycleTime, recyclerQuantity, addToNextMission, uRecycling, statement) - VALUES(?, ?, ?, ?, ?, ?, ?)' - ); - $statement->execute(array( - $recyclingMission->rBase, - $recyclingMission->rTarget, - $recyclingMission->cycleTime, - $recyclingMission->recyclerQuantity, - $recyclingMission->addToNextMission, - $recyclingMission->uRecycling, - $recyclingMission->statement - )); - $recyclingMission->id = $this->connection->lastInsertId(); - } - - public function update($recyclingMission) - { - $statement = $this->connection->prepare( - 'UPDATE recyclingMission SET - rBase = ?, - rTarget = ?, - cycleTime = ?, - recyclerQuantity = ?, - addToNextMission = ?, - uRecycling = ?, - statement = ? - WHERE id = ?'); - $statement->execute(array( - $recyclingMission->rBase, - $recyclingMission->rTarget, - $recyclingMission->cycleTime, - $recyclingMission->recyclerQuantity, - $recyclingMission->addToNextMission, - $recyclingMission->uRecycling, - $recyclingMission->statement, - $recyclingMission->id - )); - } - - public function remove($recyclingMission) - { - $statement = $this->connection->prepare('DELETE FROM recyclingMission WHERE id = :id'); - $statement->execute(['id' => $recyclingMission->id]); - } - - public function removeBaseMissions($baseId) - { - $statement = $this->connection->prepare( - 'DELETE rm, rl FROM recyclingMission rm INNER JOIN recyclingLog rl ON rl.rRecycling = rm.id WHERE rm.rBase = :base_id' - ); - $statement->execute(['base_id' => $baseId]); - } - - public function format($data) - { - $recyclingMission = new RecyclingMission(); - - $recyclingMission->id = (int) $data['id']; - $recyclingMission->rBase = (int) $data['rBase']; - $recyclingMission->rTarget = (int) $data['rTarget']; - $recyclingMission->cycleTime = $data['cycleTime']; - $recyclingMission->recyclerQuantity = (int) $data['recyclerQuantity']; - $recyclingMission->addToNextMission = (int) $data['addToNextMission']; - $recyclingMission->uRecycling = $data['uRecycling']; - $recyclingMission->statement = (int) $data['statement']; - - $recyclingMission->typeOfPlace = (int) $data['typeOfPlace']; - $recyclingMission->position = (int) $data['position']; - $recyclingMission->population = (int) $data['population']; - $recyclingMission->coefResources = (int) $data['coefResources']; - $recyclingMission->coefHistory = (int) $data['coefHistory']; - $recyclingMission->resources = (int) $data['resources']; - $recyclingMission->systemId = (int) $data['systemId']; - $recyclingMission->xSystem = (int) $data['xPosition']; - $recyclingMission->ySystem = (int) $data['yPosition']; - $recyclingMission->typeOfSystem = (int) $data['typeOfSystem']; - $recyclingMission->sectorId = (int) $data['sectorId']; - - return $recyclingMission; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/ShipQueueRepository.php b/system/Modules/Athena/Repository/ShipQueueRepository.php deleted file mode 100644 index d095d9943..000000000 --- a/system/Modules/Athena/Repository/ShipQueueRepository.php +++ /dev/null @@ -1,169 +0,0 @@ -unitOfWork->getObject(ShipQueue::class, $id)) !== null) { - return $sq; - } - $statement = $this->connection->prepare('SELECT * FROM orbitalBaseShipQueue WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $shipQueue = $this->format($row); - $this->unitOfWork->addObject($shipQueue); - return $shipQueue; - } - - /** - * @return array - */ - public function getAll() - { - $statement = $this->connection->query("SELECT * FROM orbitalBaseShipQueue"); - - $data = []; - while($row = $statement->fetch()) { - if (($sq = $this->unitOfWork->getObject(ShipQueue::class, $row['id'])) !== null) { - $data[] = $sq; - continue; - } - $shipQueue = $this->format($row); - $this->unitOfWork->addObject($shipQueue); - $data[] = $shipQueue; - } - return $data; - } - - /** - * @param int $baseId - * @return array - */ - public function getBaseQueues($baseId) - { - $statement = $this->connection->prepare("SELECT * FROM orbitalBaseShipQueue WHERE rOrbitalBase = :base_id"); - $statement->execute(['base_id' => $baseId]); - - $data = []; - while($row = $statement->fetch()) { - if (($sq = $this->unitOfWork->getObject(ShipQueue::class, $row['id'])) !== null) { - $data[] = $sq; - continue; - } - $shipQueue = $this->format($row); - $this->unitOfWork->addObject($shipQueue); - $data[] = $shipQueue; - } - return $data; - } - - /** - * @param int $baseId - * @param int $dockType - * @return array - */ - public function getByBaseAndDockType($baseId, $dockType) - { - $statement = $this->connection->prepare("SELECT * FROM orbitalBaseShipQueue WHERE rOrbitalBase = :base_id AND dockType = :dock_type ORDER BY dEnd"); - $statement->execute(['base_id' => $baseId, 'dock_type' => $dockType]); - - $data = []; - while($row = $statement->fetch()) { - if (($sq = $this->unitOfWork->getObject(ShipQueue::class, $row['id'])) !== null) { - $data[] = $sq; - continue; - } - $shipQueue = $this->format($row); - $this->unitOfWork->addObject($shipQueue); - $data[] = $shipQueue; - } - return $data; - } - - /** - * @param ShipQueue $shipQueue - */ - public function insert($shipQueue) - { - $statement = $this->connection->prepare('INSERT INTO - orbitalBaseShipQueue(rOrbitalBase, dockType, shipNumber, quantity, dStart, dEnd) - VALUES(?, ?, ?, ?, ?, ?)'); - $statement->execute(array( - $shipQueue->rOrbitalBase, - $shipQueue->dockType, - $shipQueue->shipNumber, - $shipQueue->quantity, - $shipQueue->dStart, - $shipQueue->dEnd - )); - - $shipQueue->id = $this->connection->lastInsertId(); - } - - /** - * @param ShipQueue $shipQueue - */ - public function update($shipQueue) - { - $statement = $this->connection->prepare('UPDATE orbitalBaseShipQueue - SET id = ?, - rOrbitalBase = ?, - dockType = ?, - shipNumber = ?, - quantity = ?, - dStart = ?, - dEnd = ? - WHERE id = ?'); - $statement->execute(array( - $shipQueue->id, - $shipQueue->rOrbitalBase, - $shipQueue->dockType, - $shipQueue->shipNumber, - $shipQueue->quantity, - $shipQueue->dStart, - $shipQueue->dEnd, - $shipQueue->id - )); - } - - /** - * @param ShipQueue $shipQueue - */ - public function remove($shipQueue) - { - $statement = $this->connection->prepare('DELETE FROM orbitalBaseShipQueue WHERE id = ?'); - $statement->execute(array($shipQueue->id)); - } - - /** - * @param array $data - * @return ShipQueue - */ - public function format($data) - { - $shipQueue = new ShipQueue(); - - $shipQueue->id = (int) $data['id']; - $shipQueue->rOrbitalBase = (int) $data['rOrbitalBase']; - $shipQueue->dockType = (int) $data['dockType']; - $shipQueue->shipNumber = (int) $data['shipNumber']; - $shipQueue->quantity = (int) $data['quantity']; - $shipQueue->dStart = $data['dStart']; - $shipQueue->dEnd = $data['dEnd']; - - return $shipQueue; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Repository/TransactionRepository.php b/system/Modules/Athena/Repository/TransactionRepository.php deleted file mode 100644 index a27b72caf..000000000 --- a/system/Modules/Athena/Repository/TransactionRepository.php +++ /dev/null @@ -1,266 +0,0 @@ -connection->prepare( - 'SELECT t.*, - play.name AS playerName, - play.rColor AS playerColor, - ob.name AS placeName, - s.rSector AS sector, - se.rColor AS sectorColor, - p.rSystem AS rSystem, - p.position AS positionInSystem, - s.xPosition AS xSystem, - s.yPosition AS ySystem, - c.name AS commanderName, - c.level AS commanderLevel, - c.palmares AS commanderVictory, - c.experience AS commanderExperience, - c.avatar as commanderAvatar - FROM transaction AS t - LEFT JOIN player AS play ON t.rPlayer = play.id - LEFT JOIN orbitalBase AS ob ON t.rPlace = ob.rPlace - LEFT JOIN place AS p ON t.rPlace = p.id - LEFT JOIN system AS s ON p.rSystem = s.id - LEFT JOIN sector AS se ON s.rSector = se.id - LEFT JOIN commander AS c ON t.identifier = c.id - ' . $clause - ); - $statement->execute($parameters); - return $statement; - } - - public function get($id) - { - if (($t = $this->unitOfWork->getObject(Transaction::class, $id)) !== null) { - return $t; - } - $query = $this->select('WHERE t.id = :id', ['id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - $transaction = $this->format($row); - $this->unitOfWork->addObject($transaction); - return $transaction; - } - - /** - * @param int $type - * @param int $statement - * @param int $limit - * @return array - */ - public function getLastCompletedTransaction($type) - { - $query = $this->select('WHERE t.type = :type AND t.statement = ' . Transaction::ST_COMPLETED . ' ORDER BY t.dValidation DESC LIMIT 1', [ - 'type' => $type - ]); - if (($row = $query->fetch()) === false) { - return null; - } - if (($t = $this->unitOfWork->getObject(Transaction::class, $row['id'])) !== null) { - return $t; - } - $transaction = $this->format($row); - $this->unitOfWork->addObject($transaction); - return $transaction; - } - - /** - * @param int $type - * @return array - */ - public function getProposedTransactions($type) - { - $query = $this->select('WHERE t.type = :type AND t.statement = ' . Transaction::ST_PROPOSED . ' ORDER BY t.dPublication DESC LIMIT 20', [ - 'type' => $type - ]); - - $data = []; - while($row = $query->fetch()) { - if (($t = $this->unitOfWork->getObject(Transaction::class, $row['id'])) !== null) { - $data[] = $t; - continue; - } - $transaction = $this->format($row); - $this->unitOfWork->addObject($transaction); - $data[] = $transaction; - } - return $data; - } - - /** - * @param int $playerId - * @param int $type - * @return array - */ - public function getPlayerPropositions($playerId, $type) - { - $query = $this->select('WHERE t.rPlayer = :player_id AND t.type = :type AND t.statement = ' . Transaction::ST_PROPOSED, [ - 'player_id' => $playerId, - 'type' => $type - ]); - - $data = []; - while($row = $query->fetch()) { - if (($t = $this->unitOfWork->getObject(Transaction::class, $row['id'])) !== null) { - $data[] = $t; - continue; - } - $transaction = $this->format($row); - $this->unitOfWork->addObject($transaction); - $data[] = $transaction; - } - return $data; - } - - /** - * @param int $placeId - * @return array - */ - public function getBasePropositions($placeId) - { - $query = $this->select('WHERE t.rPlace = :place_id AND t.statement = ' . Transaction::ST_PROPOSED, [ - 'place_id' => $placeId - ]); - - $data = []; - while($row = $query->fetch()) { - if (($t = $this->unitOfWork->getObject(Transaction::class, $row['id'])) !== null) { - $data[] = $t; - continue; - } - $transaction = $this->format($row); - $this->unitOfWork->addObject($transaction); - $data[] = $transaction; - } - return $data; - } - - /** - * @param int $transactionType - * @return mixed - */ - public function getExchangeRate($transactionType) { - $statement = $this->connection->prepare( - 'SELECT currentRate - FROM transaction - WHERE type = ? AND statement = ? - ORDER BY dValidation DESC - LIMIT 1' - ); - $statement->execute(array($transactionType, Transaction::ST_COMPLETED)); - return $statement->fetch()['currentRate']; - } - - public function insert($transaction) - { - $statement = $this->connection->prepare('INSERT INTO - transaction(rPlayer, rPlace, type, quantity, identifier, price, commercialShipQuantity, statement, dPublication, dValidation, currentRate) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $statement->execute(array( - $transaction->rPlayer, - $transaction->rPlace, - $transaction->type, - $transaction->quantity, - $transaction->identifier, - $transaction->price, - $transaction->commercialShipQuantity, - $transaction->statement, - $transaction->dPublication, - $transaction->dValidation, - $transaction->currentRate - )); - $transaction->id = $this->connection->lastInsertId(); - } - - public function update($transaction) - { - $statement = $this->connection->prepare( - 'UPDATE transaction - SET id = ?, - rPlayer = ?, - rPlace = ?, - type = ?, - quantity = ?, - identifier = ?, - price = ?, - commercialShipQuantity = ?, - statement = ?, - dPublication = ?, - dValidation = ?, - currentRate = ? - WHERE id = ?'); - $statement->execute(array( - $transaction->id, - $transaction->rPlayer, - $transaction->rPlace, - $transaction->type, - $transaction->quantity, - $transaction->identifier, - $transaction->price, - $transaction->commercialShipQuantity, - $transaction->statement, - $transaction->dPublication, - $transaction->dValidation, - $transaction->currentRate, - $transaction->id - )); - } - - public function remove($transaction) - { - $statement = $this->connection->prepare('DELETE FROM transaction WHERE id = ?'); - $statement->execute(array($transaction->id)); - } - - /** - * @param array $data - * @return Transaction - */ - public function format($data) - { - $transaction = new Transaction(); - - $transaction->id = (int) $data['id']; - $transaction->rPlayer = (int) $data['rPlayer']; - $transaction->rPlace = (int) $data['rPlace']; - $transaction->type = $data['type']; - $transaction->quantity = $data['quantity']; - $transaction->identifier = $data['identifier']; - $transaction->price = $data['price']; - $transaction->shipQuantity = $data['commercialShipQuantity']; - $transaction->statement = $data['statement']; - $transaction->dPublication = $data['dPublication']; - $transaction->dValidation = $data['dValidation']; - $transaction->currentRate = $data['currentRate']; - - $transaction->playerName = $data['playerName']; - $transaction->playerColor = $data['playerColor']; - $transaction->placeName = $data['placeName']; - $transaction->sector = $data['sector']; - $transaction->sectorColor = $data['sectorColor']; - $transaction->rSystem = $data['rSystem']; - $transaction->positionInSystem = $data['positionInSystem']; - $transaction->xSystem = $data['xSystem']; - $transaction->ySystem = $data['ySystem']; - - $transaction->commanderName = $data['commanderName']; - $transaction->commanderLevel = $data['commanderLevel']; - $transaction->commanderVictory = $data['commanderVictory']; - $transaction->commanderExperience = $data['commanderExperience']; - $transaction->commanderAvatar = $data['commanderAvatar']; - - return $transaction; - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Resource/OrbitalBaseResource.php b/system/Modules/Athena/Resource/OrbitalBaseResource.php deleted file mode 100644 index fb0fc5a3c..000000000 --- a/system/Modules/Athena/Resource/OrbitalBaseResource.php +++ /dev/null @@ -1,479 +0,0 @@ - 'generator', - 'column' => 'levelGenerator', - 'frenchName' => 'Générateur', - 'imageLink' => 'generator', - 'level' => array( - // (time, resourcePrice, points, queues) - array(20, 100, 2, 2), - array(28, 137, 2, 2), - array(39, 188, 2, 2), - array(55, 257, 3, 2), - array(77, 352, 3, 2), - array(108, 483, 3, 3), - array(151, 661, 4, 3), - array(211, 900, 4, 3), - array(295, 1200, 5, 3), - array(413, 1600, 5, 3), - array(578, 2200, 6, 3), - array(809, 3000, 6, 3), - array(1133, 4100, 7, 3), - array(1586, 5600, 8, 3), - array(2220, 7700, 9, 3), - array(3108, 10000, 10, 4), - array(4351, 13000, 11, 4), - array(6091, 16000, 12, 4), - array(8527, 20000, 14, 4), - array(9810, 25000, 15, 4), - array(11280, 31000, 17, 4), - array(12970, 39000, 19, 4), - array(14920, 49000, 21, 4), - array(17160, 61000, 23, 4), - array(19730, 76000, 26, 4), - array(22690, 87000, 28, 5), - array(26090, 100000, 32, 5), - array(30000, 115000, 35, 5), - array(34500, 132000, 39, 5), - array(39680, 152000, 43, 5), - array(45630, 175000, 48, 5), - array(52470, 201000, 54, 5), - array(60340, 231000, 60, 5), - array(69390, 266000, 66, 5), - array(79800, 306000, 74, 5), - array(91770, 352000, 82, 6), - array(105540, 405000, 91, 6), - array(121370, 466000, 102, 6), - array(139580, 536000, 113, 6), - array(160520, 616000, 126, 6) - ), - 'maxLevel' => array(30, 40, 40, 40), - 'description' => 'le Générateur est le centre névralgique de votre base orbitale. C\'est la super-structure qui permet de construire les autres modules nécessaires à la bonne marche de votre planète. Il vous permet de construire les autres bâtiments ainsi que d\'avoir un aperçu rapide du développement de votre base. De plus, aucun bâtiment ne peut avoir un niveau supérieur à celui de votre générateur.

' - ), - array( - 'name' => 'refinery', - 'column' => 'levelRefinery', - 'frenchName' => 'Raffinerie', - 'imageLink' => 'refinery', - 'level' => array( - // (time, resourcePrice, points, refiningCoefficient) - array(11, 50, 1, 8), - array(15, 70, 1, 9), - array(21, 100, 1, 10.2), - array(29, 140, 1, 11.5), - array(41, 200, 2, 13), - array(57, 280, 2, 14.7), - array(80, 390, 2, 16.7), - array(110, 550, 2, 18.8), - array(150, 770, 2, 21.3), - array(210, 1080, 3, 24), - array(290, 1510, 3, 27.2), - array(410, 2110, 3, 30.7), - array(570, 2950, 4, 34.7), - array(800, 4130, 4, 39.2), - array(1120, 5780, 5, 44.3), - array(1570, 7200, 5, 50), - array(2200, 9000, 6, 56.5), - array(3080, 11000, 7, 63.9), - array(4310, 14000, 8, 72.2), - array(4960, 18000, 9, 81.6), - array(5700, 23000, 10, 89.7), - array(6560, 29000, 11, 98.3), - array(7540, 36000, 12, 107.3), - array(8670, 45000, 14, 116.9), - array(9970, 56000, 15, 125.1), - array(11470, 64000, 17, 134.9), - array(13190, 74000, 19, 144.3), - array(15170, 85000, 21, 153.5), - array(17450, 98000, 24, 164.1), - array(20070, 113000, 27, 173.5), - array(23080, 130000, 30, 182.7), - array(26540, 150000, 34, 191.8), - array(30520, 173000, 38, 200.9), - array(35100, 199000, 42, 210.3), - array(40370, 229000, 47, 219.4), - array(46430, 252000, 53, 228.6), - array(53390, 277000, 59, 237.3), - array(61400, 305000, 66, 246.9), - array(70610, 336000, 74, 257.4), - array(81200, 370000, 83, 267.3) - ), - 'maxLevel' => array(30, 40, 30, 40), - 'description' => 'La Raffinerie est le bâtiment où l’on traite vos ressources pour en extraire les fractions utilisables. Chaque relève les ressources sont transférées dans le Stockage et sont utilisables. La capacité d’extraction de votre raffinerie dépend du niveau dans lequel elle se situe.

Aucune action directe ne peut être effectuée dans la raffinerie, cependant vous pouvez y voir toutes les informations concernant votre production actuelle et pour les niveaux suivants.' - ), - array( - 'name' => 'dock1', - 'column' => 'levelDock1', - 'frenchName' => 'Chantier Alpha', - 'imageLink' => 'dock1', - 'level' => array( - // (time, resourcePrice, points, queues, storageSpace[en PEV], releasedShip) - array(12, 45, 1, 1, 56, 1), - array(17, 60, 1, 1, 59, 1), - array(24, 80, 1, 1, 62, 1), - array(34, 110, 1, 1, 66, 1), - array(48, 150, 2, 1, 70, 1), - array(67, 210, 2, 2, 76, 1), - array(94, 290, 2, 2, 81, 1), - array(130, 410, 2, 2, 88, 1), - array(180, 570, 2, 2, 95, 2), - array(250, 800, 3, 2, 104, 2), - array(350, 1120, 3, 3, 115, 2), - array(490, 1570, 3, 3, 126, 2), - array(690, 2200, 4, 3, 141, 2), - array(970, 3080, 4, 3, 162, 2), - array(1360, 4310, 5, 3, 183, 2), - array(1900, 5400, 5, 4, 206, 2), - array(2660, 6750, 6, 4, 230, 3), - array(3720, 8000, 7, 4, 255, 3), - array(5210, 10000, 8, 4, 280, 3), - array(5990, 13000, 9, 4, 308, 3), - array(6890, 16000, 10, 5, 336, 3), - array(7920, 20000, 11, 5, 365, 3), - array(9110, 25000, 12, 5, 396, 3), - array(10480, 31000, 14, 5, 427, 3), - array(12050, 39000, 15, 5, 459, 4), - array(13860, 45000, 17, 6, 493, 4), - array(15940, 52000, 19, 6, 528, 4), - array(18330, 60000, 21, 6, 564, 4), - array(21080, 69000, 24, 6, 601, 4), - array(24240, 79000, 27, 6, 638, 4), - array(27880, 91000, 30, 7, 678, 4), - array(32060, 105000, 34, 7, 717, 4), - array(36870, 121000, 38, 7, 757, 5), - array(42400, 139000, 42, 7, 799, 5), - array(48760, 160000, 47, 7, 843, 5), - array(56070, 176000, 53, 8, 886, 5), - array(64480, 194000, 59, 8, 931, 5), - array(74150, 213000, 66, 8, 977, 5), - array(85270, 234000, 74, 8, 1023, 5), - array(98060, 257000, 83, 8, 1071, 6) - ), - 'maxLevel' => array(30, 30, 40, 40), - 'description' => 'Le Chantier Alpha, zone de construction et de stockage des vaisseaux, est votre premier chantier d’assemblage de chasseurs et corvettes. Ces vaisseaux sont les plus petits que vous pourrez construire durant le jeu, mais pas forcément les moins puissants. Chaque type d’appareil dispose de qualités comme de défauts, pensez à bien prendre en compte les aptitudes de chacun.

Le nombre de vaisseaux en stock dans votre chantier est limité, tout comme votre file de construction. Seule l’augmentation du niveau de votre chantier vous donnera la possibilité de stocker et de construire d’avantage.

Le niveau de votre chantier Alpha et votre avancée technologique vous permettront de débloquer et de découvrir les vaisseaux.' - ), - array( - 'name' => 'dock2', - 'column' => 'levelDock2', - 'frenchName' => 'Chantier de Ligne', - 'imageLink' => 'dock2', - 'level' => array( - // (time, resourcePrice, points, queues, storageSpace[en PEV], releasedShip) - array(1000, 2000, 20, 1, 100, 1), - array(1300, 2750, 22, 1, 125, 1), - array(1690, 3750, 25, 1, 150, 1), - array(2197, 5200, 28, 1, 180, 2), - array(2856, 7200, 31, 1, 215, 2), - array(3713, 9800, 34, 2, 250, 2), - array(4827, 13000, 38, 2, 290, 2), - array(6275, 19000, 42, 2, 335, 3), - array(8157, 26000, 47, 2, 385, 3), - array(10604, 35000, 52, 2, 440, 3), - array(15907, 48000, 58, 3, 500, 3), - array(23860, 66000, 64, 3, 565, 4), - array(35790, 91000, 71, 3, 635, 4), - array(53685, 125000, 80, 3, 710, 4), - array(80528, 173000, 88, 3, 790, 4), - array(120792, 237000, 98, 4, 875, 5), - array(181188, 326000, 109, 4, 965, 5), - array(271782, 449000, 122, 4, 1060, 5), - array(407673, 617000, 135, 4, 1160, 5), - array(611509, 849000, 150, 4, 1265, 6) - ), - 'maxLevel' => array(0, 10, 20, 20), - 'description' => 'Le Chantier de Ligne est le deuxième atelier de construction de vaisseaux à votre disposition. Plus grand et plus performant que son cadet le Chantier Alpha, il vous permettra de construire les navettes de type croiseur et destroyer. Ces vaisseaux, plus grands et plus lents que les corvettes et les chasseurs, servent à un autre type de stratégie. Comme pour les petits vaisseaux, les croiseurs et les destroyers disposent d’aptitude propre à certains types de combat, analysez correctement celles-ci pour peaufiner votre stratégie d’attaque ou de défense.

Le nombre de vaisseaux que vous pouvez stocker dans votre Chantier de Ligne est limité comme votre fil de construction. Pensez à former des commandants pour vider vos hangars et renforcer vos escadrilles.', - 'techno' => 1 - ), - array( - 'name' => 'dock3', - 'column' => 'levelDock3', - 'frenchName' => 'Colonne d\'Assemblage', - 'imageLink' => 'dock3', - 'level' => array( - // (time, resourcePrice, points, releasedShip) - array(60000, 200000, 0, 1), - array(78000, 240000, 0, 1), - array(101000, 288000, 0, 1), - array(131000, 346000, 0, 1), - array(170000, 415000, 0, 2), - array(221000, 498000, 0, 2), - array(287000, 598000, 0, 2), - array(373000, 718000, 0, 2), - array(485000, 862000, 0, 2), - array(631000, 1034000,0, 3) - ), - 'maxLevel' => array(0, 0, 0, 10), - 'description' => 'La Colonne d’Assemblage est le troisième atelier de construction d’appareils. Spécifique aux vaisseaux-mères, ce chantier spatial est indispensable à toute tentative de colonisation. Ce chantier titanesque conçu pour fabriquer des vaisseaux de taille quasi-planétaire, vous donnera la possibilité de construire trois types de vaisseaux-mères. Chacun de ces bâtiments spatiaux dispose de quasiment le même nombre d’aptitudes, excepté sa taille. En effet, lorsque vous créez un vaisseau mère de catégorie trois, il disposera de plus de place de construction que ses deux cadets.

La Colonne d’Assemblage est la plus grosse plateforme que vous pouvez construire sur votre base. Elle est également la plus couteuse.', - 'techno' => 2 - ), - array( - 'name' => 'technosphere', - 'column' => 'levelTechnosphere', - 'frenchName' => 'Technosphère', - 'imageLink' => 'technosphere', - 'level' => array( - // (time, resourcePrice, points, queues) - array(10, 100, 1, 2), - array(14, 140, 1, 2), - array(20, 200, 1, 2), - array(28, 280, 1, 2), - array(39, 390, 2, 2), - array(55, 550, 2, 3), - array(77, 770, 2, 3), - array(110, 1080, 2, 3), - array(150, 1510, 2, 3), - array(210, 2110, 3, 3), - array(290, 2950, 3, 3), - array(410, 4130, 3, 3), - array(570, 5780, 4, 3), - array(800, 8090, 4, 3), - array(1120, 11330, 5, 3), - array(1570, 14200, 5, 4), - array(2200, 17750, 6, 4), - array(3080, 22000, 7, 4), - array(4310, 28000, 8, 4), - array(4960, 35000, 9, 4), - array(5700, 44000, 10, 4), - array(6560, 55000, 11, 4), - array(7540, 69000, 12, 4), - array(8670, 86000, 14, 4), - array(9970, 108000, 15, 4), - array(11470,124000, 17, 5), - array(13190,143000, 19, 5), - array(15170,164000, 21, 5), - array(17450,189000, 24, 5), - array(20070,217000, 27, 5), - array(23080,250000, 30, 5), - array(26540,288000, 34, 5), - array(30520,331000, 38, 5), - array(35100,381000, 42, 5), - array(40370,438000, 47, 5), - array(46430,482000, 53, 6), - array(53390,530000, 59, 6), - array(61400,583000, 66, 6), - array(70610,641000, 74, 6), - array(81200,705000, 83, 6) - ), - 'maxLevel' => array(30, 40, 40, 40), - 'description' => 'La Technosphère, véritable forge de votre base orbitale, vous permettra de donner des bonus à vos bâtiments, vaisseaux et autre.

Cette bâtisse de forme arrondie obtiendra au fil du temps et en fonction du nombre de crédits investis dans votre université, un nombre de technologies à développer. Chaque technologie développée vous permettra d’une part de donner des bonus à certaines de vos constructions et d’autre part de débloquer vos vaisseaux et bâtiments.

Comme dans le chantier Alpha, le Générateur, etc… une liste de développement est en place. Cette liste de développement est, bien évidemment, limitée.' - ), - array( - 'name' => 'commercialPlateforme', - 'column' => 'levelCommercialPlateforme', - 'frenchName' => 'Plateforme Commerciale', - 'imageLink' => 'commercialplateforme', - 'level' => array( - // (time, resourcePrice, points, nbCommercialShip) - array(60, 2000, 10, 5), - array(84, 2460, 22, 10), - array(118, 3000, 34, 25), - array(165, 3700, 46, 45), - array(231, 4600, 58, 100), - array(323, 5600, 70, 180), - array(452, 6900, 82, 250), - array(630, 8500, 94, 400), - array(880, 11000, 106, 570), - array(1230, 13000, 118, 800), - array(1720, 16000, 130, 1200), - array(2410, 19000, 142, 1500), - array(3370, 24000, 154, 1800), - array(4720, 29000, 166, 2100), - array(6610, 36000, 178, 2300), - array(9250, 45000, 190, 2450), - array(12950, 55000, 202, 2550), - array(18130, 68000, 214, 2700), - array(25380, 83000, 226, 2850), - array(29190, 102000, 238, 3000), - array(33570, 126000, 250, 3100), - array(38610, 155000, 262, 3200), - array(44400, 190000, 274, 3300), - array(51060, 234000, 286, 3400), - array(58720, 288000, 298, 3450), - array(67530, 354000, 310, 3500), - array(77660, 436000, 322, 3550), - array(89310, 535000, 334, 3600), - array(102710, 658000, 346, 3650), - array(118120, 810000, 358, 3700) - ), - 'maxLevel' => array(20, 30, 20, 30), - 'description' => 'La Plateforme Commerciale est véritablement la place de commerce entre les joueurs d’Asylamba. En effet, cette plateforme vous permettra de vendre ou d’acheter des vaisseaux, des commandants ou encore des ressources.

Vous devrez fixer vous-même le prix des marchandises que vous souhaitez vendre, il faudra donc faire attention aux tendances du marché, de manière à être sûr de vendre vos produits. De plus, toute vente ou achat est soumis à deux taxes, une d\'achat et une de vente. Prenez donc ces taxes en compte en fixant vos prix. Le montant des taxes revient aux factions concernées.', - 'techno' => 0 - ), - array( - 'name' => 'storage', - 'column' => 'levelStorage', - 'frenchName' => 'Stockage', - 'imageLink' => 'storage', - 'level' => array( - // (time, resourcePrice, points, storageSpace) - array(9, 45, 1, 3700), - array(13, 60, 1, 3800), - array(18, 80, 1, 4000), - array(25, 110, 1, 4400), - array(35, 150, 2, 5200), - array(49, 210, 2, 6200), - array(69, 290, 2, 7400), - array(100, 410, 2, 8900), - array(140, 570, 2, 10700), - array(200, 800, 3, 12800), - array(280, 1120, 3, 15400), - array(390, 1570, 3, 18500), - array(550, 2200, 4, 22200), - array(770, 3080, 4, 26600), - array(1080, 4310, 5, 31900), - array(1510, 5400, 5, 38300), - array(2110, 6750, 6, 46000), - array(2950, 8000, 7, 55200), - array(4130, 10000, 8, 66200), - array(4750, 13000, 9, 79400), - array(5460, 16000, 10, 95300), - array(6280, 20000, 11, 114400), - array(7220, 25000, 12, 137300), - array(8300, 31000, 14, 164800), - array(9550, 39000, 15, 197800), - array(10980, 45000, 17, 237400), - array(12630, 52000, 19, 284900), - array(14520, 60000, 21, 341900), - array(16700, 69000, 24, 410300), - array(19210, 79000, 27, 492400), - array(22090, 91000, 30, 590900), - array(25400, 105000, 34, 709100), - array(29210, 121000, 38, 850900), - array(33590, 139000, 42, 1021100), - array(38630, 160000, 47, 1225300), - array(44420, 176000, 53, 1715400), - array(51080, 194000, 59, 2401600), - array(58740, 213000, 66, 3362200), - array(67550, 234000, 74, 4707100), - array(77680, 257000, 83, 6589900) - ), - 'maxLevel' => array(30, 40, 40, 40), - 'description' => 'Comme son nom l’indique, le Stockage est le lieu où vous allez emmagasiner vos ressources. Il vous sera utile pour économiser des ressources dans le but de construire certains bâtiments ou vaisseaux. -

Notez qu\'il est possible de dépasser de 25\'000 le stockage maximal dans certains cas (comme la réception de ressources ou l\'annulation d\'une construction).' - ), - array( - 'name' => 'recycling', - 'column' => 'levelRecycling', - 'frenchName' => 'Centre de Recyclage', - 'imageLink' => 'recycling', - 'level' => array( - // (time, resourcePrice, points, nbRecyclers) - array(55, 1600, 10, 1), - array(77, 1970, 11, 2), - array(108, 2420, 12, 4), - array(151, 2980, 13, 7), - array(211, 3660, 15, 11), - array(295, 4500, 16, 16), - array(413, 5500, 18, 22), - array(580, 6820, 19, 29), - array(810, 8380, 21, 37), - array(1130, 10000, 24, 46), - array(1580, 13000, 26, 56), - array(2210, 16000, 29, 67), - array(3090, 19000, 31, 79), - array(4330, 24000, 35, 92), - array(6060, 29000, 38, 106), - array(8480, 36000, 42, 121), - array(11870, 44000, 46, 137), - array(16620, 54000, 51, 154), - array(23270, 66000, 56, 172), - array(26760, 82000, 61, 191), - array(30770, 100000, 67, 211), - array(35390, 124000, 74, 232), - array(40700, 144000, 81, 254), - array(46810, 167000, 90, 277), - array(53830, 192000, 98, 301), - array(61900, 233000, 108,326), - array(71190, 278000, 119,352), - array(81870, 328000, 131,379), - array(94150, 397000, 144,407), - array(108270, 487000, 159,436) - ), - 'maxLevel' => array(20, 20, 30, 30), - 'description' => 'Le Centre de Recyclage est un bâtiment très intéressant économiquement parlant. En effet, il vous permettra d\'avoir un revenu supplémentaire en recyclant des lieux autour de vous.

Il est possible de lancer des missions de recyclage composées de plusieurs recycleurs, ou collecteurs, sur des lieux tels que des champs de ruines, des ceintures d\'astéroïdes, des géantes gazeuses ou des poches de gaz. Le but étant l\'extraction et le forage de matériau pour en retirer des ressources, des crédits et même des vaisseaux.

Chaque type de lieu est riche en une ou plusieurs de ces denrées. Attention, les denrées sont épuisables.', - 'techno' => 3 - - - ), - array( - 'name' => 'spatioport', - 'column' => 'levelSpatioport', - 'frenchName' => 'Spatioport', - 'imageLink' => 'spatioport', - 'level' => array( - // (time, resourcePrice, points, commercialRouteQuantity) - array(100, 2500, 20, 1), - array(140, 3250, 22, 1), - array(196, 4220, 25, 1), - array(274, 5490, 28, 2), - array(384, 7140, 31, 2), - array(538, 9280, 34, 2), - array(753, 12000, 38, 3), - array(1054, 16000, 42, 3), - array(1476, 20000, 47, 3), - array(2066, 27000, 52, 4), - array(3099, 34000, 58, 5), - array(4649, 45000, 64, 5), - array(6973, 58000, 71, 6), - array(10460, 76000, 80, 6), - array(15689, 98000, 88, 7), - array(23534, 128000, 98, 7), - array(35301, 166000, 109,8), - array(52952, 216000, 122,8), - array(79428, 281000, 135,9), - array(119142, 365000, 150,10), - ), - 'maxLevel' => array(0, 20, 10, 20), - 'description' => 'Le Spatio-Port, véritable plaque tournante du commerce dans votre domaine, permet, en fonction de sa taille, de créer et de gérer des routes commerciales sur le long terme avec vos partenaires. Pour valider une route commerciale vous devez la proposer et l’autre joueur doit l’accepter.

Une route commerciale génère des revenus chez les deux parties. Plus la route est longue, plus le prix pour la mettre en place sera élevé. Le rendement d\'une route est également proportionnel à la distance, mais il est par contre plafonné aux environs de 100 années lumières. Il faudra donc plus de temps pour rentabiliser une très longue route.
Les routes commerciales entre deux secteurs différents ainsi qu’avec des joueurs non-alliés ont tendance à générer plus de revenus.', - 'techno' => 4 - ) - ); -} diff --git a/system/Modules/Athena/Resource/SchoolClassResource.php b/system/Modules/Athena/Resource/SchoolClassResource.php deleted file mode 100644 index ce6a34030..000000000 --- a/system/Modules/Athena/Resource/SchoolClassResource.php +++ /dev/null @@ -1,49 +0,0 @@ - 2500, - 'minSize' => 1, - 'maxSize' => 1, - 'minExp' => 100, - 'maxExp' => 210, - 'point' => 5, - 'title' => 'Engager un officier nul'), - array( - 'credit' => 2500, - 'minSize' => 1, - 'maxSize' => 1, - 'minExp' => 100, - 'maxExp' => 210, - 'point' => 5, - 'title' => 'Engager un officier nul'), - array( - 'credit' => 2500, - 'minSize' => 1, - 'maxSize' => 1, - 'minExp' => 100, - 'maxExp' => 210, - 'point' => 5, - 'title' => 'Engager un officier nul') - ); - - public static function getInfo($i, $info) { - if (in_array($info, array('credit', 'minSize', 'maxSize', 'minExp', 'maxExp', 'point', 'title'))) { - if ($i < self::size()) { - return self::$classes[$i][$info]; - } else { - return FALSE; - } - } else { - throw new ErrorException('info inconnue dans getInfo de SchoolClassResource'); - } - } - - public static function size() { - return count(self::$classes); - } -} \ No newline at end of file diff --git a/system/Modules/Athena/Resource/ShipResource.php b/system/Modules/Athena/Resource/ShipResource.php deleted file mode 100644 index e9e22e397..000000000 --- a/system/Modules/Athena/Resource/ShipResource.php +++ /dev/null @@ -1,272 +0,0 @@ - 'Pégase', - 'name' => 'Chasseur Léger', - 'class' => 0, - 'pev' => 2, - 'life' => 26, - 'speed' => 195, - 'defense' => 1, - 'attack' => array(5), - 'cost' => 7, - 'time' => 500, - 'resourcePrice' => 2800, - 'points' => 3, - 'imageLink' => 'ship0', - 'techno' => 5, - 'description' => 'Un Pégase (aussi appelé chasseur léger) est un petit vaisseau de combat très rapide et très efficace contre les frégates ioniques - Cyclope. Équipé de deux canons mitrailleurs placés sur les côtés de l’appareil, ce vaisseau monoplace est composé d’un alliage carbonique.

Utilisé en grand nombre, cette petite navette peut être décisive dans le déroulement d’une bataille. Cette technique de combat fut mise en place par le commandant Hagar Mosine lors de la célèbre mission K-7, sur Nessor.

Avec des coûts très faibles et une rapidité de production élevée, le Pégase est l’appareil le plus populaire de la galaxie de l’Œil.' - ), - array( - 'codeName' => 'Satyre', - 'name' => 'Chasseur lourd', - 'class' => 0, - 'pev' => 3, - 'life' => 30, - 'speed' => 185, - 'defense' => 5, - 'attack' => array(7), - 'cost' => 5, - 'time' => 570, - 'resourcePrice' => 3500, - 'points' => 4, - 'imageLink' => 'ship1', - 'techno' => 6, - 'description' => 'Grace à sa polyvalence issue d’une construction modulaire, le Satyre est très utile comme vaisseau d’appui. En effet, ce chasseur lourd, mariant vitesse et maniabilité, procure une défense idéale contre les frégates lors de gros combats. Cependant, il est fortement vulnérable contre la puissance de feu des destroyers, nettement plus précise que celle des frégates.

Son fuselage est conçu en deux tronçons d’alliage carbonique. Le premier, allant de l’avant de l’appareil jusqu’à l’arrière du cockpit, est renforcé de manière à protéger au mieux le pilote. La deuxième, plus petite et moins épaisse, formant l’arrière de la navette, sert simplement de réservoir de carburant et de munition.' - ), - array( - 'codeName' => 'Chimère', - 'name' => 'Chasseur multi-tourelle', - 'class' => 0, - 'pev' => 3, - 'life' => 26, - 'speed' => 195, - 'defense' => 3, - 'attack' => array(6, 6), - 'cost' => 25, - 'time' => 850, - 'resourcePrice' => 4420, - 'points' => 6, - 'imageLink' => 'ship4', - 'techno' => 7, - 'description' => 'La Chimère est un vaisseau rapide disposant de trois types d’attaques. La première est un canon mitrailleur double disposé de chaque côté de l’appareil. La deuxième est un canon laser léger placé sur le sommet du cockpit. Le dernier est une pièce lance missile à tête chercheuse fixée sous la navette. Cet armement, pour le moins impressionnant, a été conçu pour lutter contre les vaisseaux de type frégate. Malheureusement, sa maniabilité très précaire n’en fait pas un appareil très efficace contre les vaisseaux du chantier de ligne.' - ), - array( - 'codeName' => 'Sirène', - 'name' => 'Corvette légère', - 'class' => 1, - 'pev' => 5, - 'life' => 65, - 'speed' => 190, - 'defense' => 6, - 'attack' => array(20, 2, 2), - 'cost' => 100, - 'time' => 480, - 'resourcePrice' => 4000, - 'points' => 6, - 'imageLink' => 'ship2', - 'techno' => 8, - 'description' => 'Disposant d’un canon lance missile, la Sirène est très utile pour les attaques rapides. Sa coque de protection avant, composée d’un alliage carbonique, lui offre une forte résistance contre toutes les armes de type canon mitrailleur. En revanche, cet appareil est très vulnérable contre les attaques de type missile.

Cette corvette légère, composé d’un superstrato-réacteur disposé au-dessous de l’appareil, est la plus économique en termes de carburant.' - ), - array( - 'codeName' => 'Dryade', - 'name' => 'Corvette lourde', - 'class' => 1, - 'pev' => 7, - 'life' => 90, - 'speed' => 165, - 'defense' => 23, - 'attack' => array(30), - 'cost' => 58, - 'time' => 1880, - 'resourcePrice' => 8350, - 'points' => 8, - 'imageLink' => 'ship3', - 'techno' => 9, - 'description' => 'La Dryade est un vaisseau de type corvette lourde, armé d’un canon lance missile. Cette appareil puissant et résistant, est particulièrement efficace contre les petits vaisseaux. Composé d’un équipage de trois personnes, la Dryade est également capable de transporter un commando pour toutes missions spéciales ou tentative de colonisations.

Cette navette de débarquement fut utilisée par les forces rebelles Kovhakarh durant la bataille pour la prise de la planète Guaména.' - ), - array( - 'codeName' => 'Méduse', - 'name' => 'Corvette multi-tourelle', - 'class' => 1, - 'pev' => 9, - 'life' => 75, - 'speed' => 145, - 'defense' => 8, - 'attack' => array(20, 12, 12, 12, 12, 7, 7, 7), - 'cost' => 80, - 'time' => 2500, - 'resourcePrice' => 15300, - 'points' => 15, - 'imageLink' => 'ship5', - 'techno' => 10, - 'description' => 'Disposant de deux canons lance missile, d’un canon laser et d’un canon mitrailleur arrière, la Méduse est l’un des seuls vaisseaux légers à disposer d’autant d’armement. Conçu pour lutter contre les attaques massives de chasseurs légers, la Méduse est également redoutable contre les frégates.

La coque protectrice avant de la Méduse est particulièrement résistante, mais cela n’en fait pas un vaisseau invulnérable. Un certain nombre de faiblesses sont facilement distinctes à l’arrière de l’appareil.

Cette navette fut créée à la fin de la grande période de trouble, elle ne fut donc jamais utilisée à grande échelle dans une guerre.' - ), - array( - 'codeName' => 'Griffon', - 'name' => 'Frégate d\'attaque', - 'class' => 2, - 'pev' => 23, - 'life' => 250, - 'speed' => 100, - 'defense' => 40, - 'attack' => array(15, 15, 15, 15), - 'cost' => 68, - 'time' => 3600, - 'resourcePrice' => 40000, - 'points' => 30, - 'imageLink' => 'ship6', - 'techno' => 11, - 'description' => 'La frégate d’attaque Griffon est un vaisseau de guerre de taille moyenne, capable d’assurer plusieurs types de mission : protection de vaisseau mère, surveillance spatiale et défense planétaire. Plus grand et plus puissant que les appareils fabriqués dans le Chantier Alpha, le Griffon dispose de quatre canons laser disposés à chaque extrémité du cockpit.' - ), - array( - 'codeName' => 'Cyclope', - 'name' => 'Frégate ionique', - 'class' => 2, - 'pev' => 45, - 'life' => 320, - 'speed' => 90, - 'defense' => 40, - 'attack' => array(225), - 'cost' => 500, - 'time' => 7200, - 'resourcePrice' => 80000, - 'points' => 80, - 'imageLink' => 'ship7', - 'techno' => 12, - 'description' => 'Disposant de quatre canons ioniques convergeant en un seul faisceau dans le but d’amplifier la puissance du tir, le Cyclope est le vaisseau, toute catégorie confondue, le plus dévastateur de la galaxie de l’Œil.

Cette frégate légère et rapide fut longtemps utilisée par l’ancien Empire pour imposer et asseoir son pouvoir sur les planètes contrebandières. Elle fut également sujet à controverse pour la population impériale de par sa puissance de feu et le nombre de victimes civiles lors de la plupart de ces nombreuses attaques.' - ), - array( - 'codeName' => 'Minotaure', - 'name' => 'Destroyer', - 'class' => 3, - 'pev' => 75, - 'life' => 1200, - 'speed' => 88, - 'defense' => 120, - 'attack' => array(35, 35, 35, 35, 25, 10, 10), - 'cost' => 250, - 'time' => 11400, - 'resourcePrice' => 112000, - 'points' => 70, - 'imageLink' => 'ship8', - 'techno' => 13, - 'description' => 'Le Minotaure, un destroyer de première ligne, est composé d’une coque avant en alliage carbonique capable de résister à la plupart des attaques frontales. Son armement comprend un canon laser de 30 tonnes sur le sommet et de trois tubes lance missile, deux latéraux et un en dessous. Capable de se déplacer à une grande vitesse et disposant d’une coque de protection épaisse, le Minotaure est le vaisseau qui convient le mieux aux attaques de colonisation ou à tous types de défense.

Fleuron de la flotte des Kovahkarh lors des périodes de trouble, il fut malheureusement très vite dépassé durant l’essor du nouvel Empire par le Cerbère.' - ), - array( - 'codeName' => 'Hydre', - 'name' => 'Destroyer missile', - 'class' => 3, - 'pev' => 86, - 'life' => 1050, - 'speed' => 75, - 'defense' => 100, - 'attack' => array(21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21), - 'cost' => 600, - 'time' => 17400, - 'resourcePrice' => 150000, - 'points' => 80, - 'imageLink' => 'ship9', - 'techno' => 14, - 'description' => 'Plus petit que le Minotaure et moins rapide, l’Hydre fut créée dans le but de défendre les populations prudes Cardanienne contre les frappes massives de Pégase Kovahk. En effet, ses vingt canons lance missile disposés sur sa face avant lui donnent un avantage certain dans les attaques compactes de chasseurs. Doté d’une excellente manœuvrabilité pour ce type de vaisseau, l’Hydre est sans doute le destroyer le mieux conçu de l’histoire de la galaxie de l’Œil.' - ), - array( - 'codeName' => 'Cerbère', - 'name' => 'Croiseur', - 'class' => 3, - 'pev' => 82, - 'life' => 1220, - 'speed' => 80, - 'defense' => 135, - 'attack' => array(175, 50, 50, 25, 25, 25, 25, 6, 6, 6), - 'cost' => 700, - 'time' => 15960, - 'resourcePrice' => 208000, - 'points' => 120, - 'imageLink' => 'ship10', - 'techno' => 15, - 'description' => 'Le Cerbère est un grand vaisseau de guerre doté d’un épais blindage, dont l’artillerie principale est composée de deux pièces d’artilleries des plus gros calibres existants. Conçu pour les destructions de masse, les deux principaux canons du Cerbère sont accompagnés de cinq canons lasers longue portée. Ces défenses gargantuesques ont été mises en place dans un premier temps pour assurer une défense planétaire. Cependant, les gouvernements remarquèrent vite que l’utilisation du Cerbère pour les attaques massives était loin d’être inutile.' - ), - array( - 'codeName' => 'Phénix', - 'name' => 'Croiseur lourd', - 'class' => 3, - 'pev' => 84, - 'life' => 1350, - 'speed' => 75, - 'defense' => 150, - 'attack' => array(200, 50, 50, 50, 50, 25, 25, 25, 25, 6, 6, 6), - 'cost' => 950, - 'time' => 18000, - 'resourcePrice' => 300000, - 'points' => 200, - 'imageLink' => 'ship11', - 'techno' => 16, - 'description' => 'Le Phénix est le type prédominant de croiseur de la galaxie de l’Œil. Conçu par le vieil Empire pour mettre un terme à la rébellion des périodes de troubles, il est le vaisseau de combat le plus massif du chantier de ligne. En effet, sa construction nécessite énormément de matériel et de main-d’œuvre. De plus, le Phénix est piloté par un équipage de plus de 300 personnes.

Cet appareil, très gros, est difficile à manœuvrer dans les combats de mêlée. Cependant il est d’une efficacité redoutable en dernière ligne de vos escadrilles.' - ), - ); -} \ No newline at end of file diff --git a/system/Modules/Athena/Resource/config/config.yml b/system/Modules/Athena/Resource/config/config.yml deleted file mode 100644 index c8f5c1538..000000000 --- a/system/Modules/Athena/Resource/config/config.yml +++ /dev/null @@ -1,50 +0,0 @@ ---- -parameters: - # routes commerciales - athena.trade.route.cancellation_refund: 0.8 # 80% de crédits rendu si on annule la route avant qu'elle soit acceptée - athena.trade.route.sector_bonus: 1.1 - athena.trade.route.color_bonus: 1.5 - athena.trade.experience_coeff: 0.1 - - # pourcentage de ressources rendues lors - # de l'annulation d'une construction de batiment ou de vaisseau - athena.building.building_queue_resource_refund: 0.5 # 50% - athena.building.ship_queue_resource_refund: 0.5 # 50% - - # commercialRoute statement - athena.trade.route.proposed: 0 - athena.trade.route.active: 1 - athena.trade.route.stand_by: 2 - - # type of base constants - athena.obm.change_type_min_level: 20 # minimal generator level - athena.obm.capital_min_level: 35 # minimal generator level to build a capital base - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Athena\Helper\: - resource: '%root_path%/system/Modules/Athena/Helper/*' - - Asylamba\Modules\Athena\Manager\: - resource: '%root_path%/system/Modules/Athena/Manager/*' - - Asylamba\Modules\Athena\Handler\: - resource: '%root_path%/system/Modules/Athena/Handler/*' - - Asylamba\Modules\Athena\Manager\CommercialShippingManager: - arguments: - $mediaPath: '%media%' - - Asylamba\Modules\Athena\Manager\TransactionManager: - arguments: - $rootPath: '%root_path%' - $mediaPath: '%media%' diff --git a/system/Modules/Atlas/AtlasModule.php b/system/Modules/Atlas/AtlasModule.php deleted file mode 100644 index 671f8e998..000000000 --- a/system/Modules/Atlas/AtlasModule.php +++ /dev/null @@ -1,13 +0,0 @@ -entityManager->getRepository(Ranking::class)->hasBeenAlreadyProcessed(false, true) === true) { - return; - } - $factionRoutine = new FactionRoutine(); - - $factions = $this->colorManager->getInGameFactions(); - $playerRankingRepository = $this->entityManager->getRepository(PlayerRanking::class); - $factionRankingRepository = $this->entityManager->getRepository(FactionRanking::class); - $sectors = $this->entityManager->getRepository(Sector::class)->getAll(); - - $S_FRM1 = $this->factionRankingManager->getCurrentSession(); - $this->factionRankingManager->newSession(); - $this->factionRankingManager->loadLastContext(); - - $ranking = $this->rankingManager->createRanking(false, true); - - foreach ($factions as $faction) { - $this->colorManager->updateInfos($faction); - - $routesIncome = $factionRankingRepository->getRoutesIncome($faction); - $playerRankings = $playerRankingRepository->getFactionPlayerRankings($faction); - - $factionRoutine->execute($faction, $playerRankings, $routesIncome, $sectors); - } - - $winningFactionId = $factionRoutine->processResults( - $ranking, - $factions, - $this->factionRankingManager, - $this->serverStartTime, - $this->hoursBeforeStartOfRanking, - $this->pointsToWin, - ); - - $this->factionRankingManager->changeSession($S_FRM1); - - if ($winningFactionId !== null) { - $this->rankingManager->processWinningFaction($winningFactionId); - } - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Atlas/Handler/PlayerRankingHandler.php b/system/Modules/Atlas/Handler/PlayerRankingHandler.php deleted file mode 100644 index 6c34ac408..000000000 --- a/system/Modules/Atlas/Handler/PlayerRankingHandler.php +++ /dev/null @@ -1,67 +0,0 @@ -entityManager->getRepository(Ranking::class)->hasBeenAlreadyProcessed(true, false) === true) { - return; - } - $playerRoutine = new PlayerRoutine($this->dataAnalysis); - - $players = $this->playerManager->getByStatements([Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); - - $playerRankingRepository = $this->entityManager->getRepository(PlayerRanking::class); - - //$S_PRM1 = $this->playerRankingManager->getCurrentSession(); - //$this->playerRankingManager->newSession(); - //$this->playerRankingManager->loadLastContext(); - - $ranking = $this->rankingManager->createRanking(true, false); - - $playerRoutine->execute( - $players, - $playerRankingRepository->getPlayersResources(), - $playerRankingRepository->getPlayersResourcesData(), - $playerRankingRepository->getPlayersGeneralData(), - $playerRankingRepository->getPlayersArmiesData(), - $playerRankingRepository->getPlayersPlanetData(), - $playerRankingRepository->getPlayersTradeRoutes(), - $playerRankingRepository->getPlayersLinkedTradeRoutes(), - $playerRankingRepository->getAttackersButcherRanking(), - $playerRankingRepository->getDefendersButcherRanking(), - $this->orbitalBaseHelper - ); - - $playerRoutine->processResults($ranking, $players, $this->playerRankingManager, $playerRankingRepository); - - //$this->playerRankingManager->changeSession($S_PRM1); - - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Atlas/Manager/FactionRankingManager.php b/system/Modules/Atlas/Manager/FactionRankingManager.php deleted file mode 100644 index 01fba9c17..000000000 --- a/system/Modules/Atlas/Manager/FactionRankingManager.php +++ /dev/null @@ -1,195 +0,0 @@ -database->prepare('SELECT * FROM ranking WHERE faction = 1 ORDER BY dRanking DESC LIMIT 1'); - $qr->execute(); - $aw = $qr->fetch(); - - if (false === $aw) { - return; - } - $rRanking = $aw['id']; - - # add the rRanking to the WHERE clause - $where['rRanking'] = $rRanking; - - $formatWhere = Utils::arrayToWhere($where); - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $this->database->prepare('SELECT * - FROM factionRanking AS fr - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if(empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($aw = $qr->fetch()) { - $fr = new FactionRanking(); - - $fr->id = $aw['id']; - $fr->rRanking = $aw['rRanking']; - $fr->rFaction = $aw['rFaction']; - $fr->points = $aw['points']; - $fr->pointsPosition = $aw['pointsPosition']; - $fr->pointsVariation = $aw['pointsVariation']; - $fr->newPoints = $aw['newPoints']; - $fr->general = $aw['general']; - $fr->generalPosition = $aw['generalPosition']; - $fr->generalVariation = $aw['generalVariation']; - $fr->wealth = $aw['wealth']; - $fr->wealthPosition = $aw['wealthPosition']; - $fr->wealthVariation = $aw['wealthVariation']; - $fr->territorial = $aw['territorial']; - $fr->territorialPosition = $aw['territorialPosition']; - $fr->territorialVariation = $aw['territorialVariation']; - - $currentT = $this->_Add($fr); - } - } - - public function loadByRequest($request, $args = array()) { - $qr = $this->database->prepare('SELECT * - FROM factionRanking AS fr - ' . $request - ); - - $qr->execute($args); - - while ($aw = $qr->fetch()) { - $fr = new FactionRanking(); - - $fr->id = isset($aw['id']) ? $aw['id'] : NULL; - $fr->rRanking = isset($aw['rRanking']) ? $aw['rRanking'] : NULL; - $fr->rFaction = isset($aw['rFaction']) ? $aw['rFaction'] : NULL; - $fr->points = isset($aw['points']) ? $aw['points'] : NULL; - $fr->pointsPosition = isset($aw['pointsPosition']) ? $aw['pointsPosition'] : NULL; - $fr->pointsVariation = isset($aw['pointsVariation']) ? $aw['pointsVariation'] : NULL; - $fr->newPoints = isset($aw['newPoints']) ? $aw['newPoints'] : NULL; - $fr->general = isset($aw['general']) ? $aw['general'] : NULL; - $fr->generalPosition = isset($aw['generalPosition']) ? $aw['generalPosition'] : NULL; - $fr->generalVariation = isset($aw['generalVariation']) ? $aw['generalVariation'] : NULL; - $fr->wealth = isset($aw['wealth']) ? $aw['wealth'] : NULL; - $fr->wealthPosition = isset($aw['wealthPosition']) ? $aw['wealthPosition'] : NULL; - $fr->wealthVariation = isset($aw['wealthVariation']) ? $aw['wealthVariation'] : NULL; - $fr->territorial = isset($aw['territorial']) ? $aw['territorial'] : NULL; - $fr->territorialPosition = isset($aw['territorialPosition']) ? $aw['territorialPosition'] : NULL; - $fr->territorialVariation = isset($aw['territorialVariation']) ? $aw['territorialVariation'] : NULL; - - $currentT = $this->_Add($fr); - } - } - - public function add(FactionRanking $fr) { - $qr = $this->database->prepare('INSERT INTO - factionRanking(rRanking, rFaction, points, pointsPosition, pointsVariation, newPoints, general, generalPosition, generalVariation, - wealth, wealthPosition, wealthVariation, territorial, territorialPosition, territorialVariation) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $fr->rRanking, - $fr->rFaction, - $fr->points, - $fr->pointsPosition, - $fr->pointsVariation, - $fr->newPoints, - $fr->general, - $fr->generalPosition, - $fr->generalVariation, - $fr->wealth, - $fr->wealthPosition, - $fr->wealthVariation, - $fr->territorial, - $fr->territorialPosition, - $fr->territorialVariation - )); - - $fr->id = $this->database->lastInsertId(); - - $this->_Add($fr); - } - - public function save() { - $rankings = $this->_Save(); - - foreach ($rankings AS $fr) { - $qr = $this->database->prepare('UPDATE factionRanking - SET id = ?, - rRanking = ?, - rFaction = ?, - points = ?, - pointsPosition = ?, - pointsVariation = ?, - newPoints = ?, - general = ?, - generalPosition = ?, - generalVariation = ?, - wealth = ?, - wealthPosition = ?, - wealthVariation = ?, - territorial = ?, - territorialPosition = ?, - territorialVariation = ? - WHERE id = ?'); - $qr->execute(array( - $fr->id, - $fr->rRanking, - $fr->rFaction, - $fr->points, - $fr->pointsPosition, - $fr->pointsVariation, - $fr->newPoints, - $fr->general, - $fr->generalPosition, - $fr->generalVariation, - $fr->wealth, - $fr->wealthPosition, - $fr->wealthVariation, - $fr->territorial, - $fr->territorialPosition, - $fr->territorialVariation, - $fr->id - )); - } - } -} diff --git a/system/Modules/Atlas/Manager/PlayerRankingManager.php b/system/Modules/Atlas/Manager/PlayerRankingManager.php deleted file mode 100644 index 2c9951dab..000000000 --- a/system/Modules/Atlas/Manager/PlayerRankingManager.php +++ /dev/null @@ -1,259 +0,0 @@ -database->prepare('SELECT * FROM ranking WHERE player = 1 ORDER BY dRanking DESC LIMIT 1'); - $qr->execute(); - $aw = $qr->fetch(); - $rRanking = $aw['id']; - - # add the rRanking to the WHERE clause - $where['rRanking'] = $rRanking; - - $formatWhere = Utils::arrayToWhere($where, 'pl.'); - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $this->database->prepare('SELECT pl.*, - p.rColor AS color, - p.name AS name, - p.avatar AS avatar, - p.status AS status - FROM playerRanking AS pl - LEFT JOIN player AS p - ON pl.rPlayer = p.id - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if(empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($aw = $qr->fetch()) { - $pl = new PlayerRanking(); - - $pl->id = $aw['id']; - $pl->rRanking = $aw['rRanking']; - $pl->rPlayer = $aw['rPlayer']; - $pl->general = $aw['general']; - $pl->generalPosition = $aw['generalPosition']; - $pl->generalVariation = $aw['generalVariation']; - $pl->experience = $aw['experience']; - $pl->experiencePosition = $aw['experiencePosition']; - $pl->experienceVariation = $aw['experienceVariation']; - $pl->fight = $aw['fight']; - $pl->fightPosition = $aw['fightPosition']; - $pl->fightVariation = $aw['fightVariation']; - $pl->trader = $aw['trader']; - $pl->traderPosition = $aw['traderPosition']; - $pl->traderVariation = $aw['traderVariation']; - $pl->armies = $aw['armies']; - $pl->armiesPosition = $aw['armiesPosition']; - $pl->armiesVariation = $aw['armiesVariation']; - $pl->resources = $aw['resources']; - $pl->resourcesPosition = $aw['resourcesPosition']; - $pl->resourcesVariation = $aw['resourcesVariation']; - $pl->butcher = $aw['butcher']; - $pl->butcherPosition = $aw['butcherPosition']; - $pl->butcherVariation = $aw['butcherVariation']; - - $pl->color = $aw['color']; - $pl->name = $aw['name']; - $pl->avatar = $aw['avatar']; - $pl->status = $aw['status']; - - $currentT = $this->_Add($pl); - } - } - - public function loadByRequest($request) { - $formatWhere = Utils::arrayToWhere($where, 'pl.'); - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $db->prepare($request); - - while($aw = $qr->fetch()) { - $pl = new playerRanking(); - - if (isset($aw['id'])) { $pl->id = $aw['id']; } - if (isset($aw['rRanking'])) { $pl->rRanking = $aw['rRanking']; } - if (isset($aw['rPlayer'])) { $pl->rPlayer = $aw['rPlayer']; } - if (isset($aw['general'])) { $pl->general = $aw['general']; } - if (isset($aw['generalPosition'])) { $pl->generalPosition = $aw['generalPosition']; } - if (isset($aw['generalVariation'])) { $pl->generalVariation = $aw['generalVariation']; } - if (isset($aw['experience'])) { $pl->experience = $aw['experience']; } - if (isset($aw['experiencePosition'])) { $pl->experiencePosition = $aw['experiencePosition']; } - if (isset($aw['experienceVariation'])) { $pl->experienceVariation = $aw['experienceVariation']; } - if (isset($aw['fight'])) { $pl->fight = $aw['fight']; } - if (isset($aw['fightPosition'])) { $pl->fightPosition = $aw['fightPosition']; } - if (isset($aw['fightVariation'])) { $pl->fightVariation = $aw['fightVariation']; } - if (isset($aw['trader'])) { $pl->trader = $aw['trader']; } - if (isset($aw['traderPosition'])) { $pl->traderPosition = $aw['traderPosition']; } - if (isset($aw['traderVariation'])) { $pl->traderVariation = $aw['traderVariation']; } - if (isset($aw['armies'])) { $pl->armies = $aw['armies']; } - if (isset($aw['armiesPosition'])) { $pl->armiesPosition = $aw['armiesPosition']; } - if (isset($aw['armiesVariation'])) { $pl->armiesVariation = $aw['armiesVariation']; } - if (isset($aw['resources'])) { $pl->resources = $aw['resources']; } - if (isset($aw['resourcesPosition'])) { $pl->resourcesPosition = $aw['resourcesPosition']; } - if (isset($aw['resourcesVariation'])) { $pl->resourcesVariation = $aw['resourcesVariation']; } - if (isset($aw['butcher'])) { $pl->butcher = $aw['butcher']; } - if (isset($aw['butcherPosition'])) { $pl->butcherPosition = $aw['butcherPosition']; } - if (isset($aw['butcherVariation'])) { $pl->butcherVariation = $aw['butcherVariation']; } - - if (isset($aw['color'])) { $pl->color = $aw['color']; } - if (isset($aw['name'])) { $pl->name = $aw['name']; } - if (isset($aw['avatar'])) { $pl->avatar = $aw['avatar']; } - if (isset($aw['status'])) { $pl->status = $aw['status']; } - - $currentT = $this->_Add($pl); - } - } - - public function add(playerRanking $pl) - { - $qr = $this->database->prepare('INSERT INTO - playerRanking(rRanking, rPlayer, - general, generalPosition, generalVariation, - experience, experiencePosition, experienceVariation, - fight, fightPosition, fightVariation, - trader, traderPosition, traderVariation, - armies, armiesPosition, armiesVariation, - resources, resourcesPosition, resourcesVariation, - butcher, butcherPosition, butcherVariation, - butcherDestroyedPEV, butcherLostPEV, victories, defeat) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - ?, ?, ?, ?)'); - $qr->execute(array( - $pl->rRanking, - $pl->rPlayer, - $pl->general, - $pl->generalPosition, - $pl->generalVariation, - $pl->experience, - $pl->experiencePosition, - $pl->experienceVariation, - $pl->fight, - $pl->fightPosition, - $pl->fightVariation, - $pl->trader, - $pl->traderPosition, - $pl->traderVariation, - $pl->armies, - $pl->armiesPosition, - $pl->armiesVariation, - $pl->resources, - $pl->resourcesPosition, - $pl->resourcesVariation, - $pl->butcher, - $pl->butcherPosition, - $pl->butcherVariation, - $pl->butcherDestroyedPEV, - $pl->butcherLostPEV, - $pl->victories, - $pl->defeat - )); - - $pl->id = $this->database->lastInsertId(); - - $this->_Add($pl); - } - - public function save() { - $rankings = $this->_Save(); - - foreach ($rankings AS $pl) { - $qr = $this->database->prepare('UPDATE playerRanking - SET id = ?, - rRanking = ?, - rPlayer = ?, - general = ?, - generalPosition = ?, - generalVariation = ?, - experience = ?, - experiencePosition = ?, - experienceVariation = ?, - fight = ?, - fightPosition = ?, - fightVariation = ?, - trader = ?, - traderPosition = ?, - traderVariation = ?, - armies = ?, - armiesPosition = ?, - armiesVariation = ?, - resources = ?, - resourcesPosition = ?, - resourcesVariation = ?, - butcher = ?, - butcherPosition = ?, - butcherVariation = ? - WHERE id = ?'); - $qr->execute(array( - $pl->id, - $pl->rRanking, - $pl->rPlayer, - $pl->general, - $pl->generalPosition, - $pl->generalVariation, - $pl->experience, - $pl->experiencePosition, - $pl->experienceVariation, - $pl->fight, - $pl->fightPosition, - $pl->fightVariation, - $pl->trader, - $pl->traderPosition, - $pl->traderVariation, - $pl->armies, - $pl->armiesPosition, - $pl->armiesVariation, - $pl->resources, - $pl->resourcesPosition, - $pl->resourcesVariation, - $pl->butcher, - $pl->butcherPosition, - $pl->butcherVariation, - $pl->id - )); - } - } -} diff --git a/system/Modules/Atlas/Manager/RankingManager.php b/system/Modules/Atlas/Manager/RankingManager.php deleted file mode 100644 index 9b0bd7e37..000000000 --- a/system/Modules/Atlas/Manager/RankingManager.php +++ /dev/null @@ -1,100 +0,0 @@ -colorManager->get($factionId); - $faction->isWinner = Color::WIN; - - # envoyer un message de Jean-Mi - $winnerName = ColorResource::getInfo($faction->id, 'officialName'); - $content = 'Salut,

La victoire vient d\'être remportée par :
' . $winnerName . '
'; - $content .= 'Cette faction a atteint les ' . $this->pointsToWin . ' points, la partie est donc terminée.

Bravo et un grand merci à tous les participants !'; - - $S_CVM1 = $this->conversationManager->getCurrentSession(); - $this->conversationManager->newSession(); - $this->conversationManager->load( - ['cu.rPlayer' => $this->jeanMiId] - ); - - if ($this->conversationManager->size() == 1) { - $conv = $this->conversationManager->get(); - - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # désarchiver tous les users - $users = $conv->players; - foreach ($users as $user) { - $user->convStatement = ConversationUser::CS_DISPLAY; - } - - # création du message - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $this->jeanMiId; - $message->type = ConversationMessage::TY_STD; - $message->content = $content; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $this->conversationMessageManager->add($message); - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - $this->conversationManager->changeSession($S_CVM1); - } - - public function createRanking(bool $isPlayer, bool $isFaction): Ranking - { - $ranking = - (new Ranking()) - ->setIsPlayer($isPlayer) - ->setIsFaction($isFaction) - ->setCreatedAt(Utils::now()) - ; - $this->entityManager->persist($ranking); - $this->entityManager->flush($ranking); - return $ranking; - } -} diff --git a/system/Modules/Atlas/Message/FactionRankingMessage.php b/system/Modules/Atlas/Message/FactionRankingMessage.php deleted file mode 100644 index 6af456ab0..000000000 --- a/system/Modules/Atlas/Message/FactionRankingMessage.php +++ /dev/null @@ -1,8 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $rankingId - * @return FactionRanking - */ - public function setRankingId($rankingId) - { - $this->rRanking = $rankingId; - - return $this; - } - - /** - * @return int - */ - public function getRankingId() - { - return $this->rRanking; - } - - /** - * @param int $factionId - * @return FactionRanking - */ - public function setFactionId($factionId) - { - $this->rFaction = $factionId; - - return $this; - } - - /** - * @return int - */ - public function getFactionId() - { - return $this->rFaction; - } - - /** - * @param int $points - * @return FactionRanking - */ - public function setPoints($points) - { - $this->points = $points; - - return $this; - } - - /** - * @return int - */ - public function getPoints() - { - return $this->points; - } - - /** - * @param int $pointsPosition - * @return FactionRanking - */ - public function setPointsPosition($pointsPosition) - { - $this->pointsPosition = $pointsPosition; - - return $this; - } - - /** - * @return int - */ - public function getPointsPosition() - { - return $this->pointsPosition; - } - - /** - * @param int $pointsVariation - * @return FactionRanking - */ - public function setPointsVariation($pointsVariation) - { - $this->pointsVariation = $pointsVariation; - - return $this; - } - - /** - * @return int - */ - public function getPointsVariation() - { - return $this->pointsVariation; - } - - /** - * @param int $newPoints - * @return FactionRanking - */ - public function setNewPoints($newPoints) - { - $this->newPoints = $newPoints; - - return $this; - } - - /** - * @return int - */ - public function getNewPoints() - { - return $this->newPoints; - } - - /** - * @param int $general - * @return FactionRanking - */ - public function setGeneral($general) - { - $this->general = $general; - - return $this; - } - - /** - * @return int - */ - public function getGeneral() - { - return $this->general; - } - - /** - * @param int $generalPosition - * @return FactionRanking - */ - public function setGeneralPosition($generalPosition) - { - $this->generalPosition = $generalPosition; - - return $this; - } - - /** - * @return int - */ - public function getGeneralPosition() - { - return $this->generalPosition; - } - - /** - * @param int $generalVariation - * @return FactionRanking - */ - public function setGeneralVariation($generalVariation) - { - $this->generalVariation = $generalVariation; - - return $this; - } - - /** - * @return int - */ - public function getGeneralVariation() - { - return $this->generalVariation; - } - - /** - * @param int $wealth - * @return FactionRanking - */ - public function setWealth($wealth) - { - $this->wealth = $wealth; - - return $this; - } - - /** - * @return int - */ - public function getWealth() - { - return $this->wealth; - } - - /** - * @param int $wealthPosition - * @return FactionRanking - */ - public function setWealthPosition($wealthPosition) - { - $this->wealthPosition = $wealthPosition; - - return $this; - } - - /** - * @return int - */ - public function getWealthPosition() - { - return $this->wealthPosition; - } - - /** - * @param int $wealthVariation - * @return FactionRanking - */ - public function setWealthVariation($wealthVariation) - { - $this->wealthVariation = $wealthVariation; - - return $this; - } - - /** - * @return int - */ - public function getWealthVariation() - { - return $this->wealthVariation; - } - - /** - * @param int $territorial - * @return FactionRanking - */ - public function setTerritorial($territorial) - { - $this->territorial = $territorial; - - return $this; - } - - /** - * @return int - */ - public function getTerritorial() - { - return $this->territorial; - } - - /** - * @param int $territorialPosition - * @return FactionRanking - */ - public function setTerritorialPosition($territorialPosition) - { - $this->territorialPosition = $territorialPosition; - - return $this; - } - - /** - * @return int - */ - public function getTerritorialPosition() - { - return $this->territorialPosition; - } - - /** - * @param int $territorialVariation - * @return FactionRanking - */ - public function setTerritorialVariation($territorialVariation) - { - $this->territorialVariation = $territorialVariation; - - return $this; - } - - /** - * @return int - */ - public function getTerritorialVariation() - { - return $this->territorialVariation; - } - - public function commonRender($playerInfo, string $mediaPath, string $type = 'general') { - $r = ''; - - switch ($type) { - case 'points': - $pos = $this->pointsPosition; - $var = $this->pointsVariation; break; - case 'general': - $pos = $this->generalPosition; - $var = $this->generalVariation; break; - case 'wealth': - $pos = $this->wealthPosition; - $var = $this->wealthVariation; break; - case 'territorial': - $pos = $this->territorialPosition; - $var = $this->territorialVariation; break; - default: $var = ''; $pos = ''; break; - } - - $r .= '
'; - $r .= '' . $this->rFaction . ''; - - $r .= '' . ColorResource::getInfo($this->rFaction, 'government') . ''; - $r .= '' . ColorResource::getInfo($this->rFaction, 'popularName') . ''; - $r .= ''; - switch ($type) { - case 'points': - $r .= Format::number($this->points, -1) . ' points'; - if ($this->newPoints > 0) { - $r .= ' (+' . Format::number($this->newPoints, -1) . ' points)'; - } - break; - case 'general': $r .= Format::number($this->general, -1) . ' points'; break; - case 'wealth': $r .= Format::number($this->wealth, -1) . ' crédits'; break; - case 'territorial': $r .= Format::number($this->territorial, -1) . ' points'; break; - default: break; - } - $r .= ''; - - $r .= '' . $pos . ''; - $r .= '
'; - - return $r; - } -} diff --git a/system/Modules/Atlas/Model/PlayerRanking.php b/system/Modules/Atlas/Model/PlayerRanking.php deleted file mode 100644 index 2e4b9f673..000000000 --- a/system/Modules/Atlas/Model/PlayerRanking.php +++ /dev/null @@ -1,199 +0,0 @@ -id = $id; - - return $this; - } - - public function getId() { return $this->id; } - - /** - * @param Player $player - * @return PlayerRanking - */ - public function setPlayer(Player $player) - { - $this->player = $player; - - return $this; - } - - /** - * @return Player - */ - public function getPlayer() - { - return $this->player; - } - - /** - * @param int $general - * @return PlayerRanking - */ - public function setGeneral($general) - { - $this->general = $general; - - return $this; - } - - /** - * @return int - */ - public function getGeneral() - { - return $this->general; - } - - public function commonRender($playerId, $type, string $appRoot, string $mediaPath) { - $r = ''; - $status = ColorResource::getInfo($this->color, 'status'); - - $plus = null; - $minus = null; - - switch ($type) { - case 'general': - $pos = $this->generalPosition; - $var = $this->generalVariation; break; - case 'xp': - $pos = $this->experiencePosition; - $var = $this->experienceVariation; break; - case 'butcher': - $pos = $this->butcherPosition; - $plus = $this->butcherDestroyedPEV; - $minus = $this->butcherLostPEV; - $var = $this->butcherVariation; break; - case 'trader': - $pos = $this->traderPosition; - $var = $this->traderVariation; break; - case 'fight': - $pos = $this->fightPosition; - $plus = $this->victories; - $minus = $this->defeat; - $var = $this->fightVariation; break; - case 'armies': - $pos = $this->armiesPosition; - $var = $this->armiesVariation; break; - case 'resources': - $pos = $this->resourcesPosition; - $var = $this->resourcesVariation; break; - default: $var = ''; $pos = ''; break; - } - - $r .= '
'; - $r .= ''; - $r .= '' . $this->name . ''; - $r .= ''; - - $r .= '' . $status[$this->status - 1] . ''; - $r .= '' . $this->name . ''; - - $r .= ''; - switch ($type) { - case 'general': $r .= Format::numberFormat($this->general) . ' point' . Format::addPlural($this->general); break; - case 'xp': $r .= Format::numberFormat($this->experience) . ' xp'; break; - case 'butcher': - $r .= Format::numberFormat($this->butcher) . ' point' . Format::addPlural($this->butcher); - break; - case 'trader': $r .= Format::numberFormat($this->trader) . ' crédits'; break; - case 'fight': - $r .= Format::numberFormat($this->fight) . ' point' . Format::addPlural($this->fight); - break; - # case 'armies': $r .= Format::numberFormat($this->armies) . ' pev'; break; - case 'resources': $r .= Format::numberFormat($this->resources) . ' ressources'; break; - default: break; - } - $r .= ''; - - $r .= '' . $pos . ''; - - if (intval($var) != 0) { - $r .= ''; - $r .= ($var > 0 ? '+' : '–') . abs($var); - $r .=''; - } - $r .= '
'; - - return $r; - } -} diff --git a/system/Modules/Atlas/Model/Ranking.php b/system/Modules/Atlas/Model/Ranking.php deleted file mode 100644 index c4b48fe95..000000000 --- a/system/Modules/Atlas/Model/Ranking.php +++ /dev/null @@ -1,91 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param bool $isPlayer - * @return Ranking - */ - public function setIsPlayer($isPlayer) - { - $this->isPlayer = $isPlayer; - - return $this; - } - - /** - * @return bool - */ - public function getIsPlayer() - { - return $this->isPlayer; - } - - /** - * @param bool $isFaction - * @return Ranking - */ - public function setIsFaction($isFaction) - { - $this->isFaction = $isFaction; - - return $this; - } - - /** - * @return bool - */ - public function getIsFaction() - { - return $this->isFaction; - } - - /** - * @param string $createdAt - * @return Ranking - */ - public function setCreatedAt($createdAt) - { - $this->createdAt = $createdAt; - - return $this; - } - - /** - * @return string - */ - public function getCreatedAt() - { - return $this->createdAt; - } -} \ No newline at end of file diff --git a/system/Modules/Atlas/Repository/FactionRankingRepository.php b/system/Modules/Atlas/Repository/FactionRankingRepository.php deleted file mode 100644 index bdf9d2ed0..000000000 --- a/system/Modules/Atlas/Repository/FactionRankingRepository.php +++ /dev/null @@ -1,47 +0,0 @@ -connection->prepare( - 'SELECT COUNT(cr.id) AS nb, - SUM(cr.income) AS income - FROM commercialRoute AS cr - LEFT JOIN orbitalBase AS ob1 - ON cr.rOrbitalBase = ob1.rPlace - LEFT JOIN player AS pl1 - ON ob1.rPlayer = pl1.id - LEFT JOIN orbitalBase AS ob2 - ON cr.rOrbitalBaseLinked = ob2.rPlace - LEFT JOIN player AS pl2 - ON ob2.rPlayer = pl2.id - WHERE (pl1.rColor = ? OR pl2.rColor = ?) AND cr.statement = ?' - ); - # hint : en fait ça compte qu'une fois une route interfaction, mais chut - $qr->execute([$faction->getId(), $faction->getId(), CommercialRoute::ACTIVE]); - return $qr->fetch(); - } - - public function insert($ranking) - { - - } - - public function update($ranking) - { - - } - - public function remove($ranking) - { - - } -} \ No newline at end of file diff --git a/system/Modules/Atlas/Repository/PlayerRankingRepository.php b/system/Modules/Atlas/Repository/PlayerRankingRepository.php deleted file mode 100644 index 01b5373ec..000000000 --- a/system/Modules/Atlas/Repository/PlayerRankingRepository.php +++ /dev/null @@ -1,258 +0,0 @@ -connection->prepare( - 'SELECT p.id as player_id, p.rColor as player_faction_id, pr.id as player_ranking_id, pr.general as player_general_ranking - FROM player p - RIGHT JOIN playerRanking pr ON pr.rPlayer = p.id - WHERE p.rColor = :faction_id' - ); - $statement->execute(['faction_id' => $faction->getId()]); - - return $this->formatPlayerData($statement); - } - - public function getAttackersButcherRanking() - { - return $this->connection->query( - 'SELECT - p.id AS player, - (SUM(pevInBeginA) - SUM(`pevAtEndA`)) AS lostPEV, - (SUM(pevInBeginD) - SUM(`pevAtEndD`)) AS destroyedPEV - FROM report AS r - RIGHT JOIN player AS p - ON p.id = r.rPlayerAttacker - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY p.id - ORDER BY p.id' - ); - } - - public function getDefendersButcherRanking() - { - return $this->connection->query( - 'SELECT - p.id AS player, - (SUM(pevInBeginD) - SUM(`pevAtEndD`)) AS lostPEV, - (SUM(pevInBeginA) - SUM(`pevAtEndA`)) AS destroyedPEV, - ((SUM(pevInBeginD) - SUM(`pevAtEndD`)) - (SUM(pevInBeginA) - SUM(`pevAtEndA`))) AS score - FROM report AS r - RIGHT JOIN player AS p - ON p.id = r.rPlayerDefender - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY p.id - ORDER BY p.id' - ); - } - - public function getPlayersResources() - { - return $this->connection->query( - 'SELECT p.id AS player, - ob.levelRefinery AS levelRefinery, - pl.coefResources AS coefResources - FROM orbitalBase AS ob - LEFT JOIN place AS pl - ON pl.id = ob.rPlace - LEFT JOIN player AS p - on p.id = ob.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ')' - ); - } - - public function getPlayersResourcesData() - { - return $this->connection->query( - 'SELECT - p.id AS player, - SUM(ob.resourcesStorage) AS sumResources - FROM orbitalBase AS ob - LEFT JOIN player AS p - on p.id = ob.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY ob.rPlace' - ); - } - - public function getPlayersGeneralData() - { - return $this->connection->query( - 'SELECT - p.id AS player, - SUM(ob.points) AS points, - SUM(ob.resourcesStorage) AS resources, - SUM(ob.pegaseStorage) AS s0, - SUM(ob.satyreStorage) AS s1, - SUM(ob.sireneStorage) AS s3, - SUM(ob.dryadeStorage) AS s4, - SUM(ob.chimereStorage) AS s2, - SUM(ob.meduseStorage) AS s5, - SUM(ob.griffonStorage) AS s6, - SUM(ob.cyclopeStorage) AS s7, - SUM(ob.minotaureStorage) AS s8, - SUM(ob.hydreStorage) AS s9, - SUM(ob.cerbereStorage) AS s10, - SUM(ob.phenixStorage) AS s11 - FROM orbitalBase AS ob - LEFT JOIN player AS p - ON p.id = ob.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY p.id' - ); - } - - public function getPlayersArmiesData() - { - return $this->connection->query( - 'SELECT - p.id AS player, - SUM(sq.ship0) as s0, - SUM(sq.ship1) as s1, - SUM(sq.ship2) as s2, - SUM(sq.ship3) as s3, - SUM(sq.ship4) as s4, - SUM(sq.ship5) as s5, - SUM(sq.ship6) as s6, - SUM(sq.ship7) as s7, - SUM(sq.ship8) as s8, - SUM(sq.ship9) as s9, - SUM(sq.ship10) as s10, - SUM(sq.ship11) as s11 - FROM squadron AS sq - LEFT JOIN commander AS c - ON c.id = sq.rCommander - LEFT JOIN player AS p - ON p.id = c.rPlayer - WHERE c.statement IN (' . implode(',', [Commander::AFFECTED, Commander::MOVING]) . ') - GROUP BY p.id' - ); - } - - public function getPlayersPlanetData() - { - return $this->connection->query( - 'SELECT - p.id AS player, - COUNT(ob.rPlace) AS sumPlanets - FROM orbitalBase AS ob - LEFT JOIN player AS p - on p.id = ob.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY ob.rPlace' - ); - } - - public function getPlayersTradeRoutes() - { - return $this->connection->query( - 'SELECT - p.id AS player, - SUM(income) AS income - FROM commercialRoute AS c - LEFT JOIN orbitalBase AS o - ON o.rPlace = c.rOrbitalBase - RIGHT JOIN player AS p - ON p.id = o.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY p.id - ORDER BY p.id' - ); - } - - public function getPlayersLinkedTradeRoutes() - { - return $this->connection->query( - 'SELECT - p.id AS player, - SUM(income) AS income - FROM `commercialRoute` AS c - LEFT JOIN orbitalBase AS o - ON o.rPlace = c.rOrbitalBaseLinked - RIGHT JOIN player AS p - ON p.id = o.rPlayer - WHERE p.statement IN (' . implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - GROUP BY p.id - ORDER BY p.id' - ); - } - - public function insert($ranking) - { - - } - - public function insertDataAnalysis(Player $player, PlayerRanking $playerRanking, $resources, $planetNumber) - { - $statement = $this->connection->prepare('INSERT INTO - DA_PlayerDaily(rPlayer, credit, experience, level, victory, defeat, status, resources, fleetSize, nbPlanet, planetPoints, rkGeneral, rkFighter, rkProducer, rkButcher, rkTrader, dStorage) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' - ); - $statement->execute([ - $player->id, - $player->credit, - $player->experience, - $player->level, - $player->victory, - $player->defeat, - $player->status, - $resources, - $pr->armies, - $planetNumber, - $pr->general / $planetNumber, - $pr->general, - $pr->fight, - $pr->resources, - $pr->butcher, - $pr->trader, - Utils::now() - ]); - } - - public function update($ranking) - { - - } - - public function remove($ranking) - { - - } - - public function formatPlayerData($statement) - { - $results = []; - $currentPlayer = null; - while ($row = $statement->fetch(\PDO::FETCH_ASSOC)) - { - if (!$currentPlayer instanceof Player || $currentPlayer->getId() !== (int) $row['player_id']) { - $currentPlayer = - (new Player()) - ->setId((int) $row['player_id']) - ->setRColor((int) $row['player_faction_id']) - ; - } - $results[] = - (new PlayerRanking()) - ->setId((int) $row['player_ranking_id']) - ->setPlayer($currentPlayer) - ->setGeneral((int) $row['player_general_ranking']) - ; - } - return $results; - } -} \ No newline at end of file diff --git a/system/Modules/Atlas/Repository/RankingRepository.php b/system/Modules/Atlas/Repository/RankingRepository.php deleted file mode 100644 index 653717cff..000000000 --- a/system/Modules/Atlas/Repository/RankingRepository.php +++ /dev/null @@ -1,43 +0,0 @@ -connection->prepare( - 'SELECT * FROM ranking WHERE player = :is_player AND faction = :is_faction AND dRanking >= CURDATE()' - ); - $statement->execute([ - 'is_player' => (int) $isPlayer, - 'is_faction' => (int) $isFaction - ]); - return $statement->rowCount() > 0; - } - - public function insert($ranking) - { - # create a new ranking - $qr = $this->connection->prepare('INSERT INTO ranking(dRanking, player, faction) VALUES (:created_at, :is_player, :is_faction)'); - $qr->execute([ - 'created_at' => $ranking->getCreatedAt(), - 'is_player' => (int) $ranking->getIsPlayer(), - 'is_faction' => (int) $ranking->getIsFaction() - ]); - - $ranking->setId($this->connection->lastInsertId()); - } - - public function update($ranking) - { - - } - - public function remove($ranking) - { - - } -} \ No newline at end of file diff --git a/system/Modules/Atlas/Resource/config/config.yml b/system/Modules/Atlas/Resource/config/config.yml deleted file mode 100644 index 368a654fd..000000000 --- a/system/Modules/Atlas/Resource/config/config.yml +++ /dev/null @@ -1,32 +0,0 @@ ---- -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Atlas\Handler\: - resource: '%root_path%/system/Modules/Atlas/Handler/*' - - Asylamba\Modules\Atlas\Handler\PlayerRankingHandler: - arguments: - $dataAnalysis: '%data_analysis%' - - Asylamba\Modules\Atlas\Handler\FactionRankingHandler: - arguments: - $serverStartTime: '%server_start_time%' - $hoursBeforeStartOfRanking: '%hours_before_start_of_ranking%' - $pointsToWin: '%points_to_win%' - - Asylamba\Modules\Atlas\Manager\: - resource: '%root_path%/system/Modules/Atlas/Manager/*' - - Asylamba\Modules\Atlas\Manager\RankingManager: - arguments: - $pointsToWin: '%points_to_win%' - $jeanMiId: '%id_jeanmi%' diff --git a/system/Modules/Atlas/Routine/FactionRoutine.php b/system/Modules/Atlas/Routine/FactionRoutine.php deleted file mode 100644 index d736bd9e3..000000000 --- a/system/Modules/Atlas/Routine/FactionRoutine.php +++ /dev/null @@ -1,255 +0,0 @@ -results[$faction->getId()] = array( - 'general' => 0, - 'wealth' => 0, - 'territorial' => 0, - 'points' => $faction->rankingPoints); - if ($faction->isWinner == 1) { - $this->isGameOver = true; - } - $this->calculateGeneralRanking($playerRankings); - $this->calculateWealthRanking($faction, $routesIncome); - $this->calculateTerritorialRanking($faction, $sectors); - } - - public function processResults( - Ranking $ranking, - $factions, - $factionRankingManager, - $serverStartTime, - $hoursBeforeStartOfRanking, - $pointsToWin, - ) { - #---------------- COMPUTING -------------------# - - # copy the arrays - $listG = $this->results; - $listW = $this->results; - $listT = $this->results; - - # sort all the copies - uasort($listG, [$this, 'cmpFactionGeneral']); - uasort($listW, [$this, 'cmpWealth']); - uasort($listT, [$this, 'cmpTerritorial']); - - /*foreach ($list as $key => $value) { - echo $key . ' => ' . $value['general'] . '
'; - }*/ - - # put the position in each array - $listG = $this->setPositions($listG, 'general'); - $listW = $this->setPositions($listW, 'wealth'); - $listT = $this->setPositions($listT, 'territorial'); - - #-------------------------------- POINTS RANKING -----------------------------# - - # faire ce classement uniquement après x jours de jeu - if (Utils::interval($serverStartTime, Utils::now(), 'h') > $hoursBeforeStartOfRanking) { - # points qu'on gagne en fonction de sa place dans le classement - $pointsToEarn = [40, 30, 20, 10, 0, 0, 0, 0, 0, 0, 0]; - $coefG = 0.1; # 4 3 2 1 0 ... - $coefW = 0.4; # 16 12 8 4 0 ... - $coefT = 0.5; # 20 15 10 5 0 ... - - foreach ($factions as $faction) { - $factionId = $faction->id; - $additionalPoints = 0; - - # general - $additionalPoints += intval($pointsToEarn[$listG[$factionId]['position'] - 1] * $coefG); - - # wealth - $additionalPoints += intval($pointsToEarn[$listW[$factionId]['position'] - 1] * $coefW); - - # territorial - $additionalPoints += intval($pointsToEarn[$listT[$factionId]['position'] - 1] * $coefT); - - $this->results[$factionId]['points'] += $additionalPoints; - } - } - - - #---------------- LAST COMPUTING -------------------# - - $listP = $this->results; - uasort($listP, [$this, 'cmpPoints']); - - $position = 1; - foreach ($listP as $key => $value) { $listP[$key]['position'] = $position++;} - - #---------------- SAVING -------------------# - - $rankings = []; - - foreach ($factions as $faction) { - $factionId = $faction->getId(); - $fr = new FactionRanking(); - $fr->rRanking = $ranking->getId(); - $fr->rFaction = $factionId; - - $firstRanking = true; - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - if ($factionRankingManager->get($i)->rFaction == $factionId) { - $oldRanking = $factionRankingManager->get($i); - $firstRanking = false; - break; - } - } - - $fr->general = $listG[$factionId]['general']; - $fr->generalPosition = $listG[$factionId]['position']; - $fr->generalVariation = $firstRanking ? 0 : $oldRanking->generalPosition - $fr->generalPosition; - - $fr->wealth = $listW[$factionId]['wealth']; - $fr->wealthPosition = $listW[$factionId]['position']; - $fr->wealthVariation = $firstRanking ? 0 : $oldRanking->wealthPosition - $fr->wealthPosition; - - $fr->territorial = $listT[$factionId]['territorial']; - $fr->territorialPosition = $listT[$factionId]['position']; - $fr->territorialVariation = $firstRanking ? 0 : $oldRanking->territorialPosition - $fr->territorialPosition; - - if ($this->isGameOver === true) { - $fr->points = $oldRanking->points; - $fr->pointsPosition = $oldRanking->pointsPosition; - $fr->pointsVariation = 0; - $fr->newPoints = 0; - } else { - $fr->points = $listP[$factionId]['points']; - $fr->pointsPosition = $listP[$factionId]['position']; - $fr->pointsVariation = $firstRanking ? 0 : $oldRanking->pointsPosition - $fr->pointsPosition; - $fr->newPoints = $firstRanking ? $fr->points : $fr->points - $oldRanking->points; - } - - # update faction infos - $faction->rankingPoints = $listP[$factionId]['points']; - $faction->points = $listG[$factionId]['general']; - $faction->sectors = $listT[$factionId]['territorial']; - - $rankings[] = $fr; - $factionRankingManager->add($fr); - } - - if ($this->isGameOver === false) { - # check if a faction wins the game - $winRanking = NULL; - foreach ($rankings as $ranking) { - if ($ranking->points >= $pointsToWin) { - if ($winRanking !== NULL) { - if ($winRanking->points < $ranking->points) { - return $ranking->rFaction; - } - } else { - return $ranking->rFaction; - } - } - } - } - return null; - } - - protected function calculateGeneralRanking($playerRankings) - { - foreach ($playerRankings as $playerRanking) { - $player = $playerRanking->getPlayer(); - - if (isset($player->rColor)) { - $this->results[$player->rColor]['general'] += $playerRanking->general; - } - } - } - - protected function calculateWealthRanking(Color $faction, $routesIncome) - { - if ($routesIncome['income'] == NULL) { - $income = 0; - } else { - $income = $routesIncome['income']; - } - $this->results[$faction->getId()]['wealth'] = $income; - } - - protected function calculateTerritorialRanking($faction, $sectors) - { - foreach ($sectors as $sector) { - if ($sector->rColor === $faction->getId()) { - $this->results[$sector->rColor]['territorial'] += $sector->points; - } - } - } - - protected function cmpFactionGeneral($a, $b) { - if ($a['general'] == $b['general']) { - return 0; - } - return ($a['general'] > $b['general']) ? -1 : 1; - } - - protected function cmpWealth($a, $b) { - if ($a['wealth'] == $b['wealth']) { - return 0; - } - return ($a['wealth'] > $b['wealth']) ? -1 : 1; - } - - protected function cmpTerritorial($a, $b) { - if ($a['territorial'] == $b['territorial']) { - return 0; - } - return ($a['territorial'] > $b['territorial']) ? -1 : 1; - } - - protected function cmpPoints($a, $b) { - if ($a['points'] == $b['points']) { - return 0; - } - return ($a['points'] > $b['points']) ? -1 : 1; - } - - protected function setPositions($list, $attribute) { - $position = 1; - $index = 1; - $previous = PHP_INT_MAX; - foreach ($list as $key => $value) { - if ($previous > $list[$key][$attribute]) { - $position = $index; - } - $list[$key]['position'] = $position; - $index++; - $previous = $list[$key][$attribute]; - } - return $list; - } - - public function getResults() - { - return $this->results; - } -} diff --git a/system/Modules/Atlas/Routine/PlayerRoutine.php b/system/Modules/Atlas/Routine/PlayerRoutine.php deleted file mode 100644 index 745c464ae..000000000 --- a/system/Modules/Atlas/Routine/PlayerRoutine.php +++ /dev/null @@ -1,381 +0,0 @@ -results = []; - # create an array with all the players - foreach ($players as $player) { - $this->results[$player->id] = [ - 'general' => 0, - 'resources' => 0, - 'experience' => 0, - 'victory' => 0, - 'defeat' => 0, - 'fight' => 0, - 'armies' => 0, - 'butcher' => 0, - 'butcherDestroyedPEV' => 0, - 'butcherLostPEV' => 0, - 'trader' => 0, - - 'DA_Resources' => 0, - 'DA_PlanetNumber' => 0 - ]; - } - $this->calculateResources($resourcesStatement, $orbitalBaseHelper); - $this->calculateDataResources($resourcesDataStatement); - $this->calculatePlanetRanking($planetStatement); - $this->calculateGeneralRanking($generalStatement); - $this->calculateArmiesRanking($armiesStatement); - $this->calculateTradeRanking($tradeRoutesStatement, $linkedTradeRoutesStatement); - $this->calculateButcherRanking($attackersStatement, $defendersStatement); - } - - public function processResults(Ranking $ranking, $players, PlayerRankingManager $playerRankingManager, PlayerRankingRepository $playerRankingRepository) - { - foreach ($players as $playerId) { - if (isset($this->results[$playerId->id])) { - # add the points to the list - $this->results[$playerId->id]['experience'] += $playerId->experience; - $this->results[$playerId->id]['victory'] += $playerId->victory; - $this->results[$playerId->id]['defeat'] += $playerId->defeat; - $this->results[$playerId->id]['fight'] += $playerId->victory - $playerId->defeat; - } - } - - # copy the arrays - $listG = $this->results; - $listR = $this->results; - $listE = $this->results; - $listF = $this->results; - $listA = $this->results; - $listB = $this->results; - $listT = $this->results; - - # sort all the copies - uasort($listG, [$this, 'cmpGeneral']); - uasort($listR, [$this, 'cmpResources']); - uasort($listE, [$this, 'cmpExperience']); - uasort($listF, [$this, 'cmpFight']); - uasort($listA, [$this, 'cmpArmies']); - uasort($listB, [$this, 'cmpButcher']); - uasort($listT, [$this, 'cmpTrader']); - - /*foreach ($list as $key => $value) { - echo $key . ' => ' . $value['general'] . '
'; - }*/ - - # put the position in each array - $position = 1; - foreach ($listG as $key => $value) { $listG[$key]['position'] = $position++;} - $position = 1; - foreach ($listR as $key => $value) { $listR[$key]['position'] = $position++;} - $position = 1; - foreach ($listE as $key => $value) { $listE[$key]['position'] = $position++;} - $position = 1; - foreach ($listF as $key => $value) { $listF[$key]['position'] = $position++;} - $position = 1; - foreach ($listA as $key => $value) { $listA[$key]['position'] = $position++;} - $position = 1; - foreach ($listB as $key => $value) { $listB[$key]['position'] = $position++;} - $position = 1; - foreach ($listT as $key => $value) { $listT[$key]['position'] = $position++;} - - foreach ($players as $player) { - $playerId = $player->getId(); - - $pr = new PlayerRanking(); - $pr->rRanking = $ranking->getId(); - $pr->rPlayer = $playerId; - - # voir s'il faut améliorer (p.ex. : stocker le tableau des objets et supprimer chaque objet utilisé pour que la liste se rapetisse) - $firstRanking = true; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - if ($playerRankingManager->get($i)->rPlayer == $playerId) { - $firstRanking = false; - $oldRanking = $playerRankingManager->get($i); - break; - } - } - - $pr->general = $listG[$playerId]['general']; - $pr->generalPosition = $listG[$playerId]['position']; - $pr->generalVariation = $firstRanking ? 0 : $oldRanking->generalPosition - $pr->generalPosition; - $player->factionPoint = $pr->general; - - $pr->resources = $listR[$playerId]['resources']; - $pr->resourcesPosition = $listR[$playerId]['position']; - $pr->resourcesVariation = $firstRanking ? 0 : $oldRanking->resourcesPosition - $pr->resourcesPosition; - - $pr->experience = $listE[$playerId]['experience']; - $pr->experiencePosition = $listE[$playerId]['position']; - $pr->experienceVariation = $firstRanking ? 0 : $oldRanking->experiencePosition - $pr->experiencePosition; - - $pr->fight = ($listF[$playerId]['fight'] >= 0) ? $listF[$playerId]['fight'] : 0; - $pr->victories = $listF[$playerId]['victory']; - $pr->defeat = $listF[$playerId]['defeat']; - $pr->fightPosition = $listF[$playerId]['position']; - $pr->fightVariation = $firstRanking ? 0 : $oldRanking->fightPosition - $pr->fightPosition; - - $pr->armies = $listA[$playerId]['armies']; - $pr->armiesPosition = $listA[$playerId]['position']; - $pr->armiesVariation = $firstRanking ? 0 : $oldRanking->armiesPosition - $pr->armiesPosition; - - $pr->butcher = ($listB[$playerId]['butcher'] >= 0) ? $listB[$playerId]['butcher'] : 0; - $pr->butcherDestroyedPEV = $listB[$playerId]['butcherDestroyedPEV']; - $pr->butcherLostPEV = $listB[$playerId]['butcherLostPEV']; - $pr->butcherPosition = $listB[$playerId]['position']; - $pr->butcherVariation = $firstRanking ? 0 : $oldRanking->butcherPosition - $pr->butcherPosition; - - $pr->trader = $listT[$playerId]['trader']; - $pr->traderPosition = $listT[$playerId]['position']; - $pr->traderVariation = $firstRanking ? 0 : $oldRanking->traderPosition - $pr->traderPosition; - - $playerRankingManager->add($pr); - - if (true === $this->dataAnalysis) { - $playerRankingRepository->insertDataAnalysis( - $player, - $pr, - $this->results[$player]['DA_Resources'], - $this->results[$player]['DA_PlanetNumber'] - ); - } - } - } - - protected function calculateResources(\PDOStatement $statement, OrbitalBaseHelper $orbitalBaseHelper) - { - while ($row = $statement->fetch()) { - if (isset($this->results[$row['player']])) { - $resourcesProd = Game::resourceProduction($orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'level', $row['levelRefinery'], 'refiningCoefficient'), $row['coefResources']); - $this->results[$row['player']]['resources'] += $resourcesProd; - } - } - $statement->closeCursor(); - } - - protected function calculateDataResources(\PDOStatement $statement) - { - while ($row = $statement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['DA_Resources'] += DataAnalysis::resourceToStdUnit($row['sumResources']); - } - } - $statement->closeCursor(); - } - - protected function calculatePlanetRanking(\PDOStatement $statement) - { - while ($row = $statement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['DA_PlanetNumber'] += $row['sumPlanets']; - } - } - $statement->closeCursor(); - } - - protected function calculateGeneralRanking(\PDOStatement $statement) - { - while ($row = $statement->fetch()) { - if (isset($this->results[$row['player']])) { - $shipPrice = 0; - $shipPrice += ShipResource::getInfo(0, 'resourcePrice') * $row['s0']; - $shipPrice += ShipResource::getInfo(1, 'resourcePrice') * $row['s1']; - $shipPrice += ShipResource::getInfo(2, 'resourcePrice') * $row['s2']; - $shipPrice += ShipResource::getInfo(3, 'resourcePrice') * $row['s3']; - $shipPrice += ShipResource::getInfo(4, 'resourcePrice') * $row['s4']; - $shipPrice += ShipResource::getInfo(5, 'resourcePrice') * $row['s5']; - $shipPrice += ShipResource::getInfo(6, 'resourcePrice') * $row['s6']; - $shipPrice += ShipResource::getInfo(7, 'resourcePrice') * $row['s7']; - $shipPrice += ShipResource::getInfo(8, 'resourcePrice') * $row['s8']; - $shipPrice += ShipResource::getInfo(9, 'resourcePrice') * $row['s9']; - $shipPrice += ShipResource::getInfo(10, 'resourcePrice') * $row['s10']; - $shipPrice += ShipResource::getInfo(11, 'resourcePrice') * $row['s11']; - $points = round($shipPrice * self::COEF_RESOURCE); - $points += $row['points']; - $points += round($row['resources'] * self::COEF_RESOURCE); - $this->results[$row['player']]['general'] += $points; - - $pevQuantity = 0; - $pevQuantity += ShipResource::getInfo(0, 'pev') * $row['s0']; - $pevQuantity += ShipResource::getInfo(1, 'pev') * $row['s1']; - $pevQuantity += ShipResource::getInfo(2, 'pev') * $row['s2']; - $pevQuantity += ShipResource::getInfo(3, 'pev') * $row['s3']; - $pevQuantity += ShipResource::getInfo(4, 'pev') * $row['s4']; - $pevQuantity += ShipResource::getInfo(5, 'pev') * $row['s5']; - $pevQuantity += ShipResource::getInfo(6, 'pev') * $row['s6']; - $pevQuantity += ShipResource::getInfo(7, 'pev') * $row['s7']; - $pevQuantity += ShipResource::getInfo(8, 'pev') * $row['s8']; - $pevQuantity += ShipResource::getInfo(9, 'pev') * $row['s9']; - $pevQuantity += ShipResource::getInfo(10, 'pev') * $row['s10']; - $pevQuantity += ShipResource::getInfo(11, 'pev') * $row['s11']; - $this->results[$row['player']]['armies'] += $pevQuantity; - } - } - $statement->closeCursor(); - } - - protected function calculateArmiesRanking(\PDOStatement $statement) - { - while ($row = $statement->fetch()) { - if (isset($this->results[$row['player']])) { - $shipPrice = 0; - $shipPrice += ShipResource::getInfo(0, 'resourcePrice') * $row['s0']; - $shipPrice += ShipResource::getInfo(1, 'resourcePrice') * $row['s1']; - $shipPrice += ShipResource::getInfo(2, 'resourcePrice') * $row['s2']; - $shipPrice += ShipResource::getInfo(3, 'resourcePrice') * $row['s3']; - $shipPrice += ShipResource::getInfo(4, 'resourcePrice') * $row['s4']; - $shipPrice += ShipResource::getInfo(5, 'resourcePrice') * $row['s5']; - $shipPrice += ShipResource::getInfo(6, 'resourcePrice') * $row['s6']; - $shipPrice += ShipResource::getInfo(7, 'resourcePrice') * $row['s7']; - $shipPrice += ShipResource::getInfo(8, 'resourcePrice') * $row['s8']; - $shipPrice += ShipResource::getInfo(9, 'resourcePrice') * $row['s9']; - $shipPrice += ShipResource::getInfo(10, 'resourcePrice') * $row['s10']; - $shipPrice += ShipResource::getInfo(11, 'resourcePrice') * $row['s11']; - $points = round($shipPrice * self::COEF_RESOURCE); - $this->results[$row['player']]['general'] += $points; - - $pevQuantity = 0; - $pevQuantity += ShipResource::getInfo(0, 'pev') * $row['s0']; - $pevQuantity += ShipResource::getInfo(1, 'pev') * $row['s1']; - $pevQuantity += ShipResource::getInfo(2, 'pev') * $row['s2']; - $pevQuantity += ShipResource::getInfo(3, 'pev') * $row['s3']; - $pevQuantity += ShipResource::getInfo(4, 'pev') * $row['s4']; - $pevQuantity += ShipResource::getInfo(5, 'pev') * $row['s5']; - $pevQuantity += ShipResource::getInfo(6, 'pev') * $row['s6']; - $pevQuantity += ShipResource::getInfo(7, 'pev') * $row['s7']; - $pevQuantity += ShipResource::getInfo(8, 'pev') * $row['s8']; - $pevQuantity += ShipResource::getInfo(9, 'pev') * $row['s9']; - $pevQuantity += ShipResource::getInfo(10, 'pev') * $row['s10']; - $pevQuantity += ShipResource::getInfo(11, 'pev') * $row['s11']; - $this->results[$row['player']]['armies'] += $pevQuantity; - } - } - $statement->closeCursor(); - } - - protected function calculateTradeRanking(\PDOStatement $routesStatement, \PDOStatement $linkedRoutesStatement) - { - while ($row = $routesStatement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['trader'] += $row['income']; - } - } - $routesStatement->closeCursor(); - while ($row = $linkedRoutesStatement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['trader'] += $row['income']; - } - } - $linkedRoutesStatement->closeCursor(); - } - - protected function calculateButcherRanking(\PDOStatement $attackerStatement, \PDOStatement $defenderStatement) - { - while ($row = $attackerStatement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['butcherDestroyedPEV'] += $row['destroyedPEV']; - $this->results[$row['player']]['butcherLostPEV'] += $row['lostPEV']; - $this->results[$row['player']]['butcher'] += $row['destroyedPEV'] - $row['lostPEV']; - } - } - $attackerStatement->closeCursor(); - while ($row = $defenderStatement->fetch()) { - if (isset($this->results[$row['player']])) { - $this->results[$row['player']]['butcherDestroyedPEV'] += $row['destroyedPEV']; - $this->results[$row['player']]['butcherLostPEV'] += $row['lostPEV']; - $this->results[$row['player']]['butcher'] += $row['destroyedPEV'] - $row['lostPEV']; - } - } - $defenderStatement->closeCursor(); - } - - protected function cmpGeneral($a, $b) - { - if($a['general'] == $b['general']) { - return 0; - } - return ($a['general'] > $b['general']) ? -1 : 1; - } - - protected function cmpResources($a, $b) { - if($a['resources'] == $b['resources']) { - return 0; - } - return ($a['resources'] > $b['resources']) ? -1 : 1; - } - - protected function cmpExperience($a, $b) { - if($a['experience'] == $b['experience']) { - return 0; - } - return ($a['experience'] > $b['experience']) ? -1 : 1; - } - - protected function cmpFight($a, $b) { - if($a['fight'] == $b['fight']) { - return 0; - } - return ($a['fight'] > $b['fight']) ? -1 : 1; - } - - protected function cmpArmies($a, $b) { - if($a['armies'] == $b['armies']) { - return 0; - } - return ($a['armies'] > $b['armies']) ? -1 : 1; - } - - protected function cmpButcher($a, $b) { - if($a['butcher'] == $b['butcher']) { - return 0; - } - return ($a['butcher'] > $b['butcher']) ? -1 : 1; - } - - protected function cmpTrader($a, $b) { - if($a['trader'] == $b['trader']) { - return 0; - } - return ($a['trader'] > $b['trader']) ? -1 : 1; - } -} diff --git a/system/Modules/Demeter/DemeterModule.php b/system/Modules/Demeter/DemeterModule.php deleted file mode 100644 index 15cf6e156..000000000 --- a/system/Modules/Demeter/DemeterModule.php +++ /dev/null @@ -1,13 +0,0 @@ -colorManager->get($message->getFactionId()); - $election = $this->electionManager->getFactionLastElection($faction->id); - $chiefId = (($leader = $this->playerManager->getFactionLeader($faction->id)) !== null) ? $leader->getId() : false; - - $votes = $this->voteManager->getElectionVotes($election); - - $ballot = []; - $listCandidate = []; - - foreach ($votes as $vote) { - if (array_key_exists($vote->rCandidate, $ballot)) { - $ballot[$vote->rCandidate]++; - } else { - $ballot[$vote->rCandidate] = 1; - } - } - - if (!empty($ballot)) { - // @TODO optimize SQL queries - foreach ($ballot as $player => $vote) { - $listCandidate[] = [ - 'id' => $player, - 'name' => $this->playerManager->get($player)->name, - 'vote' => $vote - ]; - } - - uasort($listCandidate, function($a, $b) { - if ($a['vote'] == $b['vote']) { - return 0; - } - return $a['vote'] > $b['vote'] - ? -1 : 1; - }); - } - reset($listCandidate); - - $convPlayerID = $this->playerManager->getFactionAccount($faction->id)->id; - - $S_CVM = $this->conversationManager->getCurrentSession(); - $this->conversationManager->newSession(); - $this->conversationManager->load( - ['cu.rPlayer' => $convPlayerID] - ); - $conv = $this->conversationManager->get(); - - $this->conversationManager->changeSession($S_CVM); - - if ($faction->regime == Color::DEMOCRATIC) { - if (count($ballot) > 0) { - arsort($ballot); - reset($ballot); - - $governmentMembers = $this->playerManager->getGovernmentMembers($faction->getId()); - $newChief = $this->playerManager->get(key($ballot)); - - $this->mandate($faction, $governmentMembers, $newChief, $chiefId, TRUE, $conv, $convPlayerID, $listCandidate); - } else { - $this->mandate($faction, 0, 0, $chiefId, FALSE, $conv, $convPlayerID, $listCandidate); - } - } elseif ($faction->regime == Color::ROYALISTIC) { - if (count($ballot) > 0) { - arsort($ballot); - reset($ballot); - - if (key($ballot) == $chiefId) { - next($ballot); - } - - if (((current($ballot) / ($faction->activePlayers + 1)) * 100) >= Color::PUTSCHPERCENTAGE) { - $governmentMembers = $this->playerManager->getGovernmentMembers($faction->getId()); - $newChief = $this->playerManager->get(key($ballot)); - $this->mandate($faction, $governmentMembers, $newChief, $chiefId, TRUE, $conv, $convPlayerID, $listCandidate); - } else { - $looser = $this->playerManager->get(key($ballot)); - $this->mandate($faction, 0, $looser, $chiefId, FALSE, $conv, $convPlayerID, $listCandidate); - } - } - } else { - if (($leader = $this->playerManager->getFactionLeader($faction->id)) !== null) { - if (($candidate = $this->candidateManager->getByElectionAndPlayer($election, $leader)) !== null) { - if (rand(0, 1) == 0) { - $ballot = array(); - } - } - } - if (count($ballot) > 0) { - reset($ballot); - $aleaNbr = rand(0, count($ballot) - 1); - - for ($i = 0; $i < $aleaNbr; $i++) { - next($ballot); - } - - $governmentMembers = $this->playerManager->getGovernmentMembers($faction->getId()); - $newChief = $this->playerManager->get(key($ballot)); - - $this->mandate($faction, $governmentMembers, $newChief, $chiefId, TRUE, $conv, $convPlayerID, $listCandidate); - } else { - $this->mandate($faction, 0, 0, $chiefId, FALSE, $conv, $convPlayerID, $listCandidate); - } - } - } - - public function mandate(Color $color, $governmentMembers, $newChief, $idOldChief, $hadVoted, $conv, $convPlayerID, $candidate) { - # préparation de la conversation - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # désarchiver tous les users - $users = $conv->players; - foreach ($users as $user) { - $user->convStatement = ConversationUser::CS_DISPLAY; - } - if ($hadVoted) { - /* $date = new DateTime($this->dLastElection); - $date->modify('+' . $this->mandateDuration + self::ELECTIONTIME + self::CAMPAIGNTIME . ' second'); - $date = $date->format('Y-m-d H:i:s'); - $this->dLastElection = $date;*/ - - foreach ($governmentMembers as $governmentMember) { - $governmentMember->status = Player::PARLIAMENT; - } - - $newChief->status = Player::CHIEF; - - $color->dLastElection = Utils::now(); - $color->electionStatement = Color::MANDATE; - - $statusArray = $color->status; - if ($color->regime === Color::DEMOCRATIC) { - $date = new \DateTime($color->dLastElection); - $date->modify('+' . $color->mandateDuration . ' second'); - - $this->messageBus->dispatch( - new CampaignMessage($color->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($newChief->id); - $notif->setTitle('Votre avez été élu'); - $notif->addBeg() - ->addTxt(' Le peuple vous a soutenu, vous avez été élu ' . $statusArray[Player::CHIEF - 1] . ' de votre faction.'); - $this->notificationManager->add($notif); - - # création du message - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = 'La période électorale est terminée. Un nouveau dirigeant a été élu pour faire valoir la force de ' . $color->popularName . ' à travers la galaxie. Longue vie à ' . (current($candidate)['name']) . '.

Voici les résultats des élections :

'; - foreach ($candidate as $player) { - $message->content .= $player['name'] . ' a reçu ' . $player['vote'] . ' vote' . Format::plural($player['vote']) . '
'; - } - $this->conversationMessageManager->add($message); - } elseif ($color->regime === Color::ROYALISTIC) { - $this->messageBus->dispatch( - new SenateUpdateMessage($color->getId()), - [DateTimeConverter::to_delay_stamp(date('Y-m-d H:i:s', (time() + $color->mandateDuration)))], - ); - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($newChief->id); - $notif->setTitle('Votre coup d\'état a réussi'); - $notif->addBeg() - ->addTxt(' Le peuple vous a soutenu, vous avez renversé le ' . $statusArray[Player::CHIEF - 1] . ' de votre faction et avez pris sa place.'); - $this->notificationManager->add($notif); - - if ($idOldChief) { - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($idOldChief); - $notif->setTitle('Un coup d\'état a réussi'); - $notif->addBeg() - ->addTxt(' Le joueur ') - ->addLnk('embassy/player-' . $newChief->id, $newChief->name) - ->addTxt(' a fait un coup d\'état, vous êtes évincé du pouvoir.'); - $this->notificationManager->add($notif); - } - - # création du message - reset($candidate); - if (current($candidate)['id'] == $idOldChief) { - next($candidate); - } - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = 'Un putsch a réussi, un nouveau dirigeant va faire valoir la force de ' . $color->popularName . ' à travers la galaxie. Longue vie à ' . (current($candidate)['name']) . '.

De nombreux membres de la faction ont soutenu le mouvement révolutionnaire :

'; - $message->content .= current($candidate)['name'] . ' a reçu le soutien de ' . Format::number((current($candidate)['vote'] / ($color->activePlayers + 1)) * 100) . '% de la population.' . '
'; - $this->conversationMessageManager->add($message); - - } else { - $date = new \DateTime($color->dLastElection); - $date->modify('+' . $color->mandateDuration . ' second'); - $this->messageBus->dispatch( - new CampaignMessage($color->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($newChief->id); - $notif->setTitle('Vous avez été nommé Guide'); - $notif->addBeg() - ->addTxt(' Les Oracles ont parlé, vous êtes désigné par la Grande Lumière pour guider Cardan vers la Gloire.'); - $this->notificationManager->add($notif); - - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = 'Les Oracles ont parlé, un nouveau dirigeant va faire valoir la force de ' . $color->popularName . ' à travers la galaxie. Longue vie à ' . (current($candidate)['name']) . '.



'; - $this->conversationMessageManager->add($message); - } - } else { - $noChief = false; - if (($oldChief = $this->playerManager->get($idOldChief)) === null) { - $noChief = true; - $oldChief = $this->playerManager->getByName($color->officialName); - } - /* $date = new DateTime($this->dLastElection); - $date->modify('+' . $this->mandateDuration + self::ELECTIONTIME + self::CAMPAIGNTIME . ' second'); - $date = $date->format('Y-m-d H:i:s'); - $this->dLastElection = $date;*/ - $color->dLastElection = Utils::now(); - $color->electionStatement = Color::MANDATE; - - switch ($color->regime) { - case Color::DEMOCRATIC: - $date = new \DateTime($color->dLastElection); - $date->modify('+' . $color->mandateDuration . ' second'); - $this->messageBus->dispatch( - new CampaignMessage($color->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - - if ($idOldChief) { - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($idOldChief); - $notif->setTitle('Vous demeurez ' . ColorResource::getInfo($color->getId(), 'status')[Player::CHIEF - 1]); - $notif->addBeg() - ->addTxt(' Aucun candidat ne s\'est présenté oour vous remplacer lors des dernières élections. Par conséquent, vous êtes toujours à la tête de ' . $color->popularName); - $this->notificationManager->add($notif); - } - # création du message - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = ' La période électorale est terminée. Aucun candidat ne s\'est présenté pour prendre la tête de ' . $color->popularName . '.'; - $message->content .= - ($noChief === false) - ? '
Par conséquent, ' . $oldChief->getName() . ' est toujours au pouvoir.' - : '
Par conséquent, le siège du pouvoir demeure vacant.' - ; - $this->conversationMessageManager->add($message); - break; - case Color::ROYALISTIC: - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($newChief->id); - $notif->setTitle('Votre coup d\'état a échoué'); - $notif->addBeg() - ->addTxt(' Le peuple ne vous a pas soutenu, l\'ancien gouvernement reste en place.'); - $this->notificationManager->add($notif); - - if ($idOldChief) { - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($idOldChief); - $notif->setTitle('Un coup d\'état a échoué'); - $notif->addBeg() - ->addTxt(' Le joueur ') - ->addLnk('embassy/player-' . $newChief->id, $newChief->name) - ->addTxt(' a tenté un coup d\'état, celui-ci a échoué.'); - $this->notificationManager->add($notif); - } - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = 'Un coup d\'état a échoué. ' . $oldChief->getName(). ' demeure le dirigeant de ' . $color->popularName . '.'; - $this->conversationMessageManager->add($message); - break; - case Color::THEOCRATIC: - $date = new \DateTime($color->dLastElection); - $date->modify('+' . $color->mandateDuration . ' second'); - $this->messageBus->dispatch( - new CampaignMessage($color->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - - if ($idOldChief) { - $notif = new Notification(); - $notif->dSending = Utils::now(); - $notif->setRPlayer($idOldChief); - $notif->setTitle('Vous avez été nommé Guide'); - $notif->addBeg() - ->addTxt(' Les Oracles ont parlé, vous êtes toujours désigné par la Grande Lumière pour guider Cardan vers la Gloire.'); - $this->notificationManager->add($notif); - } - $message = new ConversationMessage(); - $message->rConversation = $conv->id; - $message->rPlayer = $convPlayerID; - $message->type = ConversationMessage::TY_STD; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - $message->content = 'Nul ne s\'est soumis au regard des dieux pour conduire ' . $color->popularName . ' vers sa gloire.'; - $message->content .= - ($noChief === false) - ? $oldChief->getName(). ' demeure l\'élu des dieux pour accomplir leurs desseins dans la galaxie.' - : 'Par conséquent, le siège du pouvoir demeure vacant.' - ; - $this->conversationMessageManager->add($message); - break; - } - } - $this->entityManager->flush(); - } -} diff --git a/system/Modules/Demeter/Handler/CampaignHandler.php b/system/Modules/Demeter/Handler/CampaignHandler.php deleted file mode 100644 index 16ade8373..000000000 --- a/system/Modules/Demeter/Handler/CampaignHandler.php +++ /dev/null @@ -1,59 +0,0 @@ -colorManager->get($message->getFactionId()); - $factionPlayers = $this->playerManager->getFactionPlayersByRanking($faction->getId()); - $this->colorManager->updateStatus($faction, $factionPlayers); - - $date = new \DateTime($faction->dLastElection); - $date->modify('+' . $faction->mandateDuration + Color::CAMPAIGNTIME . ' second'); - - $election = new Election(); - $election->rColor = $faction->id; - $election->dElection = $date->format('Y-m-d H:i:s'); - - $this->electionManager->add($election); - $faction->electionStatement = Color::CAMPAIGN; - if ($faction->regime === Color::DEMOCRATIC) { - $this->messageBus->dispatch( - new ElectionMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($election->dElection)], - ); - } elseif ($faction->regime === Color::THEOCRATIC) { - $this->messageBus->dispatch( - new BallotMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($election->dElection)], - ); - } - $this->entityManager->flush($election); - $this->entityManager->flush($faction); - } -} diff --git a/system/Modules/Demeter/Handler/ElectionHandler.php b/system/Modules/Demeter/Handler/ElectionHandler.php deleted file mode 100644 index 25313bd82..000000000 --- a/system/Modules/Demeter/Handler/ElectionHandler.php +++ /dev/null @@ -1,42 +0,0 @@ -colorManager->get($message->getFactionId()); - $faction->electionStatement = Color::ELECTION; - $election = $this->electionManager->getFactionLastElection($faction->getId()); - - $date = new \DateTime($election->dElection); - $date->modify('+' . Color::ELECTIONTIME . ' second'); - - $this->messageBus->dispatch( - new BallotMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))] - ); - - $this->entityManager->flush($faction); - } -} diff --git a/system/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php b/system/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php deleted file mode 100644 index 8578715dc..000000000 --- a/system/Modules/Demeter/Handler/Law/AllianceDeclarationResultHandler.php +++ /dev/null @@ -1,37 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $enemyColor = $this->colorManager->get($law->options['rColor']); - - $color->colorLink[$law->options['rColor']] = Color::ALLY; - $law->statement = Law::OBSOLETE; - $this->commercialRouteManager->freezeRoute($color, $enemyColor); - $this->entityManager->flush($color); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/BonusEndHandler.php b/system/Modules/Demeter/Handler/Law/BonusEndHandler.php deleted file mode 100644 index 64699b680..000000000 --- a/system/Modules/Demeter/Handler/Law/BonusEndHandler.php +++ /dev/null @@ -1,26 +0,0 @@ -lawManager->get($message->getLawId()); - $law->statement = Law::OBSOLETE; - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php b/system/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php deleted file mode 100644 index 8e626515b..000000000 --- a/system/Modules/Demeter/Handler/Law/ExportCommercialTaxesResultHandler.php +++ /dev/null @@ -1,42 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $relatedFaction = $this->colorManager->get($law->options['rColor']); - $tax = $this->commercialTaxManager->getFactionsTax($color, $relatedFaction); - - if ($law->options['rColor'] == $color->id) { - $tax->exportTax = $law->options['taxes'] / 2; - $tax->importTax = $law->options['taxes'] / 2; - $law->statement = Law::OBSOLETE; - } else { - $tax->exportTax = $law->options['taxes']; - $law->statement = Law::OBSOLETE; - } - $this->entityManager->flush($law); - $this->entityManager->flush($tax); - } -} diff --git a/system/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php b/system/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php deleted file mode 100644 index 2a4c1fc35..000000000 --- a/system/Modules/Demeter/Handler/Law/ImportCommercialTaxesResultHandler.php +++ /dev/null @@ -1,42 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $relatedFaction = $this->colorManager->get($law->options['rColor']); - $tax = $this->commercialTaxManager->getFactionsTax($color, $relatedFaction); - - if ($law->options['rColor'] == $color->id) { - $tax->exportTax = $law->options['taxes'] / 2; - $tax->importTax = $law->options['taxes'] / 2; - $law->statement = Law::OBSOLETE; - } else { - $tax->importTax = $law->options['taxes']; - $law->statement = Law::OBSOLETE; - } - $this->entityManager->flush($law); - $this->entityManager->flush($tax); - } -} diff --git a/system/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php b/system/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php deleted file mode 100644 index dbdbd917a..000000000 --- a/system/Modules/Demeter/Handler/Law/NonAgressionPactDeclarationResultHandler.php +++ /dev/null @@ -1,37 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $enemyColor = $this->colorManager->get($law->options['rColor']); - - $color->colorLink[$law->options['rColor']] = Color::NEUTRAL; - $law->statement = Law::OBSOLETE; - $this->commercialRouteManager->freezeRoute($color, $enemyColor); - $this->entityManager->flush($color); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php b/system/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php deleted file mode 100644 index f4b6d42c0..000000000 --- a/system/Modules/Demeter/Handler/Law/PeaceDeclarationResultHandler.php +++ /dev/null @@ -1,37 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $enemyColor = $this->colorManager->get($law->options['rColor']); - - $color->colorLink[$law->options['rColor']] = Color::PEACE; - $law->statement = Law::OBSOLETE; - $this->commercialRouteManager->freezeRoute($color, $enemyColor); - $this->entityManager->flush($color); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/SanctionResultHandler.php b/system/Modules/Demeter/Handler/Law/SanctionResultHandler.php deleted file mode 100644 index dc1b72ad5..000000000 --- a/system/Modules/Demeter/Handler/Law/SanctionResultHandler.php +++ /dev/null @@ -1,40 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $player = $this->playerManager->get($law->options['rPlayer']); - - $toPay = $law->options['credits']; - if ($player->credit < $law->options['credits']) { - $toPay = $player->credit; - } - $this->playerManager->decreaseCredit($player, $toPay); - $color->credits += $toPay; - $law->statement = Law::OBSOLETE; - $this->entityManager->flush($color); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/SectorNameResultHandler.php b/system/Modules/Demeter/Handler/Law/SectorNameResultHandler.php deleted file mode 100644 index 067595be0..000000000 --- a/system/Modules/Demeter/Handler/Law/SectorNameResultHandler.php +++ /dev/null @@ -1,38 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getId()); - $sector = $this->sectorManager->get($law->options['rSector']); - - if ($sector->rColor == $color->id) { - $sector->name = $law->options['name']; - } - $law->statement = Law::OBSOLETE; - - $this->entityManager->flush($sector); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php b/system/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php deleted file mode 100644 index b1b455eed..000000000 --- a/system/Modules/Demeter/Handler/Law/SectorTaxesResultHandler.php +++ /dev/null @@ -1,38 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $sector = $this->sectorManager->get($law->options['rSector']); - - if ($sector->rColor == $color->id) { - $sector->tax = $law->options['taxes']; - } - $law->statement = Law::OBSOLETE; - - $this->entityManager->flush($law); - $this->entityManager->flush($sector); - } -} diff --git a/system/Modules/Demeter/Handler/Law/VoteHandler.php b/system/Modules/Demeter/Handler/Law/VoteHandler.php deleted file mode 100644 index 90cb30c05..000000000 --- a/system/Modules/Demeter/Handler/Law/VoteHandler.php +++ /dev/null @@ -1,46 +0,0 @@ -lawManager->get($message->getLawId()); - $faction = $this->colorManager->get($law->getFactionId()); - $ballot = $this->lawManager->ballot($law); - if ($ballot) { - //accepter la loi - $law->statement = Law::EFFECTIVE; - //envoyer un message - } else { - //refuser la loi - $law->statement = Law::REFUSED; - if (LawResources::getInfo($law->type, 'bonusLaw')) { - $faction->credits += (LawResources::getInfo($law->type, 'price') * Utils::interval($law->dEndVotation, $law->dEnd) * ($faction->activePlayers + 1) * 90) / 100; - } else { - $faction->credits += (LawResources::getInfo($law->type, 'price') * 90) / 100; - } - //envoyer un message - } - $this->entityManager->flush($law); - $this->entityManager->flush($faction); - } -} diff --git a/system/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php b/system/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php deleted file mode 100644 index cbbe52b9a..000000000 --- a/system/Modules/Demeter/Handler/Law/WarDeclarationResultHandler.php +++ /dev/null @@ -1,38 +0,0 @@ -lawManager->get($message->getLawId()); - $color = $this->colorManager->get($law->getFactionId()); - $enemyColor = $this->colorManager->get($law->options['rColor']); - - $color->colorLink[$law->options['rColor']] = Color::ENEMY; - $enemyColor->colorLink[$color->id] = Color::ENEMY; - $law->statement = Law::OBSOLETE; - $this->commercialRouteManager->freezeRoute($color, $enemyColor); - $this->entityManager->flush($color); - $this->entityManager->flush($law); - } -} diff --git a/system/Modules/Demeter/Handler/SenateUpdateHandler.php b/system/Modules/Demeter/Handler/SenateUpdateHandler.php deleted file mode 100644 index 95fce438b..000000000 --- a/system/Modules/Demeter/Handler/SenateUpdateHandler.php +++ /dev/null @@ -1,40 +0,0 @@ -colorManager->get($message->getFactionId()); - $this->colorManager->updateStatus($faction, $this->playerManager->getFactionPlayersByRanking($faction->getId())); - - if ($faction->regime === Color::ROYALISTIC && $faction->electionStatement === Color::MANDATE) { - $date = date('Y-m-d H:i:s', time() + $faction->mandateDuration); - $faction->dLastElection = $date; - $this->messageBus->dispatch( - new SenateUpdateMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($date)], - ); - $this->entityManager->flush($faction); - } - } -} diff --git a/system/Modules/Demeter/Manager/ColorManager.php b/system/Modules/Demeter/Manager/ColorManager.php deleted file mode 100644 index be42bf42f..000000000 --- a/system/Modules/Demeter/Manager/ColorManager.php +++ /dev/null @@ -1,323 +0,0 @@ -playerManager = $playerManager; - } - - /** - * @param int $id - * @return Color - */ - public function get($id) - { - $faction = $this->entityManager->getRepository(Color::class)->get($id); - // @TODO avoid duplicate messages - $this->uMethod($faction); - return $faction; - } - - /** - * @return array - */ - public function getAll() - { - return $this->entityManager->getRepository(Color::class)->getAll(); - } - - /** - * @return array - */ - public function getInGameFactions() - { - return $this->entityManager->getRepository(Color::class)->getInGameFactions(); - } - - /** - * @return array - */ - public function getOpenFactions() - { - return $this->entityManager->getRepository(Color::class)->getOpenFactions(); - } - - /** - * @return array - */ - public function getAllByActivePlayersNumber() - { - return $this->entityManager->getRepository(Color::class)->getAllByActivePlayersNumber(); - } - - /** - * @param Color $faction - * @return int - */ - public function add(Color $faction) { - $this->entityManager->persist($faction); - $this->entityManager->flush($faction); - - return $faction->id; - } - - /** - * @param Color $color - * @return string - */ - public function getParsedDescription(Color $color) { - $this->parser->parseBigTag = TRUE; - return $this->parser->parse($color->description); - } - - public function scheduleSenateUpdate() - { - $factions = $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::ROYALISTIC], [Color::MANDATE] - ); - foreach ($factions as $faction) { - $date = new \DateTime($faction->dLastElection); - $date->modify('+' . $faction->mandateDuration . ' second'); - - $this->messageBus->dispatch( - new SenateUpdateMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - } - } - - public function scheduleCampaigns() - { - $factions = $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::DEMOCRATIC, Color::THEOCRATIC], - [Color::MANDATE] - ); - foreach ($factions as $faction) { - $date = new \DateTime($faction->dLastElection); - $date->modify('+' . $faction->mandateDuration . ' second'); - - $this->messageBus->dispatch( - new CampaignMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($date->format('Y-m-d H:i:s'))], - ); - } - $factions = $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::ROYALISTIC], [Color::ELECTION] - ); - foreach ($factions as $faction) { - $datetime = new \DateTime($faction->dLastElection); - $datetime->modify('+' . Color::PUTSCHTIME . ' second'); - - $this->messageBus->dispatch( - new BallotMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($datetime->format('Y-m-d H:i:s'))], - ); - } - } - - public function scheduleElections(): void - { - $factions = $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::DEMOCRATIC], [Color::CAMPAIGN] - ); - foreach ($factions as $faction) { - $election = $this->electionManager->getFactionLastElection($faction->id); - $this->messageBus->dispatch( - new ElectionMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($election->dElection)], - ); - } - } - - public function scheduleBallot() - { - $factions = array_merge( - $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::DEMOCRATIC], [Color::ELECTION] - ), - $this->entityManager->getRepository(Color::class)->getByRegimeAndElectionStatement( - [Color::THEOCRATIC], [Color::CAMPAIGN, Color::ELECTION] - ) - ); - foreach ($factions as $faction) { - $datetime = new \DateTime($faction->dLastElection); - $datetime->modify('+' . $faction->mandateDuration + Color::ELECTIONTIME + Color::CAMPAIGNTIME . ' second'); - - $this->messageBus->dispatch( - new BallotMessage($faction->getId()), - [DateTimeConverter::to_delay_stamp($datetime->format('Y-m-d H:i:s'))] - ); - } - $this->entityManager->flush(Color::class); - } - - // FONCTIONS STATICS - public function updateInfos(Color $faction) { - $faction->players = $this - ->playerManager - ->countByFactionAndStatements($faction->id, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) - ; - $faction->activePlayers = $this - ->playerManager - ->countByFactionAndStatements($faction->id, [Player::ACTIVE]) - ; - $this->entityManager->flush($faction); - } - - public function sendSenateNotif(Color $color, $fromChief = FALSE) { - $parliamentMembers = $this->playerManager->getParliamentMembers($color->id); - - foreach ($parliamentMembers as $parliamentMember) { - $notif = new Notification(); - $notif->setRPlayer($parliamentMember->id); - if ($fromChief == FALSE) { - $notif->setTitle('Loi proposée'); - $notif->addBeg() - ->addTxt('Votre gouvernement a proposé un projet de loi, en tant que membre du sénat, il est de votre devoir de voter pour l\'acceptation ou non de ladite loi.') - ->addSep() - ->addLnk('faction/view-senate', 'voir les lois en cours de vote') - ->addEnd(); - } else { - $notif->setTitle('Loi appliquée'); - $notif->addBeg() - ->addTxt('Votre ' . ColorResource::getInfo($color->id, 'status')[5] . ' a appliqué une loi.') - ->addSep() - ->addLnk('faction/view-senate', 'voir les lois appliquées') - ->addEnd(); - } - $this->notificationManager->add($notif); - } - } - - /** - * @param Color $color - * @param array $factionPlayers - */ - public function updateStatus(Color $color, $factionPlayers) { - $limit = round($color->players / 4); - // If there is less than 40 players in a faction, the limit is up to 10 senators - if ($limit < 10) { $limit = 10; } - // If there is more than 120 players in a faction, the limit is up to 40 senators - if ($limit > 40) { $limit = 40; } - - foreach ($factionPlayers as $key => $factionPlayer) { - if ($factionPlayer->status < Player::TREASURER) { - if ($key < $limit) { - if ($factionPlayer->status != Player::PARLIAMENT) { - $notif = new Notification(); - $notif->setRPlayer($factionPlayer->id); - $notif->setTitle('Vous êtes sénateur'); - $notif->dSending = Utils::now(); - $notif->addBeg() - ->addTxt('Vos actions vous ont fait gagner assez de prestige pour faire partie du sénat.'); - $this->notificationManager->add($notif); - } - $factionPlayer->status = Player::PARLIAMENT; - } else { - if ($factionPlayer->status == Player::PARLIAMENT) { - $notif = new Notification(); - $notif->setRPlayer($factionPlayer->id); - $notif->setTitle('Vous n\'êtes plus sénateur'); - $notif->dSending = Utils::now(); - $notif->addBeg() - ->addTxt('Vous n\'avez plus assez de prestige pour rester dans le sénat.'); - $this->notificationManager->add($notif); - } - $factionPlayer->status = Player::STANDARD; - } - } - } - $this->entityManager->flush(Player::class); - } - - public function uMethod(Color $color): void - { - $laws = $this->lawManager->getByFactionAndStatements($color->id, [Law::VOTATION, Law::EFFECTIVE]); - - foreach ($laws as $law) { - if ($law->statement == Law::VOTATION && $law->dEndVotation < Utils::now()) { - $this->messageBus->dispatch( - new VoteMessage($law->getId()), - [DateTimeConverter::to_delay_stamp($law->dEndVotation)], - ); - } elseif ($law->statement == Law::EFFECTIVE && $law->dEnd < Utils::now()) { - $messageClass = match (LawResources::getInfo($law->type, 'bonusLaw')) { - true => BonusEndMessage::class, - false => match($law->type) { - Law::SECTORTAX => SectorTaxesResultMessage::class, - Law::SECTORNAME => SectorNameResultMessage::class, - Law::COMTAXEXPORT => ExportCommercialTaxesResultMessage::class, - Law::COMTAXIMPORT => ImportCommercialTaxesResultMessage::class, - Law::PEACEPACT => PeaceDeclarationResultMessage::class, - Law::WARDECLARATION => WarDeclarationResultMessage::class, - Law::TOTALALLIANCE => AllianceDeclarationResultMessage::class, - Law::NEUTRALPACT => NonAgressionPactDeclarationResultMessage::class, - Law::PUNITION => SanctionResultMessage::class, - } - }; - $this->messageBus->dispatch( - new $messageClass($law->getId()), - [DateTimeConverter::to_delay_stamp($law->dEnd)], - ); - } - } - } -} diff --git a/system/Modules/Demeter/Manager/Election/CandidateManager.php b/system/Modules/Demeter/Manager/Election/CandidateManager.php deleted file mode 100644 index f8241b648..000000000 --- a/system/Modules/Demeter/Manager/Election/CandidateManager.php +++ /dev/null @@ -1,65 +0,0 @@ -entityManager->getRepository(Candidate::class)->get($id); - } - - /** - * @param Election $election - * @return array - */ - public function getByElection(Election $election) - { - return $this->entityManager->getRepository(Candidate::class)->getByElection($election->id); - } - - /** - * @param Election $election - * @param Player $player - * @return Candidate - */ - public function getByElectionAndPlayer(Election $election, Player $player) - { - return $this->entityManager->getRepository(Candidate::class)->getByElectionAndPlayer($election->id, $player->id); - } - - /** - * @param Candidate $candidate - * @return int - */ - public function add(Candidate $candidate) { - $this->entityManager->persist($candidate); - $this->entityManager->flush($candidate); - - return $candidate->id; - } -} diff --git a/system/Modules/Demeter/Manager/Election/ElectionManager.php b/system/Modules/Demeter/Manager/Election/ElectionManager.php deleted file mode 100644 index 8bf257ef9..000000000 --- a/system/Modules/Demeter/Manager/Election/ElectionManager.php +++ /dev/null @@ -1,52 +0,0 @@ -entityManager->getRepository(Election::class)->get($id); - } - - /** - * @param int $factionId - * @return Election - */ - public function getFactionLastElection($factionId) - { - return $this->entityManager->getRepository(Election::class)->getFactionLastElection($factionId); - } - - /** - * @param Election $election - * @return int - */ - public function add(Election $election) - { - $this->entityManager->persist($election); - $this->entityManager->flush($election); - - return $election->id; - } -} diff --git a/system/Modules/Demeter/Manager/Election/VoteManager.php b/system/Modules/Demeter/Manager/Election/VoteManager.php deleted file mode 100644 index eae2e9add..000000000 --- a/system/Modules/Demeter/Manager/Election/VoteManager.php +++ /dev/null @@ -1,56 +0,0 @@ -entityManager->getRepository(Vote::class)->getElectionVotes($election->id); - } - - /** - * @param Player $player - * @param Election $election - * @return Vote - */ - public function getPlayerVote(Player $player, Election $election) - { - return $this->entityManager->getRepository(Vote::class)->getPlayerVote($player->id, $election->id); - } - - /** - * @param Vote $vote - * @return int - */ - public function add(Vote $vote) { - $this->entityManager->persist($vote); - $this->entityManager->flush($vote); - - return $vote->id; - } -} diff --git a/system/Modules/Demeter/Manager/Forum/FactionNewsManager.php b/system/Modules/Demeter/Manager/Forum/FactionNewsManager.php deleted file mode 100644 index 6824d14fb..000000000 --- a/system/Modules/Demeter/Manager/Forum/FactionNewsManager.php +++ /dev/null @@ -1,86 +0,0 @@ -entityManager->getRepository(FactionNews::class)->get($id); - } - - /** - * @param int $factionId - * @return FactionNews - */ - public function getFactionNews($factionId) - { - return $this->entityManager->getRepository(FactionNews::class)->getFactionNews($factionId); - } - - /** - * @param int $factionId - * @return FactionNews - */ - public function getFactionBasicNews($factionId) - { - return $this->entityManager->getRepository(FactionNews::class)->getFactionBasicNews($factionId); - } - - /** - * @param int $factionId - * @return FactionNews - */ - public function getFactionPinnedNew($factionId) - { - return $this->entityManager->getRepository(FactionNews::class)->getPinnedNew($factionId); - } - - /** - * @param FactionNews $factionNew - * @return int - */ - public function add(FactionNews $factionNew) { - $this->entityManager->persist($factionNew); - $this->entityManager->flush($factionNew); - - return $factionNew->id; - } - - /** - * @param FactionNews $factionNews - * @param string $content - */ - public function edit(FactionNews $factionNews, $content) { - $factionNews->oContent = $content; - - $this->parser->parseBigTag = TRUE; - - $factionNews->pContent = $this->parser->parse($content); - - $this->entityManager->flush($factionNews); - } -} diff --git a/system/Modules/Demeter/Manager/Forum/ForumMessageManager.php b/system/Modules/Demeter/Manager/Forum/ForumMessageManager.php deleted file mode 100644 index c55f616f1..000000000 --- a/system/Modules/Demeter/Manager/Forum/ForumMessageManager.php +++ /dev/null @@ -1,156 +0,0 @@ -parser = $parser; - } - - public function load($where = array(), $order = array(), $limit = array()) { - $formatWhere = Utils::arrayToWhere($where, 'm.'); - $formatOrder = Utils::arrayToOrder($order); - $formatLimit = Utils::arrayToLimit($limit); - - $qr = $this->database->prepare('SELECT m.*, - p.name AS playerName, - p.rColor AS playerColor, - p.avatar AS playerAvatar, - p.status AS playerStatus - FROM forumMessage AS m - LEFT JOIN player AS p - ON m.rPlayer = p.id - ' . $formatWhere .' - ' . $formatOrder .' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $aw = $qr->fetchAll(); - $qr->closeCursor(); - - foreach($aw AS $awMessage) { - $message = new ForumMessage(); - $message->id = $awMessage['id']; - $message->rPlayer = $awMessage['rPlayer']; - $message->rTopic = $awMessage['rTopic']; - $message->oContent = $awMessage['oContent']; - $message->pContent = $awMessage['pContent']; - $message->statement = $awMessage['statement']; - $message->dCreation = $awMessage['dCreation']; - $message->dLastModification = $awMessage['dLastModification']; - - $message->playerName = $awMessage['playerName']; - $message->playerColor = $awMessage['playerColor']; - $message->playerAvatar = $awMessage['playerAvatar']; - $message->playerStatus = $awMessage['playerStatus']; - - $this->_Add($message); - } - } - - public function save() { - $messages = $this->_Save(); - - foreach ($messages AS $message) { - - $qr = $this->database->prepare('UPDATE forumMessage - SET - rPlayer = ?, - rTopic = ?, - oContent = ?, - pContent = ?, - statement = ?, - dCreation = ?, - dLastModification = ? - WHERE id = ?'); - $aw = $qr->execute(array( - $message->rPlayer, - $message->rTopic, - $message->oContent, - $message->pContent, - $message->statement, - $message->dCreation, - Utils::now(), - $message->id - )); - } - } - - public function add($newMessage) { - $qr = $this->database->prepare('INSERT INTO forumMessage - SET - rPlayer = ?, - rTopic = ?, - oContent = ?, - pContent = ?, - dCreation = ?'); - $aw = $qr->execute(array( - $newMessage->rPlayer, - $newMessage->rTopic, - $newMessage->oContent, - $newMessage->pContent, - Utils::now() - )); - - $newMessage->id = $this->database->lastInsertId(); - - $this->_Add($newMessage); - - return $newMessage->id; - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM forumMessage WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public function edit(ForumMessage $message, $content) { - $message->oContent = $content; - - $this->parser->parseBigTag = TRUE; - - $message->pContent = $this->parser->parse($content); - } -} diff --git a/system/Modules/Demeter/Manager/Forum/ForumTopicManager.php b/system/Modules/Demeter/Manager/Forum/ForumTopicManager.php deleted file mode 100644 index bad5846d6..000000000 --- a/system/Modules/Demeter/Manager/Forum/ForumTopicManager.php +++ /dev/null @@ -1,181 +0,0 @@ -database->prepare('SELECT t.*, - (SELECT lv.dView FROM forumLastView AS lv WHERE rTopic = t.id AND rPlayer = ?) AS lastView, - COUNT(m.id) AS nbMessage - FROM forumTopic AS t - LEFT JOIN forumMessage AS m - ON t.id = m.rTopic - ' . $formatWhere . ' - GROUP BY t.id - ' . $formatOrder . ' - ' . $formatLimit - ); - - $valuesArray[] = $playerId; - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $aw = $qr->fetchAll(); - $qr->closeCursor(); - - foreach ($aw AS $awTopic) { - $topic = new ForumTopic(); - $topic->id = $awTopic['id']; - $topic->title = $awTopic['title']; - $topic->rPlayer = $awTopic['rPlayer']; - $topic->rColor = $awTopic['rColor']; - $topic->rForum = $awTopic['rForum']; - $topic->isArchived = $awTopic['isArchived']; - $topic->isUp = $awTopic['isUp']; - $topic->isClosed = $awTopic['isClosed']; - $topic->dCreation = $awTopic['dCreation']; - $topic->dLastMessage = $awTopic['dLastMessage']; - - $topic->lastView = $awTopic['lastView']; - $topic->nbMessage = $awTopic['nbMessage']; - - $this->_Add($topic); - } - } - - public function save() { - $topics = $this->_Save(); - - foreach ($topics AS $topic) { - $qr = $this->database->prepare('UPDATE forumTopic - SET - title = ?, - rPlayer = ?, - rColor = ?, - rForum = ?, - isArchived = ?, - isUp = ?, - isClosed = ?, - dCreation = ?, - dLastMessage = ? - WHERE id = ?'); - $aw = $qr->execute(array( - $topic->title, - $topic->rPlayer, - $topic->rColor, - $topic->rForum, - $topic->isArchived, - $topic->isUp, - $topic->isClosed, - $topic->dCreation, - $topic->dLastMessage, - $topic->id - )); - } - } - - public function add($newTopic) { - $qr = $this->database->prepare('INSERT INTO forumTopic - SET - title = ?, - rPlayer = ?, - rColor = ?, - rForum = ?, - isArchived = ?, - isUp = ?, - isClosed = ?, - dCreation = ?, - dLastMessage = ?'); - $aw = $qr->execute(array( - $newTopic->title, - $newTopic->rPlayer, - $newTopic->rColor, - $newTopic->rForum, - $newTopic->isArchived, - $newTopic->isUp, - $newTopic->isClosed, - Utils::now(), - Utils::now() - ) - ); - - $newTopic->id = $this->database->lastInsertId(); - - $this->_Add($newTopic); - - return $newTopic->id; - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM forumTopic WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public function updateLastView(ForumTopic $topic, $playerId) { - if ($topic->lastView == NULL) { - $qr = $this->database->prepare('INSERT INTO forumLastView - SET - rPlayer = ?, - rTopic = ?, - dView = ?'); - $aw = $qr->execute(array( - $playerId, - $topic->id, - Utils::now() - ) - ); - } else { - $qr = $this->database->prepare('UPDATE forumLastView - SET - dView = ? - WHERE rPlayer = ? AND rTopic = ?'); - $aw = $qr->execute(array( - Utils::now(), - $playerId, - $topic->id - )); - } - } -} diff --git a/system/Modules/Demeter/Manager/Law/LawManager.php b/system/Modules/Demeter/Manager/Law/LawManager.php deleted file mode 100644 index 450e1b24a..000000000 --- a/system/Modules/Demeter/Manager/Law/LawManager.php +++ /dev/null @@ -1,83 +0,0 @@ -entityManager->getRepository(Law::class)->get($id); - } - - /** - * @param int $factionId - * @param array $statements - * @return array - */ - public function getByFactionAndStatements($factionId, $statements = []) - { - return $this->entityManager->getRepository(Law::class)->getByFactionAndStatements($factionId, $statements); - } - - /** - * @param int $factionId - * @param string $type - * @return bool - */ - public function lawExists($factionId, $type) - { - return $this->entityManager->getRepository(Law::class)->lawExists($factionId, $type); - } - - /** - * @param Law $law - * @return int - */ - public function add(Law $law) { - $this->entityManager->persist($law); - $this->entityManager->flush($law); - - return $law->id; - } - - /** - * @param Law $law - * @return bool - */ - public function ballot(Law $law) { - $votes = $this->voteLawManager->getLawVotes($law); - - $ballot = 0; - - foreach ($votes as $vote) { - if ($vote->vote) { - $ballot++; - } else { - $ballot--; - } - } - return $ballot >= 0; - } -} diff --git a/system/Modules/Demeter/Manager/Law/VoteLawManager.php b/system/Modules/Demeter/Manager/Law/VoteLawManager.php deleted file mode 100644 index cf4d76620..000000000 --- a/system/Modules/Demeter/Manager/Law/VoteLawManager.php +++ /dev/null @@ -1,55 +0,0 @@ -entityManager->persist($voteLaw); - $this->entityManager->flush($voteLaw); - - return $voteLaw->id; - } - - /** - * @param Law $law - * @return array - */ - public function getLawVotes(Law $law) - { - return $this->entityManager->getRepository(VoteLaw::class)->getLawVotes($law->id); - } - - /** - * @param int $playerId - * @param Law $law - * @return bool - */ - public function hasVoted($playerId, Law $law) - { - return $this->entityManager->getRepository(VoteLaw::class)->hasVoted($playerId, $law->id); - } - - -} diff --git a/system/Modules/Demeter/Message/BallotMessage.php b/system/Modules/Demeter/Message/BallotMessage.php deleted file mode 100644 index 05fa4f4e4..000000000 --- a/system/Modules/Demeter/Message/BallotMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -factionId; - } -} diff --git a/system/Modules/Demeter/Message/CampaignMessage.php b/system/Modules/Demeter/Message/CampaignMessage.php deleted file mode 100644 index a06b48c15..000000000 --- a/system/Modules/Demeter/Message/CampaignMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -factionId; - } -} diff --git a/system/Modules/Demeter/Message/ElectionMessage.php b/system/Modules/Demeter/Message/ElectionMessage.php deleted file mode 100644 index b0358d9b2..000000000 --- a/system/Modules/Demeter/Message/ElectionMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -factionId; - } -} diff --git a/system/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php b/system/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php deleted file mode 100644 index e344dde83..000000000 --- a/system/Modules/Demeter/Message/Law/AllianceDeclarationResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/BonusEndMessage.php b/system/Modules/Demeter/Message/Law/BonusEndMessage.php deleted file mode 100644 index 0aba55a21..000000000 --- a/system/Modules/Demeter/Message/Law/BonusEndMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php b/system/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php deleted file mode 100644 index ad89a2cad..000000000 --- a/system/Modules/Demeter/Message/Law/ExportCommercialTaxesResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php b/system/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php deleted file mode 100644 index 445d7e80e..000000000 --- a/system/Modules/Demeter/Message/Law/ImportCommercialTaxesResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php b/system/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php deleted file mode 100644 index da29a72e9..000000000 --- a/system/Modules/Demeter/Message/Law/NonAgressionPactDeclarationResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php b/system/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php deleted file mode 100644 index 4b07ee083..000000000 --- a/system/Modules/Demeter/Message/Law/PeaceDeclarationResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/SanctionResultMessage.php b/system/Modules/Demeter/Message/Law/SanctionResultMessage.php deleted file mode 100644 index daaed08b0..000000000 --- a/system/Modules/Demeter/Message/Law/SanctionResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/SectorNameResultMessage.php b/system/Modules/Demeter/Message/Law/SectorNameResultMessage.php deleted file mode 100644 index 3c6b06792..000000000 --- a/system/Modules/Demeter/Message/Law/SectorNameResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php b/system/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php deleted file mode 100644 index ccf76a7ed..000000000 --- a/system/Modules/Demeter/Message/Law/SectorTaxesResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/VoteMessage.php b/system/Modules/Demeter/Message/Law/VoteMessage.php deleted file mode 100644 index 193e986ab..000000000 --- a/system/Modules/Demeter/Message/Law/VoteMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php b/system/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php deleted file mode 100644 index 0d0bfb396..000000000 --- a/system/Modules/Demeter/Message/Law/WarDeclarationResultMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -lawId; - } -} diff --git a/system/Modules/Demeter/Message/SenateUpdateMessage.php b/system/Modules/Demeter/Message/SenateUpdateMessage.php deleted file mode 100644 index 614ab7f23..000000000 --- a/system/Modules/Demeter/Message/SenateUpdateMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -factionId; - } -} diff --git a/system/Modules/Demeter/Model/Color.php b/system/Modules/Demeter/Model/Color.php deleted file mode 100644 index 59a1eab3c..000000000 --- a/system/Modules/Demeter/Model/Color.php +++ /dev/null @@ -1,793 +0,0 @@ -id; - } - - /** - * @param int $id - * @return $this - */ - public function setId($id) - { - $this->id = $id; - - return $this; - } - - /** - * @return bool - */ - public function getAlive() - { - return $this->alive; - } - - /** - * @param bool $alive - * @return $this - */ - public function setAlive($alive) - { - $this->alive = $alive; - - return $this; - } - - /** - * @return bool - */ - public function getIsWinner() - { - return $this->isWinner; - } - - /** - * @param bool $isWinner - * @return $this - */ - public function setIsWinner($isWinner) - { - $this->isWinner = $isWinner; - - return $this; - } - - /** - * @return int - */ - public function getCredits() - { - return $this->credits; - } - - /** - * @param int $credits - * @return $this - */ - public function setCredits($credits) - { - $this->credits = $credits; - - return $this; - } - - /** - * @return array - */ - public function getPlayers() - { - return $this->players; - } - - /** - * @param array $players - * @return $this - */ - public function setPlayers($players) - { - $this->players = $players; - - return $this; - } - /** - * @param int $idPlayer - * @return $this - */ - public function addPlayer($idPlayer) - { - //Kern je sais pas s'il le faut, et je sais pas comment l'écrire mais j'hésite avec le setPplayers je sais pas si on set tout d'un coup ou si c'est plutot par ajout - $this->players = players; - - return $this; - } - -//Kern je connais pas le type non plus, je suppose que c'est un tableau d'int avec les id - /** - * @return array - */ - public function getActivePlayers() - { - return $this->activePlayers; - } - - /** - * @param array $activePlayers - * @return $this - */ - public function setActivePlayers($activePlayers) - { - $this->activePlayers = $activePlayers; - - return $this; - } - - /** - * @return int - */ - public function getRankingPoints() - { - return $this->rankingPoints; - } - - /** - * @param int $rankingPoints - * @return $this - */ - public function setRankingPoints($rankingPoints) - { - $this->rankingPoints = $rankingPoints; - - return $this; - } - - /** - * @return int - */ - public function getPoints() - { - return $this->points; - } - - /** - * @param int $points - * @return $this - */ - public function setPoints($points) - { - $this->points = $points; - - return $this; - } - - /** - * @return array - */ - public function getSectors() - { - return $this->id; - } - - /** - * @param array $sectors - * @return $this - */ - public function setSectors($sectors) - { - $this->sectors = $sectors; - - return $this; - } - - /** - * @return int - */ - public function getElectionStatement() - { - return $this->electionStatement; - } - - /** - * @param int $electionStatement - * @return $this - */ - public function setElectionStatement($electionStatement) - { - $this->electionStatement = $electionStatement; - - return $this; - } - - /** - * @return bool - */ - public function getIsClosed() - { - return $this->isClosed; - } - - /** - * @param bool $isClosed - * @return $this - */ - public function setIsClosed($isClosed) - { - $this->isClosed = $isClosed; - - return $this; - } - - /** - * @return string - */ - public function getDescription() - { - return $this->description; - } - //Kern je me base sur les valeurs par défaut mais ça me semble bizarre : public $description= 0; - /** - * @param int $description - * @return $this - */ - public function setDescription($description) - { - $this->description = $description; - - return $this; - } - //Kern Pareil ici : public $dClaimVictory = ''; - /** - * @return string - */ - public function getDClaimVictory() - { - return $this->dClaimVictory; - } - - /** - * @param string $dClaimVictory - * @return $this - */ - public function setDClaimVictory($dClaimVictory) - { - $this->dClaimVictory = $dClaimVictory; - - return $this; - } - - /** - * @return string - */ - public function getDLastElection() - { - return $this->dLastElection; - } - - /** - * @param string $dLastElection - * @return $this - */ - public function setDLastElection($dLastElection) - { - $this->dLastElection = $dLastElection; - - return $this; - } - - /** - * @return int - */ - public function getIsInGame() - { - return $this->isInGame; - } - - /** - * @param int $isInGame - * @return $this - */ - public function setIsInGame($isInGame) - { - $this->isInGame = $isInGame; - - return $this; - } - - /** - * @return string - */ - public function getOfficialName() - { - return $this->officialName; - } - - /** - * @param string $officialName - * @return $this - */ - public function setOfficialName($officialName) - { - $this->officialName = $officialName; - - return $this; - } - - /** - * @return string - */ - public function getPopularName() - { - return $this->popularName; - } - - /** - * @param string $popularName - * @return $this - */ - public function setPopularName($popularName) - { - $this->popularName = $popularName; - - return $this; - } - - /** - * @return string - */ - public function getGovernment() - { - return $this->government; - } - - /** - * @param string $government - * @return $this - */ - public function setGovernment($government) - { - $this->government = $government; - - return $this; - } - - /** - * @return string - */ - public function getDemonym() - { - return $this->demonym; - } - - /** - * @param string $demonym - * @return $this - */ - public function setDemonym($demonym) - { - $this->demonym = $demonym; - - return $this; - } - - /** - * @return string - */ - public function getFactionPoint() - { - return $this->factionPoint; - } - - /** - * @param string $factionPoint - * @return $this - */ - public function setFactionPoint($factionPoint) - { - $this->factionPoint = $factionPoint; - - return $this; - } - - /** - * @return array - */ - public function getStatus() - { - return $this->status; - } - - /** - * @param array $status - * @return $this - */ - public function setStatus($status) - { - $this->status = $status; - - return $this; - } - - /** - * @return int - */ - public function getRegime() - { - return $this->regime; - } - - /** - * @param int $regime - * @return $this - */ - public function setRegime($regime) - { - $this->regime = $regime; - - return $this; - } - - /** - * @return string - */ - public function getDevise() - { - return $this->devise; - } - - /** - * @param string $devise - * @return $this - */ - public function setDevise($devise ) - { - $this->devise = $devise ; - - return $this; - } - - /** - * @return string - */ - public function getDesc1() - { - return $this->desc1; - } - - /** - * @param string $desc1 - * @return $this - */ - public function setDesc1($desc1) - { - $this->desc1 = $desc1; - - return $this; - } - - /** - * @return string - */ - public function getDesc2() - { - return $this->desc2; - } - - /** - * @param string $desc2 - * @return $this - */ - public function setDesc2($desc2) - { - $this->desc2 = $desc2; - - return $this; - } - - /** - * @return string - */ - public function getDesc3() - { - return $this->desc3; - } - - /** - * @param string $desc3 - * @return $this - */ - public function setDesc3($desc3) - { - $this->desc3 = $desc3; - - return $this; - } - - /** - * @return string - */ - public function getDesc4() - { - return $this->desc4; - } - - /** - * @param string $desc4 - * @return $this - */ - public function setDesc4($desc4) - { - $this->desc4 = $desc4; - - return $this; - } - - /** - * @return array - */ - public function getBonus() - { - return $this->bonus; - } - - /** - * @param array $bonus - * @return $this - */ - public function setBonus($bonus) - { - $this->bonus = $bonus; - - return $this; - } - - /** - * @return int - */ - public function getMandateDuration() - { - return $this->mandateDuration; - } - - /** - * @param int $mandateDuration - * @return $this - */ - public function setMandateDuration($mandateDuration) - { - $this->mandateDuration = $mandateDuration; - - return $this; - } - - /** - * @return string - */ - public function getSenateDesc() - { - return $this->senateDesc; - } - - /** - * @param string $senateDesc - * @return $this - */ - public function setSenateDesc($senateDesc) - { - $this->senateDesc = $senateDesc; - - return $this; - } - - /** - * @return int - */ - public function getCampaignDesc() - { - return $this->campaignDesc; - } - - /** - * @param int $campaignDesc - * @return $this - */ - public function setCampaignDesc($campaignDesc) - { - $this->campaignDesc = $campaignDesc; - - return $this; - } - - /** - * @return array - */ - public function getBonusText() - { - return $this->bonusText; - } - - /** - * @param array $bonusText - * @return $this - */ - public function SetBonusText($bonusText ) - { - $this->bonusText = $bonusText ; - - return $this; - } - - /** - * @return array - */ - public function getColorLink() - { - return $this->colorLink; - } - - /** - * @param array $colorLink - * @return $this - */ - public function setColorLink($colorLink) - { - $this->colorLink = $colorLink; - - return $this; - } - - /** - * @return int - */ - public function getChiefId() - { - return $this->chiefId; - } - - /** - * @param int $chiefId - * @return $this - */ - public function setChiefId($chiefId) - { - $this->chiefId = $chiefId; - - return $this; - } - - /** - * @param int $credit - */ - public function increaseCredit($credit) { - $this->credits += $credit; - return $this->credits; - } - - /** - * @param int $credit - */ - public function decreaseCredit($credit) { - $this->credits -= $credit; - return $this->credits; - } -} diff --git a/system/Modules/Demeter/Model/Election/Candidate.php b/system/Modules/Demeter/Model/Election/Candidate.php deleted file mode 100644 index aa7644179..000000000 --- a/system/Modules/Demeter/Model/Election/Candidate.php +++ /dev/null @@ -1,30 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Election/Election.php b/system/Modules/Demeter/Model/Election/Election.php deleted file mode 100644 index edf621fb4..000000000 --- a/system/Modules/Demeter/Model/Election/Election.php +++ /dev/null @@ -1,20 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Election/Vote.php b/system/Modules/Demeter/Model/Election/Vote.php deleted file mode 100644 index e2c0f2b5a..000000000 --- a/system/Modules/Demeter/Model/Election/Vote.php +++ /dev/null @@ -1,22 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Forum/FactionNews.php b/system/Modules/Demeter/Model/Forum/FactionNews.php deleted file mode 100644 index ac53c0341..000000000 --- a/system/Modules/Demeter/Model/Forum/FactionNews.php +++ /dev/null @@ -1,30 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Forum/ForumMessage.php b/system/Modules/Demeter/Model/Forum/ForumMessage.php deleted file mode 100644 index 5b9b3c208..000000000 --- a/system/Modules/Demeter/Model/Forum/ForumMessage.php +++ /dev/null @@ -1,37 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Forum/ForumTopic.php b/system/Modules/Demeter/Model/Forum/ForumTopic.php deleted file mode 100644 index b8bf6f1bf..000000000 --- a/system/Modules/Demeter/Model/Forum/ForumTopic.php +++ /dev/null @@ -1,32 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Law/Law.php b/system/Modules/Demeter/Model/Law/Law.php deleted file mode 100644 index 5e1e82995..000000000 --- a/system/Modules/Demeter/Model/Law/Law.php +++ /dev/null @@ -1,236 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $factionId - * @return Law - */ - public function setFactionId($factionId) - { - $this->rColor = $factionId; - - return $this; - } - - /** - * @return int - */ - public function getFactionId() - { - return $this->rColor; - } - - /** - * @param int $type - * @return Law - */ - public function setType($type) - { - $this->type = $type; - - return $this; - } - - /** - * @return int - */ - public function getType() - { - return $this->type; - } - - /** - * @param array $options - * @return Law - */ - public function setOptions($options) - { - $this->options = $options; - - return $this; - } - - /** - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * @param int $statement - * @return Law - */ - public function setStatement($statement) - { - $this->statement = $statement; - - return $this; - } - - /** - * @return int - */ - public function getStatement() - { - return $this->statement; - } - - /** - * @param string $createdAt - * @return Law - */ - public function setCreatedAt($createdAt) - { - $this->dCreation = $createdAt; - - return $this; - } - - /** - * @return string - */ - public function getCreatedAt() - { - return $this->dCreation; - } - - /** - * @param string $votedAt - * @return Law - */ - public function setVotedAt($votedAt) - { - $this->dEndVotation = $votedAt; - - return $this; - } - - /** - * @return string - */ - public function getVotedAt() - { - return $this->dEndVotation; - } - - /** - * @param string $endedAt - * @return Law - */ - public function setEndedAt($endedAt) - { - $this->dEnd = $endedAt; - - return $this; - } - - /** - * @return string - */ - public function getEndedAt() - { - return $this->dEnd; - } - - /** - * @param int $nbPositiveVotes - * @return Law - */ - public function setNbPositiveVotes($nbPositiveVotes) - { - $this->forVote = $nbPositiveVotes; - - return $this; - } - - /** - * @return int - */ - public function getNbPositiveVotes() - { - return $this->forVote; - } - - /** - * @param int $nbNegativeVotes - * @return Law - */ - public function setNbNegativeVotes($nbNegativeVotes) - { - $this->againstVote = $nbNegativeVotes; - - return $this; - } - - /** - * @return int - */ - public function getNbNegativeVotes() - { - return $this->againstVote; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Model/Law/VoteLaw.php b/system/Modules/Demeter/Model/Law/VoteLaw.php deleted file mode 100644 index 6f2839c8a..000000000 --- a/system/Modules/Demeter/Model/Law/VoteLaw.php +++ /dev/null @@ -1,22 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/ColorRepository.php b/system/Modules/Demeter/Repository/ColorRepository.php deleted file mode 100644 index 618eae178..000000000 --- a/system/Modules/Demeter/Repository/ColorRepository.php +++ /dev/null @@ -1,285 +0,0 @@ -connection->prepare( - 'SELECT * FROM colorLink WHERE rColor = :faction_id ORDER BY rColorLinked' - ); - $statement->execute(['faction_id' => $factionId]); - return $statement; - } - - public function get($id) - { - if (($f = $this->unitOfWork->getObject(Color::class, $id)) !== null) { - return $f; - } - $statement = $this->connection->prepare('SELECT * FROM color WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - return $faction; - } - - public function getAll() - { - $statement = $this->connection->prepare('SELECT * FROM color'); - $statement->execute(); - - $data = []; - while ($row = $statement->fetch()) { - if (($f = $this->unitOfWork->getObject(Color::class, $row['id'])) !== null) { - $data[] = $f; - continue; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - $data[] = $faction; - } - return $data; - } - - /** - * @return array - */ - public function getInGameFactions() - { - $statement = $this->connection->prepare('SELECT * FROM color WHERE isInGame = 1'); - $statement->execute(); - - $data = []; - while ($row = $statement->fetch()) { - if (($f = $this->unitOfWork->getObject(Color::class, $row['id'])) !== null) { - $data[] = $f; - continue; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - $data[] = $faction; - } - return $data; - } - - /** - * @return array - */ - public function getOpenFactions() - { - $statement = $this->connection->prepare('SELECT * FROM color WHERE isClosed = 0'); - $statement->execute(); - - $data = []; - while ($row = $statement->fetch()) { - if (($f = $this->unitOfWork->getObject(Color::class, $row['id'])) !== null) { - $data[] = $f; - continue; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - $data[] = $faction; - } - return $data; - } - - /** - * @return array - */ - public function getAllByActivePlayersNumber() - { - $statement = $this->connection->prepare('SELECT * FROM color ORDER BY activePlayers ASC'); - $statement->execute(); - - $data = []; - while ($row = $statement->fetch()) { - if (($f = $this->unitOfWork->getObject(Color::class, $row['id'])) !== null) { - $data[] = $f; - continue; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - $data[] = $faction; - } - return $data; - } - - /** - * @return array - */ - public function getByRegimeAndElectionStatement($regimes, $electionStatements) - { - $statement = $this->connection->query( - 'SELECT * FROM color WHERE regime IN (' . implode(',', $regimes) . ') AND electionStatement IN (' . implode(',', $electionStatements) . ')' - ); - $data = []; - while ($row = $statement->fetch()) { - if (($f = $this->unitOfWork->getObject(Color::class, $row['id'])) !== null) { - $data[] = $f; - continue; - } - $faction = $this->format($row); - $this->unitOfWork->addObject($faction); - $data[] = $faction; - } - return $data; - } - - public function insert($faction) - { - $qr = $this->connection->prepare( - 'INSERT INTO color SET - id = :id, - alive = :alive, - isWinner = :is_winner, - credits = :credits, - players = :nb_players, - activePlayers = :nb_active_players, - rankingPoints = :ranking_points, - points = :points, - sectors = :nb_sectors, - electionStatement = :election_statement, - isClosed = :is_closed, - isInGame = :is_in_game, - description = :description, - dClaimVictory = :victory_claimed_at, - dLastElection = :last_election_at' - ); - $qr->execute(array( - 'id' => $faction->id, - 'alive' => $faction->alive, - 'is_winner' => $faction->isWinner, - 'credits' => $faction->credits, - 'nb_players' => $faction->players, - 'nb_active_players' => $faction->activePlayers, - 'ranking_points' => $faction->rankingPoints, - 'points' => $faction->points, - 'sectors' => $faction->sectors, - 'election_statement' => $faction->electionStatement, - 'is_closed' => $faction->isClosed, - 'is_in_game' => $faction->isInGame, - 'description' => $faction->description, - 'victory_claimed_at' => $faction->dClaimVictory, - 'last_election_at' => $faction->dLastElection - )); - $faction->id = $this->connection->lastInsertId(); - } - - public function update($faction) - { - $statement = $this->connection->prepare( - 'UPDATE color SET - alive = :alive, - isWinner = :is_winner, - credits = :credits, - players = :nb_players, - activePlayers = :nb_active_players, - rankingPoints = :ranking_points, - points = :points, - sectors = :sectors, - electionStatement = :election_statement, - isClosed = :is_closed, - isInGame = :is_in_game, - description = :description, - dClaimVictory = :victory_claimed_at, - dLastElection = :last_election_at - WHERE id = :id'); - $statement->execute(array( - 'alive' => $faction->alive, - 'is_winner' => (int) $faction->isWinner, - 'credits' => $faction->credits, - 'nb_players' => $faction->players, - 'nb_active_players' => $faction->activePlayers, - 'ranking_points' => $faction->rankingPoints, - 'points' => $faction->points, - 'sectors' => $faction->sectors, - 'election_statement' => $faction->electionStatement, - 'is_closed' => (int) $faction->isClosed, - 'is_in_game' => (int) $faction->isInGame, - 'description' => $faction->description, - 'victory_claimed_at' => $faction->dClaimVictory, - 'last_election_at' => $faction->dLastElection, - 'id' => $faction->id - )); - $factionLinkStatement = $this->connection->prepare('UPDATE colorLink SET - statement = :statement WHERE rColor = :faction_id AND rColorLinked = :color_linked - '); - foreach ($faction->colorLink as $key => $value) { - $factionLinkStatement->execute(array( - 'statement' => $value, - 'faction_id' => $faction->id, - 'color_linked' => $key - )); - } - } - - public function remove($faction) - { - $statement = $this->connection->prepare('DELETE FROM color WHERE id = :id'); - $statement->execute(['id' => $id]); - } - - public function format($data) { - $faction = new Color(); - $faction->id = $data['id']; - $faction->alive = $data['alive']; - $faction->isWinner = (bool) $data['isWinner']; - $faction->credits = $data['credits']; - $faction->players = $data['players']; - $faction->activePlayers = $data['activePlayers']; - $faction->rankingPoints = $data['rankingPoints']; - $faction->points = $data['points']; - $faction->sectors = $data['sectors']; - $faction->electionStatement = $data['electionStatement']; - $faction->isClosed = (bool) $data['isClosed']; - $faction->description = $data['description']; - $faction->dClaimVictory = $data['dClaimVictory']; - $faction->dLastElection = $data['dLastElection']; - $faction->isInGame = (bool) $data['isInGame']; - $faction->colorLink[0] = Color::NEUTRAL; - - $faction->officialName = ColorResource::getInfo($faction->id, 'officialName'); - $faction->popularName = ColorResource::getInfo($faction->id, 'popularName'); - $faction->government = ColorResource::getInfo($faction->id, 'government'); - $faction->demonym = ColorResource::getInfo($faction->id, 'demonym'); - $faction->factionPoint = ColorResource::getInfo($faction->id, 'factionPoint'); - $faction->status = ColorResource::getInfo($faction->id, 'status'); - $faction->regime = ColorResource::getInfo($faction->id, 'regime'); - $faction->devise = ColorResource::getInfo($faction->id, 'devise'); - $faction->desc1 = ColorResource::getInfo($faction->id, 'desc1'); - $faction->desc2 = ColorResource::getInfo($faction->id, 'desc2'); - $faction->desc3 = ColorResource::getInfo($faction->id, 'desc3'); - $faction->desc4 = ColorResource::getInfo($faction->id, 'desc4'); - $faction->bonus = ColorResource::getInfo($faction->id, 'bonus'); - $faction->mandateDuration = ColorResource::getInfo($faction->id, 'mandateDuration'); - $faction->senateDesc = ColorResource::getInfo($faction->id, 'senateDesc'); - $faction->campaignDesc = ColorResource::getInfo($faction->id, 'campaignDesc'); - - $faction->bonusText = []; - foreach (ColorResource::getInfo($faction->id, 'bonus') as $k) { - $faction->bonusText[] = ColorResource::getBonus($k); - } - - if ($faction->id != 0) { - $factionLinksStatement = $this->getFactionLinks($faction->id); - while ($factionLink = $factionLinksStatement->fetch()) { - if ($factionLink['rColor'] == $faction->id) { - $faction->colorLink[$factionLink['rColorLinked']] = $factionLink['statement']; - } - } - } else { - $faction->colorLink = array(Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL, Color::NEUTRAL); - } - return $faction; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Election/CandidateRepository.php b/system/Modules/Demeter/Repository/Election/CandidateRepository.php deleted file mode 100644 index ee5fe8e95..000000000 --- a/system/Modules/Demeter/Repository/Election/CandidateRepository.php +++ /dev/null @@ -1,161 +0,0 @@ -connection->prepare( - 'SELECT c.*, - p.name AS pName, - p.avatar AS pAvatar, - p.factionPoint AS pFactionPoint, - p.status AS pStatus - FROM candidate AS c - LEFT JOIN player AS p ON p.id = c.rPlayer ' . $clause - ); - $statement->execute($params); - return $statement; - } - - /** - * @param int $id - * @return Candidate - */ - public function get($id) - { - if (($c = $this->unitOfWork->getObject(Candidate::class, $id)) !== null) { - return $c; - } - if (($row = $this->select('WHERE c.id = :id', ['id' => $id])->fetch()) === false) { - return null; - } - $candidate = $this->format($row); - $this->unitOfWork->addObject($candidate); - return $candidate; - } - - /** - * @param int $electionId - * @param int $playerId - * @return Candidate - */ - public function getByElectionAndPlayer($electionId, $playerId) - { - $statement = $this->select('WHERE c.rElection = :election_id AND c.rPlayer = :player_id', ['election_id' => $electionId, 'player_id' => $playerId]); - - if (($row = $statement->fetch()) === false) { - return null; - } - if (($c = $this->unitOfWork->getObject(Candidate::class, $row['id'])) !== null) { - return $c; - } - $candidate = $this->format($row); - $this->unitOfWork->addObject($candidate); - return $candidate; - } - - /** - * @param int $electionId - * @return array - */ - public function getByElection($electionId) - { - $statement = $this->select('WHERE c.rElection = :election_id', ['election_id' => $electionId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($c = $this->unitOfWork->getObject(Candidate::class, $row['id']))) { - $data[] = $c; - continue; - } - $candidate = $this->format($row); - $this->unitOfWork->addObject($candidate); - $data[] = $candidate; - } - return $data; - } - - public function insert($candidate) - { - $qr = $this->connection->prepare( - 'INSERT INTO candidate SET - rElection = :election_id, - rPlayer = :player_id, - chiefChoice = :chief_choice, - treasurerChoice = :treasurer_choice, - warlordChoice = :warlord_choice, - ministerChoice = :minister_choice, - program = :program, - dPresentation = :presented_at'); - - $qr->execute(array( - 'election_id' => $candidate->rElection, - 'player_id' => $candidate->rPlayer, - 'chief_choice' => $candidate->chiefChoice, - 'treasurer_choice' => $candidate->treasurerChoice, - 'warlord_choice' => $candidate->warlordChoice, - 'minister_choice' => $candidate->ministerChoice, - 'program' => $candidate->program, - 'presented_at' => $candidate->dPresentation, - )); - $candidate->id = $this->connection->lastInsertId(); - } - - public function update($candidate) - { - $qr = $this->connection->prepare( - 'UPDATE candidate SET - rElection = :election_id, - rPlayer = :player_id, - chiefChoice = :chief_choice, - treasurerChoice = :treasurer_choice, - warlordChoice = :warlord_choice, - ministerChoice = :minister_choice, - dPresentation = :presented_at - WHERE id = :id'); - $qr->execute(array( - 'election_id' => $candidate->rElection, - 'player_id' => $candidate->rPlayer, - 'chief_choice' => $candidate->chiefChoice, - 'treasurer_choice' => $candidate->treasurerChoice, - 'warlord_choice' => $candidate->warlordChoice, - 'minister_choice' => $candidate->ministerChoice, - 'presented_at' => $candidate->dPresentation, - 'id' => $candidate->id - )); - } - - public function remove($candidate) - { - - } - - public function format($data) - { - $candidate = new Candidate(); - $candidate->id = $data['id']; - $candidate->rElection = $data['rElection']; - $candidate->rPlayer = $data['rPlayer']; - $candidate->chiefChoice = $data['chiefChoice']; - $candidate->treasurerChoice = $data['treasurerChoice']; - $candidate->warlordChoice = $data['warlordChoice']; - $candidate->ministerChoice = $data['ministerChoice']; - $candidate->program = $data['program']; - $candidate->dPresentation = $data['dPresentation']; - $candidate->name = $data['pName']; - $candidate->avatar = $data['pAvatar']; - $candidate->factionPoint = $data['pFactionPoint']; - $candidate->status = $data['pStatus']; - return $candidate; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Election/ElectionRepository.php b/system/Modules/Demeter/Repository/Election/ElectionRepository.php deleted file mode 100644 index 3c6735945..000000000 --- a/system/Modules/Demeter/Repository/Election/ElectionRepository.php +++ /dev/null @@ -1,97 +0,0 @@ -unitOfWork->getObject(Election::class, $id)) !== null) { - return $e; - } - $statement = $this->connection->prepare('SELECT * FROM election WHERE id = :id'); - $statement->execute(['id' => $id]); - if (($row = $statement->fetch()) === false) { - return null; - } - $election = $this->format($row); - $this->unitOfWork->addObject($election); - return $election; - } - - /** - * @param int $factionId - * @return Election - */ - public function getFactionLastElection($factionId) - { - $statement = $this->connection->prepare('SELECT * FROM election WHERE rColor = :faction_id ORDER BY id DESC LIMIT 1'); - $statement->execute(['faction_id' => $factionId]); - if (($row = $statement->fetch()) === false) { - return null; - } - if (($e = $this->unitOfWork->getObject(Election::class, $row['id'])) !== null) { - return $e; - } - $election = $this->format($row); - $this->unitOfWork->addObject($election); - return $election; - } - - /** - * @param Election $election - */ - public function insert($election) - { - $statement = $this->connection->prepare( - 'INSERT INTO election SET rColor = :faction_id, dElection = :date' - ); - $statement->execute(array( - 'faction_id' => $election->rColor, - 'date' => $election->dElection - )); - $election->id = $this->connection->lastInsertId(); - } - - /** - * @param Election $election - */ - public function update($election) - { - $statement = $this->connection->prepare('UPDATE election SET rColor = :faction_id, dElection = :date WHERE id = :id'); - $statement->execute(array( - 'faction_id' => $election->rColor, - 'date' => $election->dElection, - 'id' => $election->id - )); - } - - /** - * @param Election $election - */ - public function remove($election) - { - $statement = $this->connection->prepare('DELETE FROM election WHERE id = :id'); - $statement->execute(['id' => $id]); - } - - /** - * @param array $data - * @return Election - */ - public function format($data) - { - $election = new Election(); - $election->id = (int) $data['id']; - $election->rColor = (int) $data['rColor']; - $election->dElection = $data['dElection']; - return $election; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Election/VoteRepository.php b/system/Modules/Demeter/Repository/Election/VoteRepository.php deleted file mode 100644 index eaf34be07..000000000 --- a/system/Modules/Demeter/Repository/Election/VoteRepository.php +++ /dev/null @@ -1,116 +0,0 @@ -connection->prepare('SELECT * FROM vote WHERE rElection = :election_id AND rPlayer = :player_id'); - $statement->execute(['election_id' => $electionId, 'player_id' => $playerId]); - - if (($row = $statement->fetch()) === false) { - return null; - } - if (($v = $this->unitOfWork->getObject(Vote::class, $row['id'])) !== null) { - return $v; - } - $vote = $this->format($row); - $this->unitOfWork->addObject($vote); - return $vote; - } - - /** - * @param int $electionId - * @return array - */ - public function getElectionVotes($electionId) - { - $statement = $this->connection->prepare('SELECT * FROM vote WHERE rElection = :election_id'); - $statement->execute(['election_id' => $electionId]); - - $data = []; - while (($row = $statement->fetch()) !== false) { - if (($v = $this->unitOfWork->getObject(Vote::class, $row['id'])) !== null) { - $data[] = $v; - continue; - } - $vote = $this->format($row); - $this->unitOfWork->addObject($vote); - $data[] = $vote; - } - return $data; - } - - /** - * @param Vote $vote - */ - public function insert($vote) - { - $statement = $this->connection->prepare( - 'INSERT INTO vote SET - rCandidate = :candidate_id, - rPlayer = :player_id, - rElection = :election_id, - dVotation = :voted_at' - ); - $statement->execute(array( - 'candidate_id' => $vote->rCandidate, - 'player_id' => $vote->rPlayer, - 'election_id' => $vote->rElection, - 'voted_at' => $vote->dVotation - )); - $vote->id = $this->connection->lastInsertId(); - } - - /** - * @param Vote $vote - */ - public function update($vote) - { - $statement = $this->connection->prepare( - 'UPDATE vote SET - rCandidate = :candidate_id, - rPlayer = :player_id, - dVotation = :voted_at - WHERE id = :id'); - $statement->execute(array( - 'candidate_id' => $vote->rCandidate, - 'player_id' => $vote->rPlayer, - 'voted_at' => $vote->dVotation, - 'id' => $vote->id - )); - } - - /** - * @param Vote $vote - */ - public function remove($vote) - { - $statement = $this->connection->prepare('DELETE FROM vote WHERE id = :id'); - $statement->execute(['id' => $vote->id]); - } - - /** - * @param array $data - * @return Vote - */ - public function format($data) - { - $vote = new Vote(); - $vote->id = (int) $data['id']; - $vote->rCandidate = (int) $data['rCandidate']; - $vote->rPlayer = (int) $data['rPlayer']; - $vote->relection = (int) $data['rElection']; - $vote->dVotation = $data['dVotation']; - return $vote; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Forum/FactionNewsRepository.php b/system/Modules/Demeter/Repository/Forum/FactionNewsRepository.php deleted file mode 100644 index 161c50bb1..000000000 --- a/system/Modules/Demeter/Repository/Forum/FactionNewsRepository.php +++ /dev/null @@ -1,179 +0,0 @@ -unitOfWork->getObject(FactionNews::class, $id)) !== null) { - return $fn; - } - - $statement = $this->connection->prepare('SELECT * FROM factionNews WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $factionNew = $this->format($row); - $this->unitOfWork->addObject($factionNew); - return $factionNew; - } - - /** - * @param int $factionId - * @return FactionNews - */ - public function getPinnedNew($factionId) - { - $statement = $this->connection->prepare('SELECT * FROM factionNews WHERE rFaction = :faction_id AND pinned = 1'); - $statement->execute(['faction_id' => $factionId]); - - if (($row = $statement->fetch()) === false) { - return null; - } - if (($fn = $this->unitOfWork->getObject(FactionNews::class, $row['id'])) !== null) { - return $fn; - } - $factionNew = $this->format($row); - $this->unitOfWork->addObject($factionNew); - return $factionNew; - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionNews($factionId) - { - $statement = $this->connection->prepare('SELECT * FROM factionNews WHERE rFaction = :faction_id'); - $statement->execute(['faction_id' => $factionId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($fn = $this->unitOfWork->getObject(FactionNews::class, $row['id'])) !== null) { - $data[] = $fn; - continue; - } - $factionNew = $this->format($row); - $this->unitOfWork->addObject($factionNew); - $data[] = $factionNew; - } - return $data; - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionBasicNews($factionId) - { - $statement = $this->connection->prepare('SELECT * FROM factionNews WHERE rFaction = :faction_id AND pinned = 0'); - $statement->execute(['faction_id' => $factionId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($fn = $this->unitOfWork->getObject(FactionNews::class, $row['id'])) !== null) { - $data[] = $fn; - continue; - } - $factionNew = $this->format($row); - $this->unitOfWork->addObject($factionNew); - $data[] = $factionNew; - } - return $data; - } - - /** - * @param FactionNews $factionNew - */ - public function insert($factionNew) - { - $statement = $this->connection->prepare( - 'INSERT INTO factionNews SET - rFaction = :faction_id, - title = :title, - oContent = :content, - pContent = :parsed_content, - pinned = :pinned, - statement = :statement, - dCreation = :created_at' - ); - $statement->execute([ - 'faction_id' => $factionNew->rFaction, - 'title' => $factionNew->title, - 'content' => $factionNew->oContent, - 'parsed_content' => $factionNew->pContent, - 'pinned' => $factionNew->pinned, - 'statement' => $factionNew->statement, - 'created_at' => Utils::now() - ]); - $factionNew->id = $this->connection->lastInsertId(); - } - - /** - * @param FactionNews $factionNew - */ - public function update($factionNew) - { - $statement = $this->connection->prepare( - 'UPDATE factionNews SET - rFaction = :faction_id, - title = :title, - oContent = :content, - pContent = :parsed_content, - pinned = :pinned, - statement = :statement, - dCreation = :created_at - WHERE id = :id' - ); - $statement->execute([ - 'faction_id' => $factionNew->rFaction, - 'title' => $factionNew->title, - 'content' => $factionNew->oContent, - 'parsed_content' => $factionNew->pContent, - 'pinned' => $factionNew->pinned, - 'statement' => $factionNew->statement, - 'created_at' => $factionNew->dCreation, - 'id' => $factionNew->id - ]); - } - - /** - * @param FactionNews $factionNew - */ - public function remove($factionNew) - { - $statement = $this->connection->prepare('DELETE FROM factionNews WHERE id = :id'); - $statement->execute(['id' => $factionNew->id]); - } - - /** - * @param array $data - * @return FactionNews - */ - public function format($data) - { - $news = new FactionNews(); - $news->id = $data['id']; - $news->rFaction = $data['rFaction']; - $news->title = $data['title']; - $news->oContent = $data['oContent']; - $news->pContent = $data['pContent']; - $news->pinned = $data['pinned']; - $news->statement = $data['statement']; - $news->dCreation = $data['dCreation']; - return $news; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Law/LawRepository.php b/system/Modules/Demeter/Repository/Law/LawRepository.php deleted file mode 100644 index da6c44035..000000000 --- a/system/Modules/Demeter/Repository/Law/LawRepository.php +++ /dev/null @@ -1,142 +0,0 @@ -connection->prepare( - 'SELECT l.*, - (SELECT COUNT(v.id) FROM voteLaw AS v WHERE rLaw = l.id AND vote = 1) AS forVote, - (SELECT COUNT(v.id) FROM voteLaw AS v WHERE rLaw = l.id AND vote = 0) AS againstVote - FROM law AS l ' . $clause - ); - $statement->execute($params); - return $statement; - } - - /** - * @param int $id - * @return Law - */ - public function get($id) - { - if(($l = $this->unitOfWork->getObject(Law::class, $id)) !== null) { - return $l; - } - if (($row = $this->select('WHERE l.id = :id', ['id' => $id])->fetch()) === false) { - return null; - } - $law = $this->format($row); - $this->unitOfWork->addObject($law); - return $law; - } - - /** - * @param int $factionId - * @param array $statements - * @return array - */ - public function getByFactionAndStatements($factionId, $statements = []) - { - $statement = $this->select('WHERE l.rColor = :faction_id AND l.statement IN (' . implode(',', $statements) . ')', ['faction_id' => $factionId]); - - $data = []; - while($row = $statement->fetch()) { - if (($l = $this->unitOfWork->getObject(Law::class, $row['id'])) !== null) { - $data[] = $l; - continue; - } - $law = $this->format($row); - $this->unitOfWork->addObject($law); - $data[] = $law; - } - return $data; - } - - /** - * @param int $factionId - * @param string $type - * @return bool - */ - public function lawExists($factionId, $type) - { - $statement = $this->connection->prepare( - 'SELECT COUNT(*) AS nb_laws FROM law WHERE rColor = :faction_id AND type = :type AND statement IN (' . implode(',', [Law::EFFECTIVE, Law::VOTATION]) . ')' - ); - $statement->execute(['faction_id' => $factionId, 'type' => $type]); - return ($statement->fetch()['nb_laws'] > 0); - } - - public function insert($law) - { - $statement = $this->connection->prepare( - 'INSERT INTO law SET - rColor = :faction_id, - type = :type, - statement = :statement, - options = :options, - dEnd = :ended_at, - dEndVotation = :vote_ended_at, - dCreation = :created_at' - ); - $statement->execute([ - 'faction_id' => $law->rColor, - 'type' => $law->type, - 'statement' => $law->statement, - 'options' => $law->options, - 'ended_at' => $law->dEnd, - 'vote_ended_at' => $law->dEndVotation, - 'created_at' => $law->dCreation - ]); - $law->id = $this->connection->lastInsertId(); - } - - public function update($law) - { - $statement = $this->connection->prepare( - 'UPDATE law SET - rColor = :faction_id, - type = :type, - statement = :statement, - dEnd = :ended_at, - dEndVotation = :vote_ended_at, - dCreation = :created_at - WHERE id = :id'); - $statement->execute([ - 'faction_id' => $law->rColor, - 'type' => $law->type, - 'statement' => $law->statement, - 'ended_at' => $law->dEnd, - 'vote_ended_at' => $law->dEndVotation, - 'created_at' => $law->dCreation, - 'id' => $law->id - ]); - } - - public function remove($law) - { - $statement = $this->connection->prepare('DELETE FROM law WHERE id = :id'); - $statement->execute(['id' => $law->id]); - } - - public function format($data) - { - $law = new Law(); - $law->id = (int) $data['id']; - $law->rColor = (int) $data['rColor']; - $law->type = $data['type']; - $law->options = unserialize($data['options']); - $law->statement = $data['statement']; - $law->dEndVotation = $data['dEndVotation']; - $law->dEnd = $data['dEnd']; - $law->dCreation = $data['dCreation']; - $law->forVote = $data['forVote']; - $law->againstVote = $data['againstVote']; - return $law; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Repository/Law/VoteLawRepository.php b/system/Modules/Demeter/Repository/Law/VoteLawRepository.php deleted file mode 100644 index 2853f1695..000000000 --- a/system/Modules/Demeter/Repository/Law/VoteLawRepository.php +++ /dev/null @@ -1,90 +0,0 @@ -connection->prepare('SELECT * FROM voteLaw WHERE rLaw = :law_id'); - $statement->execute(['law_id' => $lawId]); - - $data = []; - while($row = $statement->fetch()) - { - if (($lv = $this->unitOfWork->getObject(LawVote::class, $row['id']))) { - $data[] = $lv; - continue; - } - $lawVote = $this->format($row); - $this->unitOfWork->addObject($lawVote); - $data[] = $lawVote; - } - return $data; - } - - public function hasVoted($playerId, $lawId) - { - $statement = $this->connection->prepare('SELECT COUNT(*) AS nb_votes FROM voteLaw WHERE rPlayer = :player_id AND rLaw = :law_id'); - $statement->execute(['player_id' => $playerId, 'law_id' => $lawId]); - return ((int) $statement->fetch()['nb_votes'] > 0); - } - - public function insert($voteLaw) - { - $statement = $this->connection->prepare( - 'INSERT INTO voteLaw SET - rLaw = :law_id, - rPlayer = :player_id, - vote = :vote, - dVotation = :voted_at' - ); - $statement->execute([ - 'law_id' => $voteLaw->rLaw, - 'player_id' => $voteLaw->rPlayer, - 'vote' => $voteLaw->vote, - 'voted_at' => $voteLaw->dVotation - ]); - $voteLaw->id = $this->connection->lastInsertId(); - } - - public function update($voteLaw) - { - $statement = $this->connection->prepare( - 'UPDATE voteLaw SET - rLaw = :law_id, - rPlayer = :player_id, - vote = :vote, - dVotation = :voted_at - WHERE id = :id' - ); - $statement->execute([ - 'law_id' => $voteLaw->rLaw, - 'player_id' => $voteLaw->rPlayer, - 'vote' => $voteLaw->vote, - 'voted_at' => $voteLaw->dVotation, - 'id' => $voteLaw->id - ]); - } - - public function remove($voteLaw) - { - $qr = $this->connection->prepare('DELETE FROM voteLaw WHERE id = :id'); - $qr->execute(['id' => $voteLaw->id]); - } - - public function format($data) - { - $voteLaw = new VoteLaw(); - $voteLaw->id = (int) $data['id']; - $voteLaw->rLaw = (int) $data['rLaw']; - $voteLaw->rPlayer = (int) $data['rPlayer']; - $voteLaw->vote = $data['vote']; - $voteLaw->dVotation = $data['dVotation']; - return $voteLaw; - } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Resource/ForumResources.php b/system/Modules/Demeter/Resource/ForumResources.php deleted file mode 100755 index 746109a8d..000000000 --- a/system/Modules/Demeter/Resource/ForumResources.php +++ /dev/null @@ -1,99 +0,0 @@ -= 10 < 20 = pour le gouvernement d'une fac, >= 20 pour les chefs de toutes les factions -Class ForumResources { - private static $idLink = array(1, 2, 3, 4, 5, 10, 20); - - private static $forums = array( - array( - 'id' => 1, - 'devName' => 'war', - 'name' => 'Plans de bataille', - 'shortDescription' => 'Planifiez vos batailles, écrasez vos ennemis', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 2, - 'devName' => 'noob', - 'name' => 'Commerce', - 'shortDescription' => 'Proposition de route commerciale, offre sur le marché', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 3, - 'devName' => 'politic', - 'name' => 'Politique', - 'shortDescription' => 'Présentez votre programme, votre vision de l\'avenir', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 4, - 'devName' => 'flood', - 'name' => 'Biastro', - 'shortDescription' => 'Buvez de la bière et racontez n\'importe quoi', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 5, - 'devName' => 'op', - 'name' => 'Opération Spéciale', - 'shortDescription' => 'Pour les guerres éclaires ou pour une défense efficace', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 10, - 'devName' => 'government', - 'name' => 'Salle du Conseil', - 'shortDescription' => 'Ici se déroulent les débats du conseil restreint de la faction', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 20, - 'devName' => 'chiefes', - 'name' => 'Ambassade', - 'shortDescription' => 'Seuls les chefs de chaque faction ont accès à l\'Ambassade', - 'longDescription' =>'', - 'image' => ''), - array( - 'id' => 30, - 'devName' => 'campaign', - 'name' => 'campaign', - 'shortDescription' => '', - 'longDescription' =>'', - 'image' => '') - ); - - public static function getInfo($id, $info) { - if ($id <= self::size()) { - if (in_array($info, array('id', 'devName', 'name', 'shortDescription', 'longDescription', 'image'))) { - return self::$forums[$id - 1][$info]; - } else { - return FALSE; - } - } else { - return FALSE; - } - } - - public static function getInfoForId($id, $info) { - if (in_array($info, array('id', 'devName', 'name', 'shortDescription', 'longDescription', 'image'))) { - $tmp = array_keys(self::$idLink, $id); - return self::$forums[$tmp[0]][$info]; - } else { - return FALSE; - } - } - - public static function size() { return count(self::$forums); } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Resource/LawResources.php b/system/Modules/Demeter/Resource/LawResources.php deleted file mode 100755 index 4feafd16a..000000000 --- a/system/Modules/Demeter/Resource/LawResources.php +++ /dev/null @@ -1,176 +0,0 @@ -= 10 < 20 = pour le gouvernement d'une fac, >= 20 pour les chefs de toutes les factions -Class LawResources { - - private static $laws = array( - array( - 'id' => 1, - 'bonusLaw' => FALSE, - 'devName' => 'sector taxes', - 'name' => 'Ajustement de l\'imposition sectorielle', - 'department' => 3, - 'undeterminedDuration' => FALSE, - 'price' => 50000, - 'bonus' => 0, - 'shortDescription' => 'Les planètes dans les secteurs sous votre contrôle vous paient un impôt et c\'est à la faction de choisir ce dernier.', - 'longDescription' => 'Cette loi modifie le taux d\'imposition appliqué aux planètes d\'un secteur en votre possession. La redevance perçue provient autant des bases de votre faction que de celles de factions ennemies.

Un impôt faible dans vos secteurs faibles renforcera votre faction et un impôt fort dans les secteurs partagés permettra de prendre plus de crédits de joueurs ennemis.

L\'impôt peut varier de 2% à 15%.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 2, - 'bonusLaw' => FALSE, - 'devName' => 'secteurName', - 'name' => 'Décret de revendication', - 'department' => 6, - 'undeterminedDuration' => FALSE, - 'price' => 250000, - 'bonus' => 0, - 'shortDescription' => 'Afin de montrer à tous la puissance de votre faction et d\'asseoir la conquête d\'un nouveau territoire, ce décret permet de modifier le nom d\'un secteur.', - 'longDescription' => 'Permet de modifier le nom d\'un secteur que vous possédez.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 3, - 'bonusLaw' => FALSE, - 'devName' => 'commercial taxes export', - 'name' => 'Ajustement des taxes de vente', - 'department' => 3, - 'undeterminedDuration' => FALSE, - 'price' => 50000, - 'bonus' => 0, - 'shortDescription' => 'Cette loi permet de modifier les taxes sur les ventes dans le marché. Elle permet de régler finement la taxe perçue par la faction lors de la vente d\'un bien en fonction de sa destination.', - 'longDescription' => 'Modifie le taux de la taxe à la vente de produit pour une faction précise.

Un taux bas favorisera le commerce entre deux factions.

L\'impôt peut varier de 2% à 15% entre deux factions différentes et de 0% à 15% au sein de la même faction.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 4, - 'bonusLaw' => FALSE, - 'devName' => 'commercial taxes import', - 'name' => 'Ajustement des taxes d\'achat', - 'department' => 3, - 'undeterminedDuration' => FALSE, - 'price' => 50000, - 'bonus' => 0, - 'shortDescription' => 'Cette loi permet de modifier les taxes sur les achats dans le marché. Elle permet de régler finement la taxe perçue par la faction lors de l\'achat d\'un bien en fonction de sa provenance.', - 'longDescription' => 'Modifie le taux de la taxe à l\'achat de produit d\'une faction précise.

Un taux bas favorisera le commerce entre deux factions.

L\'impôt peut varier de 2% à 15% entre deux factions différentes et de 0% à 15% au sein de la même faction.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 5, - 'bonusLaw' => TRUE, - 'devName' => 'military subvention', - 'name' => 'Effort de guerre', - 'department' => 4, - 'undeterminedDuration' => FALSE, - 'price' => 1000, - 'bonus' => 20, - 'shortDescription' => 'Lorsque la faction est menacée, concentrez vos forces dans la production de vaisseaux dans l\'espoir de chasser l\'envahisseur. Les autres pans de votre économie en souffriront certainement.', - 'longDescription' => 'La production des vaisseaux est accélérée de 20% mais la production de ressource diminue de 10%.

Le prix de cette loi est indiqué pour une relève et varie en fonction du nombre de joueurs.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 6, - 'bonusLaw' => TRUE, - 'devName' => 'technology', - 'name' => 'Transfert technologique', - 'department' => 5, - 'undeterminedDuration' => FALSE, - 'price' => 1250, - 'bonus' => 10, - 'shortDescription' => 'Donnez des subventions à vos centre de recherche et mettez sur pied un programme d\'échange d\'informations entre les membres de votre faction afin d\'améliorer les méthodes de travail de vos scientifiques.', - 'longDescription' => 'Cette loi offre à tous les membres de la faction un bonus dans le développement de leurs technologies de 10% (cumulé avec les autres bonus).

Seules les recherches lancées lorsque le bonus est actif seront impactées.

Le prix de cette loi est indiqué pour une relève et varie en fonction du nombre de joueurs.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 7, - 'bonusLaw' => FALSE, - 'devName' => 'peace pact', - 'name' => 'Traité de paix', - 'department' => 6, - 'undeterminedDuration' => FALSE, - 'price' => 10000, - 'bonus' => 0, - 'shortDescription' => 'Un pacte de non-agression n\'est pas contraignant mais garantit que les membres des deux factions ne s\'attaquent pas entre eux. Les attaques violant ce pacte sont notifiées dans les registres de guerre de la faction.

Ce type de pacte est limité à deux par faction.', - 'longDescription' => '', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 8, - 'bonusLaw' => FALSE, - 'devName' => 'war declaration', - 'name' => 'Déclaration de guerre', - 'department' => 6, - 'undeterminedDuration' => FALSE, - 'price' => 10000, - 'bonus' => 0, - 'shortDescription' => 'Lors de la déclaration de guerre, toutes les routes commerciales entre les deux factions belligérantes sont coupées. Durant toute la durée de la guerre, aucun lien commercial ne sera possible.', - 'longDescription' => 'Ce traité gèle les routes commerciales entre les deux factions concernées et empêche d\'en construire de nouvelles.', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 9, - 'bonusLaw' => FALSE, - 'devName' => 'total alliance', - 'name' => 'Alliance totale', - 'department' => 6, - 'undeterminedDuration' => FALSE, - 'price' => 10000, - 'bonus' => 0, - 'shortDescription' => 'Une alliance totale est un fort lien entre deux factions. Ce traité n\'est pas contraignant mais les attaques le violant sont notifiées dans les registres de guerre de la faction.

Un seul pacte de ce type peut être rédigé par faction.', - 'longDescription' => '', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 10, - 'bonusLaw' => FALSE, - 'devName' => 'neutrality', - 'name' => 'Neutralité', - 'department' => 6, - 'undeterminedDuration' => FALSE, - 'price' => 10000, - 'bonus' => 0, - 'shortDescription' => 'Une faction n\'a ni affinités ni problèmes avec une autre faction neutre. De petits problèmes territoriaux peuvent exister sans remettre en cause ce statut.', - 'longDescription' => '', - 'image' => '', - 'isImplemented' => TRUE), - array( - 'id' => 11, - 'bonusLaw' => FALSE, - 'devName' => 'punition', - 'name' => 'Amende', - 'department' => 5, - 'undeterminedDuration' => FALSE, - 'price' => 2000, - 'bonus' => 0, - 'shortDescription' => 'Permet d\'amender un joueur si celui-ci n\'obéit pas aux directives du gouvernement.', - 'longDescription' => 'Il n\'y a aucune limite quant à l\'utilisation de cette loi, vous pouvez en faire un usage abusif.', - 'image' => '', - 'isImplemented' => TRUE) - ); - - public static function getInfo($id, $info) { - if ($id <= self::size()) { - if (in_array($info, array('id', 'bonusLaw', 'devName', 'name', 'department', 'price', 'duration', 'bonus', 'shortDescription', 'longDescription', 'image', 'isImplemented'))) { - return self::$laws[$id - 1][$info]; - } else { - return FALSE; - } - } else { - return FALSE; - } - } - - public static function size() { return count(self::$laws); } -} \ No newline at end of file diff --git a/system/Modules/Demeter/Resource/config/config.yml b/system/Modules/Demeter/Resource/config/config.yml deleted file mode 100644 index 5da516da3..000000000 --- a/system/Modules/Demeter/Resource/config/config.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Demeter\Handler\: - resource: '%root_path%/system/Modules/Demeter/Handler/*' - - Asylamba\Modules\Demeter\Manager\: - resource: '%root_path%/system/Modules/Demeter/Manager/*' diff --git a/system/Modules/Gaia/Event/PlaceOwnerChangeEvent.php b/system/Modules/Gaia/Event/PlaceOwnerChangeEvent.php deleted file mode 100644 index c0c8f6c39..000000000 --- a/system/Modules/Gaia/Event/PlaceOwnerChangeEvent.php +++ /dev/null @@ -1,29 +0,0 @@ -place = $place; - } - - /** - * @return Place - */ - public function getPlace() - { - return $this->place; - } -} diff --git a/system/Modules/Gaia/EventListener/SectorListener.php b/system/Modules/Gaia/EventListener/SectorListener.php deleted file mode 100644 index 89823259a..000000000 --- a/system/Modules/Gaia/EventListener/SectorListener.php +++ /dev/null @@ -1,47 +0,0 @@ -systemManager->get($event->getPlace()->rSystem); - $sector = $this->sectorManager->get($system->rSector); - $scores = $this->sectorManager->calculateOwnership($sector); - - $newColor = key($scores); - $hasEnoughPoints = false; - foreach ($scores as $factionId => $score) { - if ($factionId !== 0 && $score >= $this->sectorMinimalScore) { - $hasEnoughPoints = true; - break; - } - } - // If the faction has more points than the minimal score and the current owner of the sector, he claims it - if ($hasEnoughPoints === true && $sector->rColor !== $newColor && $scores[$newColor] > $scores[$sector->rColor]) { - $sector->rColor = $newColor; - // If this is a prime sector, we do not pull back the color from the sector - } elseif ($hasEnoughPoints === false && $sector->getPrime() === false) { - $sector->rColor = 0; - } - $this->sectorManager->changeOwnership($sector); - } -} diff --git a/system/Modules/Gaia/EventListener/SystemListener.php b/system/Modules/Gaia/EventListener/SystemListener.php deleted file mode 100644 index bf3690ed3..000000000 --- a/system/Modules/Gaia/EventListener/SystemListener.php +++ /dev/null @@ -1,56 +0,0 @@ -systemManager->get($event->getPlace()->rSystem); - $bases = $this->orbitalBaseManager->getSystemBases($system); - // Initialize the value in case no base is available (after leaving the last one) - $scores[$system->rColor] = 0; - - foreach ($bases as $base) - { - $player = $this->playerManager->get($base->rPlayer); - - $scores[$player->rColor] = - (!empty($scores[$player->rColor])) - ? $scores[$player->rColor] + $this->scores[$base->typeOfBase] - : $this->scores[$base->typeOfBase] - ; - } - arsort($scores); - reset($scores); - $newColor = key($scores); - // NPC faction has no points - $scores[0] = 0; - if ($scores[$newColor] > 0 && $system->rColor !== $newColor && $scores[$newColor] > $scores[$system->rColor]) { - $system->rColor = $newColor; - } elseif ($scores[$newColor] === 0) { - $system->rColor = 0; - } - $this->systemManager->changeOwnership($system); - } -} diff --git a/system/Modules/Gaia/GaiaModule.php b/system/Modules/Gaia/GaiaModule.php deleted file mode 100644 index 9b21892fe..000000000 --- a/system/Modules/Gaia/GaiaModule.php +++ /dev/null @@ -1,13 +0,0 @@ - 250, - 'diag' => 177, - 'mask' => 15, - 'systemProportion' => [3, 8, 9, 25, 55], -# 'systemPosition' => [0, 1, 2, 4, 6, 8, 10, 15, 20, 30, 40, 60, 80, 40, 2, 20, 50, 90, 95, 100], - 'systemPosition' => [0, 0, 0, 0, 0, 5, 10, 60, 80, 60, 0, 0, 0, 0, 40, 50, 60, 70, 80, 80], - 'lineSystemPosition' => [ - [[177, 125], [213, 125], 6, 6], - [[157, 166], [180, 194], 6, 6], - [[113, 176], [105, 211], 6, 6], - [[78, 148], [46, 163], 6, 6], - [[78, 102], [46, 87], 6, 6], - [[113, 74], [105, 39], 6, 6], - [[157, 84], [180, 56], 6, 6] - ], - 'circleSystemPosition' => [], - 'population' => [700, 25000], - ]; - - public $sectors = [ - [ - 'id' => 1, - 'beginColor' => 1, - 'vertices' =>[120, 105, 138, 108, 145, 125, 138, 142, 120, 145, 107, 133, 107, 117], - 'barycentre' => [125, 125], - 'display' => [125, 125], - 'name' => 'Secteur 1', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 2, - 'beginColor' => 0, - 'vertices' =>[138, 108, 120, 105, 115, 85, 124, 70, 148, 75, 150, 94], - 'barycentre' => [133, 90], - 'display' => [133, 90], - 'name' => 'Secteur 2', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 3, - 'beginColor' => 0, - 'vertices' =>[145, 125, 138, 108, 150, 94, 168, 92, 178, 113, 165, 125], - 'barycentre' => [157, 110], - 'display' => [157, 110], - 'name' => 'Secteur 3', - 'danger' => self::DNG_HARD, - 'points' => 1, - ], - [ - 'id' => 4, - 'beginColor' => 0, - 'vertices' =>[138, 142, 145, 125, 165, 125, 178, 137, 168, 158, 150, 156], - 'barycentre' => [157, 141], - 'display' => [157, 141], - 'name' => 'Secteur 4', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 5, - 'beginColor' => 0, - 'vertices' =>[120, 145, 138, 142, 150, 156, 148, 175, 124, 180, 115, 165], - 'barycentre' => [133, 161], - 'display' => [133, 161], - 'name' => 'Secteur 5', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 6, - 'beginColor' => 1, - 'vertices' =>[107, 133, 120, 145, 115, 165, 102, 175, 82, 158, 88, 141], - 'barycentre' => [102, 153], - 'display' => [102, 153], - 'name' => 'Secteur 6', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 7, - 'beginColor' => 0, - 'vertices' =>[107, 117, 107, 133, 88, 141, 71, 137, 71, 113, 88, 109], - 'barycentre' => [89, 125], - 'display' => [89, 125], - 'name' => 'Secteur 7', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 8, - 'beginColor' => 0, - 'vertices' =>[120, 105, 107, 117, 88, 109, 82, 92, 102, 75, 115, 85], - 'barycentre' => [102, 97], - 'display' => [102, 97], - 'name' => 'Secteur 8', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 9, - 'beginColor' => 0, - 'vertices' =>[124, 70, 115, 85, 102, 75, 94, 48, 103, 33, 118, 42], - 'barycentre' => [109, 59], - 'display' => [109, 59], - 'name' => 'Secteur 9', - 'danger' => self::DNG_VERY_HARD, - 'points' => 2, - ], - [ - 'id' => 10, - 'beginColor' => 0, - 'vertices' =>[168, 92, 150, 94, 148, 75, 167, 52, 184, 50, 186, 68], - 'barycentre' => [167, 72], - 'display' => [167, 72], - 'name' => 'Secteur 10', - 'danger' => self::DNG_HARD, - 'points' => 2, - ], - [ - 'id' => 11, - 'beginColor' => 0, - 'vertices' =>[178, 137, 165, 125, 178, 113, 208, 113, 220, 125, 208, 137], - 'barycentre' => [193, 125], - 'display' => [193, 125], - 'name' => 'Secteur 11', - 'danger' => self::DNG_VERY_HARD, - 'points' => 2, - ], - [ - 'id' => 12, - 'beginColor' => 0, - 'vertices' =>[148, 175, 150, 156, 168, 158, 186, 182, 184, 200, 167, 198], - 'barycentre' => [167, 178], - 'display' => [167, 178], - 'name' => 'Secteur 12', - 'danger' => self::DNG_HARD, - 'points' => 2, - ], - [ - 'id' => 13, - 'beginColor' => 0, - 'vertices' =>[102, 175, 115, 165, 124, 180, 118, 208, 103, 217, 94, 202], - 'barycentre' => [109, 191], - 'display' => [109, 191], - 'name' => 'Secteur 13', - 'danger' => self::DNG_VERY_HARD, - 'points' => 2, - ], - [ - 'id' => 14, - 'beginColor' => 0, - 'vertices' =>[71, 137, 88, 141, 82, 158, 56, 172, 40, 171, 44, 150], - 'barycentre' => [64, 155], - 'display' => [64, 155], - 'name' => 'Secteur 14', - 'danger' => self::DNG_VERY_HARD, - 'points' => 2, - ], - [ - 'id' => 15, - 'beginColor' => 0, - 'vertices' =>[82, 92, 88, 109, 71, 113, 44, 100, 40, 79, 56, 78], - 'barycentre' => [64, 95], - 'display' => [64, 95], - 'name' => 'Secteur 15', - 'danger' => self::DNG_HARD, - 'points' => 2, - ], - [ - 'id' => 16, - 'beginColor' => 0, - 'vertices' =>[63, 70, 56, 78, 40, 79, 0, 65, 0, 13], - 'barycentre' => [32, 61], - 'display' => [32, 61], - 'name' => 'Secteur 16', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 17, - 'beginColor' => 0, - 'vertices' =>[84, 50, 63, 70, 0, 13, 0, 0, 55, 0], - 'barycentre' => [40, 27], - 'display' => [40, 27], - 'name' => 'Secteur 17', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 18, - 'beginColor' => 0, - 'vertices' =>[103, 33, 94, 48, 84, 50, 55, 0, 96, 0], - 'barycentre' => [86, 26], - 'display' => [86, 26], - 'name' => 'Secteur 18', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 19, - 'beginColor' => 0, - 'vertices' =>[130, 40, 118, 42, 103, 33, 96, 0, 130, 0], - 'barycentre' => [115, 23], - 'display' => [115, 23], - 'name' => 'Secteur 19', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 20, - 'beginColor' => 2, - 'vertices' =>[156, 48, 130, 40, 130, 0, 175, 0], - 'barycentre' => [148, 22], - 'display' => [148, 22], - 'name' => 'Secteur 20', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 21, - 'beginColor' => 2, - 'vertices' =>[184, 50, 167, 52, 156, 48, 175, 0, 223, 0], - 'barycentre' => [181, 30], - 'display' => [181, 30], - 'name' => 'Secteur 21', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 22, - 'beginColor' => 11, - 'vertices' =>[194, 75, 186, 68, 184, 50, 223, 0, 250, 0, 250, 35], - 'barycentre' => [215, 38], - 'display' => [215, 38], - 'name' => 'Secteur 22', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 23, - 'beginColor' => 11, - 'vertices' =>[206, 100, 194, 75, 250, 35, 250, 87], - 'barycentre' => [225, 74], - 'display' => [225, 74], - 'name' => 'Secteur 23', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 24, - 'beginColor' => 0, - 'vertices' =>[220, 125, 208, 113, 206, 100, 250, 87, 250, 125], - 'barycentre' => [227, 110], - 'display' => [227, 110], - 'name' => 'Secteur 24', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 25, - 'beginColor' => 0, - 'vertices' =>[206, 150, 208, 137, 220, 125, 250, 125, 250, 163], - 'barycentre' => [227, 140], - 'display' => [227, 140], - 'name' => 'Secteur 25', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 26, - 'beginColor' => 0, - 'vertices' =>[194, 175, 206, 150, 250, 163, 250, 215], - 'barycentre' => [225, 176], - 'display' => [225, 176], - 'name' => 'Secteur 26', - 'danger' => self::DNG_HARD, - 'points' => 1, - ], - [ - 'id' => 27, - 'beginColor' => 0, - 'vertices' =>[184, 200, 186, 182, 194, 175, 250, 215, 250, 250, 223, 250], - 'barycentre' => [215, 212], - 'display' => [215, 212], - 'name' => 'Secteur 27', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 28, - 'beginColor' => 6, - 'vertices' =>[156, 202, 167, 198, 184, 200, 223, 250, 175, 250], - 'barycentre' => [181, 220], - 'display' => [181, 220], - 'name' => 'Secteur 28', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 29, - 'beginColor' => 6, - 'vertices' =>[130, 210, 156, 202, 175, 250, 130, 250], - 'barycentre' => [148, 228], - 'display' => [148, 228], - 'name' => 'Secteur 29', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 30, - 'beginColor' => 0, - 'vertices' =>[103, 217, 118, 208, 130, 210, 130, 250, 96, 250], - 'barycentre' => [115, 227], - 'display' => [115, 227], - 'name' => 'Secteur 30', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 31, - 'beginColor' => 0, - 'vertices' =>[84, 200, 94, 202, 103, 217, 96, 250, 55, 250], - 'barycentre' => [86, 224], - 'display' => [86, 224], - 'name' => 'Secteur 31', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 32, - 'beginColor' => 0, - 'vertices' =>[63, 180, 84, 200, 55, 250, 0, 250, 0, 237], - 'barycentre' => [40, 223], - 'display' => [40, 223], - 'name' => 'Secteur 32', - 'danger' => self::DNG_HARD, - 'points' => 2, - ], - [ - 'id' => 33, - 'beginColor' => 0, - 'vertices' =>[40, 171, 56, 172, 63, 180, 0, 237, 0, 185], - 'barycentre' => [32, 189], - 'display' => [32, 189], - 'name' => 'Secteur 33', - 'danger' => self::DNG_MEDIUM, - 'points' => 1, - ], - [ - 'id' => 34, - 'beginColor' => 0, - 'vertices' =>[38, 140, 44, 150, 40, 171, 0, 185, 0, 145], - 'barycentre' => [24, 158], - 'display' => [24, 158], - 'name' => 'Secteur 34', - 'danger' => self::DNG_EASY, - 'points' => 1, - ], - [ - 'id' => 35, - 'beginColor' => 7, - 'vertices' =>[38, 110, 38, 140, 0, 145, 0, 105], - 'barycentre' => [19, 125], - 'display' => [19, 125], - 'name' => 'Secteur 35', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - [ - 'id' => 36, - 'beginColor' => 7, - 'vertices' =>[40, 79, 44, 100, 38, 110, 0, 105, 0, 65], - 'barycentre' => [24, 92], - 'display' => [24, 92], - 'name' => 'Secteur 36', - 'danger' => self::DNG_CASUAL, - 'points' => 1, - ], - ]; - - public function getSectorCoord($i, $scale = 1, $xTranslate = 0) { - $sector = $this->sectors[$i - 1]['vertices']; - - foreach ($sector as $k => $v) { - $sector[$k] = (($v * $scale) + $xTranslate); - } - - $sector = implode(', ', $sector); - return $sector; - } - - public function fillSectorsData() { - $k = 1; - - echo '
';
-		foreach ($this->sectors as $key => $sector) {
-			# calculate barycentre
-			$strArray = $this->getSectorCoord($key + 1);
-			$array = explode(', ', $strArray);
-
-			$gx = 0; $gy = 0;
-			$vx = 0; $vy = 0;
-			$lenght = count($array) / 2;
-
-			for ($j = 0; $j < count($array); $j = $j + 2) {
-				$vx += $array[$j];
-				$vy += $array[$j + 1];
-			}
-
-			$gx = round($vx / $lenght);
-			$gy = round($vy / $lenght);
-
-			echo '[' . "\r\n";
-			echo '	\'id\' => ' . $k . ',' . "\r\n";
-			echo '	\'beginColor\' => 0,' . "\r\n";
-			echo '	\'vertices\' => [' . implode(', ', $sector['vertices']) . '],' . "\r\n";
-			echo '	\'barycentre\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'display\' => [' . $gx . ', ' . $gy . '],' . "\r\n";
-			echo '	\'name\' => \'Secteur ' . $k . "',\r\n";
-			echo '	\'danger\' => self::DNG_CASUAL,' . "\r\n";
-			echo '	\'points\' => 1' . "\r\n";
-			echo '], ' . "\r\n";
-		
-			$k++;
-		}
-		echo '
'; - } - - public $systems = [ - [ - 'id' => 1, - 'name' => 'ruine', - 'placesPropotion' => [0, 0, 85, 10, 0, 5], - 'nbrPlaces' => [2, 6] - ], [ - 'id' => 2, - 'name' => 'nébuleuse', - 'placesPropotion' => [0, 0, 5, 90, 0, 5], - 'nbrPlaces' => [2, 8] - ], [ - 'id' => 3, - 'name' => 'géante bleue', - 'placesPropotion' => [60, 20, 2, 0, 15, 3], - 'nbrPlaces' => [8, 12] - ], [ - 'id' => 4, - 'name' => 'naine jaune', - 'placesPropotion' => [65, 15, 3, 0, 15, 2], - 'nbrPlaces' => [6, 10] - ], [ - 'id' => 5, - 'name' => 'naine rouge', - 'placesPropotion' => [75, 10, 3, 0, 10, 2], - 'nbrPlaces' => [3, 6] - ] - ]; - - public $places = [ - [ - 'id' => 1, - 'name' => 'planète tellurique', - 'resources' => 0, - 'credits' => 0, - 'history' => 0, - ], [ - 'id' => 2, - 'name' => 'planète gazeuse', - 'resources' => 38, - 'credits' => 52, - 'history' => 10, - ], [ - 'id' => 3, - 'name' => 'ruine', - 'resources' => 5, - 'credits' => 0, - 'history' => 95, - ], [ - 'id' => 4, - 'name' => 'poches de gaz', - 'resources' => 0, - 'credits' => 96, - 'history' => 4, - ], [ - 'id' => 5, - 'name' => 'ceinture d\'astéroides', - 'resources' => 98, - 'credits' => 0, - 'history' => 2, - ], [ - 'id' => 6, - 'name' => 'lieu vide', - 'resources' => 0, - 'credits' => 0, - 'history' => 0, - ] - ]; - - # display params - public $scale = 20; -} diff --git a/system/Modules/Gaia/Handler/NpcsPlacesUpdateHandler.php b/system/Modules/Gaia/Handler/NpcsPlacesUpdateHandler.php deleted file mode 100644 index ed75633e3..000000000 --- a/system/Modules/Gaia/Handler/NpcsPlacesUpdateHandler.php +++ /dev/null @@ -1,60 +0,0 @@ -placeManager->getNpcPlaces(); - $now = Utils::now(); - $repository = $this->entityManager->getRepository(Place::class); - $this->entityManager->beginTransaction(); - - foreach ($places as $place) { - if (Utils::interval($place->uPlace, $now, 's') === 0) { - continue; - } - # update time - $hours = Utils::intervalDates($now, $place->uPlace); - $place->uPlace = $now; - $initialResources = $place->resources; - $initialDanger = $place->danger; - $maxResources = ceil($place->population / Place::COEFFPOPRESOURCE) * Place::COEFFMAXRESOURCE * ($place->maxDanger + 1); - - foreach ($hours as $hour) { - $place->danger += Place::REPOPDANGER; - $place->resources += floor(Place::COEFFRESOURCE * $place->population); - } - // The repository method will add the new resources. We have to calculate how many resources have been added - $place->resources = abs($place->resources - $initialResources); - // If the max is reached, we have to add just the difference between the max and init value - if ($place->resources > $maxResources) { - $place->resources = $maxResources - $initialResources; - } - $place->danger = abs($place->danger - $initialDanger); - // Same thing here - if ($place->danger > $place->maxDanger) { - $place->danger = $place->maxDanger - $initialDanger; - } - $repository->updatePlace($place, true); - } - $repository->npcQuickfix(); - $this->entityManager->commit(); - $this->entityManager->clear(Place::class); - } -} diff --git a/system/Modules/Gaia/Handler/PlayersPlacesUpdateHandler.php b/system/Modules/Gaia/Handler/PlayersPlacesUpdateHandler.php deleted file mode 100644 index 57dfb6b1b..000000000 --- a/system/Modules/Gaia/Handler/PlayersPlacesUpdateHandler.php +++ /dev/null @@ -1,49 +0,0 @@ -placeManager->getPlayerPlaces(); - $now = Utils::now(); - $repository = $this->entityManager->getRepository(Place::class); - $this->entityManager->beginTransaction(); - - foreach ($places as $place) { - if (Utils::interval($place->uPlace, $now, 's') === 0) { - continue; - } - # update time - $hours = Utils::intervalDates($now, $place->uPlace); - $place->uPlace = $now; - $initialResources = $place->resources; - $maxResources = ceil($place->population / Place::COEFFPOPRESOURCE) * Place::COEFFMAXRESOURCE * ($place->maxDanger + 1); - foreach ($hours as $hour) { - $place->resources += floor(Place::COEFFRESOURCE * $place->population); - } - $place->resources = abs($place->resources - $initialResources); - if ($place->resources > $maxResources) { - $place->resources = $maxResources; - } - $repository->updatePlace($place); - } - $this->entityManager->commit(); - $this->entityManager->clear(Place::class); - } -} diff --git a/system/Modules/Gaia/Helper/ActionHelper.php b/system/Modules/Gaia/Helper/ActionHelper.php deleted file mode 100644 index bcf2075d2..000000000 --- a/system/Modules/Gaia/Helper/ActionHelper.php +++ /dev/null @@ -1,394 +0,0 @@ -sessionToken = $sessionWrapper->get('token'); - } - - public function loot($ob, &$link, &$box, $id, $place, $commanderSession) { - $link .= 'pillage'; - - $box .= '
'; - $box .= '
Effectuer un pillage
'; - # check si au moins un commandant est disponible - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($commanderSession); - $commanderQuantity = 0; - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $commanderQuantity++; - } - } - if ($commanderQuantity > 0) { - # check si assez de PA - if ($place->getRSystem() == $ob->getSystem()) { - $time = Game::getTimeTravelInSystem($ob->getPosition(), $place->getPosition()); - } else { - $time = Game::getTimeTravelOutOfSystem($ob->getXSystem(), $ob->getYSystem(), $place->getXSystem(), $place->getYSystem()); - } - - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . ''; - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . '
'; - $box .= $this->commanderManager->get($i)->getPev() . ' pev
'; - $box .= Format::numberFormat($this->commanderManager->get($i)->getPev() * Commander::COEFFLOOT) . ' de soute'; - $box .= '
'; - $box .= ''; - $box .= Chronos::secondToFormat($time, 'lite') . ' temps'; - $box .= ''; - $box .= '
'; - } - } - } else { - $box .= '

Vous n\'avez aucun commandant en fonction sur ' . $ob->getName() . '. Affectez un commandant et envoyez un pillage depuis ' . $ob->getName() . '.

'; - } - $this->commanderManager->changeSession($S_COM2); - $box .= '
'; - } - - public function conquest($ob, &$link, &$box, $id, $place, $commanderSession, $movingCommandersSession, $technologies) { - $link .= 'conquête'; - - $box .= '
'; - $box .= '
Effectuer une conquête
'; - # check si technologie CONQUEST débloquée - if ($technologies->getTechnology(Technology::CONQUEST) == 1) { - # check si la technologie BASE_QUANTITY a un niveau assez élevé - $maxBasesQuantity = $technologies->getTechnology(Technology::BASE_QUANTITY) + 1; - $obQuantity = $this->sessionWrapper->get('playerBase')->get('ob')->size(); - $msQuantity = $this->sessionWrapper->get('playerBase')->get('ms')->size(); - $coloQuantity = 0; - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($movingCommandersSession); - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getTravelType() == Commander::COLO) { - $coloQuantity++; - } - } - $this->commanderManager->changeSession($S_COM2); - if ($obQuantity + $msQuantity + $coloQuantity < $maxBasesQuantity) { - # check si au moins un commandant est disponible - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($commanderSession); - $commanderQuantity = 0; - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $commanderQuantity++; - } - } - if ($commanderQuantity > 0) { - # check si assez de crédits - $creditPrice = ($obQuantity + $coloQuantity) * Commander::CREDITCOEFFTOCONQUER; - - if ($this->sessionWrapper->get('playerInfo')->get('credit') >= $creditPrice) { - # check si assez de points d'attaque - if ($place->getRSystem() == $ob->getSystem()) { - $time = Game::getTimeTravelInSystem($ob->getPosition(), $place->getPosition()); - } else { - $time = Game::getTimeTravelOutOfSystem($ob->getXSystem(), $ob->getYSystem(), $place->getXSystem(), $place->getYSystem()); - } - - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . ''; - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . '
'; - $box .= $this->commanderManager->get($i)->getPev() . ' pev'; - $box .= '
'; - $box .= ''; - $box .= Chronos::secondToFormat($time, 'lite') . ' temps
'; - $box .= Format::numberFormat($creditPrice) . ' credit'; - $box .= '
'; - $box .= '
'; - } - } - } else { - $box .= '

Vous n\'avez pas assez de crédits pour lancer la conquête. Il faut ' . $creditPrice . ' crédits.

'; - } - } else { - $box .= '

Vous n\'avez aucun commandant en fonction sur ' . $ob->getName() . '. Affectez un commandant et envoyez un pillage depuis ' . $ob->getName() . '.

'; - } - $this->commanderManager->changeSession($S_COM2); - } else { - $box .= '

Pour pouvoir conquérir une planète supplémentaire, il faut augmenter le niveau de la technologie ' . TechnologyResource::getInfo(Technology::BASE_QUANTITY, 'name') . '.

'; - } - } else { - $box .= '

Pour pouvoir conquérir une planète, il faut développer la technologie ' . TechnologyResource::getInfo(Technology::CONQUEST, 'name') . '.

'; - } - $box .= '
'; - } - - public function colonize($ob, &$link, &$box, $id, $place, $commanderSession, $movingCommandersSession, $technologies) { - $link .= 'colonisation'; - - $box .= '
'; - $box .= '
Effectuer une colonisation
'; - # check si technologie COLONIZATION débloquée - if ($technologies->getTechnology(Technology::COLONIZATION) == 1) { - # check si la technologie BASE_QUANTITY a un niveau assez élevé - $maxBasesQuantity = $technologies->getTechnology(Technology::BASE_QUANTITY) + 1; - $obQuantity = $this->sessionWrapper->get('playerBase')->get('ob')->size(); - $msQuantity = $this->sessionWrapper->get('playerBase')->get('ms')->size(); - $coloQuantity = 0; - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($movingCommandersSession); - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getTravelType() == Commander::COLO) { - $coloQuantity++; - } - } - $this->commanderManager->changeSession($S_COM2); - if ($obQuantity + $msQuantity + $coloQuantity < $maxBasesQuantity) { - # check si au moins un commandant est disponible - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($commanderSession); - $commanderQuantity = 0; - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $commanderQuantity++; - } - } - if ($commanderQuantity > 0) { - # check si assez de crédits - $creditPrice = ($obQuantity + $coloQuantity) * Commander::CREDITCOEFFTOCOLONIZE; - - if ($this->sessionWrapper->get('playerInfo')->get('credit') >= $creditPrice) { - # check si assez de points d'attaque - if ($place->getRSystem() == $ob->getSystem()) { - $time = Game::getTimeTravelInSystem($ob->getPosition(), $place->getPosition()); - } else { - $time = Game::getTimeTravelOutOfSystem($ob->getXSystem(), $ob->getYSystem(), $place->getXSystem(), $place->getYSystem()); - } - - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . ''; - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . '
'; - $box .= $this->commanderManager->get($i)->getPev() . ' pev'; - $box .= '
'; - $box .= ''; - $box .= Chronos::secondToFormat($time, 'lite') . ' temps
'; - $box .= Format::numberFormat($creditPrice) . ' credit'; - $box .= '
'; - $box .= '
'; - } - } - } else { - $box .= '

Vous n\'avez pas assez de crédits pour envoyer la colonisation. Il faut ' . $creditPrice . ' crédits.

'; - } - } else { - $box .= '

Vous n\'avez aucun commandant en fonction sur ' . $ob->getName() . '. Affectez un commandant et envoyez un pillage depuis ' . $ob->getName() . '.

'; - } - $this->commanderManager->changeSession($S_COM2); - } else { - $box .= '

Pour pouvoir coloniser une planète supplémentaire, il faut augmenter le niveau de la technologie ' . TechnologyResource::getInfo(Technology::BASE_QUANTITY, 'name') . '.

'; - } - } else { - $box .= '

Pour pouvoir coloniser une planète, il faut développer la technologie ' . TechnologyResource::getInfo(Technology::COLONIZATION, 'name') . '.

'; - } - $box .= '
'; - } - - public function proposeRC($ob, &$link, &$box, $id, $place) { - $tmpLink = 'conquête'; - - # gérer soit l'un soit l'autre - $box .= '
'; - $sendResources = FALSE; - $proposed = FALSE; - $notAccepted = FALSE; - $standby = FALSE; - if ($ob->getRPlayer() == $place->getRPlayer()) { - if ($ob->getRPlace() != $place->getId()) { - $sendResources = TRUE; - } - } else { - if ($ob->getLevelCommercialPlateforme() > 0) { - if ($place->getLevelCommercialPlateforme() > 0) { - # check si on a déjà une route avec ce joueur - if (($cr = $this->commercialRouteManager->getExistingRoute($ob->getId(), $place->getId())) !== null) { - switch($cr->getStatement()) { - case CommercialRoute::PROPOSED: $notAccepted = TRUE; break; - case CommercialRoute::ACTIVE: $sendResources = TRUE; break; - case CommercialRoute::STANDBY: $standby = TRUE; break; - } - } - if ($sendResources == FALSE) { - if ($proposed == TRUE) { - $box .= '
Route commerciale en suspens
'; - $box .= '

Le joueur n\'a pas encore accepté votre proposition de route commerciale. '; - $box .= 'Si vous voulez voir le statut de la route ou annuler votre proposition, rendez-vous dans la '; - $box .= 'plateforme commerciale'; - $box .= '.

'; - } elseif ($notAccepted == TRUE) { - $box .= '
Route commerciale en suspens
'; - $box .= '

Ce joueur vous a proposé une route commerciale. '; - $box .= 'Si vous voulez l\'accepter ou la refuser, rendez-vous dans la '; - $box .= 'plateforme commerciale'; - $box .= '.

'; - } elseif ($standby == TRUE) { - $box .= '
Route commerciale en suspens
'; - $box .= '

En temps de guerre, toutes les transactions entre votre base et la sienne sont bloquées. '; - $box .= 'Si vous voulez voir le statut de la route ou y mettre fin, rendez-vous dans la '; - $box .= 'plateforme commerciale'; - $box .= '.

'; - } else { - $maxRoute = $this->orbitalBaseHelper->getBuildingInfo(6, 'level', $ob->getLevelCommercialPlateforme(), 'nbRoutesMax'); - if ($this->commercialRouteManager->countBaseActiveAndStandbyRoutes($ob->getId()) < $maxRoute) { - $distance = Game::getDistance($ob->getXSystem(), $place->getXSystem(), $ob->getYSystem(), $place->getYSystem()); - $bonusA = ($ob->getSector() != $place->getRSector()) ? $this->routeSectorBonus : 1; - $bonusB = ($this->sessionWrapper->get('playerInfo')->get('color')) != $place->getPlayerColor() ? $this->routeColorBonus : 1; - $price = Game::getRCPrice($distance); - $income = Game::getRCIncome($distance, $bonusA, $bonusB); - - $box .= '
Proposer une route commerciale
'; - - $box .= '
'; - $box .= '

Longueur de la route ' . Format::numberFormat($distance) . ' Al.

'; - $box .= '

Coût de la mise en place ' . Format::numberFormat($price) . ' credit

'; - $box .= '

Revenu par relève ' . Format::numberFormat($income) . ' credit

'; - - if ($this->sessionWrapper->get('playerInfo')->get('credit') >= $price) { - # bouton actif - $box .= ''; - $box .= 'proposer'; - $box .= ''; - } else { - # bouton pas actifs - $box .= ''; - $box .= 'crédits insuffisants'; - $box .= ''; - } - $box .= '
'; - } else { - $box .= '
Proposer une route commerciale
'; - $box .= '

Toutes vos routes commerciales sont déjà créées. Pour pouvoir proposer une nouvelle route, il faut soit augmenter le niveau de votre plateforme commerciale, soit annuler une route existante.

'; - } - } - } - } else { - $box .= '
Proposer une route commerciale
'; - $box .= '

Impossible de proposer une route commerciale à ce joueur car il n\'a pas encore de plateforme commerciale.

'; - } - } else { - $box .= '
Proposer une route commerciale
'; - $box .= '

Pour proposer une route commerciale, il faut construire la plateforme commerciale.

'; - } - } - if ($sendResources == TRUE) { - $tmpLink = 'ressources'; - $box .= '
Envoyer des ressources
'; - - // ENVOI DE RESSOURCES - $storageSpace = OrbitalBaseResource::getBuildingInfo(1, 'level', $ob->getLevelRefinery(), 'storageSpace'); - $currentStorage = $ob->getResourcesStorage(); - $maxResourcesToSend = $currentStorage - ($storageSpace * OBM_STOCKLIMIT); - if ($maxResourcesToSend <= 0) { - $box .= '

Pour pouvoir envoyer des ressources, il faut que votre entrepôt soit à ' . OBM_STOCKLIMIT * 100 . '% rempli.

'; - } else { - $box .= '
'; - $box .= '

Ressources en stock ' . Format::numberFormat($currentStorage) . ' ressource

'; - $box .= '

Capacité d\'envoi maximum ' . Format::numberFormat($maxResourcesToSend) . ' ressource

'; - - $box .= '
'; - $box .= '

'; - $box .= '

'; - $box .= '
'; - $box .= '
'; - } - } - - $box .= '
'; - $link .= $tmpLink; - } - - public function motherShip($ob, &$link, &$box, $id) { - $link .= 'vaisseau mère'; - - $box .= '
'; - $box .= '
Envoyer un vaisseau-mère
'; - $box .= '

la fonctionnalité n\'est pas encore implémentée. Soyez un peu patient !

'; - $box .= '
'; - } - - public function move($ob, &$link, &$box, $id, $place, $commanderSession) { - $link .= 'flotte'; - - $box .= '
'; - $box .= '
Déplacer une flotte
'; - # check s'il y a une place libre dans la destination - if (count($place->commanders) < 3) { - # check si au moins 1 commandant disponible - $S_COM2 = $this->commanderManager->getCurrentSession(); - $this->commanderManager->changeSession($commanderSession); - $commanderQuantity = 0; - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - if ($this->commanderManager->get($i)->getStatement() == Commander::AFFECTED) { - $commanderQuantity++; - } - } - if ($commanderQuantity > 0) { - # check si assez de PA - if ($place->getRSystem() == $ob->getSystem()) { - $time = Game::getTimeTravelInSystem($ob->getPosition(), $place->getPosition()); - } else { - $time = Game::getTimeTravelOutOfSystem($ob->getXSystem(), $ob->getYSystem(), $place->getXSystem(), $place->getYSystem()); - } - - for ($i = 0; $i < $this->commanderManager->size(); $i++) { - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . ''; - $box .= ''; - $box .= '' . $this->commanderManager->get($i)->getName() . '
'; - $box .= $this->commanderManager->get($i)->getPev() . ' pev'; - $box .= '
'; - $box .= ''; - $box .= Chronos::secondToFormat($time, 'lite') . ' temps
'; - $box .= '
'; - $box .= '
'; - } - } else { - $box .= '

Vous n\'avez aucun commandant susceptible d\'être transféré sur cette base.

'; - } - $this->commanderManager->changeSession($S_COM2); - } else { - $box .= '

Cette base n\'a pas la capacité d\'accueillir une flotte supplémentaire.

'; - } - $box .= '
'; - } -} diff --git a/system/Modules/Gaia/Helper/GalaxyGenerator.php b/system/Modules/Gaia/Helper/GalaxyGenerator.php deleted file mode 100644 index 0e426f701..000000000 --- a/system/Modules/Gaia/Helper/GalaxyGenerator.php +++ /dev/null @@ -1,539 +0,0 @@ -clear(); - - # generation - $this->generateSector(); - $this->generateSystem(); - $this->associateSystemToSector(); - $this->generatePlace(); - - $this->save(); - - $this->getStatisticsSector(); - } - - public function clear() { - $this->databaseAdmin->query('SET FOREIGN_KEY_CHECKS = 0;'); - - $this->databaseAdmin->query('TRUNCATE place'); - $this->log('table `place` vidées'); - - $this->databaseAdmin->query('TRUNCATE system'); - $this->log('table `system` vidées'); - - $this->databaseAdmin->query('TRUNCATE sector'); - $this->log('table `sector` vidées'); - - $this->databaseAdmin->query('SET FOREIGN_KEY_CHECKS = 1;'); - $this->log('_ _ _ _'); - } - - public function save() { - # clean up database - $this->clear(); - - $this->log('sauvegarde des secteurs'); - for ($i = 0; $i < ceil(count($this->listSector) / self::MAX_QUERY); $i++) { - $qr = 'INSERT INTO sector(id, rColor, xPosition, yPosition, xBarycentric, yBarycentric, tax, population, lifePlanet, name, prime, points) VALUES '; - - for ($j = $i * self::MAX_QUERY; $j < (($i + 1) * self::MAX_QUERY) - 1; $j++) { - if (isset($this->listSector[$j])) { - $qr .= '(\'' . implode('\', \'', $this->listSector[$j]) . '\'), '; - } - } - - $qr = substr($qr, 0, -2); - $this->databaseAdmin->query($qr); - } - $this->log(ceil(count($this->listSector) / self::MAX_QUERY) . ' requêtes `INSERT`'); - - $this->log('sauvegarde des systèmes'); - for ($i = 0; $i < ceil(count($this->listSystem) / self::MAX_QUERY); $i++) { - $qr = 'INSERT INTO system(id, rSector, rColor, xPosition, yPosition, typeOfSystem) VALUES '; - - for ($j = $i * self::MAX_QUERY; $j < (($i + 1) * self::MAX_QUERY) - 1; $j++) { - if (isset($this->listSystem[$j])) { - $qr .= '(' . implode(', ', $this->listSystem[$j]) . '), '; - } - } - - $qr = substr($qr, 0, -2); - $this->databaseAdmin->query($qr); - } - $this->log(ceil(count($this->listSystem) / self::MAX_QUERY) . ' requêtes `INSERT`'); - - $this->log('sauvegarde des places'); - for ($i = 0; $i < ceil(count($this->listPlace) / self::MAX_QUERY); $i++) { - $qr = 'INSERT INTO place(id, rSystem, typeOfPlace, position, population, coefResources, coefHistory, resources, danger, maxDanger, uPlace) VALUES '; - - for ($j = $i * self::MAX_QUERY; $j < (($i + 1) * self::MAX_QUERY) - 1; $j++) { - if (isset($this->listPlace[$j])) { - $qr .= '(' . implode(', ', $this->listPlace[$j]) . ', "' . Utils::addSecondsToDate(Utils::now(), -259200) . '"), '; - } - } - - $qr = substr($qr, 0, -2); - $this->databaseAdmin->query($qr); - } - $this->log(ceil(count($this->listPlace) / self::MAX_QUERY) . ' requêtes `INSERT`'); - - $this->log('_ _ _ _'); - } - - public function getLog() { - $rt = '
';
-			$rt .= $this->output;
-		$rt .= '
'; - - return $rt; - } - - private function log($text) { - $this->output .= ">_ $text
"; - } - - private function generateSystem() { - $this->log('génération des systèmes'); - - # id - $k = 1; - - # GENERATION DES LINES - for ($w = 0; $w < count($this->galaxyConfiguration->galaxy['lineSystemPosition']); $w++) { - # line point - $xA = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][0][0]; - $yA = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][0][1]; - - $xB = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][1][0]; - $yB = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][1][1]; - - $l = sqrt(pow($xB - $xA, 2) + pow($yB - $yA, 2)); - - for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; $i++) { - for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; $j++) { - # current cursor position - $xC = $j; - $yC = $i; - - $d = $this->distToSegment($xC, $yC, $xA, $yA, $xB, $yB); - - $thickness = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2]; - $intensity = $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][3]; - - if ($d < $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2]) { - #$prob = rand(0, $this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][3]); - $prob = rand(0, 100); - - - #if ($this->galaxyConfiguration->galaxy['lineSystemPosition'][$w][2] - $d > $prob) { - if (round($intensity - ($d * $intensity / $thickness)) >= $prob) { - - - $type = $this->getSystem(); - - $this->nbSystem++; - $this->listSystem[] = array($k, 0, 0, $xC, $yC, $type); - - $k++; - } - } - } - } - } - - # GENERATION DES ANNEAUX (circleSystemPosition) - for ($w = 0; $w < count($this->galaxyConfiguration->galaxy['circleSystemPosition']); $w++) { - # line point - $xC = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][0][0]; - $yC = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][0][1]; - - $radius = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][1]; - $thickness = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][2]; - $intensity = $this->galaxyConfiguration->galaxy['circleSystemPosition'][$w][3]; - - for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; $i++) { - for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; $j++) { - # current cursor position - $xPosition = $j; - $yPosition = $i; - - # calcul de la distance entre la case et le centre - $d = sqrt( - pow(abs($xC - $xPosition), 2) + - pow(abs($yC - $yPosition), 2) - ); - - if ($d >= ($radius - $thickness) && $d <= ($radius + $thickness)) { - $dtoseg = abs($d - $radius); - $prob = rand(0, 100); - - if (round($intensity - ($dtoseg * $intensity / $thickness)) >= $prob) { - $type = $this->getSystem(); - - $this->nbSystem++; - $this->listSystem[] = array($k, 0, 0, $xPosition, $yPosition, $type); - - $k++; - } - } - } - } - } - - # GENERATION PAR VAGUES - if ($this->galaxyConfiguration->galaxy['systemPosition'] !== NULL) { - for ($i = 1; $i <= $this->galaxyConfiguration->galaxy['size']; $i++) { - for ($j = 1; $j <= $this->galaxyConfiguration->galaxy['size']; $j++) { - # current cursor position - $xPosition = $j; - $yPosition = $i; - - # calcul de la distance entre la case et le centre - $d2o = sqrt( - pow(abs(($this->galaxyConfiguration->galaxy['size'] / 2) - $xPosition), 2) + - pow(abs(($this->galaxyConfiguration->galaxy['size'] / 2) - $yPosition), 2) - ); - - if ($this->isPointInMap($d2o)) { - $type = $this->getSystem(); - - $this->nbSystem++; - $this->listSystem[] = array($k, 0, 0, $xPosition, $yPosition, $type); - - $k++; - } - } - } - } - - $this->log($this->nbSystem . ' systèmes générés'); - $this->log('_ _ _ _'); - } - - public function generatePlace() { - $this->log('génération des places'); - $k = 1; - - foreach ($this->listSystem AS $system) { - $sectorDanger = 0; - foreach ($this->galaxyConfiguration->sectors as $sector) { - if ($system[1] == $sector['id']) { - $sectorDanger = $sector['danger']; - break; - } - } - - $place = $this->getNbOfPlace($system[5]); - - for ($i = 0; $i < $place; $i++) { - $type = $this->getTypeOfPlace($system[5]); - - if ($type == 1) { - $pointsRep = rand(1, 10); - $abilities = [ - 'population' => 0, - 'history' => 0, - 'resources' => 0 - ]; - - # nombre de point a distribuer - if ($pointsRep < 2) { - $pointsTot = rand(90, 100); - } elseif ($pointsRep < 10) { - $pointsTot = 100; - } else { - $pointsTot = rand(100, 120); - } - - # brassage du tableau - Utils::shuffle($abilities); - - # répartition - $z = 1; - foreach ($abilities as $l => $v) { - if ($z < 3) { - $max = $pointsTot - ($z * 10); - $max = $max < 10 ? 10 : $max; - - $points = rand(10, $max); - $abilities[$l] = $points; - $pointsTot -= $points; - } else { - $abilities[$l] = $pointsTot < 5 ? 5 : $pointsTot; - } - - $z++; - } - - $population = $abilities['population'] * 250 / 100; - $history = $abilities['history']; - $resources = $abilities['resources']; - $stRES = 0; - } elseif ($type == 6) { - $population = 0; - $history = 0; - $resources = 0; - $stRES = 0; - } else { - $population = $this->galaxyConfiguration->places[$type - 1]['credits']; - $resources = $this->galaxyConfiguration->places[$type - 1]['resources']; - $history = $this->galaxyConfiguration->places[$type - 1]['history']; - $stRES = rand(2000000, 20000000); - } - - # TODO DANGER - switch ($sectorDanger) { - case GalaxyConfiguration::DNG_CASUAL: - $danger = rand(0, Place::DNG_CASUAL); - break; - case GalaxyConfiguration::DNG_EASY: - $danger = rand(3, Place::DNG_EASY); - break; - case GalaxyConfiguration::DNG_MEDIUM: - $danger = rand(6, Place::DNG_MEDIUM); - break; - case GalaxyConfiguration::DNG_HARD: - $danger = rand(9, Place::DNG_HARD); - break; - case GalaxyConfiguration::DNG_VERY_HARD: - $danger = rand(12, Place::DNG_VERY_HARD); - break; - default: $danger = 0; break; - } - - $this->nbPlace++; - $this->popTotal += $population; - $this->listPlace[] = array($k, $system[0], $type, ($i + 1), $population, $resources, $history, $stRES, $danger, $danger); - $k++; - } - } - - $this->log($this->nbPlace . ' places générées'); - $this->log(Format::numberFormat($this->popTotal * 1000000) . ' de population'); - $this->log('_ _ _ _'); - } - - public function generateSector() { - $this->log('génération des secteurs'); - $k = 1; - - foreach ($this->galaxyConfiguration->sectors as $sector) { - $this->nbSector++; - - $prime = ($sector['beginColor'] != 0) - ? 1 - : 0; - - $this->listSector[] = array( - $k, - $sector['beginColor'], - $sector['display'][0], - $sector['display'][1], - $sector['barycentre'][0], - $sector['barycentre'][1], - 5, - 0, - 0, - $sector['name'], - $prime, - $sector['points'] - ); - - $k++; - } - - $this->log($this->nbSector . ' secteurs générés'); - $this->log('_ _ _ _'); - } - - public function associateSystemToSector() { - $pl = new PointLocation(); - $systemToDelete = array(); - $k = 0; - - foreach ($this->listSystem as $v) { - foreach ($this->galaxyConfiguration->sectors as $w) { - $place = $pl->pointInPolygon($v[3] . ', ' . $v[4], $w['vertices']); - - if ($place == 1 OR $place == 2) { - $systemToDelete[] = $v[0]; - break; - } elseif ($place == 3) { - $this->listSystem[$k][1] = $w['id']; - break; - } - } - $k++; - } - - foreach ($this->listSystem as $v) { - if ($v[1] == 0) { - $systemToDelete[] = $v[0]; - } - } - - # suppression des systemes sur des lignes ou des angles - for ($i = count($this->listSystem) - 1; $i >= 0; $i--) { - if (in_array($this->listSystem[$i][0], $systemToDelete)) { - unset($this->listSystem[$i]); - } - } - - $this->systemDeleted = count($systemToDelete); - } - - protected function getStatisticsSector() { - foreach ($this->listSector as $sector) { - $id = $sector[0]; - - $qr = $this->databaseAdmin->prepare('SELECT - COUNT(pl.id) AS planet, - SUM(pl.population) AS population - FROM sector AS se - LEFT JOIN system AS sy - ON se.id = sy.rSector - LEFT JOIN place AS pl - ON sy.id = pl.rSystem - WHERE pl.typeOfPlace = 1 - AND se.id = ?'); - $qr->execute(array($id)); - $aw = $qr->fetch(); - - $nbrPlanet = $aw['planet']; - $population = ceil($aw['population']); - - $qr->closeCursor(); - - $qr = $this->databaseAdmin->prepare('UPDATE sector SET lifePlanet = ?, population = ? WHERE id = ?'); - $qr->execute(array($nbrPlanet, $population, $id)); - - $qr->closeCursor(); - } - } - - protected function isPointInMap($d2o) { - $mask = rand(1, $this->galaxyConfiguration->galaxy['mask']); - - if ($mask < 3) { - $realPosition = $this->galaxyConfiguration->galaxy['diag'] - $d2o; - $step = $this->galaxyConfiguration->galaxy['diag'] / count($this->galaxyConfiguration->galaxy['systemPosition']); - $currentStep = floor($realPosition / $step); - - $random = rand(0, 100); - - if ($this->galaxyConfiguration->galaxy['systemPosition'][$currentStep] > $random) { - return TRUE; - } else { - return FALSE; - } - } else { - return FALSE; - } - - } - - protected function l2p($x1, $x2, $y1, $y2) { - return (pow($x1 - $y1, 2) + pow($x2 - $y2, 2)); - } - - protected function distToSegment($p1, $p2, $v1, $v2, $w1, $w2) { - $l2 = $this->l2p($v1, $v2, $w1, $w2); - - if ($l2 == 0) { - return sqrt($this->l2p($p1, $p2, $v1, $v2)); - } - - $t = (($p1 - $v1) * ($w1 - $v1) + ($p2 - $v2) * ($w2 - $v2)) / $l2; - - if ($t < 0) { - return sqrt($this->l2p($p1, $p2, $v1, $v2)); - } - - if ($t > 1) { - return sqrt($this->l2p($p1, $p2, $w1, $w2)); - } - - $tx = $v1 + $t * ($w1 - $v1); - $ty = $v2 + $t * ($w2 - $v2); - - return sqrt($this->l2p($p1, $p2, $tx, $ty)); - } - - protected function getProportion($params, $value) { - $cursor = 0; - $type = 0; - $min = 0; - $max = 0; - - for ($i = 0; $i < count($params); $i++) { - if ($i == 0) { - $max = $params[$i]; - } elseif ($i < count($params) - 1) { - $min = $cursor; - $max = $cursor + $params[$i]; - } else { - $min = $cursor; - $max = 100; - } - - $cursor = $max; - $type += 1; - - - if ($value > $min && $value <= $max) { - return $type; - } - } - } - - protected function getSystem() { - return $this->getProportion($this->galaxyConfiguration->galaxy['systemProportion'], rand(1, 100)); - } - - protected function getNbOfPlace($systemType) { - return rand( - $this->galaxyConfiguration->systems[$systemType - 1]['nbrPlaces'][0], - $this->galaxyConfiguration->systems[$systemType - 1]['nbrPlaces'][1] - ); - } - - protected function getTypeOfPlace($systemType) { - return $this->getProportion($this->galaxyConfiguration->systems[$systemType - 1]['placesPropotion'], rand(1, 100)); - } -} diff --git a/system/Modules/Gaia/Manager/GalaxyColorManager.php b/system/Modules/Gaia/Manager/GalaxyColorManager.php deleted file mode 100644 index e66c0ebeb..000000000 --- a/system/Modules/Gaia/Manager/GalaxyColorManager.php +++ /dev/null @@ -1,187 +0,0 @@ -mustApply = true; - } - - public function mustApply() - { - return $this->mustApply; - } - - public function applyAndSave() { - $this->loadSystem(); - $this->loadSector(); - $this->changeColorSystem(); - $this->changeColorSector(); - $this->saveSystem(); - $this->saveSector(); - } - - protected $system = array(); - protected $sector = array(); - - public function loadSystem() { - $requestPart = ''; - foreach ($this->availableFactions as $faction) { - $requestPart .= '(SELECT COUNT(pa.rColor) FROM place AS pl LEFT JOIN player AS pa ON pl.rPlayer = pa.id WHERE pl.rSystem = se.id AND pa.rColor = ' . $faction . ') AS color' . $faction . ','; - } - $requestPart = rtrim($requestPart, ","); # to remove last comma - - $query = 'SELECT - se.id AS id, - se.rSector AS sector, - se.rColor AS color, - (SELECT COUNT(pl.id) FROM place AS pl WHERE pl.rSystem = se.id) AS nbPlace, - ' . $requestPart . ' - FROM system AS se - ORDER BY se.id'; - $qr = $this->database->query($query); - - while ($aw = $qr->fetch()) { - $colors = []; - foreach ($this->availableFactions as $faction) { - $colors[$faction] = $aw['color' . $faction]; - } - $this->system[$aw['id']] = array( - 'sector' => $aw['sector'], - 'systemColor' => $aw['color'], - 'nbPlace' => $aw['nbPlace'], - 'color' => $colors, - 'hasChanged' => FALSE - ); - } - } - - public function saveSystem() { - foreach ($this->system as $k => $v) { - if ($v['hasChanged'] == TRUE) { - $qr = $this->database->prepare('UPDATE system SET rColor = ? WHERE id = ?'); - $qr->execute(array($v['systemColor'], $k)); - } - } - } - - public function loadSector() { - $qr = $this->database->query('SELECT id, rColor, prime FROM sector ORDER BY id'); - while ($aw = $qr->fetch()) { - $this->sector[$aw['id']] = array( - 'color' => $aw['rColor'], - 'prime' => $aw['prime'], - 'hasChanged' => FALSE - ); - } - } - - public function saveSector() { - foreach ($this->sector as $k => $v) { - if ($v['hasChanged'] == TRUE) { - $qr = $this->database->prepare('UPDATE sector SET rColor = ?, prime = ? WHERE id = ?'); - $qr->execute(array($v['color'], $v['prime'], $k)); - } - } - } - - public function changeColorSystem() { - foreach ($this->system as $k => $v) { - - if ($v['systemColor'] + array_sum($v['color']) == 0) { - # system blanc qui ne change pas - } elseif ($v['systemColor'] != 0 && array_sum($v['color']) == 0) { - # system pas blanc devient blanc - - $this->system[$k]['systemColor'] = 0; - $this->system[$k]['hasChanged'] = TRUE; - } else { - # autre cas - - $currColor = $v['systemColor']; - - $usedArray = $v['color']; - - $frsNumber = max($usedArray); - $temp = array_keys($usedArray, max($usedArray)); - $frsColor = $temp[0]; - - unset($usedArray[$frsColor]); - - $secNumber = max($usedArray); - $temp = array_keys($usedArray, max($usedArray)); - $secColor = $temp[0]; - - if ($secNumber == 0) { - if ($v['systemColor'] != $frsColor) { - $this->system[$k]['systemColor'] = $frsColor; - $this->system[$k]['hasChanged'] = TRUE; - } - } else { - if ($frsNumber > $secNumber AND $frsColor != $v['systemColor']) { - $this->system[$k]['systemColor'] = $frsColor; - $this->system[$k]['hasChanged'] = TRUE; - } - } - } - } - } - - public function changeColorSector() { - $sectorUpdatedColor = []; - - foreach ($this->sector as $k => $v) { - $colorRepartition = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - - foreach ($this->system as $m => $n) { - if ($n['sector'] == $k) { - if ($n['systemColor'] != 0) { - $colorRepartition[$n['systemColor'] - 1]++; - } - } - } - - $nbrColor = max($colorRepartition); - - if ($v['color'] == 0) { - $nbrColorSector = NULL; - } else { - $nbrColorSector = $colorRepartition[$v['color'] - 1]; - } - - if ($nbrColor >= $this->limitConquestSector) { - $maxColor = array_keys($colorRepartition, max($colorRepartition)); - $this->sector[$k]['prime'] = 0; - - if ($nbrColorSector == NULL) { - $sectorUpdatedColor[] = $this->sector[$k]['color']; - $this->sector[$k]['color'] = $maxColor[0] + 1; - $this->sector[$k]['hasChanged'] = TRUE; - } elseif ($nbrColor > $nbrColorSector AND ($maxColor[0] + 1) != $v['color']) { - $sectorUpdatedColor[] = $this->sector[$k]['color']; - $this->sector[$k]['color'] = $maxColor[0] + 1; - $this->sector[$k]['hasChanged'] = TRUE; - } - } else { - # ne modifie pas un secteur prime s'il n'y a pas assez de joueur dedans - if ($this->sector[$k]['prime'] == 0) { - $sectorUpdatedColor[] = $this->sector[$k]['color']; - $this->sector[$k]['color'] = 0; - $this->sector[$k]['hasChanged'] = TRUE; - } - } - } - } -} diff --git a/system/Modules/Gaia/Manager/PlaceManager.php b/system/Modules/Gaia/Manager/PlaceManager.php deleted file mode 100644 index 88884fd98..000000000 --- a/system/Modules/Gaia/Manager/PlaceManager.php +++ /dev/null @@ -1,493 +0,0 @@ -entityManager->getRepository(Place::class)->get($id)) !== null) { - return $place; - } - return null; - } - - public function getByIds(array $ids = []): array - { - return $this->entityManager->getRepository(Place::class)->getByIds($ids); - } - - public function getSystemPlaces(System $system): array - { - return $this->entityManager->getRepository(Place::class)->getSystemPlaces($system->getId()); - } - - public function search(string $search): array - { - return $this->entityManager->getRepository(Place::class)->search($search); - } - - public function getPlayerPlaces(): array - { - return $this->entityManager->getRepository(Place::class)->getPlayerPlaces(); - } - - public function getNpcPlaces(): array - { - return $this->entityManager->getRepository(Place::class)->getNpcPlaces(); - } - - public function turnAsEmptyPlace(Place $place): bool - { - return $this->entityManager->getRepository(Place::class)->turnAsEmptyPlace($place->getId()); - } - - public function turnAsSpawnPlace(int $placeId, int $playerId): bool - { - $this->eventDispatcher->dispatch(new PlaceOwnerChangeEvent($this->get($placeId)), PlaceOwnerChangeEvent::NAME); - - return $this->entityManager->getRepository(Place::class)->turnAsSpawnPlace($placeId, $playerId); - } - - public function sendNotif(Place $place, string $case, Commander $commander, int $report = null): void - { - switch ($case) { - case Place::CHANGESUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Déplacement réussi'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId(), $commander->getName()) - ->addTxt(' est arrivé sur ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - - case Place::CHANGEFAIL: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Déplacement réussi'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId(), $commander->getName()) - ->addTxt(' s\'est posé sur ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('. Il est en garnison car il n\'y avait pas assez de place en orbite.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CHANGELOST: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Déplacement raté'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId(), $commander->getName()) - ->addTxt(' n\'est pas arrivé sur ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('. Cette base ne vous appartient pas. Elle a pu être conquise entre temps.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTEMPTYSSUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Pillage réussi'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a pillé la planète rebelle située aux coordonnées ') - ->addLnk('map/place-' . $place->id, Game::formatCoord($place->xSystem, $place->ySystem, $place->position, $place->rSector)) - ->addTxt('.') - ->addSep() - ->addBoxResource('resource', Format::number($commander->getResources()), 'ressources pillées', $this->mediaPath) - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTEMPTYFAIL: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Pillage raté'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/view-memorial', $commander->getName()) - ->addTxt(' est tombé lors de l\'attaque de la planète rebelle située aux coordonnées ') - ->addLnk('map/place-' . $place->id, Game::formatCoord($place->xSystem, $place->ySystem, $place->position, $place->rSector)) - ->addTxt('.') - ->addSep() - ->addTxt('Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.') - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTPLAYERWHITBATTLESUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Pillage réussi'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a pillé la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addBoxResource('resource', Format::number($commander->getResources()), 'ressources pillées', $this->mediaPath) - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Rapport de pillage'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a pillé votre planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addSep() - ->addBoxResource('resource', Format::number($commander->getResources()), 'ressources pillées', $this->mediaPath) - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTPLAYERWHITBATTLEFAIL: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Pillage raté'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/view-memorial', $commander->getName()) - ->addTxt(' est tombé lors du pillage de la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addTxt('Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.') - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Rapport de combat'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a attaqué votre planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addSep() - ->addTxt('Vous avez repoussé l\'ennemi avec succès.') - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTPLAYERWHITOUTBATTLESUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Pillage réussi'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a pillé la planète non défendue ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addBoxResource('resource', Format::number($commander->getResources()), 'ressources pillées', $this->mediaPath) - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Rapport de pillage'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a pillé votre planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('. Aucune flotte n\'était en position pour la défendre. ') - ->addSep() - ->addBoxResource('resource', Format::number($commander->getResources()), 'ressources pillées', $this->mediaPath) - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::LOOTLOST: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Erreur de coordonnées'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' n\'a pas attaqué la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' car son joueur est de votre faction, sous la protection débutant ou un allié.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CONQUEREMPTYSSUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Colonisation réussie'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a colonisé la planète rebelle située aux coordonnées ') - ->addLnk('map/place-' . $place->id , Game::formatCoord($place->xSystem, $place->ySystem, $place->position, $place->rSector) . '.') - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addTxt('Votre empire s\'étend, administrez votre ') - ->addLnk('bases/base-' . $place->id, 'nouvelle planète') - ->addTxt('.') - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CONQUEREMPTYFAIL: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Colonisation ratée'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/view-memorial', $commander->getName()) - ->addTxt(' est tombé lors de l\'attaque de la planète rebelle située aux coordonnées ') - ->addLnk('map/place-' . $place->id, Game::formatCoord($place->xSystem, $place->ySystem, $place->position, $place->rSector)) - ->addTxt('.') - ->addSep() - ->addTxt('Il a désormais rejoint le Mémorial. Que son âme traverse l\'Univers dans la paix.') - ->addSep() - ->addLnk('fleet/view-archive/report-' . $report, 'voir le rapport') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CONQUERPLAYERWHITOUTBATTLESUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Conquête réussie'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a conquis la planète non défendue ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addTxt('Elle est désormais votre, vous pouvez l\'administrer ') - ->addLnk('bases/base-' . $place->id, 'ici') - ->addTxt('.') - ->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Planète conquise'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a conquis votre planète non défendue ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addSep() - ->addTxt('Impliquez votre faction dans une action punitive envers votre assaillant.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CONQUERLOST: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Erreur de coordonnées'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' n\'a pas attaqué la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' car le joueur est dans votre faction, sous la protection débutant ou votre allié.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::COMEBACK: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Rapport de retour'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' est de retour sur votre base ') - ->addLnk('map/place-' . $commander->getRBase(), $commander->getBaseName()) - ->addTxt(' et rapporte ') - ->addStg(Format::number($commander->getResources())) - ->addTxt(' ressources à vos entrepôts.') - ->addEnd(); - $this->notificationManager->add($notif); - break; - - default: break; - } - } - - public function sendNotifForConquest(Place $place, string $case, Commander $commander, array $reports = []): void - { - $nbrBattle = count($reports); - switch($case) { - case Place::CONQUERPLAYERWHITBATTLESUCCESS: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Conquête réussie'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/commander-' . $commander->getId() . '/sftr-3', $commander->getName()) - ->addTxt(' a conquis la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addTxt($nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu')) - ->addSep() - ->addBoxResource('xp', '+ ' . Format::number($commander->earnedExperience), 'expérience de l\'officier', $this->mediaPath) - ->addSep() - ->addTxt('Elle est désormais vôtre, vous pouvez l\'administrer ') - ->addLnk('bases/base-' . $place->id, 'ici') - ->addTxt('.'); - for ($i = 0; $i < $nbrBattle; $i++) { - $notif->addSep(); - $notif->addLnk('fleet/view-archive/report-' . $reports[$i], 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport'); - } - $notif->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Planète conquise'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a conquis votre planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addSep() - ->addTxt($nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu')) - ->addSep() - ->addTxt('Impliquez votre faction dans une action punitive envers votre assaillant.'); - for ($i = 0; $i < $nbrBattle; $i++) { - $notif->addSep(); - $notif->addLnk('fleet/view-archive/report-' . $reports[$i], 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport'); - } - $notif->addEnd(); - $this->notificationManager->add($notif); - break; - case Place::CONQUERPLAYERWHITBATTLEFAIL: - $notif = new Notification(); - $notif->setRPlayer($commander->getRPlayer()); - $notif->setTitle('Conquête ratée'); - $notif->addBeg() - ->addTxt('Votre officier ') - ->addLnk('fleet/view-memorial/', $commander->getName()) - ->addTxt(' est tombé lors de la tentive de conquête de la planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $place->rPlayer, $place->playerName) - ->addTxt('.') - ->addSep() - ->addTxt($nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu')) - ->addSep() - ->addTxt('Il a désormais rejoint de Mémorial. Que son âme traverse l\'Univers dans la paix.'); - for ($i = 0; $i < $nbrBattle; $i++) { - $notif->addSep(); - $notif->addLnk('fleet/view-archive/report-' . $reports[$i], 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport'); - } - $notif->addEnd(); - $this->notificationManager->add($notif); - - $notif = new Notification(); - $notif->setRPlayer($place->rPlayer); - $notif->setTitle('Rapport de combat'); - $notif->addBeg() - ->addTxt('L\'officier ') - ->addStg($commander->getName()) - ->addTxt(' appartenant au joueur ') - ->addLnk('embassy/player-' . $commander->getRPlayer(), $commander->getPlayerName()) - ->addTxt(' a tenté de conquérir votre planète ') - ->addLnk('map/place-' . $place->id, $place->baseName) - ->addTxt('.') - ->addSep() - ->addTxt($nbrBattle . Format::addPlural($nbrBattle, ' combats ont eu lieu.', ' seul combat a eu lieu')) - ->addSep() - ->addTxt('Vous avez repoussé l\'ennemi avec succès. Bravo !'); - for ($i = 0; $i < $nbrBattle; $i++) { - $notif->addSep(); - $notif->addLnk('fleet/view-archive/report-' . $reports[$i], 'voir le ' . Format::ordinalNumber($i + 1) . ' rapport'); - } - $notif->addEnd(); - $this->notificationManager->add($notif); - break; - - default: break; - } - } -} diff --git a/system/Modules/Gaia/Manager/SectorManager.php b/system/Modules/Gaia/Manager/SectorManager.php deleted file mode 100644 index 10aff4cb7..000000000 --- a/system/Modules/Gaia/Manager/SectorManager.php +++ /dev/null @@ -1,117 +0,0 @@ -loadBalancer->affectTask( - // $this->taskManager->createTechnicalTask('gaia.sector_manager', 'calculateAllOwnerships') - //); - } - - /** - * @param int $id - * @return Sector - */ - public function get($id) { - return $this->entityManager->getRepository(Sector::class)->get($id); - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionSectors($factionId) - { - return $this->entityManager->getRepository(Sector::class)->getFactionSectors($factionId); - } - - /** - * @return array - */ - public function getAll() - { - return $this->entityManager->getRepository(Sector::class)->getAll(); - } - - /** - * @param Sector $sector - */ - public function changeOwnership(Sector $sector) - { - $this->entityManager->getRepository(Sector::class)->changeOwnership($sector); - } - - public function calculateAllOwnerships() - { - foreach ($this->getAll() as $sector) { - $this->calculateOwnership($sector); - } - } - - /** - * @param Sector $sector - * @return array - */ - public function calculateOwnership(Sector $sector) - { - $systems = $this->systemManager->getSectorSystems($sector->getId()); - $bases = $this->orbitalBaseManager->getSectorBases($sector->getId()); - $scores = []; - - foreach ($bases as $base) - { - $player = $this->playerManager->get($base->rPlayer); - - $scores[$player->rColor] = - (!empty($scores[$player->rColor])) - ? $scores[$player->rColor] + $this->scores[$base->typeOfBase] - : $this->scores[$base->typeOfBase] - ; - } - // For each system, the owning faction gains two points - foreach ($systems as $system) { - if ($system->rColor === 0) { - continue; - } - $scores[$system->rColor] = (!empty($scores[$system->rColor])) ? $scores[$system->rColor] + 2 : 2; - } - $scores[0] = 0; - arsort($scores); - reset($scores); - - $this->redisManager->getConnection()->set('sector:' . $sector->getId(), serialize($scores)); - - return $scores; - } -} diff --git a/system/Modules/Gaia/Manager/SystemManager.php b/system/Modules/Gaia/Manager/SystemManager.php deleted file mode 100644 index cacce9330..000000000 --- a/system/Modules/Gaia/Manager/SystemManager.php +++ /dev/null @@ -1,57 +0,0 @@ -entityManager->getRepository(System::class)->get($id); - } - - /** - * @param int $sectorId - * @return array - */ - public function getSectorSystems($sectorId) - { - return $this->entityManager->getRepository(System::class)->getSectorSystems($sectorId); - } - - /** - * @return array - */ - public function getAll() - { - return $this->entityManager->getRepository(System::class)->getAll(); - } - - /** - * @param System $system - */ - public function changeOwnership(System $system) - { - $this->entityManager->getRepository(System::class)->changeOwnership($system); - } -} diff --git a/system/Modules/Gaia/Message/NpcsPlacesUpdateMessage.php b/system/Modules/Gaia/Message/NpcsPlacesUpdateMessage.php deleted file mode 100644 index 86dbb462a..000000000 --- a/system/Modules/Gaia/Message/NpcsPlacesUpdateMessage.php +++ /dev/null @@ -1,8 +0,0 @@ -id = $v; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $v - * @return $this - */ - public function setRPlayer($v) - { - $this->rPlayer = $v; - - return $this; - } - - /** - * @return int - */ - public function getRPlayer() - { - return $this->rPlayer; - } - - /** - * @param int $v - * @return $this - */ - public function setRSystem($v) - { - $this->rSystem = $v; - - return $this; - } - - /** - * @return int - */ - public function getRSystem() - { - return $this->rSystem; - } - - /** - * @param int $v - * @return $this - */ - public function setTypeOfPlace($v) - { - $this->typeOfPlace = $v; - - return $this; - } - - /** - * @return int - */ - public function getTypeOfPlace() - { - return $this->typeOfPlace; - } - - /** - * @param int $v - * @return $this - */ - public function setPosition($v) - { - $this->position = $v; - - return $this; - } - - /** - * @return int - */ - public function getPosition() - { - return $this->position; - } - - /** - * @param int $v - * @return $this - */ - public function setPopulation($v) - { - $this->population = $v; - - return $this; - } - - /** - * @return int - */ - public function getPopulation() - { - return $this->population; - } - - /** - * @param int $v - * @return $this - */ - public function setCoefResources($v) - { - $this->coefResources = $v; - - return $this; - } - - /** - * @return int - */ - public function getCoefResources() - { - return $this->coefResources; - } - - /** - * @param int $v - * @return $this - */ - public function setCoefHistory($v) - { - $this->coefHistory = $v; - - return $this; - } - - /** - * @return int - */ - public function getCoefHistory() - { - return $this->coefHistory; - } - - /** - * @param int $v - * @return $this - */ - public function setResources($v) - { - $this->resources = $v; - - return $this; - } - - /** - * @return int - */ - public function getResources() - { - return $this->resources; - } - - /** - * @param int $danger - * @return $this - */ - public function setDanger($danger) - { - $this->danger = $danger; - - return $this; - } - - /** - * @return int - */ - public function getDanger() - { - return $this->danger; - } - - /** - * @param int $maxDanger - * @return $this - */ - public function setMaxDanger($maxDanger) - { - $this->maxDanger = $maxDanger; - - return $this; - } - - /** - * @return int - */ - public function getMaxDanger() - { - return $this->maxDanger; - } - - /** - * @param int $v - * @return $this - */ - public function setRSector($v) - { - $this->rSector = $v; - - return $this; - } - - /** - * @return int - */ - public function getRSector() - { - return $this->rSector; - } - - /** - * @param float $v - * @return $this - */ - public function setXSystem($v) - { - $this->xSystem = $v; - - return $this; - } - - /** - * @return float - */ - public function getXSystem() - { - return $this->xSystem; - } - - /** - * @param float $v - * @return $this - */ - public function setYSystem($v) - { - $this->ySystem = $v; - - return $this; - } - - /** - * @return float - */ - public function getYSystem() - { - return $this->ySystem; - } - - /** - * @param int $v - * @return $this - */ - public function setTypeOfSystem($v) - { - $this->typeOfSystem = $v; - - return $this; - } - - /** - * @return int - */ - public function getTypeOfSystem() - { - return $this->typeOfSystem; - } - - /** - * @param int $v - * @return $this - */ - public function setTax($v) - { - $this->tax = $v; - - return $this; - } - - /** - * @return int - */ - public function getTax() - { - return $this->tax; - } - - /** - * @param int $v - * @return $this - */ - public function setSectorColor($v) - { - $this->sectorColor = $v; - - return $this; - } - - /** - * @return int - */ - public function getSectorColor() - { - return $this->sectorColor; - } - - /** - * @param int $v - * @return $this - */ - public function setPlayerColor($v) - { - $this->playerColor = $v; - - return $this; - } - - /** - * @return int - */ - public function getPlayerColor() - { - return $this->playerColor; - } - - /** - * @param string $v - * @return $this - */ - public function setPlayerName($v) - { - $this->playerName = $v; - - return $this; - } - - /** - * @return string - */ - public function getPlayerName() - { - return $this->playerName; - } - - /** - * @param string $v - * @return $this - */ - public function setPlayerAvatar($v) - { - $this->playerAvatar = $v; - - return $this; - } - - /** - * @return string - */ - public function getPlayerAvatar() - { - return $this->playerAvatar; - } - - /** - * @param int $v - * @return $this - */ - public function setPlayerStatus($v) - { - $this->playerStatus = $v; - - return $this; - } - - /** - * @return int - */ - public function getPlayerStatus() - { - return $this->playerStatus; - } - - /** - * @param int $v - * @return $this - */ - public function setTypeOfBase($v) - { - $this->typeOfBase = $v; - - return $this; - } - - /** - * @return int - */ - public function getTypeOfBase() - { - return $this->typeOfBase; - } - - /** - * @param string $v - * @return $this - */ - public function setBaseName($v) - { - $this->baseName = $v; - - return $this; - } - - /** - * @return string - */ - public function getBaseName() - { - return $this->baseName; - } - - /** - * @param int $v - * @return $this - */ - public function setPoints($v) - { - $this->points = $v; - - return $this; - } - - /** - * @return int - */ - public function getPoints() - { - return $this->points; - } - - /** - * @param int $v - * @return $this - */ - public function setLevelCommercialPlateforme($v) - { - $this->levelCommercialPlateforme = $v; - - return $this; - } - - /** - * @return int - */ - public function getLevelCommercialPlateforme() - { - return $this->levelCommercialPlateforme; - } - - /** - * @param int $v - * @return $this - */ - public function setLevelSpatioport($v) - { - $this->levelSpatioport = $v; - - return $this; - } - - /** - * @return int - */ - public function getLevelSpatioport() - { - return $this->levelSpatioport; - } - - /** - * @param int $v - * @return $this - */ - public function setAntiSpyInvest($v) - { - $this->antiSpyInvest = $v; - - return $this; - } - - /** - * @return int - */ - public function getAntiSpyInvest() - { - return $this->antiSpyInvest; - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Model/PointLocation.php b/system/Modules/Gaia/Model/PointLocation.php deleted file mode 100644 index 83577e399..000000000 --- a/system/Modules/Gaia/Model/PointLocation.php +++ /dev/null @@ -1,78 +0,0 @@ -pointOnVertex = $pointOnVertex; - - # Transform string coordinates into arrays with x and y values - $point = $this->pointStringToCoordinates($point); - - $vertices = array(); - for ($i = 0; $i < count($polygon); $i += 2) { - $vertices[] = array('x' => $polygon[$i], 'y' => $polygon[$i + 1]); - } - # Add the first at the end to close the polygon - $vertices[] = array('x' => $polygon[0], 'y' => $polygon[1]); - - # Check if the point sits exactly on a vertex - if ($this->pointOnVertex == TRUE and $this->pointOnVertex($point, $vertices) == TRUE) { - # sur un angle - return 1; - } - - # Check if the point is inside the polygon or on the boundary - $intersections = 0; - $verticesCount = count($vertices); - - for ($i = 1; $i < $verticesCount; $i++) { - $vertex1 = $vertices[$i - 1]; - $vertex2 = $vertices[$i]; - - if ($vertex1['y'] == $vertex2['y'] - AND $vertex1['y'] == $point['y'] - AND $point['x'] > min($vertex1['x'], $vertex2['x']) - AND $point['x'] < max($vertex1['x'], $vertex2['x'])) { - # sur une ligne - return 2; - } - - if ($point['y'] > min($vertex1['y'], $vertex2['y']) - AND $point['y'] <= max($vertex1['y'], $vertex2['y']) - AND $point['x'] <= max($vertex1['x'], $vertex2['x']) - AND $vertex1['y'] != $vertex2['y']) { - $xinters = ($point['y'] - $vertex1['y']) * ($vertex2['x'] - $vertex1['x']) / ($vertex2['y'] - $vertex1['y']) + $vertex1['x']; - if ($xinters == $point['x']) { - # sur une ligne - return 2; - } - if ($vertex1['x'] == $vertex2['x'] || $point['x'] <= $xinters) { - $intersections++; - } - } - } - - # If the number of edges we passed through is even, then it's in the polygon. - if ($intersections % 2 != 0) { - # a l'interieur - return 3; - } else { - # a l'exterieur - return 0; - } - } - - function pointOnVertex($point, $vertices) { - foreach($vertices as $vertex) { - if ($point == $vertex) { return TRUE; } - } - } - - function pointStringToCoordinates($pointString) { - $coordinates = explode(',', $pointString); - return array('x' => $coordinates[0], 'y' => $coordinates[1]); - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Model/Sector.php b/system/Modules/Gaia/Model/Sector.php deleted file mode 100644 index d99fa68e5..000000000 --- a/system/Modules/Gaia/Model/Sector.php +++ /dev/null @@ -1,90 +0,0 @@ -id; } - public function getRColor() { return $this->rColor; } - public function getXPosition() { return $this->xPosition; } - public function getYPosition() { return $this->yPosition; } - public function getXBarycentric() { return $this->xBarycentric; } - public function getYBarycentric() { return $this->yBarycentric; } - public function getTax() { return $this->tax; } - public function getName() { return $this->name; } - public function getPoints() { return $this->points; } - public function getPopulation() { return $this->population; } - public function getLifePlanet() { return $this->lifePlanet; } - - /** - * @return boolean - */ - public function getPrime() - { - return $this->prime; - } - - // SETTER - public function setId($v) { $this->id = $v; return $this; } - public function setRColor($v) { $this->rColor = $v; return $this; } - public function setXPosition($v) { $this->xPosition = $v; return $this; } - public function setYPosition($v) { $this->yPosition = $v; return $this; } - public function setXBarycentric($v) { $this->xBarycentric = $v; return $this; } - public function setYBarycentric($v) { $this->yBarycentric = $v; return $this; } - public function setTax($v) { $this->tax = $v; return $this; } - public function setName($v) { $this->name = $v; return $this; } - public function setPoints($v) { $this->points = $v; return $this; } - public function setPopulation($v) { $this->population = $v; return $this; } - public function setLifePlanet($v) { $this->lifePlanet = $v; return $this; } - - /** - * @param boolean $isPrime - * @return \Asylamba\Modules\Gaia\Model\Sector - */ - public function setPrime($isPrime) - { - $this->prime = $isPrime; - - return $this; - } - - public function getSystemsByPosition($i) { - return $this->systems[$i]; - } - - public function systemsSize() { - return count($this->systems); - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Model/System.php b/system/Modules/Gaia/Model/System.php deleted file mode 100644 index d4cc93165..000000000 --- a/system/Modules/Gaia/Model/System.php +++ /dev/null @@ -1,140 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() { - return $this->id; - } - - /** - * @param int $sectorId - * @return System - */ - public function setSectorId($sectorId) - { - $this->rSector = $sectorId; - - return $this; - } - - /** - * @return int - */ - public function getSectorId() - { - return $this->rSector; - } - - /** - * @param int $factionId - * @return System - */ - public function setFactionId($factionId) - { - $this->rColor = $factionId; - - return $this; - } - - /** - * @return int - */ - public function getFactionId() - { - return $this->rColor; - } - - /** - * @param int $xPosition - * @return System - */ - public function setXPosition($xPosition) - { - $this->xPosition = $xPosition; - - return $this; - } - - /** - * @return int - */ - public function getXPosition() - { - return $this->xPosition; - } - - /** - * @param int $yPosition - * @return System - */ - public function setYPosition($yPosition) - { - $this->yPosition = $yPosition; - - return $this; - } - - /** - * @return int - */ - public function getYPosition() - { - return $this->yPosition; - } - - /** - * @param int $systemType - * @return System - */ - public function setSystemType($systemType) - { - $this->typeOfSystem = $systemType; - - return $this; - } - - /** - * @return int - */ - public function getSystemType() - { - return $this->typeOfSystem; - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Repository/PlaceRepository.php b/system/Modules/Gaia/Repository/PlaceRepository.php deleted file mode 100644 index 8911a3073..000000000 --- a/system/Modules/Gaia/Repository/PlaceRepository.php +++ /dev/null @@ -1,324 +0,0 @@ -connection->prepare( - 'SELECT p.*, - s.rSector AS rSector, - s.xPosition AS xPosition, - s.yPosition AS yPosition, - s.typeOfSystem AS typeOfSystem, - se.tax AS tax, - se.rColor AS sectorColor, - pl.rColor AS playerColor, - pl.name AS playerName, - pl.avatar AS playerAvatar, - pl.status AS playerStatus, - pl.level AS playerLevel, - ob.rPlace AS obId, - ob.name AS obName, - ob.points AS points, - ob.levelCommercialPlateforme AS levelCommercialPlateforme, - ob.levelSpatioport AS levelSpatioport, - ob.resourcesStorage AS obResources, - ob.antiSpyAverage AS antiSpyAverage, - ob.typeOfBase AS obTypeOfBase - FROM place AS p - LEFT JOIN system s ON p.rSystem = s.id - LEFT JOIN sector se ON s.rSector = se.id - LEFT JOIN player pl ON p.rPlayer = pl.id - LEFT JOIN orbitalBase ob ON p.id = ob.rPlace ' - . $whereClause - ); - $statement->execute($parameters); - - return $statement; - } - - /** - * @param int $id - * @return Place - */ - public function get($id) - { - if (($p = $this->unitOfWork->getObject(Place::class, $id)) !== null) { - return $p; - } - $statement = $this->select('WHERE p.id = :id', ['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - return $place; - } - - /** - * @param array $ids - * @return array - */ - public function getByIds($ids) - { - $statement = $this->select('WHERE p.id IN (' . implode(',', $ids) . ')'); - - $data = []; - while ($row = $statement->fetch()) { - if (($p = $this->unitOfWork->getObject(Place::class, $row['id'])) !== null) { - $data[] = $p; - continue; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - $data[] = $place; - } - return $data; - } - - public function getSystemPlaces(int $systemId): array - { - $statement = $this->select('WHERE p.rSystem = :system_id ' . $this->getOrderByClause(['position' => 'ASC']), ['system_id' => $systemId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($p = $this->unitOfWork->getObject(Place::class, $row['id'])) !== null) { - $data[] = $p; - continue; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - $data[] = $place; - } - return $data; - } - - /** - * @return array - */ - public function getPlayerPlaces() - { - $statement = $this->select('WHERE p.rPlayer IS NOT NULL AND p.typeOfPlace = ' . Place::TERRESTRIAL); - - $data = []; - while ($row = $statement->fetch()) { - if (($p = $this->unitOfWork->getObject(Place::class, $row['id'])) !== null) { - $data[] = $p; - continue; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - $data[] = $place; - } - return $data; - } - - /** - * @return array - */ - public function getNpcPlaces() - { - $statement = $this->select('WHERE p.rPlayer IS NULL AND typeOfPlace = ' . Place::TERRESTRIAL); - - $data = []; - while ($row = $statement->fetch()) { - if (($p = $this->unitOfWork->getObject(Place::class, $row['id'])) !== null) { - $data[] = $p; - continue; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - $data[] = $place; - } - return $data; - } - - /** - * @param string $search - * @return array - */ - public function search($search) - { - $statement = $this->select( - 'WHERE (pl.statement = 1 OR pl.statement = 2 OR pl.statement = 3) - AND (LOWER(pl.name) LIKE LOWER(:place_name) - OR LOWER(ob.name) LIKE LOWER(:base_name)) ' . $this->getOrderByClause(['pl.id' => 'DESC']) . ' LIMIT 20', - ['place_name' => "%$search%", 'base_name' => "%$search%"] - ); - - $data = []; - while ($row = $statement->fetch()) { - if (($p = $this->unitOfWork->getObject(Place::class, $row['id'])) !== null) { - $data[] = $p; - continue; - } - $place = $this->format($row); - $this->unitOfWork->addObject($place); - $data[] = $place; - } - return $data; - } - - public function insert($place) - { - $qr = $this->connection->prepare( - 'INSERT INTO place(rPlayer, rSystem, typeOfPlace, position, population, - coefResources, coefHistory, resources, danger, maxDanger, uPlace) - VALUES(:player_id, :system_id, :place_type, :position, :population, - :resources_coeff, :history_coeff, :resources, :danger, :maxDanger, :uPlace)' - ); - $qr->execute(array( - 'player_id' => $place->getRPlayer(), - 'system_id' => $place->getRSystem(), - 'place_type' => $place->getTypeOfPlace(), - 'position' => $place->getPosition(), - 'population' => $place->getPopulation(), - 'resources_coeff' => $place->getCoefResources(), - 'history_coeff' => $place->getCoefHistory(), - 'resources' => $place->getResources(), - 'danger' => $place->danger, - 'maxDanger' => $place->maxDanger, - 'uPlace' => $place->uPlace - )); - $place->setId($this->connection->lastInsertId()); - } - - public function update($place) - { - $statement = $this->connection->prepare( - 'UPDATE place SET - rPlayer = :player_id, - resources = :resources, - danger = :danger, - uPlace = :u_place - WHERE id = :id'); - $statement->execute(array( - 'player_id' => $place->getRPlayer(), - 'resources' => $place->getResources(), - 'danger' => $place->danger, - 'u_place' => $place->uPlace, - 'id' => $place->getId() - )); - } - - /** - * @param Place $place - * @param boolean $updateDanger - */ - public function updatePlace($place, $updateDanger = false) - { - $statement = $this->connection->prepare( - 'UPDATE place SET - resources = resources + :resources, - danger = danger + :danger, - uPlace = :updated_at - WHERE id = :id'); - $statement->execute([ - 'resources' => $place->resources, - 'danger' => ($updateDanger === true) ? $place->danger : 0, - 'updated_at' => $place->uPlace, - 'id' => $place->getId() - ]); - } - - public function turnAsEmptyPlace(int $placeId): bool - { - $statement = $this->connection->prepare( - 'UPDATE place SET typeOfPlace = :place_type WHERE id = :id' - ); - return $statement->execute([ - 'place_type' => Place::EMPTYZONE, - 'id' => $placeId - ]); - } - - public function turnAsSpawnPlace(int $placeId, int $playerId): bool - { - $statement = $this->connection->prepare( - 'UPDATE place SET rPlayer = :player_id, coefResources = :resources_coeff, - coefHistory = :history_coeff, population = :population WHERE id = :id' - ); - return $statement->execute([ - 'player_id' => $playerId, - 'resources_coeff' => 60, - 'history_coeff' => 20, - 'population' => 50, - 'id' => $placeId - ]); - } - - public function npcQuickfix(): void - { - $this->connection->exec('UPDATE place SET danger = maxDanger WHERE danger > maxDanger'); - } - - /** - * @param Place $place - */ - public function remove($place): void - { - $statement = $this->connection->prepare('DELETE FROM place FROM id = :id'); - $statement->execute(['id' => $place->getId()]); - } - - public function format(array $data): Place - { - $place = new Place(); - - $place->setId((int) $data['id']); - $place->setRSystem((int) $data['rSystem']); - $place->setTypeOfPlace((int) $data['typeOfPlace']); - $place->setPosition($data['position']); - $place->setPopulation((float) $data['population']); - $place->setCoefResources($data['coefResources']); - $place->setCoefHistory($data['coefHistory']); - $place->setResources((int) $data['resources']); - $place->danger = (int) $data['danger']; - $place->maxDanger = (int) $data['maxDanger']; - $place->uPlace = $data['uPlace']; - - $place->setRSector($data['rSector']); - $place->setXSystem($data['xPosition']); - $place->setYSystem($data['yPosition']); - $place->setTypeOfSystem($data['typeOfSystem']); - $place->setTax($data['tax']); - $place->setSectorColor((int) $data['sectorColor']); - - if ($data['rPlayer'] != 0) { - $place->setRPlayer((int) $data['rPlayer']); - $place->setPlayerColor((int) $data['playerColor']); - $place->setPlayerName($data['playerName']); - $place->setPlayerAvatar($data['playerAvatar']); - $place->setPlayerStatus((int) $data['playerStatus']); - $place->playerLevel = (int) $data['playerLevel']; - if (isset($data['msId'])) { - $place->setTypeOfBase((int) $data['msType']); - $place->setBaseName($data['msName']); - $place->setResources((int) $data['msResources']); - } elseif (isset($data['obId'])) { - $place->setTypeOfBase(Place::TYP_ORBITALBASE); - $place->typeOfOrbitalBase = (int) $data['obTypeOfBase']; - $place->setBaseName($data['obName']); - $place->setLevelCommercialPlateforme((int) $data['levelCommercialPlateforme']); - $place->setLevelSpatioport((int) $data['levelSpatioport']); - $place->setResources((int) $data['obResources']); - $place->setAntiSpyInvest((int) $data['antiSpyAverage']); - $place->setPoints((int) $data['points']); - } else { - throw new \ErrorException('Problèmes d\'appartenance du lieu !'); - } - } else { - $place->setTypeOfBase(Place::TYP_EMPTY); - $place->setBaseName('Planète rebelle'); - $place->setPoints(0); - } - return $place; - } -} diff --git a/system/Modules/Gaia/Repository/SectorRepository.php b/system/Modules/Gaia/Repository/SectorRepository.php deleted file mode 100644 index e6d3ac11b..000000000 --- a/system/Modules/Gaia/Repository/SectorRepository.php +++ /dev/null @@ -1,125 +0,0 @@ -unitOfWork->getObject(Sector::class, $id)) !== null) { - return $s; - } - - $statement = $this->connection->prepare('SELECT * FROM sector WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $sector = $this->format($row); - $this->unitOfWork->addObject($sector); - return $sector; - } - - public function getFactionSectors($factionId) - { - $statement = $this->connection->prepare('SELECT * FROM sector WHERE rColor = :faction_id'); - $statement->execute(['faction_id' => $factionId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($s = $this->unitOfWork->getObject(Sector::class, $row['id'])) !== null) { - $data[] = $s; - continue; - } - $sector = $this->format($row); - $this->unitOfWork->addObject($sector); - $data[] = $sector; - } - return $data; - } - - public function getAll() - { - $statement = $this->connection->query('SELECT * FROM sector'); - - $data = []; - while ($row = $statement->fetch()) { - if (($s = $this->unitOfWork->getObject(Sector::class, $row['id'])) !== null) { - $data[] = $s; - continue; - } - $sector = $this->format($row); - $this->unitOfWork->addObject($sector); - $data[] = $sector; - } - return $data; - } - - public function insert($sector) - { - - } - - public function update($sector) - { - $statement = $this->connection->prepare( - 'UPDATE sector SET - rSurrender = :surrender_id, - tax = :tax, - name = :name - WHERE id = :id'); - $statement->execute(array( - 'surrender_id' => $sector->rSurrender, - 'tax' => $sector->tax, - 'name' => $sector->name, - 'id' => $sector->id - )); - } - - /** - * @param Sector $sector - */ - public function changeOwnership(Sector $sector) - { - $statement = $this->connection->prepare( - 'UPDATE sector SET rColor = :faction_id WHERE id = :id' - ); - $statement->execute([ - 'id' => $sector->getId(), - 'faction_id' => $sector->getRColor() - ]); - } - - public function remove($sector) - { - - } - - public function format($data) - { - $sector = new Sector(); - $sector->setId($data['id']); - $sector->setRColor($data['rColor']); - $sector->rSurrender = $data['rSurrender']; - $sector->setXPosition($data['xPosition']); - $sector->setYPosition($data['yPosition']); - $sector->setXBarycentric($data['xBarycentric']); - $sector->setYBarycentric($data['yBarycentric']); - $sector->setTax($data['tax']); - $sector->setName($data['name']); - $sector->setPoints($data['points']); - $sector->setPopulation($data['population']); - $sector->setLifePlanet($data['lifePlanet']); - $sector->setPrime((bool) $data['prime']); - return $sector; - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Repository/SystemRepository.php b/system/Modules/Gaia/Repository/SystemRepository.php deleted file mode 100644 index b39b82cb5..000000000 --- a/system/Modules/Gaia/Repository/SystemRepository.php +++ /dev/null @@ -1,117 +0,0 @@ -unitOfWork->getObject(System::class, $id)) !== null) { - return $s; - } - $statement = $this->connection->prepare('SELECT * FROM system WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $system = $this->format($row); - $this->unitOfWork->addObject($system); - return $system; - } - - /** - * @return array - */ - public function getAll() - { - $statement = $this->connection->query('SELECT * FROM system'); - - $data = []; - while ($row = $statement->fetch()) { - if (($s = $this->unitOfWork->getObject(System::class, $row['id'])) !== null) { - $data[] = $s; - continue; - } - $system = $this->format($row); - $this->unitOfWork->addObject($system); - $data[] = $system; - } - return $data; - } - - /** - * @param int $sectorId - * @return array - */ - public function getSectorSystems($sectorId) - { - $statement = $this->connection->prepare('SELECT * FROM system WHERE rSector = :sector_id'); - $statement->execute(['sector_id' => $sectorId]); - $data = []; - while ($row = $statement->fetch()) { - if (($s = $this->unitOfWork->getObject(System::class, $row['id'])) !== null) { - $data[] = $s; - continue; - } - $system = $this->format($row); - $this->unitOfWork->addObject($system); - $data[] = $system; - } - return $data; - } - - public function insert($system) - { - - } - - /** - * For the moment it's the same method as the one below but new fields shall be implemented soon - * - * @param System $system - */ - public function update($system) - { - $statement = $this->connection->prepare('UPDATE system SET rColor = :faction_id WHERE id = :id'); - $statement->execute([ - 'faction_id' => $system->rColor, - 'id' => $system->id - ]); - } - - /** - * @param System $system - */ - public function changeOwnership(System $system) - { - $statement = $this->connection->prepare( - 'UPDATE system SET rColor = :faction_id WHERE id = :id' - ); - $statement->execute([ - 'id' => $system->getId(), - 'faction_id' => $system->getFactionId() - ]); - } - - public function remove($system) - { - - } - - public function format($data) - { - $system = new System(); - $system->id = $data['id']; - $system->rSector = $data['rSector']; - $system->rColor = $data['rColor']; - $system->xPosition = $data['xPosition']; - $system->yPosition = $data['yPosition']; - $system->typeOfSystem = $data['typeOfSystem']; - return $system; - } -} \ No newline at end of file diff --git a/system/Modules/Gaia/Resource/PlaceResource.php b/system/Modules/Gaia/Resource/PlaceResource.php deleted file mode 100644 index 28e70dc8e..000000000 --- a/system/Modules/Gaia/Resource/PlaceResource.php +++ /dev/null @@ -1,68 +0,0 @@ - 'Colonie', - 'desc' => 'Peu évoluée, la colonie vous donne accès aux bâtiments de base mais jusqu\'à un niveau peu élevé. Elle se trouvera généralement aux extrémités de votre empire et servira de relai pour l\'expansion de ce dernier.', - - 'price' => 0, - 'school-size' => 3, - - 'tax' => 1, - 'l-line' => 1, - 'l-line-position' => array(2), - 'r-line' => 1, - 'r-line-position' => array(2) - ), - array( - 'name' => 'Centre Industriel', - 'desc' => 'Le centre industriel vous permet de produire beaucoup plus de ressouces en permettant d\'agrandir la raffinerie. Plus d\'impôts sont perçus à la population, vous avez donc plus de crédits à disposition à chaque relève. Les usines peuvent tourner nuit et jour et sont plus efficientes. Un plus grand impact commercial est possible.', - - 'price' => 250000, - 'school-size' => 3, - - 'tax' => 1.25, - 'l-line' => 1, - 'l-line-position' => array(2), - 'r-line' => 1, - 'r-line-position' => array(2) - ), - array( - 'name' => 'Base Militaire', - 'desc' => 'Place forte militaire, cette planète dispose d\'un nombre important de flottes en orbite, prêtes à défendre ou à attaquer. Elle dispose en outre de très bons chantiers de construction de vaisseaux.', - - 'price' => 250000, - 'school-size' => 8, - - 'tax' => 0.5, - 'l-line' => 3, - 'l-line-position' => array(1, 2, 3), - 'r-line' => 2, - 'r-line-position' => array(1, 3) - ), - array( - 'name' => 'Capitale', - 'desc' => 'Une capitale est chère, mais son efficacité, tant commerciale que militaire, vous fera vous développer considérablement plus vite. Vous ne pouvez créer qu’une capitale pour votre empire, néanmoins vous pouvez conquérir celles des joueurs ennemis pour en disposer de plusieurs.', - - 'price' => 1000000, - 'school-size' => 8, - - 'tax' => 1.25, - 'l-line' => 3, - 'l-line-position' => array(1, 2, 3), - 'r-line' => 2, - 'r-line-position' => array(1, 3) - ) - ); -} \ No newline at end of file diff --git a/system/Modules/Gaia/Resource/SquadronResource.php b/system/Modules/Gaia/Resource/SquadronResource.php deleted file mode 100644 index 03b68516c..000000000 --- a/system/Modules/Gaia/Resource/SquadronResource.php +++ /dev/null @@ -1,110 +0,0 @@ -= self::size()) { - $aleaNbr -= self::size(); - } - if ($aleaNbr < 0) { - $aleNbr == 0; - } - - $squadron = self::$squadrons[0][2]; - for ($i = 0; $i < self::size(); $i++, $aleaNbr++) { - if ($aleaNbr >= self::size()) { - $aleaNbr = 0; - } - - if (self::$squadrons[$aleaNbr][0] <= $level && self::$squadrons[$aleaNbr][1] >= $level) { - $squadron = self::$squadrons[$aleaNbr][2]; - break; - } - } - - $squadron[] = Utils::now(); - return $squadron; - } - - public static function size() { - return count(self::$squadrons); - } - - private static $squadrons = array( - # niv min, niv max, liste de vaisseaux - - # extrèmement petit officier (lvl 1) - array(1, 1, array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(1, 1, array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(1, 1, array(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(1, 1, array(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(1, 1, array(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - - # très petit officier (lvl 2-4) - array(2, 2, array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 2, array(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 2, array(4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 2, array(4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 2, array(0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 3, array(0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 3, array(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 3, array(8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 3, array(5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 4, array(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0)), - array(2, 4, array(5, 5, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 6, array(5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(2, 6, array(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0)), - - # officier moyen (5-9) - # escadrille moyenne chasseur - array(4, 12, array(15, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(4, 12, array(0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(4, 12, array(0, 0, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0)), - array(4, 12, array(8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0)), - - # escadrille moyenne gros - array(4, 12, array(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0)), - array(4, 12, array(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0)), - array(4, 12, array(0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - array(4, 12, array(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)), - - # escadrille moyenne mixte - array(4, 12, array(0, 5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - array(4, 12, array(12, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - - # escadrille forte chasseur - array(8, 16, array(20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(8, 16, array(0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(8, 16, array(0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0)), - array(8, 16, array(0, 0, 0, 8, 8, 2, 0, 0, 0, 0, 0, 0)), - array(8, 18, array(10, 8, 8, 2, 2, 2, 0, 0, 0, 0, 0, 0)), - array(8, 18, array(10, 8, 8, 2, 2, 2, 0, 0, 0, 0, 0, 0)), - array(8, 18, array(0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0)), - - # escadrille forte gros - array(11, 20, array(0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)), - array(11, 20, array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0)), - - # escadrille forte mixte - array(11, 20, array(10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - array(11, 20, array(5, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0)), - array(11, 20, array(0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0)), - array(11, 20, array(2, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0)), - array(11, 20, array(0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0)), - array(11, 20, array(5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)), - array(11, 20, array(3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)), - array(11, 20, array(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0)), - - # extrèmement fort officier (lvl 20) - array(20, 20, array(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)) - ); -} \ No newline at end of file diff --git a/system/Modules/Gaia/Resource/SystemResource.php b/system/Modules/Gaia/Resource/SystemResource.php deleted file mode 100644 index 5d004555e..000000000 --- a/system/Modules/Gaia/Resource/SystemResource.php +++ /dev/null @@ -1,36 +0,0 @@ - 1, - 'frenchName' => 'Cimetière Spatial', - ), - array( - 'id' => 2, - 'frenchName' => 'Nébuleuse', - ), - array( - 'id' => 3, - 'frenchName' => 'Géante Bleue', - ), - array( - 'id' => 4, - 'frenchName' => 'Naine Jaune', - ), - array( - 'id' => 5, - 'frenchName' => 'Naine Rouge', - ) - ); -} \ No newline at end of file diff --git a/system/Modules/Gaia/Resource/config/config.yml b/system/Modules/Gaia/Resource/config/config.yml deleted file mode 100644 index 29a93baf9..000000000 --- a/system/Modules/Gaia/Resource/config/config.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -parameters: - gaia.limit_conquest_sector: 4 - gaia.scores: [1, 3, 5, 10] - gaia.sector_minimal_score: 10 - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Gaia\Handler\: - resource: '%root_path%/system/Modules/Gaia/Handler/*' - - Asylamba\Modules\Gaia\Manager\: - resource: '%root_path%/system/Modules/Gaia/Manager/*' - - Asylamba\Modules\Gaia\Helper\ActionHelper: - arguments: - $rootPath: '%root_path%' - $mediaPath: '%media%' - $routeSectorBonus: "%athena.trade.route.sector_bonus%" - $routeColorBonus: "%athena.trade.route.color_bonus%" - - Asylamba\Modules\Gaia\Helper\GalaxyGenerator: ~ - - Asylamba\Modules\Gaia\Manager\GalaxyColorManager: - arguments: - $availableFactions: "%game.available_factions%" - $limitConquestSector: "%gaia.limit_conquest_sector%" - - Asylamba\Modules\Gaia\Manager\PlaceManager: - arguments: - $mediaPath: "%media%" - - Asylamba\Modules\Gaia\Manager\SectorManager: - arguments: - $scores: "%gaia.scores%" - - Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration: - public: true - class: "%gaia.galaxy_configuration.class%" - - Asylamba\Modules\Gaia\EventListener\SectorListener: - arguments: - $scores: "%gaia.scores%" - $sectorMinimalScore: "%gaia.sector_minimal_score%" - tags: - - {name: "kernel.event_listener", event: "gaia.place_owner_change", method: "onPlaceOwnerChange", priority: 1} - - Asylamba\Modules\Gaia\EventListener\SystemListener: - arguments: - $scores: "%gaia.scores%" - tags: - - {name: "kernel.event_listener", event: "gaia.place_owner_change", method: "onPlaceOwnerChange", priority: 2} diff --git a/system/Modules/Hephaistos/Handler/DailyRoutineHandler.php b/system/Modules/Hephaistos/Handler/DailyRoutineHandler.php deleted file mode 100644 index c0854dea4..000000000 --- a/system/Modules/Hephaistos/Handler/DailyRoutineHandler.php +++ /dev/null @@ -1,54 +0,0 @@ -entityManager->getRepository(Notification::class)->cleanNotifications( - $this->notificationsReadTimeout, - $this->notificationsUnreadTimeout - ); - - $players = $this->playerManager->getByStatements([Player::ACTIVE, Player::INACTIVE]); - $nbPlayers = count($players); - // @TODO understand this strange loop condition - for ($i = $nbPlayers - 1; $i >= 0; $i--) { - $player = $players[$i]; - if (Utils::interval(Utils::now(), $player->getDLastConnection()) >= $this->playerInactiveTimeLimit) { - $this->playerManager->kill($player->id); - } elseif (Utils::interval(Utils::now(), $player->getDLastConnection()) >= $this->playerGlobalInactiveTime && $player->statement == Player::ACTIVE) { - $player->statement = Player::INACTIVE; - - if ($this->apiMode === 'enabled') { - # sending email API call - $this->api->sendMail($player->bind, API::TEMPLATE_INACTIVE_PLAYER); - } - } - } - $this->entityManager->flush(Player::class); - } -} diff --git a/system/Modules/Hephaistos/HephaistosModule.php b/system/Modules/Hephaistos/HephaistosModule.php deleted file mode 100644 index 721365251..000000000 --- a/system/Modules/Hephaistos/HephaistosModule.php +++ /dev/null @@ -1,13 +0,0 @@ -database->prepare('SELECT c.* - FROM conversation AS c - LEFT JOIN conversationUser AS cu - ON cu.rConversation = c.id - ' . Utils::arrayToWhere($where) .' - GROUP BY c.id - ' . Utils::arrayToOrder($order) .' - ' . Utils::arrayToLimit($limit) - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $aws = $qr->fetchAll(); - $qr->closeCursor(); - - $conversationIds = array(0); - - foreach ($aws as $aw) { - $conversationIds[] = $aw['id']; - } - - $S_CUM = $this->conversationUserManager->getCurrentSession(); - $this->conversationUserManager->newSession(); - $this->conversationUserManager->load(array('c.rConversation' => $conversationIds)); - - foreach ($aws AS $aw) { - $conv = new Conversation(); - - $conv->id = $aw['id']; - $conv->title = $aw['title']; - $conv->messages = $aw['messages']; - $conv->type = $aw['type']; - $conv->dCreation = $aw['dCreation']; - $conv->dLastMessage = $aw['dLastMessage']; - - for ($i = 0; $i < $this->conversationUserManager->size(); $i++) { - if ($this->conversationUserManager->get($i)->rConversation == $conv->id) { - $conv->players[] = $this->conversationUserManager->get($i); - } - } - - $this->_Add($conv); - } - $this->conversationUserManager->changeSession($S_CUM); - } - - public function save() { - $convs = $this->_Save(); - - foreach ($convs AS $conv) { - $qr = $this->database->prepare('UPDATE conversation - SET - title = ?, - messages = ?, - type = ?, - dCreation = ?, - dLastMessage = ? - WHERE id = ?'); - $aw = $qr->execute(array( - $conv->title, - $conv->messages, - $conv->type, - $conv->dCreation, - $conv->dLastMessage, - $conv->id - ) - ); - } - } - - public function add($conv) { - $qr = $this->database->prepare('INSERT INTO conversation - SET title = ?, - messages = ?, - type = ?, - dCreation = ?, - dLastMessage = ?' - ); - - $aw = $qr->execute(array( - $conv->title, - $conv->messages, - $conv->type, - Utils::now(), - Utils::now() - )); - - $conv->id = $this->database->lastInsertId(); - $this->_Add($conv); - - return $conv->id; - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM conversation WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public static function count($where = array()) { - return 0; - } -} diff --git a/system/Modules/Hermes/Manager/ConversationMessageManager.php b/system/Modules/Hermes/Manager/ConversationMessageManager.php deleted file mode 100644 index 8257a71b8..000000000 --- a/system/Modules/Hermes/Manager/ConversationMessageManager.php +++ /dev/null @@ -1,142 +0,0 @@ -database->prepare('SELECT c.*, - p.rColor AS playerColor, - p.name AS playerName, - p.avatar AS playerAvatar, - p.status AS playerStatus - FROM conversationMessage AS c - LEFT JOIN player AS p - ON c.rPlayer = p.id - ' . $formatWhere .' - ' . $formatOrder .' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $aws = $qr->fetchAll(); - $qr->closeCursor(); - - foreach ($aws AS $aw) { - $message = new ConversationMessage(); - - $message->id = $aw['id']; - $message->rConversation = $aw['rConversation']; - $message->rPlayer = $aw['rPlayer']; - $message->type = $aw['type']; - $message->content = $aw['content']; - $message->dCreation = $aw['dCreation']; - $message->dLastModification = $aw['dLastModification']; - - $message->playerColor = $aw['playerColor']; - $message->playerName = $aw['playerName']; - $message->playerAvatar = $aw['playerAvatar']; - $message->playerStatus = $aw['playerStatus']; - - $this->_Add($message); - } - } - - public function save() { - $messages = $this->_Save(); - - foreach ($messages AS $message) { - $qr = $this->database->prepare('UPDATE conversationMessage - SET - rConversation = ?, - rPlayer = ?, - type = ?, - content = ?, - dCreation = ?, - dLastModification = ? - WHERE id = ?'); - $aw = $qr->execute(array( - $message->rConversation, - $message->rPlayer, - $message->type, - $message->content, - $message->dCreation, - $message->dLastModification, - $message->id - ) - ); - } - } - - public function add($message) { - $qr = $this->database->prepare('INSERT INTO conversationMessage - SET rConversation = ?, - rPlayer = ?, - type = ?, - content = ?, - dCreation = ?, - dLastModification = ?' - ); - - $aw = $qr->execute(array( - $message->rConversation, - $message->rPlayer, - $message->type, - $message->content, - $message->dCreation, - $message->dLastModification - )); - - $message->id = $this->database->lastInsertId(); - $this->_Add($message); - - return $message->id; - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM conversationMessage WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public static function count($where = array()) { - return 0; - } -} diff --git a/system/Modules/Hermes/Manager/ConversationUserManager.php b/system/Modules/Hermes/Manager/ConversationUserManager.php deleted file mode 100644 index edd032091..000000000 --- a/system/Modules/Hermes/Manager/ConversationUserManager.php +++ /dev/null @@ -1,130 +0,0 @@ -database->prepare('SELECT c.*, - p.id AS playerId, - p.rColor AS playerColor, - p.name AS playerName, - p.avatar AS playerAvatar, - p.status AS playerStatus - FROM conversationUser AS c - LEFT JOIN player AS p - ON c.rPlayer = p.id - ' . Utils::arrayToWhere($where) .' - ' . Utils::arrayToOrder($order) .' - ' . Utils::arrayToLimit($limit) - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $aws = $qr->fetchAll(); - $qr->closeCursor(); - - foreach ($aws AS $aw) { - $user = new ConversationUser(); - $user->id = $aw['id']; - $user->rConversation = $aw['rConversation']; - $user->rPlayer = $aw['playerId']; - - $user->convPlayerStatement = $aw['playerStatement']; - $user->convStatement = $aw['convStatement']; - $user->dLastView = $aw['dLastView']; - - $user->playerColor = $aw['playerColor']; - $user->playerName = $aw['playerName']; - $user->playerAvatar = $aw['playerAvatar']; - $user->playerStatus = $aw['playerStatus']; - - $this->_Add($user); - } - } - - public function save() { - $userConvs = $this->_Save(); - - foreach ($userConvs AS $userConv) { - $qr = $this->database->prepare('UPDATE conversationUser - SET - rConversation = ?, - rPlayer = ?, - playerStatement = ?, - convStatement = ?, - dLastView = ? - WHERE id = ?'); - $aw = $qr->execute(array( - $userConv->rConversation, - $userConv->rPlayer, - $userConv->convPlayerStatement, - $userConv->convStatement, - $userConv->dLastView, - $userConv->id - ) - ); - } - } - - public function add($userConv) { - $qr = $this->database->prepare('INSERT INTO conversationUser - SET rConversation = ?, - rPlayer = ?, - playerStatement = ?, - convStatement = ?, - dLastView = ?' - ); - - $aw = $qr->execute(array( - $userConv->rConversation, - $userConv->rPlayer, - $userConv->convPlayerStatement, - $userConv->convStatement, - $userConv->dLastView - )); - - $userConv->id = $this->database->lastInsertId(); - $this->_Add($userConv); - - return $userConv->id; - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM conversationUser WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } - - public static function count($where = array()) { - return 0; - } -} diff --git a/system/Modules/Hermes/Manager/NotificationManager.php b/system/Modules/Hermes/Manager/NotificationManager.php deleted file mode 100644 index 211c55a29..000000000 --- a/system/Modules/Hermes/Manager/NotificationManager.php +++ /dev/null @@ -1,69 +0,0 @@ -entityManager->getRepository(Notification::class)->get($id); - } - - public function getUnreadNotifications($playerId) - { - return $this->entityManager->getRepository(Notification::class)->getUnreadNotifications($playerId); - } - - public function getPlayerNotificationsByArchive($playerId, $isArchived) - { - return $this->entityManager->getRepository(Notification::class)->getPlayerNotificationsByArchive($playerId, $isArchived); - } - - public function getAllByReadState($isReaded) - { - return $this->entityManager->getRepository(Notification::class)->getAllByReadState($isReaded); - } - - public function patchForMultiCombats($commanderPlayerId, $placePlayerId, $arrivedAt) - { - $notifications = $this - ->entityManager - ->getRepository(Notification::class) - ->getMultiCombatNotifications($commanderPlayerId, $placePlayerId, $arrivedAt) - ; - $nbNotifications = count($notifications); - if ($nbNotifications > 2) { - for ($i = 0; $i < $nbNotifications - 2; $i++) { - $this->entityManager->remove($notifications[$i]); - } - } - $this->entityManager->flush(Notification::class); - } - - public function add(Notification $notification) - { - $this->entityManager->persist($notification); - $this->entityManager->flush($notification); - } - - public function deleteByRPlayer($rPlayer) - { - return $this->entityManager->getRepository(Notification::class)->removePlayerNotifications($rPlayer); - } -} diff --git a/system/Modules/Hermes/Manager/RoadMapManager.php b/system/Modules/Hermes/Manager/RoadMapManager.php deleted file mode 100644 index b86f2b636..000000000 --- a/system/Modules/Hermes/Manager/RoadMapManager.php +++ /dev/null @@ -1,127 +0,0 @@ -database->prepare('SELECT - r.*, - p.name AS name, - p.rColor AS color, - p.avatar AS avatar - FROM roadMap AS r - LEFT JOIN player AS p - ON p.id = r.rPlayer - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($aw = $qr->fetch()) { - $rm = new RoadMap(); - - $rm->id = $aw['id']; - $rm->rPlayer = $aw['rPlayer']; - $rm->oContent = $aw['oContent']; - $rm->pContent = $aw['pContent']; - $rm->statement = $aw['statement']; - $rm->dCreation = $aw['dCreation']; - - $rm->playerName = $aw['name']; - $rm->playerColor = $aw['color']; - $rm->playerAvatar = $aw['avatar']; - - $this->_Add($rm); - } - } - - public function add(RoadMap $rm) { - $qr = $this->database->prepare('INSERT INTO - roadMap(rPlayer, oContent, pContent, statement, dCreation) - VALUES(?, ?, ?, ?, ?)'); - $qr->execute(array( - $rm->rPlayer, - $rm->oContent, - $rm->pContent, - $rm->statement, - $rm->dCreation - )); - - $rm->id = $this->database->lastInsertId(); - - $this->_Add($rm); - } - - public function save() { - $roadmap = $this->_Save(); - - foreach ($roadmap AS $rm) { - $qr = $this->database->prepare('UPDATE roadMap - SET rPlayer = ?, - oContent = ?, - pContent = ?, - statement = ?, - dCreation = ? - WHERE id = ?'); - $qr->execute(array( - $rm->rPlayer, - $rm->oContent, - $rm->pContent, - $rm->statement, - $rm->dCreation, - $rm->id - )); - } - } - - public function deleteById($id) { - $qr = $this->database->prepare('DELETE FROM roadMap WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - return TRUE; - } -} diff --git a/system/Modules/Hermes/Model/Conversation.php b/system/Modules/Hermes/Model/Conversation.php deleted file mode 100644 index d69102035..000000000 --- a/system/Modules/Hermes/Model/Conversation.php +++ /dev/null @@ -1,25 +0,0 @@ -id; } - - public function getLastPage() { - return ceil($this->messages / ConversationMessage::MESSAGE_BY_PAGE); - } -} \ No newline at end of file diff --git a/system/Modules/Hermes/Model/ConversationMessage.php b/system/Modules/Hermes/Model/ConversationMessage.php deleted file mode 100644 index ca776d898..000000000 --- a/system/Modules/Hermes/Model/ConversationMessage.php +++ /dev/null @@ -1,25 +0,0 @@ -id; } -} \ No newline at end of file diff --git a/system/Modules/Hermes/Model/ConversationUser.php b/system/Modules/Hermes/Model/ConversationUser.php deleted file mode 100644 index 9396b7b65..000000000 --- a/system/Modules/Hermes/Model/ConversationUser.php +++ /dev/null @@ -1,37 +0,0 @@ -id; } - - public static function getPlayerStatement($statement) { - switch ($statement) { - case self::US_ADMIN: return 'gestionnaire'; break; - case self::US_STANDARD: return 'normal'; break; - default: return 'status inconnu'; break; - } - } -} \ No newline at end of file diff --git a/system/Modules/Hermes/Model/Notification.php b/system/Modules/Hermes/Model/Notification.php deleted file mode 100644 index ed75ce410..000000000 --- a/system/Modules/Hermes/Model/Notification.php +++ /dev/null @@ -1,122 +0,0 @@ -dSending = Utils::now(); - } - - // GETTERS AND SETTERS - public function getId() { return $this->id; } - public function getRPlayer() { return $this->rPlayer; } - public function getTitle() { return $this->title; } - public function getContent() { return $this->content; } - public function getDSending() { return $this->dSending; } - public function getReaded() { return $this->readed; } - public function getArchived() { return $this->archived; } - - public function setId($v) { - $this->id = $v; - } - - public function setRPlayer($v) { - $this->rPlayer = $v; - } - - public function setTitle($v) { - if (strlen($v) <= 100) { - $this->title = $v; - } else { - throw new ErrorException('Le titre de la notification est trop long.'); - } - } - - public function setContent($v) { - $this->content = $v; - } - - public function addContent($t) { - $this->content .= $t; - return $this; - } - - public function addBeg() { - return $this->addContent('

'); - } - public function addTxt($t) { - return $this->addContent($t); - } - public function addStg($t) { - return $this->addContent('' . $t . ''); - } - public function addLnk($path, $title) { - return $this->addContent('' . $title . ''); - } - public function addBrk() { - return $this->addContent('

'); - } - public function addSep() { - return $this->addContent('


'); - } - public function addEnd() { - return $this->addContent('

'); - } - public function addBoxResource($type, $value, $label, $mediaPath) { - $img = match ($type) { - 'credit' => 'credit.png', - 'resource' => 'resource.png', - 'xp' => 'xp.png', - 'time' => 'time.png', - 'pev' => 'pev.png', - default => 'credit.png', - }; - return $this->addContent('' . $value . '' . $label . ''); - } - - public function setDSending($v) { - if (isset($v)) { - $this->dSending = $v; - } else { - $this->dSending = Utils::now(); - } - } - - public function setReaded($v) { - if (isset($v) && ($v == 0 || $v == 1)) { - $this->readed = $v; - } else { - throw new ErrorException('La notification peut être lue ou non-lue, il n\' a pas d\'autres possibilités !'); - } - } - - public function setArchived($v) { - if (isset($v) && ($v == 0 || $v == 1)) { - $this->archived = $v; - } else { - throw new ErrorException('La notification peut être archivée ou non-archivée, il n\' a pas d\'autres possibilités !'); - } - } -} diff --git a/system/Modules/Hermes/Model/RoadMap.php b/system/Modules/Hermes/Model/RoadMap.php deleted file mode 100644 index 04114a1fe..000000000 --- a/system/Modules/Hermes/Model/RoadMap.php +++ /dev/null @@ -1,50 +0,0 @@ -id; } - - // CONSTRUCTOR - public function __construct() { - } - - public function setContent($content) { - $this->oContent = $content; - } - - public function setParsedContent($content) { - $this->pContent = $content; - } - - public function hide() { $this->statement = 0; } - public function show() { $this->statement = 1; } -} \ No newline at end of file diff --git a/system/Modules/Hermes/Repository/NotificationRepository.php b/system/Modules/Hermes/Repository/NotificationRepository.php deleted file mode 100644 index e80b4e44f..000000000 --- a/system/Modules/Hermes/Repository/NotificationRepository.php +++ /dev/null @@ -1,203 +0,0 @@ -unitOfWork->getObject(Notification::class, $id)) !== null) { - return $n; - } - $statement = $this->connection->prepare('SELECT * FROM notification WHERE id = :id'); - $statement->execute(['id' => $id]); - - if (($row = $statement->fetch()) === false) { - return null; - } - $notification = $this->format($row); - $this->unitOfWork->addObject($notification); - return $notification; - } - - public function getUnreadNotifications($playerId) - { - $statement = $this->connection->prepare('SELECT * FROM notification WHERE rPlayer = :player_id AND readed = 0 ORDER BY dSending DESC'); - $statement->execute(['player_id' => $playerId]); - $data = []; - while ($row = $statement->fetch()) { - if (($n = $this->unitOfWork->getObject(Notification::class, $row['id'])) !== null) { - $data[] = $n; - continue; - } - $notification = $this->format($row); - $this->unitOfWork->addObject($notification); - $data[] = $notification; - } - return $data; - } - - public function getPlayerNotificationsByArchive($playerId, $isArchived) - { - $statement = $this->connection->prepare( - 'SELECT * FROM notification WHERE rPlayer = :player_id AND archived = :is_archived ORDER BY dSending DESC LIMIT 50'); - $statement->execute(['player_id' => $playerId, 'is_archived' => $isArchived]); - $data = []; - while ($row = $statement->fetch()) { - if (($n = $this->unitOfWork->getObject(Notification::class, $row['id'])) !== null) { - $data[] = $n; - continue; - } - $notification = $this->format($row); - $this->unitOfWork->addObject($notification); - $data[] = $notification; - } - return $data; - } - - public function getAllByReadState($isReaded) - { - $statement = $this->connection->prepare( - 'SELECT * FROM notification WHERE readed = :is_readed'); - $statement->execute(['is_readed' => $isReaded]); - $data = []; - while ($row = $statement->fetch()) { - if (($n = $this->unitOfWork->getObject(Notification::class, $row['id'])) !== null) { - $data[] = $n; - continue; - } - $notification = $this->format($row); - $this->unitOfWork->addObject($notification); - $data[] = $notification; - } - return $data; - } - - /** - * @param int $commanderPlayerId - * @param int $placePlayerId - * @param string $arrivedAt - * @return array - */ - public function getMultiCombatNotifications($commanderPlayerId, $placePlayerId, $arrivedAt) - { - - $statement = $this->connection->prepare( - 'SELECT * FROM notification WHERE (rPlayer = :commander_player_id OR rPlayer = :place_player_id) AND dSending = :arrived_at'); - $statement->execute([ - 'commander_player_id' => $commanderPlayerId, - 'place_player_id' => $placePlayerId, - 'arrived_at' => $arrivedAt - ]); - $data = []; - while ($row = $statement->fetch()) { - if (($n = $this->unitOfWork->getObject(Notification::class, $row['id'])) !== null) { - $data[] = $n; - continue; - } - $notification = $this->format($row); - $this->unitOfWork->addObject($notification); - $data[] = $notification; - } - return $data; - } - - public function insert($notification) - { - $qr = $this->connection->prepare('INSERT INTO - notification(rPlayer, title, content, dSending, readed, archived) - VALUES(?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $notification->getRPlayer(), - $notification->getTitle(), - $notification->getContent(), - $notification->getDSending(), - (int) $notification->getReaded(), - (int) $notification->getArchived() - )); - $notification->setId($this->connection->lastInsertId()); - } - - public function update($notification) - { - $statement = $this->connection->prepare( - 'UPDATE notification SET id = ?, - rPlayer = ?, - title = ?, - content = ?, - dSending = ?, - readed = ?, - archived = ? - WHERE id = ?' - ); - $statement->execute(array( - $notification->getId(), - $notification->getRPlayer(), - $notification->getTitle(), - $notification->getContent(), - $notification->getDSending(), - (int) $notification->getReaded(), - (int) $notification->getArchived(), - $notification->getId() - )); - } - - public function remove($notification) - { - $statement = $this->connection->prepare('DELETE FROM notification WHERE id = ?'); - $statement->execute(array($notification->id)); - } - - /** - * @param int $playerId - * @return int - */ - public function removePlayerNotifications($playerId) - { - $statement = $this->connection->prepare('DELETE FROM notification WHERE rPlayer = ? AND archived = 0'); - $statement->execute(array($playerId)); - - return $statement->rowCount(); - } - - /** - * @param string $readTimeout - * @param string $unreadTimeout - * @return int - */ - public function cleanNotifications($readTimeout, $unreadTimeout) - { - $statement = $this->connection->prepare( - 'DELETE FROM notification WHERE - (readed = 0 AND TIMESTAMPDIFF(HOUR, dSending, NOW()) < :unread_timeout) OR - (readed = 1 AND TIMESTAMPDIFF(HOUR, dSending, NOW()) < :read_timeout)' - ); - $statement->execute(['read_timeout' => $readTimeout, 'unread_timeout' => $unreadTimeout]); - return $statement->rowCount(); - } - - /** - * @param array $data - * @return Notification - */ - public function format($data) - { - $notification = new Notification(); - $notification->setId((int) $data['id']); - $notification->setRPlayer((int) $data['rPlayer']); - $notification->setTitle($data['title']); - $notification->setContent($data['content']); - $notification->setDSending($data['dSending']); - $notification->setReaded((bool) $data['readed']); - $notification->setArchived((bool) $data['archived']); - return $notification; - } -} \ No newline at end of file diff --git a/system/Modules/Hermes/Resource/config/config.yml b/system/Modules/Hermes/Resource/config/config.yml deleted file mode 100644 index ed820beea..000000000 --- a/system/Modules/Hermes/Resource/config/config.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -parameters: - hermes.notifications.list_limit: 25 - hermes.notifications.archive_limit: 5 - hermes.notifications.premium_archive_limit: 50 - - hermes.notifications.display_tool: 5 - - hermes.notifications.timeout.read: 72 # 3 days - hermes.notifications.timeout.unread: 240 # 10 days - - hermes.notifications.mrm.message_display: 50 - - hermes.notifications.msm.step_thread: 6 - hermes.notifications.msm.step_next_thread: 3 - hermes.notifications.msm.step_message: 10 - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - #Asylamba\Modules\Hermes\Handler\: - # resource: '%root_path%/system/Modules/Hermes/Handler/*' - - Asylamba\Modules\Hermes\Manager\: - resource: '%root_path%/system/Modules/Hermes/Manager/*' diff --git a/system/Modules/Hermes/main.conf.php b/system/Modules/Hermes/main.conf.php deleted file mode 100755 index b4a8312f1..000000000 --- a/system/Modules/Hermes/main.conf.php +++ /dev/null @@ -1,16 +0,0 @@ -technologyQueueManager->get($message->getTechnologyQueueId()); - $orbitalBase = $this->orbitalBaseManager->get($technologyQueue->getPlaceId()); - $player = $this->playerManager->get($technologyQueue->getPlayerId()); - # technologie construite - $technology = $this->technologyManager->getPlayerTechnology($player->getId()); - $this->technologyManager->affectTechnology($technology, $technologyQueue->getTechnology(), $technologyQueue->getTargetLevel(), $player); - # increase player experience - $experience = $this->technologyHelper->getInfo($technologyQueue->getTechnology(), 'points', $technologyQueue->getTargetLevel()); - $this->playerManager->increaseExperience($player, $experience); - - # alert - if (($session = $this->clientManager->getSessionByPlayerId($player->getId())) !== null) { - $alt = 'Développement de votre technologie ' . $this->technologyHelper->getInfo($technologyQueue->getTechnology(), 'name'); - if ($technologyQueue->getTargetLevel() > 1) { - $alt .= ' niveau ' . $technologyQueue->getTargetLevel(); - } - $alt .= ' terminée. Vous gagnez ' . $experience . ' d\'expérience.'; - $session->addFlashbag($alt, Flashbag::TYPE_TECHNOLOGY_SUCCESS); - $this->sessionWrapper->save($session); - } - $this->entityManager->remove($technologyQueue); - $this->entityManager->flush($technologyQueue); - } -} diff --git a/system/Modules/Promethee/Helper/ResearchHelper.php b/system/Modules/Promethee/Helper/ResearchHelper.php deleted file mode 100644 index 26400d4c9..000000000 --- a/system/Modules/Promethee/Helper/ResearchHelper.php +++ /dev/null @@ -1,138 +0,0 @@ -isAResearch($research)) { - if ($info == 'name' || $info == 'codeName') { - return ResearchResource::$research[$research][$info]; - } elseif ($info == 'level') { - if ($level <= 0) { - return FALSE; - } - if ($sup == 'price') { - return $this->researchPrice($research, $level) * $this->researchCoeff; - } - } else { - throw new ErrorException('Wrong second argument for method getInfo() from ResearchResource'); - } - } else { - throw new ErrorException('This research doesn\'t exist !'); - } - return FALSE; - } - - public function isResearchPermit(int $firstLevel, int $secondLevel, int $thirdLevel = -1): bool - { - // compare the levels of technos and say if you can research such techno - if ($thirdLevel == -1) { - if (abs($firstLevel - $secondLevel) > $this->researchMaxDiff) { - return FALSE; - } else { return TRUE; } - } else { - if (abs($firstLevel - $secondLevel) > $this->researchMaxDiff) { - return FALSE; - } elseif (abs($firstLevel - $thirdLevel) > $this->researchMaxDiff) { - return FALSE; - } elseif (abs($secondLevel - $thirdLevel) > $this->researchMaxDiff) { - return FALSE; - } else { - return TRUE; - } - } - } - - private function researchPrice($research, $level) { - switch ($research) { - case 0 : - if ($level == 1) { - return 100; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - # ancienne : return round((-4451.2 * pow($level, 3)) + (138360 * pow($level, 2)) - (526711 * $level) + 589669); - } - break; - case 1 : - if ($level == 1) { - return 3000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 2 : - if ($level == 1) { - return 7000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 3 : - if ($level == 1) { - return 200; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 4 : - if ($level == 1) { - return 9000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 5 : - if ($level == 1) { - return 200; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 6 : - if ($level == 1) { - return 9000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 7 : - if ($level == 1) { - return 200; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 8 : - if ($level == 1) { - return 4000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - case 9 : - if ($level == 1) { - return 6000; - } else { - return round((0.0901 * pow($level, 5)) - (12.988 * pow($level, 4)) + (579.8 * pow($level, 3)) - (5735.8 * pow($level, 2)) + (28259 * $level) - 25426); - } - break; - default: - return FALSE; - } - } -} diff --git a/system/Modules/Promethee/Helper/TechnologyHelper.php b/system/Modules/Promethee/Helper/TechnologyHelper.php deleted file mode 100644 index 0a1b01f87..000000000 --- a/system/Modules/Promethee/Helper/TechnologyHelper.php +++ /dev/null @@ -1,207 +0,0 @@ -orbitalBaseHelper = $orbitalBaseHelper; - } - - public function isATechnology(int $techno): bool - { - return \in_array($techno, TechnologyResource::$technologies); - } - - public function isAnUnblockingTechnology(int $techno): bool - { - return \in_array($techno, TechnologyResource::$technologiesForUnblocking); - } - - public function isATechnologyNotDisplayed(int $techno): bool - { - return \in_array($techno, TechnologyResource::$technologiesNotDisplayed); - } - - public function getInfo($techno, $info, $level = 0) { - if ($this->isATechnology($techno)) { - if ($this->isAnUnblockingTechnology($techno)) { - if(\in_array($info, array('name', 'progName', 'imageLink', 'requiredTechnosphere', 'requiredResearch', 'time', 'resource', 'credit', 'points', 'column', 'shortDescription', 'description'))) { - return TechnologyResource::$technology[$techno][$info]; - } else { - throw new ErrorException('2e argument faux pour getInfo() de TechnologyResource (techno ' . $techno . ', ' . $info . ')'); - } - } else { - if(in_array($info, array('name', 'progName', 'imageLink', 'requiredTechnosphere', 'requiredResearch', 'maxLevel', 'category', 'column', 'shortDescription', 'description', 'bonus'))) { - return TechnologyResource::$technology[$techno][$info]; - } elseif (in_array($info, array('time', 'resource', 'credit', 'points'))) { - if ($level <= 0) { - return FALSE; - } - if ($info == 'points') { - return round(TechnologyResource::$technology[$techno][$info] * $level * Technology::COEF_POINTS); - } elseif ($info == 'time') { - return round(TechnologyResource::$technology[$techno][$info] * $level * Technology::COEF_TIME); - } else { - - switch (TechnologyResource::$technology[$techno]['category']) { - case 1: - $value = round(TechnologyResource::$technology[$techno][$info] * pow(1.5, $level-1)); - break; - case 2: - $value = round(TechnologyResource::$technology[$techno][$info] * pow(1.3, $level-1)); - break; - case 3: - $value = round(TechnologyResource::$technology[$techno][$info] * pow(1.2, $level-1)); - break; - default: - return FALSE; - } - - # $value = round($this->technology[$techno][$info] * pow(1.75, $level-1)); - # $value = round($this->technology[$techno][$info] * pow(1.5, $level-1)); - # $value = round($this->technology[$techno][$info] * pow(1.3, $level-1)); - - return $value; - } - } else { - throw new ErrorException('2e argument faux pour getInof() de TechnologyResource'); - } - } - } else { - throw new ErrorException('Technologie inexistante dans getInfo() de TechnologyResource ' . $techno); - } - return FALSE; - } - - public function haveRights($techno, $type, $arg1 = 0, $arg2 = 'default') { - if ($this->isATechnology($techno)) { - switch($type) { - // assez de ressources pour contruire ? - // $arg1 est le niveau - // $arg2 est ce que le joueur possède (ressource ou crédit) - case 'resource' : return ($arg2 >= $this->getInfo($techno, 'resource', $arg1)) ? TRUE : FALSE; - break; - // assez de crédits pour construire ? - case 'credit' : return ($arg2 >= $this->getInfo($techno, 'credit', $arg1)) ? TRUE : FALSE; - break; - // encore de la place dans la queue ? - // $arg1 est un objet de type OrbitalBase - // $arg2 est le nombre de technologies dans la queue - case 'queue' : - $maxQueue = $this->orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'level', $arg1->levelTechnosphere, 'nbQueues'); - return ($arg2 < $maxQueue) ? TRUE : FALSE; - break; - // a-t-on le droit de construire ce niveau ? - // $arg1 est le niveau cible - case 'levelPermit' : - if ($this->isAnUnblockingTechnology($techno)) { - return ($arg1 == 1) ? TRUE : FALSE; - } else { - //limitation de niveau ? - if ($arg1 > 0) { - return TRUE; - } else { - return FALSE; - } - } - // est-ce que le niveau de la technosphère est assez élevé ? - // arg1 est le niveau de la technosphere - case 'technosphereLevel' : - return ($this->getInfo($techno, 'requiredTechnosphere') <= $arg1) ? TRUE : FALSE; - break; - // est-ce que les recherches de l'université sont acquises ? - // arg1 est le niveau de la technologie - // arg2 est une stacklist avec les niveaux de recherche - case 'research' : - $neededResearch = $this->getInfo($techno, 'requiredResearch'); - $researchList = new StackList(); - for ($i = 0; $i < $this->researchQuantity; $i++) { - if ($neededResearch[$i] > 0) { - if ($arg2->get($i) < ($neededResearch[$i] + $arg1 - 1)) { - $r = new ArrayList(); - $r->add('techno', $this->researchHelper->getInfo($i, 'name')); - $r->add('level', $neededResearch[$i] + $arg1 - 1); - $researchList->append($r); - } - } - } - if ($researchList->size() > 0) { - return $researchList; - } else { - return TRUE; - } - break; - // est-ce qu'on peut construire la techno ? Pas dépassé le niveau max - // arg1 est le niveau de la technologie voulue - case 'maxLevel' : - if ($this->isAnUnblockingTechnology($techno)) { - return TRUE; - } else { - return ($arg1 <= $this->getInfo($techno, 'maxLevel')) ? TRUE : FALSE; - } - break; - // est-ce qu'on peut construire la techno en fonction du type de la base ? - // arg1 est le type de la base - case 'baseType' : - switch ($arg1) { - case OrbitalBase::TYP_NEUTRAL: - return in_array($this->getInfo($techno, 'column'), array(1, 2, 3)); - break; - case OrbitalBase::TYP_COMMERCIAL: - return in_array($this->getInfo($techno, 'column'), array(1, 2, 3, 4, 5)); - break; - case OrbitalBase::TYP_MILITARY: - return in_array($this->getInfo($techno, 'column'), array(1, 2, 3, 6, 7)); - break; - case OrbitalBase::TYP_CAPITAL: - return in_array($this->getInfo($techno, 'column'), array(1, 2, 3, 4, 5, 6, 7)); - break; - default: - return FALSE; - break; - } - break; - default : - throw new ErrorException('Erreur dans haveRights() de TechnologyResource'); - } - } else { - throw new ErrorException('Technologie inexistante dans haveRights() de TechnologyResource'); - } - } - - public function getImprovementPercentage($techno, $level = -1) { - if (!$this->isAnUnblockingTechnology($techno)) { - $baseBonus = $this->getInfo($techno, 'bonus'); - if ($level == 0) { - return 0; - } elseif ($level == -1) { - return $baseBonus; - } else { - return $baseBonus + floor(($level - 1) / 5); - } - } - return 0; - } -} diff --git a/system/Modules/Promethee/Manager/ResearchManager.php b/system/Modules/Promethee/Manager/ResearchManager.php deleted file mode 100644 index 7507a4e10..000000000 --- a/system/Modules/Promethee/Manager/ResearchManager.php +++ /dev/null @@ -1,395 +0,0 @@ -database->prepare('SELECT * - FROM research - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if (empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - while($aw = $qr->fetch()) { - $res = new Research(); - - $res->rPlayer = $aw['rPlayer']; - $res->mathLevel = $aw['mathLevel']; - $res->physLevel = $aw['physLevel']; - $res->chemLevel = $aw['chemLevel']; - $res->bioLevel = $aw['bioLevel']; - $res->mediLevel = $aw['mediLevel']; - $res->econoLevel = $aw['econoLevel']; - $res->psychoLevel = $aw['psychoLevel']; - $res->networkLevel = $aw['networkLevel']; - $res->algoLevel = $aw['algoLevel']; - $res->statLevel = $aw['statLevel']; - $res->naturalTech = $aw['naturalTech']; - $res->lifeTech = $aw['lifeTech']; - $res->socialTech = $aw['socialTech']; - $res->informaticTech = $aw['informaticTech']; - $res->naturalToPay = $aw['naturalToPay']; - $res->lifeToPay = $aw['lifeToPay']; - $res->socialToPay = $aw['socialToPay']; - $res->informaticToPay = $aw['informaticToPay']; - - $this->_Add($res); - } - } - - public function add(Research $res) { - $qr = $this->database->prepare('INSERT INTO - research(rPlayer, mathLevel, physLevel, chemLevel, bioLevel, mediLevel, econoLevel, psychoLevel, networkLevel, algoLevel, statLevel, naturalTech, lifeTech, socialTech, informaticTech, naturalToPay, lifeToPay, socialToPay, informaticToPay) - VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $res->rPlayer, - $res->mathLevel, - $res->physLevel, - $res->chemLevel, - $res->bioLevel, - $res->mediLevel, - $res->econoLevel, - $res->psychoLevel, - $res->networkLevel, - $res->algoLevel, - $res->statLevel, - $res->naturalTech, - $res->lifeTech, - $res->socialTech, - $res->informaticTech, - $res->naturalToPay, - $res->lifeToPay, - $res->socialToPay, - $res->informaticToPay - )); - - $this->_Add($res); - } - - public function save() { - $researches = $this->_Save(); - - foreach ($researches AS $k => $res) { - $qr = $this->database->prepare('UPDATE research - SET rPlayer = ?, - mathLevel = ?, - physLevel = ?, - chemLevel = ?, - bioLevel = ?, - mediLevel = ?, - econoLevel = ?, - psychoLevel = ?, - networkLevel = ?, - algoLevel = ?, - statLevel = ?, - naturalTech = ?, - lifeTech = ?, - socialTech = ?, - informaticTech = ?, - naturalToPay = ?, - lifeToPay = ?, - socialToPay = ?, - informaticToPay = ? - WHERE rPlayer = ?'); - $qr->execute(array( - $res->rPlayer, - $res->mathLevel, - $res->physLevel, - $res->chemLevel, - $res->bioLevel, - $res->mediLevel, - $res->econoLevel, - $res->psychoLevel, - $res->networkLevel, - $res->algoLevel, - $res->statLevel, - $res->naturalTech, - $res->lifeTech, - $res->socialTech, - $res->informaticTech, - $res->naturalToPay, - $res->lifeToPay, - $res->socialToPay, - $res->informaticToPay, - $res->rPlayer - )); - } - } - - public function update(Research $research, $playerId, $naturalInvest, $lifeInvest, $socialInvest, $informaticInvest) { - # prestige - $player = $this->playerManager->get($playerId); - $applyPrestige = FALSE; - if ($player->rColor == ColorResource::APHERA) { - $applyPrestige = TRUE; - } - // natural technologies - do { - if ($research->naturalToPay > $naturalInvest) { - $research->naturalToPay -= $naturalInvest; - $naturalInvest = 0; - } else { - $naturalInvest -= $research->naturalToPay; - switch ($research->naturalTech) { - case 0 : - $research->mathLevel++; - $levelReached = $research->mathLevel; - break; - case 1 : - $research->physLevel++; - $levelReached = $research->physLevel; - break; - case 2 : - $research->chemLevel++; - $levelReached = $research->chemLevel; - break; - default : - $levelReached = 0; - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - - $n = new Notification(); - $n->setRPlayer($playerId); - $n->setTitle($this->researchHelper->getInfo($research->naturalTech, 'name') . ' niveau ' . $levelReached); - $n->setContent('Vos investissements dans l\'Université ont payé !
- Vos chercheurs du département des Sciences Naturelles ont fait des avancées en ' - . $this->researchHelper->getInfo($research->naturalTech, 'name') . '. Vous êtes actuellement au niveau ' - . $levelReached . ' dans ce domaine. Félicitations !'); - $this->notificationManager->add($n); - do { - $research->naturalTech = rand(0, 2); // 0, 1 ou 2 - $tech1 = $research->mathLevel; - $tech2 = $research->physLevel; - $tech3 = $research->chemLevel; - switch ($research->naturalTech) { - case 0 : $tech1++; break; - case 1 : $tech2++; break; - case 2 : $tech3++; break; - default : - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - } while (!$this->researchHelper->isResearchPermit($tech1, $tech2, $tech3)); - $research->naturalToPay = $this->researchHelper->getInfo($research->naturalTech, 'level', $research->getLevel($research->naturalTech) + 1, 'price'); - } - } while ($naturalInvest > 0); - // life technologies (en fait ce sont les sciences politiques) - do { - if ($research->lifeToPay > $lifeInvest) { - $research->lifeToPay -= $lifeInvest; - $lifeInvest = 0; - } else { - $lifeInvest -= $research->lifeToPay; - switch ($research->lifeTech) { - case 3 : - $research->bioLevel++; - $levelReached = $research->bioLevel; - break; - case 4 : - $research->mediLevel++; - $levelReached = $research->mediLevel; - break; - default : - $levelReached = 0; - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - - $n = new Notification(); - $n->setRPlayer($playerId); - $n->setTitle($this->researchHelper->getInfo($research->lifeTech, 'name') . ' niveau ' . $levelReached); - $n->setContent('Vos investissements dans l\'Université ont payé !
- Vos chercheurs du département des Sciences Politiques ont fait des avancées en ' - . $this->researchHelper->getInfo($research->lifeTech, 'name') . '. Vous êtes actuellement au niveau ' - . $levelReached . ' dans ce domaine. Félicitations !'); - $this->notificationManager->add($n); - - do { - $research->lifeTech = rand(3, 4); - $tech1 = $research->bioLevel; - $tech2 = $research->mediLevel; - switch ($research->lifeTech) { - case 3 : $tech1++; break; - case 4 : $tech2++; break; - default : - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - } while (!$this->researchHelper->isResearchPermit($tech1, $tech2)); - $research->lifeToPay = $this->researchHelper->getInfo($research->lifeTech, 'level', $research->getLevel($research->lifeTech) + 1, 'price'); - } - } while ($lifeInvest > 0); - // social technologies - do { - if ($research->socialToPay > $socialInvest) { - $research->socialToPay -= $socialInvest; - $socialInvest = 0; - } else { - $socialInvest -= $research->socialToPay; - switch ($research->socialTech) { - case 5 : - $research->econoLevel++; - $levelReached = $research->econoLevel; - break; - case 6 : - $research->psychoLevel++; - $levelReached = $research->psychoLevel; - break; - default : - $levelReached = 0; - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - - $n = new Notification(); - $n->setRPlayer($playerId); - $n->setTitle($this->researchHelper->getInfo($research->socialTech, 'name') . ' niveau ' . $levelReached); - $n->setContent('Vos investissements dans l\'Université ont payé !
- Vos chercheurs du département des Sciences Economiques et Sociales ont fait des avancées en ' - . $this->researchHelper->getInfo($research->socialTech, 'name') . '. Vous êtes actuellement au niveau ' - . $levelReached . ' dans ce domaine. Félicitations !'); - $this->notificationManager->add($n); - do { - $research->socialTech = rand(5, 6); - $tech1 = $research->econoLevel; - $tech2 = $research->psychoLevel; - switch ($research->socialTech) { - case 5 : $tech1++; break; - case 6 : $tech2++; break; - default : - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - } while (!$this->researchHelper->isResearchPermit($tech1, $tech2)); - $research->socialToPay = $this->researchHelper->getInfo($research->socialTech, 'level', $research->getLevel($research->socialTech) + 1, 'price'); - } - } while ($socialInvest > 0); - // informatic technologies - do { - if ($research->informaticToPay > $informaticInvest) { - $research->informaticToPay -= $informaticInvest; - $informaticInvest = 0; - } else { - $informaticInvest -= $research->informaticToPay; - switch ($research->informaticTech) { - case 7 : - $research->networkLevel++; - $levelReached = $research->networkLevel; - break; - case 8 : - $research->algoLevel++; - $levelReached = $research->algoLevel; - break; - case 9 : - $research->statLevel++; - $levelReached = $research->statLevel; - break; - default : - $levelReached = 0; - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - - $n = new Notification(); - $n->setRPlayer($playerId); - $n->setTitle($this->researchHelper->getInfo($research->informaticTech, 'name') . ' niveau ' . $levelReached); - $n->setContent('Vos investissements dans l\'Université ont payé !
- Vos chercheurs du département de l\'Ingénierie Informatique ont fait des avancées en ' - . $this->researchHelper->getInfo($research->informaticTech, 'name') . '. Vous êtes actuellement au niveau ' - . $levelReached . ' dans ce domaine. Félicitations !'); - $this->notificationManager->add($n); - - do { - $research->informaticTech = rand(7, 9); - $tech1 = $research->networkLevel; - $tech2 = $research->algoLevel; - $tech3 = $research->statLevel; - switch ($research->informaticTech) { - case 7 : $tech1++; break; - case 8 : $tech2++; break; - case 9 : $tech3++; break; - default : - throw new ErrorException('une erreur est survenue lors de la mise à jour des technologies'); - } - } while (!$this->researchHelper->isResearchPermit($tech1, $tech2, $tech3)); - $research->informaticToPay = $this->researchHelper->getInfo($research->informaticTech, 'level', $research->getLevel($research->informaticTech) + 1, 'price'); - } - } while ($informaticInvest > 0); - } - - public function getResearchList(Research $research) { - // return a stacklist of the researches - $r = new StackList(); - for ($i = 0; $i < $this->researchQuantity; $i++) { - $r->append($research->getLevel($i)); - } - return $r; - } - - /* This will no longer work - public static function deleteByRPlayer($rPlayer) { - try { - $db = Database::getInstance(); - $qr = $db->prepare('DELETE FROM research WHERE rPlayer = ?'); - $qr->execute(array($rPlayer)); - return TRUE; - } catch(Exception $e) { - $_SESSION[SERVERSESS]['alert'][] = array($e->getMessage(), $e->getCode()); - } - }*/ -} diff --git a/system/Modules/Promethee/Manager/TechnologyManager.php b/system/Modules/Promethee/Manager/TechnologyManager.php deleted file mode 100644 index 274d2e3ee..000000000 --- a/system/Modules/Promethee/Manager/TechnologyManager.php +++ /dev/null @@ -1,99 +0,0 @@ -rPlayer = $playerId; - - $statement = $this->database->prepare('SELECT * FROM technology WHERE rPlayer = :player_id'); - $statement->execute([ - 'player_id' => $playerId - ]); - while($row = $statement->fetch()) { - $technology->setTechnology($row['technology'], $row['level'], TRUE); - } - return $technology; - } - - /** - * ajouter une entrée bdd ou modifier ligne !!! - */ - public function affectTechnology(Technology $technology, int $id, string $value, Player $player, bool $load = false): bool - { - if ($technology->setTechnology($id, $value) === false) { - return false; - } - if ($load === true) { - return true; - } else { - if ($value < 1) { - $this->deleteByRPlayer($technology->rPlayer, $id); - } else { - if ($value == 1) { - $this->addTech($technology->rPlayer, $id, $value); - } else { - $this->updateTech($technology->rPlayer, $id, $value); - } - if (!$this->technologyHelper->isAnUnblockingTechnology($id)) { - $bonus = $this->playerBonusManager->getBonusByPlayer($player); - $this->playerBonusManager->load($bonus); - $this->playerBonusManager->updateTechnoBonus($bonus, $id, $value); - } - } - return true; - } - } - - public function addTech(int $playerId, int $technology, int $level): bool - { - $statement = $this->database->prepare('INSERT INTO technology(rPlayer, technology, level) VALUES(:player_id, :technology, :level)'); - return $statement->execute([ - 'player_id' => $playerId, - 'technology' => $technology, - 'level' => $level - ]); - } - - public function updateTech(int $playerId, int $technology, int $level): bool - { - $statement = $this->database->prepare('UPDATE technology SET level = :level WHERE rPlayer = :player_id AND technology = :technology'); - return $statement->execute([ - 'level' => $level, - 'player_id' => $playerId, - 'technology' => $technology - ]); - } - - public function delete(Technology $technology, int $technologyId): void - { - $technology->setTechnology($technologyId, 0); - } - - public function deleteByRPlayer(int $playerId, int $technology): bool - { - $statement = $this->database->prepare('DELETE FROM technology WHERE rPlayer = :player_id and technology = :technology'); - return $statement->execute([ - 'player_id' => $playerId, - 'technology' => $technology - ]); - } -} diff --git a/system/Modules/Promethee/Manager/TechnologyQueueManager.php b/system/Modules/Promethee/Manager/TechnologyQueueManager.php deleted file mode 100644 index 9b95d09c1..000000000 --- a/system/Modules/Promethee/Manager/TechnologyQueueManager.php +++ /dev/null @@ -1,88 +0,0 @@ -entityManager->getRepository(TechnologyQueue::class)->getAll(); - - /** @var TechnologyQueue $queue */ - foreach ($queues as $queue) { - $this->messageBus->dispatch( - new TechnologyQueueMessage($queue->getId()), - [DateTimeConverter::to_delay_stamp($queue->getEndedAt())], - ); - } - } - - /** - * @param int $id - * @return TechnologyQueue - */ - public function get($id) - { - return $this->entityManager->getRepository(TechnologyQueue::class)->get($id); - } - - /** - * @param int $playerId - * @param int $technology - * @return TechnologyQueue - */ - public function getPlayerTechnologyQueue($playerId, $technology) - { - return $this->entityManager->getRepository(TechnologyQueue::class)->getPlayerTechnologyQueue($playerId, $technology); - } - - public function getPlaceQueues(int $placeId) - { - return $this->entityManager->getRepository(TechnologyQueue::class)->getPlaceQueues($placeId); - } - - public function getPlayerQueues(int $playerId): array - { - return $this->entityManager->getRepository(TechnologyQueue::class)->getPlayerQueues($playerId); - } - - public function add(TechnologyQueue $technologyQueue): void - { - $this->entityManager->persist($technologyQueue); - $this->entityManager->flush($technologyQueue); - - $this->messageBus->dispatch( - new TechnologyQueueMessage($technologyQueue->getId()), - [DateTimeConverter::to_delay_stamp($technologyQueue->getEndedAt())] - ); - } - - public function remove(TechnologyQueue $queue): void - { - // @TODO handle cancellations - // $this->realtimeActionScheduler->cancel($queue, $queue->getEndedAt()); - - $this->entityManager->remove($queue); - $this->entityManager->flush($queue); - } -} diff --git a/system/Modules/Promethee/Message/TechnologyQueueMessage.php b/system/Modules/Promethee/Message/TechnologyQueueMessage.php deleted file mode 100644 index 1cc499249..000000000 --- a/system/Modules/Promethee/Message/TechnologyQueueMessage.php +++ /dev/null @@ -1,16 +0,0 @@ -technologyQueueId; - } -} diff --git a/system/Modules/Promethee/Model/Research.php b/system/Modules/Promethee/Model/Research.php deleted file mode 100644 index 1e1029617..000000000 --- a/system/Modules/Promethee/Model/Research.php +++ /dev/null @@ -1,66 +0,0 @@ -rPlayer; - } - - public function getLevel($id) { - switch ($id) { - case 0 : return $this->mathLevel; break; - case 1 : return $this->physLevel; break; - case 2 : return $this->chemLevel; break; - case 3 : return $this->bioLevel; break; - case 4 : return $this->mediLevel; break; - case 5 : return $this->econoLevel; break; - case 6 : return $this->psychoLevel; break; - case 7 : return $this->networkLevel; break; - case 8 : return $this->algoLevel; break; - case 9 : return $this->statLevel; break; - default : return FALSE; - } - } -} \ No newline at end of file diff --git a/system/Modules/Promethee/Model/Technology.php b/system/Modules/Promethee/Model/Technology.php deleted file mode 100644 index afce2ce1b..000000000 --- a/system/Modules/Promethee/Model/Technology.php +++ /dev/null @@ -1,236 +0,0 @@ -comPlatUnblock; break; - case 1 : return $this->dock2Unblock; break; - case 2 : return $this->dock3Unblock; break; - case 3 : return $this->recyclingUnblock; break; - case 4 : return $this->spatioportUnblock; break; - case 5 : return $this->ship0Unblock; break; - case 6 : return $this->ship1Unblock; break; - case 7 : return $this->ship2Unblock; break; - case 8 : return $this->ship3Unblock; break; - case 9 : return $this->ship4Unblock; break; - case 10 : return $this->ship5Unblock; break; - case 11 : return $this->ship6Unblock; break; - case 12 : return $this->ship7Unblock; break; - case 13 : return $this->ship8Unblock; break; - case 14 : return $this->ship9Unblock; break; - case 15 : return $this->ship10Unblock; break; - case 16 : return $this->ship11Unblock; break; - case 17 : return $this->colonization; break; - case 18 : return $this->conquest; break; - case 19 : return $this->generatorSpeed; break; - case 20 : return $this->refineryRefining; break; - case 21 : return $this->refineryStorage; break; - case 22 : return $this->dock1Speed; break; - case 23 : return $this->dock2Speed; break; - case 24 : return $this->technosphereSpeed; break; - case 25 : return $this->commercialIncomeUp; break; - case 26 : return $this->gravitModuleUp; break; - case 27 : return $this->dock3Speed; break; - case 28 : return $this->populationTaxUp; break; - case 29 : return $this->commanderInvestUp; break; - case 30 : return $this->uniInvestUp; break; - case 31 : return $this->antiSpyInvestUp; break; - case 32 : return $this->spaceShipsSpeed; break; - case 33 : return $this->spaceShipsContainer; break; - case 34 : return $this->baseQuantity; break; - case 35 : return $this->fighterSpeed; break; - case 36 : return $this->fighterAttack; break; - case 37 : return $this->fighterDefense; break; - case 38 : return $this->corvetteSpeed; break; - case 39 : return $this->corvetteAttack; break; - case 40 : return $this->corvetteDefense; break; - case 41 : return $this->frigateSpeed; break; - case 42 : return $this->frigateAttack; break; - case 43 : return $this->frigateDefense; break; - case 44 : return $this->destroyerSpeed; break; - case 45 : return $this->destroyerAttack; break; - case 46 : return $this->destroyerDefense; break; - default : return FALSE; - } - } - - public function setTechnology($id, $value) { // ajouter une entrée bdd ou modifier ligne !!! - switch ($id) { - case 0 : $this->comPlatUnblock = $value; break; - case 1 : $this->dock2Unblock = $value; break; - case 2 : $this->dock3Unblock = $value; break; - case 3 : $this->recyclingUnblock = $value; break; - case 4 : $this->spatioportUnblock = $value; break; - case 5 : $this->ship0Unblock = $value; break; - case 6 : $this->ship1Unblock = $value; break; - case 7 : $this->ship2Unblock = $value; break; - case 8 : $this->ship3Unblock = $value; break; - case 9 : $this->ship4Unblock = $value; break; - case 10 : $this->ship5Unblock = $value; break; - case 11 : $this->ship6Unblock = $value; break; - case 12 : $this->ship7Unblock = $value; break; - case 13 : $this->ship8Unblock = $value; break; - case 14 : $this->ship9Unblock = $value; break; - case 15 : $this->ship10Unblock = $value; break; - case 16 : $this->ship11Unblock = $value; break; - case 17 : $this->colonization = $value; break; - case 18 : $this->conquest = $value; break; - case 19 : $this->generatorSpeed = $value; break; - case 20 : $this->refineryRefining = $value; break; - case 21 : $this->refineryStorage = $value; break; - case 22 : $this->dock1Speed = $value; break; - case 23 : $this->dock2Speed = $value; break; - case 24 : $this->technosphereSpeed = $value; break; - case 25 : $this->commercialIncomeUp = $value; break; - case 26 : $this->gravitModuleUp = $value; break; - case 27 : $this->dock3Speed = $value; break; - case 28 : $this->populationTaxUp = $value; break; - case 29 : $this->commanderInvestUp = $value; break; - case 30 : $this->uniInvestUp = $value; break; - case 31 : $this->antiSpyInvestUp = $value; break; - case 32 : $this->spaceShipsSpeed = $value; break; - case 33 : $this->spaceShipsContainer = $value; break; - case 34 : $this->baseQuantity = $value; break; - case 35 : $this->fighterSpeed = $value; break; - case 36 : $this->fighterAttack = $value; break; - case 37 : $this->fighterDefense = $value; break; - case 38 : $this->corvetteSpeed = $value; break; - case 39 : $this->corvetteAttack = $value; break; - case 40 : $this->corvetteDefense = $value; break; - case 41 : $this->frigateSpeed = $value; break; - case 42 : $this->frigateAttack = $value; break; - case 43 : $this->frigateDefense = $value; break; - case 44 : $this->destroyerSpeed = $value; break; - case 45 : $this->destroyerAttack = $value; break; - case 46 : $this->destroyerDefense = $value; break; - default : return FALSE; - } - } -} \ No newline at end of file diff --git a/system/Modules/Promethee/Model/TechnologyQueue.php b/system/Modules/Promethee/Model/TechnologyQueue.php deleted file mode 100644 index 66a872b46..000000000 --- a/system/Modules/Promethee/Model/TechnologyQueue.php +++ /dev/null @@ -1,162 +0,0 @@ -id = $id; - - return $this; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $playerId - * @return TechnologyQueue - */ - public function setPlayerId($playerId) - { - $this->rPlayer = $playerId; - - return $this; - } - - /** - * @return int - */ - public function getPlayerId() - { - return $this->rPlayer; - } - - /** - * @param int $placeId - * @return TechnologyQueue - */ - public function setPlaceId($placeId) - { - $this->rPlace = $placeId; - - return $this; - } - - /** - * @return int - */ - public function getPlaceId() - { - return $this->rPlace; - } - - /** - * @param int $technology - * @return TechnologyQueue - */ - public function setTechnology($technology) - { - $this->technology = $technology; - - return $this; - } - - /** - * @return int - */ - public function getTechnology() - { - return $this->technology; - } - - /** - * @param int $targetLevel - * @return TechnologyQueue - */ - public function setTargetLevel($targetLevel) - { - $this->targetLevel = $targetLevel; - - return $this; - } - - /** - * @return int - */ - public function getTargetLevel() - { - return $this->targetLevel; - } - - /** - * @param string $createdAt - * @return TechnologyQueue - */ - public function setCreatedAt($createdAt) - { - $this->dStart = $createdAt; - - return $this; - } - - /** - * @return string - */ - public function getCreatedAt() - { - return $this->dStart; - } - - /** - * @param string $endedAt - * @return TechnologyQueue - */ - public function setEndedAt($endedAt) - { - $this->dEnd = $endedAt; - - return $this; - } - - /** - * @return string - */ - public function getEndedAt() - { - return $this->dEnd; - } -} \ No newline at end of file diff --git a/system/Modules/Promethee/PrometheeModule.php b/system/Modules/Promethee/PrometheeModule.php deleted file mode 100644 index 945f8a513..000000000 --- a/system/Modules/Promethee/PrometheeModule.php +++ /dev/null @@ -1,13 +0,0 @@ -unitOfWork->getObject(TechnologyQueue::class, $id)) !== null) { - return $tq; - } - $statement = $this->connection->prepare('SELECT * FROM technologyQueue WHERE id = :id'); - $statement->execute(['id' => $id]); - if (($row = $statement->fetch()) === false) { - return null; - } - $technologyQueue = $this->format($row); - $this->unitOfWork->addObject($technologyQueue); - return $technologyQueue; - } - - /** - * @param int $playerId - * @param int $technology - * @return TechnologyQueue $technologyQueue - */ - public function getPlayerTechnologyQueue($playerId, $technology) - { - $statement = $this->connection->prepare('SELECT * FROM technologyQueue WHERE rPlayer = :player_id AND technology = :technology'); - $statement->execute(['player_id' => $playerId, 'technology' => $technology]); - if (($row = $statement->fetch()) === false) { - return null; - } - if (($tq = $this->unitOfWork->getObject(TechnologyQueue::class, (int) $row['id'])) !== null) { - return $tq; - } - $technologyQueue = $this->format($row); - $this->unitOfWork->addObject($technologyQueue); - return $technologyQueue; - } - - /** - * @return array - */ - public function getAll() - { - $statement = $this->connection->query('SELECT * FROM technologyQueue'); - - $data = []; - while ($row = $statement->fetch()) { - if (($tq = $this->unitOfWork->getObject(TechnologyQueue::class, (int) $row['id'])) !== null) { - $data[] = $tq; - continue; - } - $technologyQueue = $this->format($row); - $this->unitOfWork->addObject($technologyQueue); - $data[] = $technologyQueue; - } - return $data; - } - - /** - * @param int $placeId - * @return array - */ - public function getPlaceQueues($placeId) - { - $statement = $this->connection->prepare('SELECT * FROM technologyQueue WHERE rPlace = :place_id ORDER BY dEnd'); - $statement->execute(['place_id' => $placeId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($tq = $this->unitOfWork->getObject(TechnologyQueue::class, (int) $row['id'])) !== null) { - $data[] = $tq; - continue; - } - $technologyQueue = $this->format($row); - $this->unitOfWork->addObject($technologyQueue); - $data[] = $technologyQueue; - } - return $data; - } - - /** - * @param int $playerId - * @return array - */ - public function getPlayerQueues($playerId) - { - $statement = $this->connection->prepare('SELECT * FROM technologyQueue WHERE rPlayer = :player_id'); - $statement->execute(['player_id' => $playerId]); - - $data = []; - while ($row = $statement->fetch()) { - if (($tq = $this->unitOfWork->getObject(TechnologyQueue::class, (int) $row['id'])) !== null) { - $data[] = $tq; - continue; - } - $technologyQueue = $this->format($row); - $this->unitOfWork->addObject($technologyQueue); - $data[] = $technologyQueue; - } - return $data; - } - - /** - * @param TechnologyQueue $technologyQueue - */ - public function insert($technologyQueue) - { - $qr = $this->connection->prepare('INSERT INTO - technologyQueue(rPlayer, rPlace, technology, targetLevel, dStart, dEnd) - VALUES(?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $technologyQueue->getPlayerId(), - $technologyQueue->getPlaceId(), - $technologyQueue->getTechnology(), - $technologyQueue->getTargetLevel(), - $technologyQueue->getCreatedAt(), - $technologyQueue->getEndedAt() - )); - $technologyQueue->setId($this->connection->lastInsertId()); - } - - public function update($technologyQueue) - { - $statement = $this->connection->prepare( - 'UPDATE technologyQueue SET - targetlevel = ?, - dStart = ?, - dEnd = ? - WHERE id = ?'); - $statement->execute(array( - $technologyQueue->getTargetLevel(), - $technologyQueue->getCreatedAt(), - $technologyQueue->getEndedAt(), - $technologyQueue->getId() - )); - } - - /** - * @param TechnologyQueue $technologyQueue - */ - public function remove($technologyQueue) - { - $statement = $this->connection->prepare('DELETE FROM technologyQueue WHERE id = :id'); - $statement->execute(['id' => $technologyQueue->getId()]); - } - - /** - * @param array $data - * @return TechnologyQueue - */ - public function format($data) - { - return - (new TechnologyQueue()) - ->setId((int) $data['id']) - ->setPlayerId((int) $data['rPlayer']) - ->setTechnology((int) $data['technology']) - ->setTargetLevel((int) $data['targetLevel']) - ->setCreatedAt($data['dStart']) - ->setEndedAt($data['dEnd']) - ; - } -} \ No newline at end of file diff --git a/system/Modules/Promethee/Resource/ResearchResource.php b/system/Modules/Promethee/Resource/ResearchResource.php deleted file mode 100644 index de29dfd27..000000000 --- a/system/Modules/Promethee/Resource/ResearchResource.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Mathématiques', - 'codeName' => 'mathematics' - ), - array( - 'name' => 'Physique', - 'codeName' => 'physics' - ), - array( - 'name' => 'Chimie', - 'codeName' => 'chemistry' - ), - array( - 'name' => 'Droit', - 'codeName' => 'biology' - ), - array( - 'name' => 'Communication', - 'codeName' => 'medicine' - ), - array( - 'name' => 'Economie', - 'codeName' => 'economy' - ), - array( - 'name' => 'Psychologie', - 'codeName' => 'psychology' - ), - array( - 'name' => 'Réseaux', - 'codeName' => 'networks' - ), - array( - 'name' => 'Algorithmique', - 'codeName' => 'algorithmic' - ), - array( - 'name' => 'Statistiques', - 'codeName' => 'statistics' - ) - ); -} \ No newline at end of file diff --git a/system/Modules/Promethee/Resource/config/config.yml b/system/Modules/Promethee/Resource/config/config.yml deleted file mode 100644 index e2ed1bc74..000000000 --- a/system/Modules/Promethee/Resource/config/config.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -parameters: - promethee.research.coeff: 1 - promethee.research.max_diff: 3 - promethee.research.quantity: 10 - - promethee.technology_queue.resource_refund: 0.5 - promethee.technology_queue.credit_refund: 0.5 - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Promethee\Handler\: - resource: '%root_path%/system/Modules/Promethee/Handler/*' - - Asylamba\Modules\Promethee\Manager\: - resource: '%root_path%/system/Modules/Promethee/Manager/*' - - Asylamba\Modules\Promethee\Helper\ResearchHelper: - arguments: - $researchCoeff: "%promethee.research.coeff%" - $researchMaxDiff: "%promethee.research.max_diff%" - - Asylamba\Modules\Promethee\Helper\TechnologyHelper: - arguments: - $researchQuantity: "%promethee.research.quantity%" - - Asylamba\Modules\Promethee\Manager\ResearchManager: - arguments: - $researchQuantity: "%promethee.research.quantity%" diff --git a/system/Modules/Promethee/main.conf.php b/system/Modules/Promethee/main.conf.php deleted file mode 100755 index 6478f9172..000000000 --- a/system/Modules/Promethee/main.conf.php +++ /dev/null @@ -1,11 +0,0 @@ -playerManager->getActivePlayers(); - $factions = $this->colorManager->getAll(); - $S_RSM1 = $this->researchManager->getCurrentSession(); - $now = Utils::now(); - $repository = $this->entityManager->getRepository(Player::class); - $this->entityManager->beginTransaction(); - - foreach ($players as $player) { - # update time - $hours = Utils::intervalDates($now, $player->uPlayer); - $nbHours = count($hours); - if ($nbHours === 0) { - continue; - } - $player->uPlayer = $now; - # load the bonus - $playerBonus = $this->playerBonusManager->getBonusByPlayer($player); - $this->playerBonusManager->load($playerBonus); - - # load the researches - $S_RSM1 = $this->researchManager->getCurrentSession(); - $this->researchManager->newSession(); - $this->researchManager->load(array('rPlayer' => $player->id)); - - $bases = $this->orbitalBaseManager->getPlayerBases($player->id); - $commanders = $this->commanderManager->getPlayerCommanders( - $player->id, - [Commander::AFFECTED, Commander::MOVING], - ['c.experience' => 'DESC', 'c.statement' => 'ASC'] - ); - $researchSession = $this->researchManager->getCurrentSession(); - $transactions = $this->transactionManager->getPlayerPropositions($player->id, Transaction::TYP_SHIP); - - $initialCredits = $player->credit; - - for ($i = 0; $i < $nbHours; $i++) { - $this->playerManager->uCredit( - $player, - $bases, - $playerBonus, - $commanders, - $researchSession, - $factions, - $transactions - ); - } - $repository->updatePlayerCredits( - $player, - abs($initialCredits - $player->credit), - ($initialCredits > $player->credit) ? '-' : '+' - ); - $this->entityManager->clear($player); - } - $this->researchManager->changeSession($S_RSM1); - $this->entityManager->flush(Color::class); - $this->entityManager->commit(); - } -} diff --git a/system/Modules/Zeus/Helper/CheckName.php b/system/Modules/Zeus/Helper/CheckName.php deleted file mode 100644 index 6cbd4790b..000000000 --- a/system/Modules/Zeus/Helper/CheckName.php +++ /dev/null @@ -1,90 +0,0 @@ -minLength; } - public function getMaxLength() { return $this->maxLength; } - - public function setMinLength($i){ - if (is_int($i) AND n) - $this->minLength = $i; - } - public function setMaxLength($i){ $this->maxLength = $i; } - - public function checkLength($str) { - $length = strlen($str); - return $length >= $this->minLength && $length <= $this->maxLength; - } - - public function checkChar($str) { - return preg_match('^[\p{L}\p{N}]*\p{L}[\p{L}\p{N}]*$^', $str); - } - - public function checkBeauty($str) { - $newStr = ucfirst($str); - - $revStr = strrev($newStr); - $troncateStr = $newStr; - $number = ''; - for ($i = 0; $i < strlen($revStr); $i++) { - if (is_numeric($revStr[$i])) { - $number .= $revStr[$i]; - $troncateStr = substr($troncateStr, 0, -1); - } else { - $number = strrev($number); - $number = intval($number); - break; - } - } - - if ($number !== 0) { - $brn = array('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'); - $ban = array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1); - - if ($number > 1200) { $number = rand(50, 1200); } - if ($number <= 0) { $number = 1; } - $number = intval($number); - $romanNumber = ''; - $i = 0; - - if ($number == 1) { - $romanNumber = 'Ier'; - $number = 0; - } - - while ($number > 0) { - if ($number >= $ban[$i]) { - $number = $number - $ban[$i]; - $romanNumber .= $brn[$i]; - } else { - $i++; - } - } - - $newStr = trim($troncateStr) . ' ' . $romanNumber; - - if (strlen($newStr) > $this->maxLength) { - $newStr = substr($newStr, 0, $this->maxLength); - } - } - - if ($newStr === $str) { - return TRUE; - } else { - return $newStr; - } - } - - public static function getPackOfNames($size = 5, $used = FALSE, $tag = array()) { - - } - - public static function randomize($color = FALSE) { - $name = array('Ametah', 'Anla', 'Aumshi', 'Bastier', 'Enigma', 'Eirukis', 'Erah', 'Ehdis', 'Fransa', 'Greider', 'Grerid', 'Haema', 'Hemhild', 'Renga', 'Hidar', 'Horski', 'Hreirek', 'Hroa', 'Hordis', 'Hydring', 'Imsin', 'Asmin', 'Ansami', 'Kar', 'Kili', 'Kolver', 'Kolfinna', 'Lisa', 'Marta', 'Meto', 'Leto', 'Ragni', 'Ranela', 'Runa', 'Siri', 'Mastro', 'Svenh', 'Thalestris', 'Thannd', 'Arsine', 'Val', 'Vori', 'Yi', 'Agata', 'Agneta', 'Nolgi', 'Edla', 'Else', 'Eyja', 'Jensine', 'Kirsten', 'Maeva', 'Malena', 'Magarte', 'Olava', 'Petrine', 'Rigmor', 'Signy', 'Sigrid', 'Skjorta'); - return $name[rand(0, (count($name) - 1))]; - } -} \ No newline at end of file diff --git a/system/Modules/Zeus/Helper/PlayerHelper.php b/system/Modules/Zeus/Helper/PlayerHelper.php deleted file mode 100644 index b61da789d..000000000 --- a/system/Modules/Zeus/Helper/PlayerHelper.php +++ /dev/null @@ -1,37 +0,0 @@ -database->prepare('SELECT - ob.rPlace, ob.name, sy.rSector - FROM orbitalBase AS ob - LEFT JOIN place AS pl - ON pl.id = ob.rPlace - LEFT JOIN system AS sy - ON sy.id = pl.rSystem - WHERE ob.rPlayer = ?'); - $qr->execute(array($playerId)); - /** @TODO Fetch correctly that monstruosity **/ - $aw = $qr->fetchAll(); - if (empty($aw)) { - return FALSE; - } else { - foreach ($aw as $k => $v) { $return[] = array('id' => $v['rPlace'], 'name' => $v['name'], 'sector' => $v['rSector']); } - return $return; - } - } -} diff --git a/system/Modules/Zeus/Helper/TutorialHelper.php b/system/Modules/Zeus/Helper/TutorialHelper.php deleted file mode 100644 index 92c5dbc8d..000000000 --- a/system/Modules/Zeus/Helper/TutorialHelper.php +++ /dev/null @@ -1,113 +0,0 @@ -sessionWrapper->get('playerId'); - $stepTutorial = $this->sessionWrapper->get('playerInfo')->get('stepTutorial'); - $stepDone = $this->sessionWrapper->get('playerInfo')->get('stepDone'); - - if ($stepTutorial > 0) { - if ($stepDone == FALSE) { - # check if current step is done - - # hint : checker seulement les actions passives - switch ($stepTutorial) { - case 1: - $asdf = 'asdf'; - break; - case 2: - $jlk = 'jkl'; - break; - } - } - } - } - - public function setStepDone() { - $player = $this->playerManager->get($this->sessionWrapper->get('playerId')); - - $player->stepDone = TRUE; - - $this->sessionWrapper->get('playerInfo')->add('stepDone', TRUE); - - $this->entityManager->flush($player); - } - - public function clearStepDone() { - $player = $this->playerManager->get($this->sessionWrapper->get('playerId')); - - $player->stepDone = FALSE; - - $this->sessionWrapper->get('playerInfo')->add('stepDone', FALSE); - - $this->entityManager->flush($player); - } - - public function isNextBuildingStepAlreadyDone($playerId, $buildingId, $level) { - $nextStepAlreadyDone = FALSE; - - $playerBases = $this->orbitalBaseManager->getPlayerBases($playerId); - foreach ($playerBases as $orbitalBase) { - if ($orbitalBase->getBuildingLevel($buildingId) >= $level) { - $nextStepAlreadyDone = TRUE; - break; - } else { - # verify in the queue - $buildingQueues = $this->buildingQueueManager->getBaseQueues($orbitalBase->rPlace); - foreach ($buildingQueues as $buildingQueue) { - if ($buildingQueue->buildingNumber == $buildingId AND $buildingQueue->targetLevel >= $level) { - $nextStepAlreadyDone = TRUE; - break; - } - } - } - } - return $nextStepAlreadyDone; - } - - public function isNextTechnoStepAlreadyDone($playerId, $technoId, $level = 1) { - $technology = $this->technologyManager->getPlayerTechnology($playerId); - if ($technology->getTechnology($technoId) >= $level) { - return true; - } - // verify in the queue - if (($this->technologyQueueManager->getPlayerTechnologyQueue($playerId, $technoId)) !== null) { - return true; - } - return false; - } -} diff --git a/system/Modules/Zeus/Manager/CreditTransactionManager.php b/system/Modules/Zeus/Manager/CreditTransactionManager.php deleted file mode 100644 index cdd7fe559..000000000 --- a/system/Modules/Zeus/Manager/CreditTransactionManager.php +++ /dev/null @@ -1,151 +0,0 @@ -database->prepare('SELECT ct.*, - p1.name AS receiverName, - p1.avatar AS receiverAvatar, - p1.status AS receiverStatus, - p1.rColor AS receiverColor, - p2.name AS senderName, - p2.avatar AS senderAvatar, - p2.status AS senderStatus, - p2.rColor AS senderColor - FROM creditTransaction AS ct - LEFT JOIN player AS p1 - ON ct.rReceiver = p1.id - LEFT JOIN player AS p2 - ON ct.rSender = p2.id - ' . $formatWhere . ' - ' . $formatOrder . ' - ' . $formatLimit - ); - - foreach($where AS $v) { - if (is_array($v)) { - foreach ($v as $p) { - $valuesArray[] = $p; - } - } else { - $valuesArray[] = $v; - } - } - - if(empty($valuesArray)) { - $qr->execute(); - } else { - $qr->execute($valuesArray); - } - - $this->fill($qr); - } - - protected function fill($qr) { - while ($aw = $qr->fetch()) { - $ct = new CreditTransaction(); - - $ct->id = $aw['id']; - $ct->rSender = $aw['rSender']; - $ct->type = $aw['type']; - $ct->rReceiver = $aw['rReceiver']; - $ct->amount = $aw['amount']; - $ct->dTransaction = $aw['dTransaction']; - $ct->comment = $aw['comment']; - - $ct->senderName = $aw['senderName']; - $ct->senderAvatar = $aw['senderAvatar']; - $ct->senderStatus = $aw['senderStatus']; - $ct->senderColor = $aw['senderColor']; - - $ct->receiverName = $aw['receiverName']; - $ct->receiverAvatar = $aw['receiverAvatar']; - $ct->receiverStatus = $aw['receiverStatus']; - $ct->receiverColor = $aw['receiverColor']; - - $this->_Add($ct); - } - } - - public function add(CreditTransaction $ct) { - $qr = $this->database->prepare('INSERT INTO - creditTransaction(rSender, type, rReceiver, amount, dTransaction, comment) - VALUES(?, ?, ?, ?, ?, ?)'); - $qr->execute(array( - $ct->rSender, - $ct->type, - $ct->rReceiver, - $ct->amount, - $ct->dTransaction, - $ct->comment - )); - - $ct->id = $this->database->lastInsertId(); - - $this->_Add($ct); - } - - public function save() { - $cts = $this->_Save(); - - foreach ($cts AS $ct) { - $qr = $this->database->prepare('UPDATE creditTransaction - SET id = ?, - rSender = ?, - type = ?, - rReceiver = ?, - amount = ?, - dTransaction = ?, - comment = ? - WHERE id = ?'); - $qr->execute(array( - $ct->id, - $ct->rSender, - $ct->type, - $ct->rReceiver, - $ct->amount, - $ct->dTransaction, - $ct->comment, - $ct->id - )); - } - } - - public function deleteById(int $id): bool - { - $qr = $this->database->prepare('DELETE FROM creditTransaction WHERE id = ?'); - $qr->execute(array($id)); - - $this->_Remove($id); - - return true; - } -} diff --git a/system/Modules/Zeus/Manager/PlayerBonusManager.php b/system/Modules/Zeus/Manager/PlayerBonusManager.php deleted file mode 100644 index 408313401..000000000 --- a/system/Modules/Zeus/Manager/PlayerBonusManager.php +++ /dev/null @@ -1,298 +0,0 @@ -colorManager = $colorManager; - } - - #[Required] - public function setTechnologyHelper(TechnologyHelper $technologyHelper): void - { - $this->technologyHelper = $technologyHelper; - } - - #[Required] - public function setTechnologyManager(TechnologyManager $technologyManager): void - { - $this->technologyManager = $technologyManager; - } - - public function getBonusByPlayer(Player $player): PlayerBonus - { - $playerBonus = new PlayerBonus(); - $playerBonus->rPlayer = $player->id; - $playerBonus->synchronized = $player->isSynchronized(); - $playerBonus->playerColor = $player->rColor; - $playerBonus->bonus = new StackList(); - return $playerBonus; - } - - public function initialize(PlayerBonus $playerBonus) { - # remplissage des bonus avec les technologies - $playerBonus->technology = $this->technologyManager->getPlayerTechnology($playerBonus->rPlayer); - - $this->fillFromTechnology($playerBonus); - $this->addFactionBonus($playerBonus); - $this->addLawBonus($playerBonus); - - if ($playerBonus->synchronized) { - for ($i = 0; $i < PlayerBonus::BONUS_QUANTITY; $i++) { - $this->sessionWrapper->get('playerBonus')->add($i, ($playerBonus->bonus->exist($i)) ? $playerBonus->bonus->get($i) : 0); - } - } - } - - public function load(PlayerBonus $playerBonus) { - $playerBonus->technology = new Technology($playerBonus->rPlayer); - if ($playerBonus->synchronized) { - // chargement de l'objet avec le contrôleur - for ($i = 0; $i < PlayerBonus::BONUS_QUANTITY; $i++) { - $playerBonus->bonus->add($i, $this->sessionWrapper->get('playerBonus')->get($i)); - } - } else { - // remplissage de l'objet normalement - // remplissage avec les technologies - $this->fillFromTechnology($playerBonus); - $this->addFactionBonus($playerBonus); - $this->addLawBonus($playerBonus); - - # remplissage avec les cartes - // ... - } - } - - private function fillFromTechnology(PlayerBonus $playerBonus) { - $this->addTechnoToBonus($playerBonus, Technology::GENERATOR_SPEED, PlayerBonus::GENERATOR_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::REFINERY_REFINING, PlayerBonus::REFINERY_REFINING); - $this->addTechnoToBonus($playerBonus, Technology::REFINERY_STORAGE, PlayerBonus::REFINERY_STORAGE); - $this->addTechnoToBonus($playerBonus, Technology::DOCK1_SPEED, PlayerBonus::DOCK1_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::DOCK2_SPEED, PlayerBonus::DOCK2_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::TECHNOSPHERE_SPEED, PlayerBonus::TECHNOSPHERE_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::COMMERCIAL_INCOME, PlayerBonus::COMMERCIAL_INCOME); - $this->addTechnoToBonus($playerBonus, Technology::GRAVIT_MODULE, PlayerBonus::GRAVIT_MODULE); - $this->addTechnoToBonus($playerBonus, Technology::DOCK3_SPEED, PlayerBonus::DOCK3_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::POPULATION_TAX, PlayerBonus::POPULATION_TAX); - $this->addTechnoToBonus($playerBonus, Technology::COMMANDER_INVEST, PlayerBonus::COMMANDER_INVEST); - $this->addTechnoToBonus($playerBonus, Technology::UNI_INVEST, PlayerBonus::UNI_INVEST); - $this->addTechnoToBonus($playerBonus, Technology::ANTISPY_INVEST, PlayerBonus::ANTISPY_INVEST); - $this->addTechnoToBonus($playerBonus, Technology::SPACESHIPS_SPEED, PlayerBonus::SHIP_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::SPACESHIPS_CONTAINER, PlayerBonus::SHIP_CONTAINER); - $this->addTechnoToBonus($playerBonus, Technology::BASE_QUANTITY, PlayerBonus::BASE_QUANTITY); - $this->addTechnoToBonus($playerBonus, Technology::FIGHTER_SPEED, PlayerBonus::FIGHTER_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::FIGHTER_ATTACK, PlayerBonus::FIGHTER_ATTACK); - $this->addTechnoToBonus($playerBonus, Technology::FIGHTER_DEFENSE, PlayerBonus::FIGHTER_DEFENSE); - $this->addTechnoToBonus($playerBonus, Technology::CORVETTE_SPEED, PlayerBonus::CORVETTE_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::CORVETTE_ATTACK, PlayerBonus::CORVETTE_ATTACK); - $this->addTechnoToBonus($playerBonus, Technology::CORVETTE_DEFENSE, PlayerBonus::CORVETTE_DEFENSE); - $this->addTechnoToBonus($playerBonus, Technology::FRIGATE_SPEED, PlayerBonus::FRIGATE_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::FRIGATE_ATTACK, PlayerBonus::FRIGATE_ATTACK); - $this->addTechnoToBonus($playerBonus, Technology::FRIGATE_DEFENSE, PlayerBonus::FRIGATE_DEFENSE); - $this->addTechnoToBonus($playerBonus, Technology::DESTROYER_SPEED, PlayerBonus::DESTROYER_SPEED); - $this->addTechnoToBonus($playerBonus, Technology::DESTROYER_ATTACK, PlayerBonus::DESTROYER_ATTACK); - $this->addTechnoToBonus($playerBonus, Technology::DESTROYER_DEFENSE, PlayerBonus::DESTROYER_DEFENSE); - } - - private function addTechnoToBonus(PlayerBonus $playerBonus, $techno, $bonus) { - $totalBonus = 0; - for ($i = 0; $i <= $playerBonus->technology->getTechnology($techno); $i++) { - $totalBonus += $this->technologyHelper->getImprovementPercentage($techno, $i); - } - $playerBonus->bonus->add($bonus, $totalBonus); - } - - private function addLawBonus(PlayerBonus $playerBonus) { - $laws = $this->lawManager->getByFactionAndStatements($playerBonus->playerColor, [Law::EFFECTIVE]); - foreach ($laws as $law) { - switch ($law->type) { - case 5: - $playerBonus->bonus->increase(PlayerBonus::DOCK1_SPEED, LawResources::getInfo($law->type, 'bonus')); - $playerBonus->bonus->increase(PlayerBonus::DOCK2_SPEED, LawResources::getInfo($law->type, 'bonus')); - $playerBonus->bonus->increase(PlayerBonus::REFINERY_REFINING, -10); - $playerBonus->bonus->increase(PlayerBonus::REFINERY_REFINING, -10); - break; - case 6: - #subvention technologique - $playerBonus->bonus->increase(PlayerBonus::TECHNOSPHERE_SPEED, LawResources::getInfo($law->type, 'bonus')); - break; - default: - break; - } - } - } - - private function addFactionBonus(PlayerBonus $playerBonus) { - $color = $this->colorManager->get($playerBonus->playerColor); - - if (in_array(ColorResource::DEFENSELITTLESHIPBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::FIGHTER_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::CORVETTE_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::FRIGATE_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::DESTROYER_DEFENSE, 5); - } - - if (in_array(ColorResource::SPEEDLITTLESHIPBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::FIGHTER_SPEED, 10); - $playerBonus->bonus->increase(PlayerBonus::CORVETTE_SPEED, 10); - } - - if (in_array(ColorResource::DEFENSELITTLESHIPMALUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::FRIGATE_DEFENSE, -5); - $playerBonus->bonus->increase(PlayerBonus::DESTROYER_DEFENSE, -5); - } - - if (in_array(ColorResource::COMMERCIALROUTEBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::COMMERCIAL_INCOME, 5); - } - - if (in_array(ColorResource::TAXBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::POPULATION_TAX, 3); - } - - if (in_array(ColorResource::LOOTRESOURCESMALUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::SHIP_CONTAINER, -5); - } - - if (in_array(ColorResource::RAFINERYBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::REFINERY_REFINING, 4); - } - - if (in_array(ColorResource::STORAGEBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::REFINERY_STORAGE, 4); - } - - if (in_array(ColorResource::BIGACADEMICBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::UNI_INVEST, 4); - } - - if (in_array(ColorResource::COMMANDERSCHOOLBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::COMMANDER_INVEST, 6); - } - - if (in_array(ColorResource::LITTLEACADEMICBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::UNI_INVEST, 2); - } - - if (in_array(ColorResource::TECHNOLOGYBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::TECHNOSPHERE_SPEED, 2); - } - - if (in_array(ColorResource::DEFENSELITTLESHIPBONUS, $color->bonus)) { - $playerBonus->bonus->increase(PlayerBonus::FIGHTER_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::CORVETTE_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::FRIGATE_DEFENSE, 5); - $playerBonus->bonus->increase(PlayerBonus::DESTROYER_DEFENSE, 5); - } - } - - public function increment(PlayerBonus $playerBonus, $bonusId, $increment) { - if ($bonusId >= 0 && $bonusId < PlayerBonus::BONUS_QUANTITY) { - if ($increment > 0) { - $playerBonus->bonus->add($bonusId, $playerBonus->bonus->get($bonusId) + $increment); - if ($playerBonus->synchronized) { - $this->sessionWrapper->get('playerBonus')->add($bonusId, $playerBonus->bonus->get($bonusId)); - } - } else { - throw new ErrorException('incrémentation de bonus impossible - l\'incrément doit être positif'); - } - } else { - throw new ErrorException('incrémentation de bonus impossible - bonus invalide'); - } - } - - public function decrement(PlayerBonus $playerBonus, $bonusId, $decrement) { - if ($bonusId >= 0 && $bonusId < PlayerBonus::BONUS_QUANTITY) { - if ($increment > 0) { - if ($increment <= $playerBonus->bonus->get($bonusId)) { - $playerBonus->bonus->add($bonusId, $playerBonus->bonus->get($bonusId) - $decrement); - if ($playerBonus->synchronized) { - $this->sessionWrapper->get('playerBonus')->add($bonusId, $playerBonus->bonus->get($bonusId)); - } - } else { - throw new ErrorException('décrémentation de bonus impossible - le décrément est plus grand que le bonus'); - } - } else { - throw new ErrorException('décrémentation de bonus impossible - le décrément doit être positif'); - } - } else { - throw new ErrorException('décrémentation de bonus impossible - bonus invalide'); - } - } - - public function updateTechnoBonus(PlayerBonus $playerBonus, $techno, $level) { - switch ($techno) { - case Technology::GENERATOR_SPEED: $bonusId = PlayerBonus::GENERATOR_SPEED; break; - case Technology::REFINERY_REFINING: $bonusId = PlayerBonus::REFINERY_REFINING; break; - case Technology::REFINERY_STORAGE: $bonusId = PlayerBonus::REFINERY_STORAGE; break; - case Technology::DOCK1_SPEED: $bonusId = PlayerBonus::DOCK1_SPEED; break; - case Technology::DOCK2_SPEED: $bonusId = PlayerBonus::DOCK2_SPEED; break; - case Technology::TECHNOSPHERE_SPEED: $bonusId = PlayerBonus::TECHNOSPHERE_SPEED; break; - case Technology::COMMERCIAL_INCOME: $bonusId = PlayerBonus::COMMERCIAL_INCOME; break; - case Technology::GRAVIT_MODULE: $bonusId = PlayerBonus::GRAVIT_MODULE; break; - case Technology::DOCK3_SPEED: $bonusId = PlayerBonus::DOCK3_SPEED; break; - case Technology::POPULATION_TAX: $bonusId = PlayerBonus::POPULATION_TAX; break; - case Technology::COMMANDER_INVEST: $bonusId = PlayerBonus::COMMANDER_INVEST; break; - case Technology::UNI_INVEST: $bonusId = PlayerBonus::UNI_INVEST; break; - case Technology::ANTISPY_INVEST: $bonusId = PlayerBonus::ANTISPY_INVEST; break; - case Technology::SPACESHIPS_SPEED: $bonusId = PlayerBonus::SHIP_SPEED; break; - case Technology::SPACESHIPS_CONTAINER: $bonusId = PlayerBonus::SHIP_CONTAINER; break; - case Technology::BASE_QUANTITY: $bonusId = PlayerBonus::BASE_QUANTITY; break; - case Technology::FIGHTER_SPEED: $bonusId = PlayerBonus::FIGHTER_SPEED; break; - case Technology::FIGHTER_ATTACK: $bonusId = PlayerBonus::FIGHTER_ATTACK; break; - case Technology::FIGHTER_DEFENSE: $bonusId = PlayerBonus::FIGHTER_DEFENSE; break; - case Technology::CORVETTE_SPEED: $bonusId = PlayerBonus::CORVETTE_SPEED; break; - case Technology::CORVETTE_ATTACK: $bonusId = PlayerBonus::CORVETTE_ATTACK; break; - case Technology::CORVETTE_DEFENSE: $bonusId = PlayerBonus::CORVETTE_DEFENSE; break; - case Technology::FRIGATE_SPEED: $bonusId = PlayerBonus::FRIGATE_SPEED; break; - case Technology::FRIGATE_ATTACK: $bonusId = PlayerBonus::FRIGATE_ATTACK; break; - case Technology::FRIGATE_DEFENSE: $bonusId = PlayerBonus::FRIGATE_DEFENSE; break; - case Technology::DESTROYER_SPEED: $bonusId = PlayerBonus::DESTROYER_SPEED; break; - case Technology::DESTROYER_ATTACK: $bonusId = PlayerBonus::DESTROYER_ATTACK; break; - case Technology::DESTROYER_DEFENSE: $bonusId = PlayerBonus::DESTROYER_DEFENSE; break; - default: - throw new ErrorException('mise à jour du bonus de technologie impossible - technologie invalide'); - } - $this->addTechnoToBonus($playerBonus, $techno, $bonusId); - - if ($playerBonus->synchronized) { - $totalBonus = 0; - for ($i = 0; $i <= $playerBonus->technology->getTechnology($techno); $i++) { - $totalBonus += $this->technologyHelper->getImprovementPercentage($techno, $i); - } - $this->sessionWrapper->get('playerBonus')->add($bonusId, $totalBonus); - } - } -} diff --git a/system/Modules/Zeus/Manager/PlayerManager.php b/system/Modules/Zeus/Manager/PlayerManager.php deleted file mode 100644 index 55a80159b..000000000 --- a/system/Modules/Zeus/Manager/PlayerManager.php +++ /dev/null @@ -1,673 +0,0 @@ -sectorManager = $sectorManager; - } - - #[Required] - public function setResearchManager(ResearchManager $researchManager): void - { - $this->researchManager = $researchManager; - } - - public function get(int $playerId): Player - { - if(($player = $this->entityManager->getRepository(Player::class)->get($playerId)) !== null) { - if ($this->sessionWrapper->get('playerId') === $player->id) { - $player->synchronized = true; - } - $this->fill($player); - } - return $player; - } - - public function getByName(string $name): ?Player - { - return $this->entityManager->getRepository(PLayer::class)->getByName($name); - } - - public function getByBindKey(string $bindKey): ?Player - { - if(($player = $this->entityManager->getRepository(Player::class)->getByBindKey($bindKey)) !== null) { - if ($this->sessionWrapper->get('playerId') === $player->id) { - $player->synchronized = true; - } - $this->fill($player); - } - return $player; - } - - public function getGodSons(int $id): array - { - return $this->entityManager->getRepository(Player::class)->getGodSons($id); - } - - public function getByIdsAndStatements(array $ids, array $statements): array - { - return $this->entityManager->getRepository(Player::class)->getByIdsAndStatements($ids, $statements); - } - - public function getByStatements(array $statements): array - { - return $this->entityManager->getRepository(Player::class)->getByStatements($statements); - } - - public function countActivePlayers(): int - { - return $this->entityManager->getRepository(Player::class)->countActivePlayers(); - } - - public function countAllPlayers(): int - { - return $this->entityManager->getRepository(Player::class)->countAllPlayers(); - } - - public function countByFactionAndStatements(int $factionId, array $statements): int - { - return $this->entityManager->getRepository(Player::class)->countByFactionAndStatements($factionId, $statements); - } - - public function getFactionPlayers(int $factionId): array - { - return $this->entityManager->getRepository(Player::class)->getFactionPlayers($factionId); - } - - public function getFactionPlayersByRanking(int $factionId): array - { - return $this->entityManager->getRepository(Player::class)->getFactionPlayersByRanking($factionId); - } - - public function getFactionPlayersByName(int $factionId): array - { - return $this->entityManager->getRepository(Player::class)->getFactionPlayersByName($factionId); - } - - public function getFactionAccount(int $factionId): Player - { - return $this->entityManager->getRepository(Player::class)->getFactionAccount($factionId); - } - - public function getLastFactionPlayers(int $factionId): array - { - return $this->entityManager->getRepository(Player::class)->getLastFactionPlayers($factionId); - } - - public function getParliamentMembers(int $factionId): array - { - return $this->entityManager->getRepository(Player::class)->getParliamentMembers($factionId); - } - - public function getGovernmentMember(int $factionId, int $status): array - { - return $this->entityManager->getRepository(Player::class)->getGovernmentMember($factionId, $status); - } - - public function getGovernmentMembers(int $factionId): array - { - return $this->entityManager->getRepository(PLayer::class)->getGovernmentMembers($factionId); - } - - public function getFactionLeader(int $factionId): ?Player - { - if (($leader = $this->entityManager->getRepository(Player::class)->getFactionLeader($factionId)) !== null) { - $this->fill($leader); - } - return $leader; - } - - public function getActivePlayers(): array - { - return $this->entityManager->getRepository(Player::class)->getActivePlayers(); - } - - public function search(string $search): array - { - return $this->entityManager->getRepository(Player::class)->search($search); - } - - protected function fill(Player $player): void - { - if ($this->isSynchronized($player)) { - $this->saveSessionData($player); - } - } - - public function isSynchronized(Player $player): bool - { - return ($player->getId() === $this->sessionWrapper->get('playerId')); - } - - public function saveSessionData(Player $player): void - { - if(!$this->sessionWrapper->exist('playerInfo')) { - $this->sessionWrapper->add('playerInfo', new ArrayList()); - } - $this->sessionWrapper->get('playerInfo')->add('color', $player->getRColor()); - $this->sessionWrapper->get('playerInfo')->add('name', $player->getName()); - $this->sessionWrapper->get('playerInfo')->add('avatar', $player->getAvatar()); - $this->sessionWrapper->get('playerInfo')->add('credit', $player->getCredit()); - $this->sessionWrapper->get('playerInfo')->add('experience', $player->getExperience()); - $this->sessionWrapper->get('playerInfo')->add('level', $player->getLevel()); - } - - public function add(Player $player): void - { - $this->entityManager->persist($player); - $this->entityManager->flush($player); - } - - public function kill(int $playerId): void - { - $player = $this->get($playerId); - - # API call - $this->api->playerIsDead($player->bind, $this->serverId); - - # check if there is no other player with the same dead-name - $futureName = '† ' . $player->name . ' '; - while(TRUE) { - if (($otherPlayer = $this->getByName($futureName)) === null) { - break; - } - # on ajoute un 'I' à chaque fois - $futureName .= 'I'; - $this->entityManager->clear($otherPlayer); - } - # deadify the player - $player->name = $futureName; - $player->statement = Player::DEAD; - $player->bind = NULL; - $player->rColor = 0; - - $this->entityManager->flush(); - } - - public function reborn(int $playerId): void - { - $player = $this->get($playerId); - - # sector choice - $sectors = $this->sectorManager->getFactionSectors($player->rColor); - - $placeFound = FALSE; - $placeId = NULL; - foreach ($sectors as $sector) { - # place choice - $qr = $this->entityManager->getConnection()->prepare('SELECT p.id FROM place AS p - INNER JOIN system AS sy ON p.rSystem = sy.id - INNER JOIN sector AS se ON sy.rSector = se.id - WHERE p.typeOfPlace = 1 - AND se.id = ? - AND p.rPlayer IS NULL - ORDER BY p.population ASC - LIMIT 0, 30' - ); - $qr->execute(array($sector->id)); - $aw = $qr->fetchAll(); - if ($aw !== NULL) { - $placeFound = TRUE; - $placeId = $aw[rand(0, (count($aw) - 1))]['id']; - break; - } - } - - if ($placeFound) { - - # reinitialize some values of the player - $player->iUniversity = 1000; - $player->partNaturalSciences = 25; - $player->partLifeSciences = 25; - $player->partSocialPoliticalSciences = 25; - $player->partInformaticEngineering = 25; - $player->statement = Player::ACTIVE; - $player->factionPoint = 0; - - $technos = $this->technologyManager->getPlayerTechnology($player->id); - $levelAE = $technos->getTechnology(Technology::BASE_QUANTITY); - if ($levelAE != 0) { - $this->technologyManager->deleteByRPlayer($player->id, Technology::BASE_QUANTITY); - } - - # attribute new base and place to player - $ob = new OrbitalBase(); - - $ob->setRPlace($placeId); - - $ob->setRPlayer($player->id); - $ob->setName("Colonie"); - - $ob->setLevelGenerator(1); - $ob->setLevelRefinery(1); - $ob->setLevelDock1(0); - $ob->setLevelDock2(0); - $ob->setLevelDock3(0); - $ob->setLevelTechnosphere(0); - $ob->setLevelCommercialPlateforme(0); - $ob->setLevelStorage(1); - $ob->setLevelRecycling(0); - $ob->setLevelSpatioport(0); - $ob->setResourcesStorage(1000); - - $this->orbitalBaseManager->updatePoints($ob); - - # initialisation des investissement - $ob->setISchool(500); - $ob->setIAntiSpy(500); - - # ajout de la base - $ob->uOrbitalBase = Utils::now(); - $ob->dCreation = Utils::now(); - $this->orbitalBaseManager->add($ob); - - $this->placeManager->turnAsSpawnPlace($placeId, $player->getId()); - - # envoi d'une notif - $notif = new Notification(); - $notif->setRPlayer($player->id); - $notif->setTitle('Nouvelle Colonie'); - $notif->addBeg() - ->addTxt('Vous vous êtes malheureusement fait prendre votre dernière planète. Une nouvelle colonie vous a été attribuée') - ->addEnd(); - $this->notificationManager->add($notif); - $this->entityManager->flush(); - } else { - # si on ne trouve pas de lieu pour le faire poper ou si la faction n'a plus de secteur, le joueur meurt - $this->kill($player); - } - } - - public function uCredit(Player $player, array $playerBases, PlayerBonus $playerBonus, array $commanders, $rsmSession, &$factions, $transactions): void - { - - $popTax = 0; $nationTax = 0; - $credits = $player->credit; - $schoolInvests = 0; $antiSpyInvests = 0; - - $totalGain = 0; - - # university investments - $uniInvests = $player->iUniversity; - $naturalTech = ($player->iUniversity * $player->partNaturalSciences / 100); - $lifeTech = ($player->iUniversity * $player->partLifeSciences / 100); - $socialTech = ($player->iUniversity * $player->partSocialPoliticalSciences / 100); - $informaticTech = ($player->iUniversity * $player->partInformaticEngineering / 100); - - foreach ($playerBases as $base) { - $popTax = Game::getTaxFromPopulation($base->getPlanetPopulation(), $base->typeOfBase, $this->playerTaxCoeff); - $popTax += $popTax * $playerBonus->bonus->get(PlayerBonus::POPULATION_TAX) / 100; - $nationTax = $base->tax * $popTax / 100; - - # revenu des routes commerciales - $routesIncome = $this->commercialRouteManager->getBaseIncome($base); - $routesIncome += $routesIncome * $playerBonus->bonus->get(PlayerBonus::COMMERCIAL_INCOME) / 100; - - $credits += ($popTax - $nationTax + $routesIncome); - $totalGain += $popTax - $nationTax + $routesIncome; - - # investments - $schoolInvests += $base->getISchool(); - $antiSpyInvests += $base->getIAntiSpy(); - - # paiement à l'alliance - if ($player->rColor != 0) { - foreach ($factions as $faction) { - if ($faction->id == $base->sectorColor) { - $faction->increaseCredit($nationTax); - break; - } - } - } - } - # si la balance de crédit est positive - $totalInvests = $uniInvests + $schoolInvests + $antiSpyInvests; - if ($credits >= $totalInvests) { - $credits -= $totalInvests; - $newCredit = $credits; - } else { # si elle est négative - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Caisses vides'); - $n->addBeg()->addTxt('Domaine')->addSep(); - $n->addTxt('Vous ne disposez pas d\'assez de crédits.')->addBrk()->addTxt('Les impôts que vous percevez ne suffisent plus à payer vos investissements.'); - - if ($totalInvests - $uniInvests <= $totalGain) { - # we can decrease only the uni investments - $newIUniversity = $totalGain - $schoolInvests - $antiSpyInvests; - - $player->iUniversity = $newIUniversity; - $credits -= ($newIUniversity + $schoolInvests + $antiSpyInvests); - - # recompute the real amount for each research - $naturalTech = ($player->iUniversity * $player->partNaturalSciences / 100); - $lifeTech = ($player->iUniversity * $player->partLifeSciences / 100); - $socialTech = ($player->iUniversity * $player->partSocialPoliticalSciences / 100); - $informaticTech = ($player->iUniversity * $player->partInformaticEngineering / 100); - - $n->addBrk()->addTxt(' Vos investissements dans l\'université ont été modifiés afin qu\'aux prochaines relèves vous puissiez payer. Attention, cette situation ne vous apporte pas de crédits.'); - } else { - # we have to decrease the other investments too - # investments in university to 0 - $player->iUniversity = 0; - # then we decrease the other investments with a ratio - $ratioDifference = floor($totalGain / ($schoolInvests + $antiSpyInvests) * 100); - - $naturalTech = 0; $lifeTech = 0; $socialTech = 0; $informaticTech = 0; - - foreach ($playerBases as $orbitalBase) { - $newISchool = ceil($orbitalBase->getISchool() * $ratioDifference / 100); - $newIAntiSpy = ceil($orbitalBase->getIAntiSpy() * $ratioDifference / 100); - - $orbitalBase->setISchool($newISchool); - $orbitalBase->setIAntiSpy($newIAntiSpy); - - $credits -= ($newISchool + $newIAntiSpy); - - $naturalTech += ($newISchool * $player->partNaturalSciences / 100); - $lifeTech += ($newISchool * $player->partLifeSciences / 100); - $socialTech += ($newISchool * $player->partSocialPoliticalSciences / 100); - $informaticTech += ($newISchool * $player->partInformaticEngineering / 100); - } - $n->addTxt(' Seuls ')->addStg($ratioDifference . '%')->addTxt(' des crédits d\'investissements peuvent être honorés.')->addBrk(); - $n->addTxt(' Vos investissements dans l\'université ont été mis à zéro et les autres diminués de façon pondérée afin qu\'aux prochaines relèves vous puissiez payer. Attention, cette situation ne vous apporte pas de crédits.'); - } - - $n->addSep()->addLnk('financial', 'vers les finances →'); - $n->addEnd(); - - $this->notificationManager->add($n); - - $newCredit = $credits; - } - - # payer les commandants - $nbOfComNotPaid = 0; - $comList = new ArrayList(); - foreach ($commanders as $commander) { - if (!in_array($commander->getStatement(), [Commander::AFFECTED, Commander::MOVING])) { - continue; - } - if ($newCredit >= (Commander::LVLINCOMECOMMANDER * $commander->getLevel())) { - $newCredit -= (Commander::LVLINCOMECOMMANDER * $commander->getLevel()); - continue; - } - # on remet les vaisseaux dans les hangars - $this->commanderManager->emptySquadrons($commander); - - # on vend le commandant - $commander->setStatement(Commander::ONSALE); - $commander->setRPlayer($this->gaiaId); - - # TODO : vendre le commandant au marché - # (ou alors le mettre en statement COM_DESERT et supprimer ses escadrilles) - - $comList->add($nbOfComNotPaid, $commander->getName()); - $nbOfComNotPaid++; - $this->entityManager->flush($commander); - } - # si au moins un commandant n'a pas pu être payé --> envoyer une notif - if ($nbOfComNotPaid) { - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Commandant impayé'); - - $n->addBeg()->addTxt('Domaine')->addSep(); - if ($nbOfComNotPaid == 1) { - $n->addTxt('Vous n\'avez pas assez de crédits pour payer votre commandant ' . $comList->get(0) . '. Celui-ci a donc déserté ! '); - $n->addBrk()->addTxt('Il est allé proposer ses services sur le marché. Si vous voulez le récupérer, vous pouvez vous y rendre et le racheter.'); - } else { - $n->addTxt('Vous n\'avez pas assez de crédits pour payer certains de vos commandants. Ils ont donc déserté ! ')->addBrk(); - $n->addTxt('Voici la liste de ces commandants : '); - for ($i = 0; $i < $comList->size() - 2; $i++) { - $n->addTxt($comList->get($i) . ', '); - } - $n->addTxt($comList->get($comList->size() - 2) . ' et ' . $comList->get($comList->size() - 1) . '.'); - $n->addBrk()->addTxt('Ils sont tous allés proposer leurs services sur le marché. Si vous voulez les récupérer, vous pouvez vous y rendre et les racheter.'); - } - $n->addEnd(); - $this->notificationManager->add($n); - } - - # payer l'entretien des vaisseaux - # vaisseaux en vente - $transactionTotalCost = 0; - $nbTransactions = count($transactions); - for ($i = ($nbTransactions - 1); $i >= 0; $i--) { - $transaction = $transactions[$i]; - $transactionTotalCost += ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity; - } - if ($newCredit >= $transactionTotalCost) { - $newCredit -= $transactionTotalCost; - } else { - $newCredit = 0; - } - # vaisseaux affectés - foreach ($commanders as $commander) { - $ships = $commander->getNbrShipByType(); - $cost = Game::getFleetCost($ships, TRUE); - - if ($newCredit >= $cost) { - $newCredit -= $cost; - continue; - } - # on vend le commandant car on n'arrive pas à payer la flotte (trash hein) - $commander->setStatement(Commander::ONSALE); - $commander->setRPlayer($this->gaiaId); - - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Flotte impayée'); - $n->addBeg()->addTxt('Domaine')->addSep(); - $n->addTxt('Vous n\'avez pas assez de crédits pour payer l\'entretien de la flotte de votre officier ' . $commander->name . '. Celui-ci a donc déserté ! ... avec la flotte, désolé.'); - $n->addEnd(); - $this->notificationManager->add($n); - $this->entityManager->flush($commander); - } - # vaisseaux sur la planète - foreach ($playerBases as $base) { - $cost = Game::getFleetCost($base->shipStorage, FALSE); - - if ($newCredit >= $cost) { - $newCredit -= $cost; - } else { - # n'arrive pas à tous les payer ! - for ($j = ShipResource::SHIP_QUANTITY-1; $j >= 0; $j--) { - if ($base->shipStorage[$j] > 0) { - $unitCost = ShipResource::getInfo($j, 'cost'); - - $possibleMaintenable = floor($newCredit / $unitCost); - if ($possibleMaintenable > $base->shipStorage[$j]) { - $possibleMaintenable = $base->shipStorage[$j]; - } - $newCredit -= $possibleMaintenable * $unitCost; - - $toKill = $base->shipStorage[$j] - $possibleMaintenable; - if ($toKill > 0) { - $this->orbitalBaseManager->removeShipFromDock($base, $j, $toKill); - - $n = new Notification(); - $n->setRPlayer($player->id); - $n->setTitle('Entretien vaisseau impayé'); - - $n->addBeg()->addTxt('Domaine')->addSep(); - if ($toKill == 1) { - $n->addTxt('Vous n\'avez pas assez de crédits pour payer l\'entretien d\'un(e) ' . ShipResource::getInfo($j, 'codeName') . ' sur ' . $base->name . '. Ce vaisseau part donc à la casse ! '); - } else { - $n->addTxt('Vous n\'avez pas assez de crédits pour payer l\'entretien de ' . $toKill . ' ' . ShipResource::getInfo($j, 'codeName') . 's sur ' . $base->name . '. Ces vaisseaux partent donc à la casse ! '); - } - $n->addEnd(); - $this->notificationManager->add($n); - } - } - } - } - } - - # faire les recherches - $S_RSM1 = $this->researchManager->getCurrentSession(); - $this->researchManager->changeSession($rsmSession); - if ($this->researchManager->size() == 1) { - # add the bonus - $naturalTech += $naturalTech * $playerBonus->bonus->get(PlayerBonus::UNI_INVEST) / 100; - $lifeTech += $lifeTech * $playerBonus->bonus->get(PlayerBonus::UNI_INVEST) / 100; - $socialTech += $socialTech * $playerBonus->bonus->get(PlayerBonus::UNI_INVEST) / 100; - $informaticTech += $informaticTech * $playerBonus->bonus->get(PlayerBonus::UNI_INVEST) / 100; - - $tech = $this->researchManager->get(); - $this->researchManager->update($tech, $player->id, $naturalTech, $lifeTech, $socialTech, $informaticTech); - } else { - throw new ErrorException('une erreur est survenue lors de la mise à jour des investissements de recherche pour le joueur ' . $player->id . '.'); - } - $this->researchManager->changeSession($S_RSM1); - - $player->credit = $newCredit; - } - - // OBJECT METHOD - public function increaseCredit(Player $player, $credit) { - $player->credit += abs($credit); - - $this->entityManager->getRepository(Player::class)->updatePlayerCredits($player, abs($credit), '+'); - } - - public function decreaseCredit(Player $player, $credit) { - $credits = - (abs($credit) > $player->credit) - ? 0 - : abs($credit) - ; - $player->credit += $credits; - $this->entityManager->getRepository(Player::class)->updatePlayerCredits($player, $credits, '-'); - } - - public function increaseExperience(Player $player, $exp) { - $exp = round($exp); - $player->experience += $exp; - if ($player->isSynchronized()) { - $this->sessionWrapper->get('playerInfo')->add('experience', $player->experience); - } - $nextLevel = $this->playerBaseLevel * pow(2, ($player->level - 1)); - if ($player->experience >= $nextLevel) { - $player->level++; - if ($player->isSynchronized()) { - $this->sessionWrapper->get('playerInfo')->add('level', $player->level); - } - $n = new Notification(); - $n->setTitle('Niveau supérieur'); - $n->setRPlayer($player->id); - $n->addBeg()->addTxt('Félicitations, vous gagnez un niveau, vous êtes ')->addStg('niveau ' . $player->level)->addTxt('.'); - if ($player->level == 2) { - $n->addSep()->addTxt('Attention, à partir de maintenant vous ne bénéficiez plus de la protection des nouveaux arrivants, n\'importe quel joueur peut désormais piller votre planète. '); - $n->addTxt('Pensez donc à développer vos flottes pour vous défendre.'); - } - if ($player->level == 4) { - $n->addSep()->addTxt('Attention, à partir de maintenant un joueur adverse peut conquérir votre planète ! Si vous n\'en avez plus, le jeu est terminé pour vous. '); - $n->addTxt('Pensez donc à étendre votre royaume en colonisant d\'autres planètes.'); - } - $n->addEnd(); - - $this->notificationManager->add($n); - - # parrainage : au niveau 3, le parrain gagne 1M crédits - if ($player->level == 3 AND $player->rGodfather != NULL) { - # add 1'000'000 credits to the godfather - if (($godFather = $this->get($player->rGodfather)) !== null) { - $this->increaseCredit($godFather, 1000000); - - # send a message to the godfather - $n = new Notification(); - $n->setRPlayer($player->rGodfather); - $n->setTitle('Récompense de parrainage'); - $n->addBeg()->addTxt('Un de vos filleuls a atteint le niveau 3. '); - $n->addTxt('Il s\'agit de '); - $n->addLnk('embassy/player-' . $player->getId(), '"' . $player->name . '"')->addTxt('.'); - $n->addBrk()->addTxt('Vous venez de gagner 1\'000\'000 crédits. N\'hésitez pas à parrainer d\'autres personnes pour gagner encore plus.'); - $n->addEnd(); - - $this->entityManager->flush($godFather); - $this->notificationManager->add($n); - } - } - } - $this->entityManager->flush($player); - } - - /** - * @param int $playerId - * @param int $investment - */ - public function updateUniversityInvestment($playerId, $investment) - { - $this->entityManager->getRepository(Player::class)->updateUniversityInvestment($playerId, $investment); - } -} diff --git a/system/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php b/system/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php deleted file mode 100644 index 04270ae68..000000000 --- a/system/Modules/Zeus/Message/PlayersCreditsUpdateMessage.php +++ /dev/null @@ -1,8 +0,0 @@ -type == CreditTransaction::TYP_PLAYER - ? '/embassy/player-' . $this->rReceiver - : '/embassy/faction-' . $this->rReceiver; - } - - public function getFormatedReceiverName() { - return $this->type == CreditTransaction::TYP_PLAYER - ? $this->receiverName - : ColorResource::getInfo($this->rReceiver, 'popularName'); - } - - public function getFormatedReceiverAvatar() { - return $this->type == CreditTransaction::TYP_PLAYER - ? $this->receiverAvatar - : 'color-' . $this->rReceiver; - } - - public function getFormatedReceiverStatus() { - if ($this->type == CreditTransaction::TYP_PLAYER) { - $status = ColorResource::getInfo($this->receiverColor, 'status'); - return $status[$this->receiverStatus - 1]; - } else { - return ColorResource::getInfo($this->rReceiver, 'government'); - } - } - - public function getFormatedReceiverColor() { - return $this->type == CreditTransaction::TYP_PLAYER - ? $this->receiverColor - : $this->rReceiver; - } - - public function getId() { return $this->id; } -} diff --git a/system/Modules/Zeus/Model/Player.php b/system/Modules/Zeus/Model/Player.php deleted file mode 100644 index 5016eebde..000000000 --- a/system/Modules/Zeus/Model/Player.php +++ /dev/null @@ -1,174 +0,0 @@ -id; } - public function getBind() { return $this->bind; } - public function getRColor() { return $this->rColor; } - public function getName() { return $this->name; } - public function getAvatar() { return $this->avatar; } - public function getStatus() { return $this->status; } - public function getCredit() { return $this->credit; } - public function getExperience() { return $this->experience; } - public function getLevel() { return $this->level; } - public function getVictory() { return $this->victory; } - public function getDefeat() { return $this->defeat; } - public function getStepTutorial() { return $this->stepTutorial; } - public function getDInscription() { return $this->dInscription; } - public function getDLastConnection() { return $this->dLastConnection; } - public function getDLastActivity() { return $this->dLastActivity; } - public function getPremium() { return $this->premium; } - public function getStatement() { return $this->statement; } - - /** - * @return boolean - */ - public function isSynchronized() - { - return $this->synchronized; - } - - public function setId($v) { - $this->id = $v; - return $this; - } - public function setBind($v) { - $this->bind = $v; - return $this; - } - public function setRColor($v) { - $this->rColor = $v; - return $this; - } - public function setName($v) { - $this->name = $v; - return $this; - } - public function setAvatar($v) { - $this->avatar = $v; - return $this; - } - public function setStatus($v) - { - $this->status = $v; - return $this; - } - - public function setCredit($v) { - $this->credit = $v; - return $this; - } - public function setExperience($v) { - $this->experience = $v; - return $this; - } - public function setLevel($v) { - $this->level = $v; - return $this; - } - public function setVictory($v) { - $this->victory = $v; - return $this; - } - public function setDefeat($v) { - $this->defeat = $v; - return $this; - } - public function setStepTutorial($v) { - $this->stepTutorial = $v; - return $this; - } - public function setDInscription($v) { - $this->dInscription = $v; - return $this; - } - public function setDLastConnection($v) { - $this->dLastConnection = $v; - return $this; - } - public function setDLastActivity($v) { - $this->dLastActivity = $v; - return $this; - } - public function setPremium($v) { - $this->premium = $v; - return $this; - } - public function setStatement($v) { - $this->statement = $v; - return $this; - } - - public function setFactionPoints($factionPoints) - { - $this->factionPoints = $factionPoints; - - return $this; - } - - public function increaseVictory($i) { - $this->victory += $i; - return $this; - } - public function increaseDefeat($i) { - $this->defeat += $i; - return $this; - } - -} diff --git a/system/Modules/Zeus/Model/PlayerBonus.php b/system/Modules/Zeus/Model/PlayerBonus.php deleted file mode 100644 index 3360ab82c..000000000 --- a/system/Modules/Zeus/Model/PlayerBonus.php +++ /dev/null @@ -1,54 +0,0 @@ -unitOfWork->getObject(Player::class, $id)) !== null) { - return $p; - } - $query = $this->connection->prepare('SELECT * FROM player WHERE id = :id'); - $query->execute(['id' => $id]); - - if (($row = $query->fetch()) === false) { - return null; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - public function getByName($name) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE name = :name'); - $query->execute(['name' => $name]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - return $p; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - public function getByBindKey($bindKey) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE bind = :bind_key'); - $query->execute(['bind_key' => $bindKey]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - return $p; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - public function getGodSons($playerId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rGodFather = :god_father_id'); - $query->execute(['god_father_id' => $playerId]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - public function getByIdsAndStatements($ids, $statements) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE id IN (' . implode(',', $ids) . ') AND statement IN (' . implode(',', $statements) . ')'); - $query->execute(); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param array $statements - */ - public function getByStatements($statements) - { - $query = $this->connection->query('SELECT * FROM player WHERE statement IN (' . implode(',', $statements) . ')'); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @return int - */ - public function countActivePlayers() - { - $query = $this->connection->prepare('SELECT COUNT(*) as nb_players FROM player WHERE statement = :statement_active'); - $query->execute(['statement_active' => Player::ACTIVE]); - return (int) $query->fetch()['nb_players']; - } - - /** - * @return int - */ - public function countAllPlayers() - { - $query = $this->connection->prepare('SELECT COUNT(*) as nb_players FROM player WHERE statement IN (:statement_active, :statement_inactive)'); - $query->execute(['statement_active' => Player::ACTIVE, 'statement_inactive' => Player::INACTIVE]); - return (int) $query->fetch()['nb_players']; - } - - /** - * @param int $factionId - * @param array $statements - * @return int - */ - public function countByFactionAndStatements($factionId, $statements) - { - $query = $this->connection->prepare('SELECT COUNT(*) as nb_players FROM player WHERE rColor = :faction_id AND statement IN (' . implode(',', $statements) . ')'); - $query->execute(['faction_id' => $factionId]); - return (int) $query->fetch()['nb_players']; - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionPlayers($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND statement != :dead_statement'); - $query->execute(['faction_id' => $factionId, 'dead_statement' => Player::DEAD]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionPlayersByRanking($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND statement != :dead_statement ORDER BY factionPoint DESC'); - $query->execute(['faction_id' => $factionId, 'dead_statement' => Player::DEAD]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param int $factionId - * @return array - */ - public function getFactionPlayersByName($factionId) - { - $query = $this->connection->prepare( - 'SELECT * FROM player WHERE rColor = :faction_id AND statement IN (' . - implode(',', [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]) . ') - ORDER BY name ASC' - ); - $query->execute(['faction_id' => $factionId]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * - * @param int $factionId - * @return Player - */ - public function getFactionAccount($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND status = :dead_status ORDER BY id ASC LIMIT 0,1'); - $query->execute(['faction_id' => $factionId, 'dead_status' => Player::DEAD]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - return $p; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - /** - * @param int $factionId - * @return array - */ - public function getLastFactionPlayers($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND statement != :dead_statement ORDER BY dInscription DESC LIMIT 0,25'); - $query->execute(['faction_id' => $factionId, 'dead_statement' => Player::DEAD]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param int $factionId - * @return array - */ - public function getParliamentMembers($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND status = :status'); - $query->execute(['faction_id' => $factionId, 'status' => Player::PARLIAMENT]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param int $factionId - * @param int $status - * @return Player - */ - public function getGovernmentMember($factionId, $status) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND status = :status AND statement != :dead_statement'); - $query->execute(['faction_id' => $factionId, 'status' => $status, 'dead_statement' => Player::DEAD]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - return $p; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - /** - * @param int $factionId - * @return array - */ - public function getGovernmentMembers($factionId) - { - $query = $this->connection->prepare( - 'SELECT * FROM player WHERE rColor = :faction_id AND statement != :dead_statement AND status IN (' . implode(',', [Player::TREASURER, Player::WARLORD, Player::MINISTER, Player::CHIEF]) . ') ORDER BY status DESC' - ); - $query->execute(['faction_id' => $factionId, 'dead_statement' => Player::DEAD]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param int $factionId - * @return Player - */ - public function getFactionLeader($factionId) - { - $query = $this->connection->prepare('SELECT * FROM player WHERE rColor = :faction_id AND status = :status AND statement != :dead_statement'); - $query->execute(['faction_id' => $factionId, 'status' => Player::CHIEF, 'dead_statement' => Player::DEAD]); - - if (($row = $query->fetch()) === false) { - return null; - } - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - return $p; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - return $player; - } - - public function getActivePlayers() - { - $query = $this->connection->prepare( - 'SELECT * FROM player WHERE statement = :statement' - ); - $query->execute(['statement' => Player::ACTIVE]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - public function search(string $search): array - { - $query = $this->connection->prepare( - 'SELECT p.* FROM player AS p WHERE LOWER(name) LIKE LOWER(:search) ORDER BY experience DESC LIMIT 0,20' - ); - $query->execute(['search' => "%$search%"]); - - $data = []; - while ($row = $query->fetch()) { - if (($p = $this->unitOfWork->getObject(Player::class, (int) $row['id'])) !== null) { - $data[] = $p; - continue; - } - $player = $this->format($row); - $this->unitOfWork->addObject($player); - $data[] = $player; - } - return $data; - } - - /** - * @param Player $player - */ - public function insert($player) - { - $query = $this->connection->prepare('INSERT INTO - player(bind, rColor, name, sex, description, avatar, status, rGodfather, - credit, uPlayer, experience, factionPoint, level, victory, defeat, stepTutorial, - stepDone, iUniversity, partNaturalSciences, partLifeSciences, partSocialPoliticalSciences, - partInformaticEngineering, dInscription, dLastConnection, dLastActivity, premium, statement) - VALUES(:bind, :faction_id, :name, :gender, :description, :avatar, :status, - :god_father_id, :credits, :u_player, :experience, :faction_points, :level, - :nb_victories, :nb_defeats, :tutorial_step, :tutorial_step_is_done, :university_investment, - :natural_science_investment, :life_science_investment, :social_political_science_investment, - :informatic_engineering_investment, :created_at, :last_connected_at, :last_acted_at, :is_premium, :statement)'); - $query->execute(array( - 'bind' => $player->getBind(), - 'faction_id' => $player->getRColor(), - 'name' => $player->getName(), - 'gender' => $player->sex, - 'description' => $player->description, - 'avatar' => $player->getAvatar(), - 'status' => $player->getStatus(), - 'god_father_id' => $player->rGodfather, - 'credits' => $player->getCredit(), - 'u_player' => $player->uPlayer, - 'experience' => $player->getExperience(), - 'faction_points' => $player->factionPoint, - 'level' => $player->getLevel(), - 'nb_victories' => $player->getVictory(), - 'nb_defeats' => $player->getDefeat(), - 'tutorial_step' => $player->getStepTutorial(), - 'tutorial_step_is_done' => $player->stepDone, - 'university_investment' => $player->iUniversity, - 'natural_science_investment' => $player->partNaturalSciences, - 'life_science_investment' => $player->partLifeSciences, - 'social_political_science_investment' => $player->partSocialPoliticalSciences, - 'informatic_engineering_investment' => $player->partInformaticEngineering, - 'created_at' => $player->getDInscription(), - 'last_connected_at' => $player->getDLastConnection(), - 'last_acted_at' => $player->getDLastActivity(), - 'is_premium' => $player->getPremium(), - 'statement' => $player->getStatement() - )); - $player->setId((int) $this->connection->lastInsertId()); - } - - /** - * @param Player $player - */ - public function update($player) - { - $query = $this->connection->prepare('UPDATE player SET - description = :description, - status = :status, - uPlayer = :u_player, - experience = :experience, - factionPoint = :faction_points, - level = :level, - victory = :nb_victories, - defeat = :nb_defeats, - stepTutorial = :tutorial_step, - stepDone = :tutorial_step_is_done, - partNaturalSciences = :natural_science_investment, - partLifeSciences = :life_science_investment, - partSocialPoliticalSciences = :social_political_investment, - partInformaticEngineering = :informatic_engineering_investment, - dLastConnection = :last_connected_at, - dLastActivity = :last_acted_at, - statement = :statement - WHERE id = :id'); - $query->execute(array( - 'description' => $player->description, - 'status' => $player->getStatus(), - 'u_player' => $player->uPlayer, - 'experience' => $player->getExperience(), - 'faction_points' => $player->factionPoint, - 'level' => $player->getLevel(), - 'nb_victories' => $player->getVictory(), - 'nb_defeats' => $player->getDefeat(), - 'tutorial_step' => $player->getStepTutorial(), - 'tutorial_step_is_done' => $player->stepDone, - 'natural_science_investment' => $player->partNaturalSciences, - 'life_science_investment' => $player->partLifeSciences, - 'social_political_investment' => $player->partSocialPoliticalSciences, - 'informatic_engineering_investment' => $player->partInformaticEngineering, - 'last_connected_at' => $player->getDLastConnection(), - 'last_acted_at' => $player->getDLastActivity(), - 'statement' => $player->getStatement(), - 'id' => $player->getId() - )); - } - - /** - * @param Player $player - * @param int $credits - * @param string $operator - */ - public function updatePlayerCredits(Player $player, $credits, $operator) - { - $query = $this->connection->prepare("UPDATE player SET credit = credit $operator $credits, uPlayer = :updated_at WHERE id = :id"); - $query->execute(array( - 'updated_at' => $player->uPlayer, - 'id' => $player->getId() - )); - } - - /** - * @param int $playerId - * @param int $investment - */ - public function updateUniversityInvestment($playerId, $investment) - { - $query = $this->connection->prepare("UPDATE player SET iUniversity = :investment WHERE id = :id"); - $query->execute(array( - 'investment' => $investment, - 'id' => $playerId - )); - } - - public function remove($entity) - { - - } - - public function format($data) - { - $player = new Player(); - - $player->setId((int) $data['id']); - $player->setBind($data['bind']); - $player->setRColor((int) $data['rColor']); - $player->setName($data['name']); - $player->sex = $data['sex']; - $player->description = $data['description']; - $player->setAvatar($data['avatar']); - $player->setStatus((int) $data['status']); - $player->rGodfather = $data['rGodfather']; - $player->setCredit((int) $data['credit']); - $player->uPlayer = $data['uPlayer']; - $player->setExperience((int) $data['experience']); - $player->factionPoint = (int) $data['factionPoint']; - $player->setLevel((int) $data['level']); - $player->setVictory((int) $data['victory']); - $player->setDefeat((int) $data['defeat']); - $player->setStepTutorial((int) $data['stepTutorial']); - $player->stepDone = (int) $data['stepDone']; - $player->iUniversity = (int) $data['iUniversity']; - $player->partNaturalSciences = (int) $data['partNaturalSciences']; - $player->partLifeSciences = (int) $data['partLifeSciences']; - $player->partSocialPoliticalSciences = (int) $data['partSocialPoliticalSciences']; - $player->partInformaticEngineering = (int) $data['partInformaticEngineering']; - $player->setDInscription($data['dInscription']); - $player->setDLastConnection($data['dLastConnection']); - $player->setDLastActivity($data['dLastActivity']); - $player->setPremium($data['premium']); - $player->setStatement($data['statement']); - - return $player; - } -} diff --git a/system/Modules/Zeus/Resource/config/config.yml b/system/Modules/Zeus/Resource/config/config.yml deleted file mode 100644 index 556ed9f36..000000000 --- a/system/Modules/Zeus/Resource/config/config.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -parameters: - zeus.player.base_level: 1250 - zeus.player.base_commander_level: 100 - zeus.player.base_ap: 10 - zeus.player.coeff_ap: 5 - - zeus.player.tax_coeff: 1 - - zeus.player.ally_inactive_time: 168 # 7 days - zeus.player.global_inactive_time: 360 # 15 days - zeus.player.inactive_time_limit: 600 # 25 days - -services: - _defaults: - autowire: true - autoconfigure: true - public: true - - _instanceof: - Symfony\Component\Messenger\Handler\MessageHandlerInterface: - tags: - - { name: 'messenger.message_handler', bus: 'messenger.default_bus' } - - Asylamba\Modules\Zeus\Handler\: - resource: '%root_path%/system/Modules/Zeus/Handler/*' - - Asylamba\Modules\Zeus\Helper\: - resource: '%root_path%/system/Modules/Zeus/Helper/*' - - Asylamba\Modules\Zeus\Manager\: - resource: '%root_path%/system/Modules/Zeus/Manager/*' - - Asylamba\Modules\Zeus\Manager\PlayerManager: - arguments: - $playerBaseLevel: "%zeus.player.base_level%" - $playerTaxCoeff: "%zeus.player.tax_coeff%" - $serverId: "%server_id%" - $gaiaId: '%id_gaia%' diff --git a/system/Modules/Zeus/ZeusModule.php b/system/Modules/Zeus/ZeusModule.php deleted file mode 100644 index 4ceb427bd..000000000 --- a/system/Modules/Zeus/ZeusModule.php +++ /dev/null @@ -1,13 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$quantity = $request->request->get('quantity'); - -if ( - ($direction = $request->request->get('direction')) === null || - ($orbitalBaseId = $request->request->get('orbitalBase')) === null || - ($shipId = $request->request->get('ship')) === null || - ($commanderId = $request->request->get('commander')) === null || - ($squadron = $request->request->get('squadron')) === null || - !in_array($orbitalBaseId, $verif) -) { - throw new FormException('Pas assez d\'informations pour assigner un vaisseau'); -} -if (!in_array($direction, ['ctb', 'btc'])) { - throw new FormException('L\'argument direction n\'est pas correct.'); -} -if (!ShipResource::isAShip($shipId)) { - throw new FormException('Le vaisseau n\'existe pas.'); -} -if ($quantity === null) { - $quantity = 1; -} - -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get('athena.orbital_orbitalBase_manager'); - -if ( - ($orbitalBase = $orbitalBaseManager->get($orbitalBaseId)) === null || - ($commander = $commanderManager->get($commanderId)) === null || - $commander->rBase !== $orbitalBaseId -) { - throw new ErrorException('Erreur dans les commandants ou la base.'); -} - -if ($commander->statement !== Commander::AFFECTED) { - throw new ErrorException('Cet officier ne peut être modifié.'); -} - -if ($direction == 'ctb') { // commander to orbitalBase - // if the commander has the quantity of ships required - if ($commander->getSquadron($squadron)->getNbrShipByType($shipId) - $quantity >= 0) { - $orbitalBase->setShipStorage($shipId, ($orbitalBase->getShipStorage($shipId) + $quantity)); - $commander->getSquadron($squadron)->updateShip($shipId, -$quantity); - # $alert->add('Vaisseau(x) envoyé(s) à la orbitalBase.', ALERT_BUG_SUCCESS); - } else { - throw new ErrorException('L\'escadrille n\'a pas autant de vaisseaux !'); - } -} else { // orbitalBase to commander - // if the orbitalBase has the quantity of ships required - if ($orbitalBase->getShipStorage($shipId) - $quantity < 0) { - throw new ErrorException('La base n\'a pas autant de vaisseaux !'); - } - // if it's enough PEV space in the commander - if (($commander->getSquadron($squadron)->getPev() + (ShipResource::getInfo($shipId, 'pev') * $quantity)) > 100) { - throw new ErrorException('Il n\'y a pas assez de place dans l\'escadrille pour ces vaisseaux.'); - } - $orbitalBase->setShipStorage($shipId, ($orbitalBase->getShipStorage($shipId) - $quantity)); - $commander->getSquadron($squadron)->updateShip($shipId, $quantity); - # $alert->add('Vaisseau(x) envoyé(s) dans l\'escadrille.', ALERT_BUG_SUCCESS); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == false && $session->get('playerInfo')->get('stepTutorial') === TutorialResource::FILL_SQUADRON) { - $tutorialHelper->setStepDone(); - } -} diff --git a/system/action/ajax/ares/squadron/update.php b/system/action/ajax/ares/squadron/update.php deleted file mode 100755 index 5e0fec13d..000000000 --- a/system/action/ajax/ares/squadron/update.php +++ /dev/null @@ -1,97 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -if ( - ($baseID = (int) $request->query->get('base')) === null || - ($commanderID = (int) $request->query->get('commander')) === null || - ($squadronID = (int) $request->query->get('squadron')) === null || - ($newSquadron = $request->query->get('army')) === null || - !in_array($baseID, $verif) -) { - throw new FormException('Pas assez d\'informations pour assigner un vaisseau.'); -} - -$newSquadron = explode('_', $newSquadron); -$newSquadron = array_map(function($el) { - return $el < 0 ? 0 : (int)$el; -}, $newSquadron); - -if (count($newSquadron) !== 12) { - throw new FormException('Pas assez d\'informations pour assigner un vaisseau.'); -} - -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -$commander = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class)->get($commanderID); - -if (($base = $orbitalBaseManager->get($baseID)) === null || $commander === null || $commander->rBase !== $baseID || $commander->statement !== Commander::AFFECTED) { - throw new ErrorException('Erreur dans les références du commandant ou de la base.'); -} -$squadron = $commander->getSquadron($squadronID); - -if ($squadron === false) { - throw new ErrorException('Erreur dans les références du commandant ou de la base.'); -} - -$squadronSHIP = $squadron->arrayOfShips; -$baseSHIP = $base->shipStorage; - -foreach ($newSquadron as $i => $v) { - $baseSHIP[$i] -= ($v - $squadronSHIP[$i]); - $squadronSHIP[$i] = $v; -} - -# token de vérification -$baseOK = TRUE; -$squadronOK = TRUE; -$totalPEV = 0; -# vérif shipStorage (pas de nombre négatif) -foreach ($baseSHIP as $i => $v) { - if ($v < 0) { - $baseOK = FALSE; - break; - } -} - -# vérif de squadron (pas plus de 100 PEV, pas de nombre négatif) -foreach ($squadronSHIP as $i => $v) { - $totalPEV += $v * ShipResource::getInfo($i, 'pev'); - if ($v < 0) { - $squadronOK = FALSE; - break; - } -} - -if (!$baseOK || !$squadronOK || $totalPEV > 100) { - throw new ErrorException('Erreur dans la répartition des vaisseaux.'); -} -# tutorial -if ($session->get('playerInfo')->get('stepDone') === false && $session->get('playerInfo')->get('stepTutorial') === TutorialResource::FILL_SQUADRON) { - $tutorialHelper->setStepDone(); -} - -$base->shipStorage = $baseSHIP; -$commander->getSquadron($squadronID)->arrayOfShips = $squadronSHIP; - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/ajax/autocomplete/orbitalBase.php b/system/action/ajax/autocomplete/orbitalBase.php deleted file mode 100755 index b161f2080..000000000 --- a/system/action/ajax/autocomplete/orbitalBase.php +++ /dev/null @@ -1,17 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$request = $this->getContainer()->get('app.request'); - -if ($request->query->has('q')) { - $places = $placeManager->search($request->query->get('q'), array('pl.id', 'DESC'), array(0, 20)); - - foreach ($places as $place) { - echo '' . $place->playerName . ' '; - echo '' . $place->playerName . ''; - echo '' . $place->getBaseName() . ' (secteur ' . $place->getRSector() . ')'; - echo "\n"; - } -} diff --git a/system/action/ajax/autocomplete/player.php b/system/action/ajax/autocomplete/player.php deleted file mode 100755 index cdd987ad7..000000000 --- a/system/action/ajax/autocomplete/player.php +++ /dev/null @@ -1,28 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -$players = $playerManager->search($this->getContainer()->get('app.request')->query->get('q')); - -if (count($players) > 0) { - foreach ($players as $player) { - if (in_array($player->getStatement(), array(Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY, Player::BANNED))) { - if ($player->getRColor() > 0) { - $status = ColorResource::getInfo($player->getRColor(), 'status'); - $status = $status[$player->getStatus() - 1]; - } else { - $status = 'Rebelle'; - } - - echo '' . $player->getName() . ' '; - echo '' . $status . ''; - echo '' . $player->getName() . ''; - echo "\n"; - } - } -} diff --git a/system/action/ajax/common/switchParams.php b/system/action/ajax/common/switchParams.php deleted file mode 100644 index ec17c55d6..000000000 --- a/system/action/ajax/common/switchParams.php +++ /dev/null @@ -1,13 +0,0 @@ -getContainer()->get('app.request'); - -$params = $request->query->get('params'); - -if ($params !== FALSE) { - if (in_array($params, Params::getParams())) { - $request->cookies->add('p' . $params, !$request->cookies->get('p' . $params, $params), true); - } -} \ No newline at end of file diff --git a/system/action/ajax/hermes/notification/archive.php b/system/action/ajax/hermes/notification/archive.php deleted file mode 100755 index 527c2135a..000000000 --- a/system/action/ajax/hermes/notification/archive.php +++ /dev/null @@ -1,16 +0,0 @@ -getContainer()->get('app.request')->request->get('id'); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -if ($id) { - $notification = $notificationManager->get($id); - $notification->setArchived(!$notif->getArchived()); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($notification); -} else { - throw new ErrorException('cette notification n\'existe pas'); -} diff --git a/system/action/ajax/hermes/notification/delete.php b/system/action/ajax/hermes/notification/delete.php deleted file mode 100755 index 4d161f9a2..000000000 --- a/system/action/ajax/hermes/notification/delete.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer()->get('app.request')->request->get('id'); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -if ($id) { - $notification = $notificationManager->get($id); - $entityManager->remove($notification); - $entityManager->flush($notification); -} else { - throw new ErrorException('Cette notification n\'existe pas'); -} diff --git a/system/action/ajax/hermes/notification/read.php b/system/action/ajax/hermes/notification/read.php deleted file mode 100755 index 70c225f0d..000000000 --- a/system/action/ajax/hermes/notification/read.php +++ /dev/null @@ -1,22 +0,0 @@ -getContainer()->get('app.request')->query->get('notif'); - -if ($id === null) { - throw new FormException('Erreur dans la requête AJAX'); -} -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -if (($notification = $notificationManager->get($id)) !== null && $notification->rPlayer === $session->get('playerId')) { - $notification->setReaded(1); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($notification); -} else { - throw new FormException('Cette notification ne vous appartient pas'); -} diff --git a/system/action/ajax/main.php b/system/action/ajax/main.php deleted file mode 100755 index 01047c4d9..000000000 --- a/system/action/ajax/main.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$ajaxPath = $container->getParameter('ajax'); -$pagesPath = $container->getParameter('pages'); - -switch ($this->getContainer()->get('app.request')->query->get('a')) { - # COMMON - case 'switchparams': include $ajaxPath . 'common/switchParams.php'; break; - - # HERMES - case 'readnotif': include $ajaxPath . 'hermes/notification/read.php'; break; - case 'archivenotif': include $ajaxPath . 'hermes/notification/archive.php'; break; - case 'deletenotif': include $ajaxPath . 'hermes/notification/delete.php'; break; - - # ARES - case 'assignship': include $ajaxPath . 'ares/ship/assign.php'; break; - case 'updatesquadron': include $ajaxPath . 'ares/squadron/update.php'; break; - - # ATHENA - case 'increaseinvestuni': include $ajaxPath . 'zeus/university/increaseInvest.php'; break; - case 'decreaseinvestuni': include $ajaxPath . 'zeus/university/decreaseInvest.php'; break; - - # AUTOCOMPLETE - case 'autocompleteplayer': include $ajaxPath . 'autocomplete/player.php'; break; - case 'autocompleteorbitalbase': include $ajaxPath . 'autocomplete/orbitalBase.php'; break; - - # XHR RETURN MAPPING - case 'loadsystem': include $pagesPath . 'ajax/loadSystem.php'; break; - case 'buildingpanel': include $pagesPath . 'ajax/buildingPanel.php'; break; - case 'shippanel': include $pagesPath . 'ajax/shipPanel.php'; break; - case 'technopanel': include $pagesPath . 'ajax/technoPanel.php'; break; - case 'moremessage': include $pagesPath . 'ajax/conversation/message.php'; break; - case 'moreconversation': include $pagesPath . 'ajax/conversation/conversation.php'; break; - case 'morerank': include $pagesPath . 'ajax/morerank.php'; break; - - # XHR RETURN WYSIWYG - case 'wswpy': include $pagesPath . 'ajax/wsw/player.php'; break; - case 'wswpl': include $pagesPath . 'ajax/wsw/place.php'; break; - - default: - throw new ErrorException('action inconnue ou non-référencée'); -} diff --git a/system/action/ajax/zeus/university/decreaseInvest.php b/system/action/ajax/zeus/university/decreaseInvest.php deleted file mode 100755 index 7dd3b3509..000000000 --- a/system/action/ajax/zeus/university/decreaseInvest.php +++ /dev/null @@ -1,63 +0,0 @@ -getContainer()->get('app.request'); - -if (($category = $request->query->get('category')) === null || ($quantity = $request->query->get('quantity')) === null) { - throw new FormException('Pas assez d\'informations pour augmenter l\'investissement'); -} -if (!in_array($category, array('natural', 'life', 'social', 'informatic'))) { - throw new ErrorException('Changement d\'investissement impossible - faculté inconnue'); -} - -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$player = $playerManager->get($session->get('playerId')); - -if ($quantity === FALSE) { - $quantity = 1; -} - -switch ($category) { - case 'natural' : - $oldInvest = $player->partNaturalSciences; - break; - case 'life' : - $oldInvest = $player->partLifeSciences; - break; - case 'social' : - $oldInvest = $player->partSocialPoliticalSciences; - break; - case 'informatic' : - $oldInvest = $player->partInformaticEngineering; - break; -} - -if ($oldInvest != 0) { - if ($oldInvest < $quantity) { - $quantity = $oldInvest; - } - switch ($category) { - case 'natural' : - $player->partNaturalSciences = $player->partNaturalSciences - $quantity; - break; - case 'life' : - $player->partLifeSciences = $player->partLifeSciences - $quantity; - break; - case 'social' : - $player->partSocialPoliticalSciences = $player->partSocialPoliticalSciences - $quantity; - break; - case 'informatic' : - $player->partInformaticEngineering = $player->partInformaticEngineering - $quantity; - break; - } -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); diff --git a/system/action/ajax/zeus/university/increaseInvest.php b/system/action/ajax/zeus/university/increaseInvest.php deleted file mode 100755 index fc4fa61cf..000000000 --- a/system/action/ajax/zeus/university/increaseInvest.php +++ /dev/null @@ -1,50 +0,0 @@ -getContainer()->get('app.request'); - -if (($category = $request->query->get('category')) === null || ($quantity = $request->query->get('quantity')) === null) { - throw new FormException('Pas assez d\'informations pour augmenter l\'investissement'); -} -if (!in_array($category, array('natural', 'life', 'social', 'informatic'))) { - throw new ErrorException('Changement d\'investissement impossible - faculté inconnue'); -} - -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$player = $playerManager->get($session->get('playerId')); - -$totalInvest = - $player->partNaturalSciences + - $player->partLifeSciences + - $player->partSocialPoliticalSciences + - $player->partInformaticEngineering; - -if ($totalInvest < 100) { - if ($totalInvest + $quantity > 100) { - $quantity = 100 - $totalInvest; - } - - switch ($category) { - case 'natural' : - $player->partNaturalSciences = $player->partNaturalSciences + $quantity; - break; - case 'life' : - $player->partLifeSciences = $player->partLifeSciences + $quantity; - break; - case 'social' : - $player->partSocialPoliticalSciences = $player->partSocialPoliticalSciences + $quantity; - break; - case 'informatic' : - $player->partInformaticEngineering = $player->partInformaticEngineering + $quantity; - break; - } -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); diff --git a/system/action/std/ares/commander/affect.php b/system/action/std/ares/commander/affect.php deleted file mode 100755 index 3ad53666e..000000000 --- a/system/action/std/ares/commander/affect.php +++ /dev/null @@ -1,78 +0,0 @@ -getContainer()->get('app.request')->query->get('id')) === null) { - throw new ErrorException('erreur dans le traitement de la requête'); -} -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$response = $this->getContainer()->get('app.response'); - -if (($commander = $commanderManager->get($commanderId)) === null) { - throw new ErrorException('Cet officier n\'existe pas ou ne vous appartient pas'); -} - -$orbitalBase = $orbitalBaseManager->get($commander->rBase); - -# checker si on a assez de place !!!!! -$nbrLine1 = $commanderManager->countCommandersByLine($commander->rBase, 1); -$nbrLine2 = $commanderManager->countCommandersByLine($commander->rBase, 2); - -if ($commander->statement == Commander::INSCHOOL || $commander->statement == Commander::RESERVE) { - if ($nbrLine2 < PlaceResource::get($orbitalBase->typeOfBase, 'r-line')) { - $commander->dAffectation = Utils::now(); - $commander->statement = Commander::AFFECTED; - $commander->line = 2; - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && $session->get('playerInfo')->get('stepTutorial') === TutorialResource::AFFECT_COMMANDER) { - $tutorialHelper->setStepDone(); - } - - $session->addFlashbag('Votre officier ' . $commander->getName() . ' a bien été affecté en force de réserve', Flashbag::TYPE_SUCCESS); - $response->redirect('fleet/commander-' . $commander->id . '/sftr-2'); - } elseif ($nbrLine1 < PlaceResource::get($orbitalBase->typeOfBase, 'l-line')) { - $commander->dAffectation =Utils::now(); - $commander->statement = Commander::AFFECTED; - $commander->line = 1; - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && $session->get('playerInfo')->get('stepTutorial') === TutorialResource::AFFECT_COMMANDER) { - $tutorialHelper->setStepDone(); - } - - $session->addFlashbag('Votre officier ' . $commander->getName() . ' a bien été affecté en force active', Flashbag::TYPE_SUCCESS); - $response->redirect('fleet/commander-' . $commander->id . '/sftr-2'); - } else { - throw new ErrorException('Votre base a dépassé la capacité limite de officiers en activité'); - } -} elseif ($commander->statement == Commander::AFFECTED) { - $baseCommanders = $commanderManager->getBaseCommanders($commander->rBase, [Commander::INSCHOOL]); - - $commander->uCommander = Utils::now(); - if (count($baseCommanders) < PlaceResource::get($orbitalBase->typeOfBase, 'school-size')) { - $commander->statement = Commander::INSCHOOL; - $session->addFlashbag('Votre officier ' . $commander->getName() . ' a été remis à l\'école', Flashbag::TYPE_SUCCESS); - $commanderManager->emptySquadrons($commander); - } else { - $commander->statement = Commander::RESERVE; - $session->addFlashbag('Votre officier ' . $commander->getName() . ' a été remis dans la réserve de l\'armée', Flashbag::TYPE_SUCCESS); - $commanderManager->emptySquadrons($commander); - } - $response->redirect('bases/view-school'); -} else { - throw new ErrorException('Le status de votre officier ne peut pas être modifié'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/commander/changeLine.php b/system/action/std/ares/commander/changeLine.php deleted file mode 100755 index c92e997e6..000000000 --- a/system/action/std/ares/commander/changeLine.php +++ /dev/null @@ -1,61 +0,0 @@ -getContainer()->get('app.request')->query->get('id')) === null) { - throw new ErrorException('erreur dans le traitement de la requête'); -} - -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$response = $this->getContainer()->get('app.response'); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $session->get('playerId')) { - throw new ErrorException('Ce commandant n\'existe pas ou ne vous appartient pas'); -} -$orbitalBase = $orbitalBaseManager->get($commander->rBase); - -# checker si on a assez de place !!!!! -if ($commander->line == 1) { - $secondLineCommanders = $commanderManager->getCommandersByLine($commander->rBase, 2); - - if (count($secondLineCommanders) < PlaceResource::get($orbitalBase->typeOfBase, 'r-line')) { - $commander->line = 2; - - $response->redirect($session->getLastHistory()); - - } else { - $commander->line = 2; - $secondLineCommanders[0]->line = 1; - $response->redirect($session->getLastHistory()); - $session->addFlashbag('Votre commandant ' . $commander->getName() . ' a échangé sa place avec ' . $commander->name . '.', Flashbag::TYPE_SUCCESS); - } -} else { - $firstLineCommanders = $commanderManager->getCommandersByLine($commander->rBase, 1); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') !== true && $session->get('playerInfo')->get('stepTutorial') === TutorialResource::MOVE_FLEET_LINE) { - $tutorialHelper->setStepDone(); - } - - if (count($firstLineCommanders) < PlaceResource::get($orbitalBase->typeOfBase, 'l-line')) { - $commander->line = 1; - - $response->redirect($session->getLastHistory()); - } else { - $commander->line = 1; - $firstLineCommanders[0]->line = 2; - $response->redirect($session->getLastHistory()); - $session->addFlashbag('Votre commandant ' . $commander->getName() . ' a échangé sa place avec ' . $commander->name . '.', Flashbag::TYPE_SUCCESS); - } -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/commander/empty.php b/system/action/std/ares/commander/empty.php deleted file mode 100755 index 77ff7fad3..000000000 --- a/system/action/std/ares/commander/empty.php +++ /dev/null @@ -1,28 +0,0 @@ -getContainer()->get('app.request')->query->get('id'); -if ($commanderId === null) { - throw new ErrorException('manque d\'information pour le traitement de la requête'); -} -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('playerId')) { - throw new ErrorException('Ce commandant n\'existe pas ou ne vous appartient pas.'); -} -if ($commander->statement !== 1) { - throw new ErrorException('Vous ne pouvez pas retirer les vaisseaux à un officier en déplacement.'); -} - -// vider le commandant -$commanderManager->emptySquadrons($commander); - -$this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->addFlashbag('Vous avez vidé l\'armée menée par votre commandant ' . $commander->getName() . '.', Flashbag::TYPE_SUCCESS); - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/commander/fire.php b/system/action/std/ares/commander/fire.php deleted file mode 100755 index 4a368a7e0..000000000 --- a/system/action/std/ares/commander/fire.php +++ /dev/null @@ -1,37 +0,0 @@ -getContainer()->get('app.response'); - -$commanderId = $this->getContainer()->get('app.request')->query->get('id'); -if ($commanderId === null) { - throw new ErrorException('manque d\'information pour le traitement de la requête'); -} - -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $session->get('playerId')) { - throw new ErrorException('Ce commandant n\'existe pas ou ne vous appartient pas.'); -} - -if ($commander->statement == 1) { - - // vider le commandant - $commanderManager->emptySquadrons($commander); - $commander->setStatement(4); - - $session->addFlashbag('Vous avez renvoyé votre commandant ' . $commander->getName() . '.', Flashbag::TYPE_SUCCESS); -} else { - $session->addFlashbag('Vous ne pouvez pas renvoyer un officier en déplacement.', Flashbag::TYPE_SUCCESS); -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - -$response->redirect('fleet'); diff --git a/system/action/std/ares/commander/putInSchool.php b/system/action/std/ares/commander/putInSchool.php deleted file mode 100755 index 389d09609..000000000 --- a/system/action/std/ares/commander/putInSchool.php +++ /dev/null @@ -1,39 +0,0 @@ -getContainer()->get('app.request')->query->get('id'); -if ($commanderId === null) { - throw new ErrorException('erreur dans le traitement de la requête'); -} -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('playerId')) { - throw new ErrorException('Ce commandant n\'existe pas ou ne vous appartient pas'); -} -$orbitalBase = $orbitalBaseManager->get($commander->rBase); - -if ($commander->statement == Commander::RESERVE) { - $commanders = $commanderManager->getBaseCommanders($commander->rBase, [Commander::INSCHOOL]); - - if (count($commanders) < PlaceResource::get($orbitalBase->typeOfBase, 'school-size')) { - $commander->statement = Commander::INSCHOOL; - $commander->uCommander = Utils::now(); - } else { - throw new ErrorException('Votre école est déjà pleine.'); - } -} elseif ($commander->statement == Commander::INSCHOOL) { - $commander->statement = Commander::RESERVE; - $commander->uCommander = Utils::now(); -} else { - throw new ErrorException('Vous ne pouvez rien faire avec cet officier.'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/commander/updateName.php b/system/action/std/ares/commander/updateName.php deleted file mode 100755 index efb620943..000000000 --- a/system/action/std/ares/commander/updateName.php +++ /dev/null @@ -1,31 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - - -if (($commanderId = $request->request->get('id')) === null || ($name = $request->request->get('name')) === null) { - throw new ErrorException('manque d\'information'); -} - -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $session->get('playerId')) { - throw new ErrorException('Ce commandant n\'existe pas ou ne vous appartient pas'); -} -$p = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$name = $p->protect($name); -if (strlen($name) > 1 AND strlen($name) < 26) { - $commander->setName($name); - $session->addFlashbag('le nom de votre commandant est maintenant ' . $name, Flashbag::TYPE_SUCCESS); -} else { - throw new ErrorException('le nom doit comporter entre 2 et 25 caractères'); -} diff --git a/system/action/std/ares/fleet/cancel.php b/system/action/std/ares/fleet/cancel.php deleted file mode 100755 index 78a11d043..000000000 --- a/system/action/std/ares/fleet/cancel.php +++ /dev/null @@ -1,62 +0,0 @@ -getContainer()->get('app.request'); -$messageBus = $this->getContainer()->get(\Symfony\Component\Messenger\MessageBusInterface::class); - -if (($request->query->get('commanderid')) === null) { - throw new ErrorException('Manque de précision sur le commandant ou la position.'); -} -$commanderId = $request->query->get('commanderid'); - -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -if (($commander = $commanderManager->get($commanderId)) === null || $commander->rPlayer !== $session->get('playerId')) { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); -} -if ($commander->travelType == Commander::BACK) { - throw new ErrorException('Vous ne pouvez pas annuler un retour.'); -} -// @TODO travel cancellation -//$scheduler->cancel($commander, $commander->dArrival); - -$interval = Utils::interval($commander->dArrival, Utils::now(), 's'); -$dStart = new \DateTime(Utils::now()); -$dStart->modify('-' . $interval . ' second'); - -$duration = Utils::interval($commander->dStart, $commander->dArrival, 's'); - -$dArrival = new \DateTime($dStart->format('Y-m-d H:i:s')); -$dArrival->modify('+' . $duration . ' second'); - -$rDestinationPlace = $commander->rDestinationPlace; -$commander->rDestinationPlace = $commander->rStartPlace; -$commander->rStartPlace = $rDestinationPlace; -$startPlaceName = $commander->startPlaceName; -$commander->startPlaceName = $commander->destinationPlaceName; -$commander->destinationPlaceName = $startPlaceName; -$commander->dStart = $dStart->format('Y-m-d H:i:s'); -$commander->dArrival = $dArrival->format('Y-m-d H:i:s'); -$commander->travelType = Commander::BACK; - -$response = $this->getContainer()->get('app.response'); - -$session->addFlashbag('Déplacement annulé.', Flashbag::TYPE_SUCCESS); - -if ($request->query->has('redirect')) { - $response->redirect('map/place-' . $request->query->get('redirect')); -} -$messageBus->dispatch( - new \Asylamba\Modules\Ares\Message\CommanderTravelMessage($commander->getId()), - [\Asylamba\Classes\Library\DateTimeConverter::to_delay_stamp($commander->getArrivalDate())], -); -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/fleet/colonize.php b/system/action/std/ares/fleet/colonize.php deleted file mode 100755 index e5c8e272f..000000000 --- a/system/action/std/ares/fleet/colonize.php +++ /dev/null @@ -1,123 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$colonizationCost = $this->getContainer()->getParameter('ares.coeff.colonization_cost'); -$conquestCost = $this->getContainer()->getParameter('ares.coeff.conquest_cost'); - -$commanderId = $request->query->get('commanderid'); -$placeId = $request->query->get('placeid'); - - -if ($commanderId !== FALSE AND $placeId !== FALSE) { - # load the technologies - $technologies = $technologyManager->getPlayerTechnology($session->get('playerId')); - - # check si technologie CONQUEST débloquée - if ($technologies->getTechnology(Technology::COLONIZATION) == 1) { - # check si la technologie BASE_QUANTITY a un niveau assez élevé - $maxBasesQuantity = $technologies->getTechnology(Technology::BASE_QUANTITY) + 1; - $obQuantity = $session->get('playerBase')->get('ob')->size(); - - # count ob quantity via request to be sure (the session is sometimes not valid) - $qr = $database->prepare('SELECT COUNT(*) AS count FROM `orbitalBase` WHERE `rPlayer`=?'); - $qr->execute([$session->get('playerId')]); - $aw = $qr->fetch(); - $obQuantity = $aw['count']; - - $coloQuantity = 0; - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::MOVING]); - foreach ($commanders as $commander) { - if ($commander->travelType == Commander::COLO) { - $coloQuantity++; - } - } - $totalBases = $obQuantity + $coloQuantity; - if ($totalBases < $maxBasesQuantity) { - if (($commander = $commanderManager->get($commanderId)) !== null && $commander->rPlayer = $session->get('playerId')) { - if (($place = $placeManager->get($placeId)) !== null) { - if ($place->typeOfPlace == Place::TERRESTRIAL) { - - $home = $placeManager->get($commander->getRBase()); - - $length = Game::getDistance($home->getXSystem(), $place->getXSystem(), $home->getYSystem(), $place->getYSystem()); - $duration = Game::getTimeToTravel($home, $place, $session->get('playerBonus')); - - # compute price - $price = $totalBases * $colonizationCost; - - # calcul du bonus - if (in_array(ColorResource::COLOPRICEBONUS, $colorManager->get($session->get('playerInfo')->get('color'))->bonus)) { - $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); - } - - if ($session->get('playerInfo')->get('credit') >= $price) { - if ($commander->getPev() > 0) { - if ($commander->statement == Commander::AFFECTED) { - - $sector = $sectorManager->get($place->rSector); - - $sectorColor = $colorManager->get($sector->rColor); - $isFactionSector = ($sector->rColor == $commander->playerColor || $sectorColor->colorLink[$session->get('playerInfo')->get('color')] == Color::ALLY) ? TRUE : FALSE; - - if ($length <= Commander::DISTANCEMAX || $isFactionSector) { - $commander->destinationPlaceName = $place->baseName; - $commanderManager->move($commander, $place->getId(), $commander->rBase, Commander::COLO, $length, $duration) ; - # debit credit - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), $price); - - if ($request->query->has('redirect')) { - $this->getContainer()->get('app.response')->redirect('map/place-' . $request->query->get('redirect')); - } - } else { - throw new ErrorException('Cet emplacement est trop éloigné.'); - } - } else { - throw new ErrorException('Cet officier est déjà en déplacement.'); - } - } else { - throw new ErrorException('Vous devez affecter au moins un vaisseau à votre officier.'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de crédits pour coloniser cette planète.'); - } - } else { - throw new ErrorException('Ce lieu n\'est pas habitable.'); - } - } else { - throw new ErrorException('Ce lieu n\'existe pas.'); - } - } else { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); - } - } else { - throw new ErrorException('Vous avez assez de conquête en cours ou un niveau administration étendue trop bas.'); - } - } else { - throw new ErrorException('Vous devez développer votre technologie colonisation.'); - } -} else { - throw new ErrorException('Manque de précision sur le commandant ou la position.'); -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/fleet/conquer.php b/system/action/std/ares/fleet/conquer.php deleted file mode 100755 index 191423e05..000000000 --- a/system/action/std/ares/fleet/conquer.php +++ /dev/null @@ -1,121 +0,0 @@ -getContainer()->get('app.request'); - -if (($commanderId = $request->query->get('commanderid')) === null || ($placeId = $request->query->get('placeid')) === null) { - throw new ErrorException('Manque de précision sur le commandant ou la position.'); -} - -$response = $this->getContainer()->get('app.response'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conquestCost = $this->getContainer()->getParameter('ares.coeff.conquest_cost'); - -$place = $placeManager->get($placeId); - - // load the technologies -$technologies = $technologyManager->getPlayerTechnology($session->get('playerId')); - -# check si technologie CONQUEST débloquée -if ($technologies->getTechnology(Technology::CONQUEST) !== 1) { - throw new ErrorException('Vous devez débloquer la technologie de conquête.'); -} - # check si la technologie BASE_QUANTITY a un niveau assez élevé - $maxBasesQuantity = $technologies->getTechnology(Technology::BASE_QUANTITY) + 1; - $obQuantity = $session->get('playerBase')->get('ob')->size(); - $msQuantity = $session->get('playerBase')->get('ms')->size(); - $coloQuantity = 0; - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::MOVING]); - foreach ($commanders as $commander) { - if ($commander->travelType == Commander::COLO) { - $coloQuantity++; - } - } - $totalBases = $obQuantity + $msQuantity + $coloQuantity; - if ($totalBases >= $maxBasesQuantity) { - throw new ErrorException('Vous avez assez de conquête en cours ou un niveau d\'administration étendue trop faible.'); - } - - $targetPlayer = $playerManager->get($place->rPlayer); - - if ($targetPlayer->level > 3 || $targetPlayer->statement >= Player::DELETED) { - if (($commander = $commanderManager->get($commanderId)) !== null && $commander->rPlayer = $session->get('playerId')) { - if ($place !== null) { - - $color = $colorManager->get($session->get('playerInfo')->get('color')); - - if ($session->get('playerInfo')->get('color') != $place->getPlayerColor() && $color->colorLink[$targetPlayer->rColor] != Color::ALLY) { - $home = $placeManager->get($commander->getRBase()); - - $length = Game::getDistance($home->getXSystem(), $place->getXSystem(), $home->getYSystem(), $place->getYSystem()); - $duration = Game::getTimeToTravel($home, $place, $session->get('playerBonus')); - - # compute price - $price = $totalBases * $conquestCost; - - # calcul du bonus - if (in_array(ColorResource::COLOPRICEBONUS, $colorManager->get($session->get('playerInfo')->get('color'))->bonus)) { - $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); - } - - if ($session->get('playerInfo')->get('credit') >= $price) { - if ($commander->getPev() > 0) { - if ($commander->statement == Commander::AFFECTED) { - $sector = $sectorManager->get($place->rSector); - - $sectorColor = $colorManager->get($sector->rColor); - $isFactionSector = ($sector->rColor == $commander->playerColor || $sectorColor->colorLink[$session->get('playerInfo')->get('color')] == Color::ALLY) ? TRUE : FALSE; - - if ($length <= Commander::DISTANCEMAX || $isFactionSector) { - $commander->destinationPlaceName = $place->baseName; - - $commanderManager->move($commander, $place->getId(), $commander->rBase, Commander::COLO, $length, $duration) ; - # debit credit - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), $price); - - #throw new ErrorException('Flotte envoyée.', ALERT_STD_SUCCESS); - - if ($request->query->has('redirect')) { - $response->redirect('map/place-' . $request->query->get('redirect')); - } - } else { - throw new ErrorException('Cet emplacement est trop éloigné.'); - } - } else { - throw new ErrorException('Cet officier est déjà en déplacement.'); - } - } else { - throw new ErrorException('Vous devez affecter au moins un vaisseau à votre officier.'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de crédits pour conquérir cette base.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas attaquer un lieu appartenant à votre Faction ou d\'une faction alliée.'); - } - } else { - throw new ErrorException('Ce lieu n\'existe pas.'); - } - } else { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas conquérir un joueur de niveau 3 ou moins.'); - } -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/fleet/loot.php b/system/action/std/ares/fleet/loot.php deleted file mode 100755 index f59279874..000000000 --- a/system/action/std/ares/fleet/loot.php +++ /dev/null @@ -1,131 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -$commanderId = $request->query->get('commanderid'); -$placeId = $request->query->get('placeid'); - -if ($commanderId !== FALSE AND $placeId !== FALSE) { - $place = $placeManager->get($placeId); - if (null === $place->rPlayer || ($player = $playerManager->get($place->rPlayer)) === null) { - if (($commander = $commanderManager->get($commanderId)) !== null && $commander->rPlayer === $session->get('playerId')) { - if ($place !== null) { - if ($place->typeOfPlace == Place::TERRESTRIAL) { - if ($session->get('playerInfo')->get('color') != $place->getPlayerColor()) { - $home = $placeManager->get($commander->getRBase()); - - $length = Game::getDistance($home->getXSystem(), $place->getXSystem(), $home->getYSystem(), $place->getYSystem()); - $duration = Game::getTimeToTravel($home, $place, $session->get('playerBonus')); - - if ($commander->getPev() > 0) { - if ($commander->statement == Commander::AFFECTED) { - - $sector = $sectorManager->get($place->rSector); - - $sectorColor = $colorManager->get($sector->rColor); - $isFactionSector = ($sector->rColor == $commander->playerColor || $sectorColor->colorLink[$session->get('playerInfo')->get('color')] == Color::ALLY) ? TRUE : FALSE; - - $commander->destinationPlaceName = $place->baseName; - if ($length <= Commander::DISTANCEMAX || $isFactionSector) { - $commanderManager->move($commander, $place->getId(), $commander->rBase, Commander::LOOT, $length, $duration) ; - $session->addFlashbag('Flotte envoyée.', Flashbag::TYPE_SUCCESS); - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::LOOT_PLANET) { - $tutorialHelper->setStepDone(); - } - - if ($request->query->has('redirect')) { - $response->redirect('map/place-' . $request->query->get('redirect')); - } - - } else { - throw new ErrorException('Cet emplacement est trop éloigné.'); - } - } else { - throw new ErrorException('Cet officier est déjà en déplacement.'); - } - } else { - throw new ErrorException('Vous devez affecter au moins un vaisseau à votre officier.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas attaquer un lieu appartenant à votre Faction.'); - } - } else { - throw new ErrorException('Ce lieu n\'est pas habité.'); - } - } else { - throw new ErrorException('Ce lieu n\'existe pas.'); - } - } else { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); - } - } elseif ($player->level > 1 || $player->statement >= \Asylamba\Modules\Zeus\Model\Player::DELETED) { - if (($commander = $commanderManager->get($commanderId)) !== null && $commander->rPlayer === $session->get('playerId')) { - if ($place !== null) { - $color = $colorManager->get($session->get('playerInfo')->get('color')); - - if ($session->get('playerInfo')->get('color') != $place->getPlayerColor() && $color->colorLink[$player->rColor] != Color::ALLY) { - $home = $placeManager->get($commander->getRBase()); - - $length = Game::getDistance($home->getXSystem(), $place->getXSystem(), $home->getYSystem(), $place->getYSystem()); - $duration = Game::getTimeToTravel($home, $place, $session->get('playerBonus')); - - if ($commander->getPev() > 0) { - $sector = $sectorManager->get($place->rSector); - $sectorColor = $colorManager->get($sector->rColor); - - $isFactionSector = ($sector->rColor == $commander->playerColor || $sectorColor->colorLink[$session->get('playerInfo')->get('color')] == Color::ALLY) ? TRUE : FALSE; - - $commander->destinationPlaceName = $place->baseName; - if ($length <= Commander::DISTANCEMAX || $isFactionSector) { - $commanderManager->move($commander, $place->getId(), $commander->rBase, Commander::LOOT, $length, $duration) ; - $session->addFlashbag('Flotte envoyée.', Flashbag::TYPE_SUCCESS); - - if ($request->query->has('redirect')) { - $response->redirect('map/place-' . $request->query->get('redirect')); - } - } else { - throw new ErrorException('Ce lieu est trop éloigné.'); - } - } else { - throw new ErrorException('Vous devez affecter au moins un vaisseau à votre officier.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas attaquer un lieu appartenant à votre Faction ou d\'une faction alliée.'); - } - } else { - throw new ErrorException('Ce lieu n\'existe pas.'); - } - } else { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas piller un joueur de niveau 1.'); - } -} else { - throw new ErrorException('Manque de précision sur le commandant ou la position.'); -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/fleet/move.php b/system/action/std/ares/fleet/move.php deleted file mode 100755 index 2a2902a07..000000000 --- a/system/action/std/ares/fleet/move.php +++ /dev/null @@ -1,77 +0,0 @@ -getContainer(); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -$commanderId = $request->query->get('commanderid'); -$placeId = $request->query->get('placeid'); - - -if ($commanderId !== FALSE AND $placeId !== FALSE) { - if (($commander = $commanderManager->get($commanderId)) !== null && $commander->rPlayer === $session->get('playerId')) { - if (($place = $placeManager->get($placeId)) !== null) { - if ($commander->playerColor == $place->playerColor) { - $home = $placeManager->get($commander->getRBase()); - - $length = Game::getDistance($home->getXSystem(), $place->getXSystem(), $home->getYSystem(), $place->getYSystem()); - $duration = Game::getTimeToTravel($home, $place, $session->get('playerBonus')); - - if ($commander->statement === Commander::AFFECTED) { - $sector = $sectorManager->get($place->rSector); - $isFactionSector = ($sector->rColor == $commander->playerColor) ? TRUE : FALSE; - - $commander->destinationPlaceName = $place->baseName; - - if ($length <= Commander::DISTANCEMAX || $isFactionSector) { - $commanderManager->move($commander, $place->getId(), $commander->rBase, Commander::MOVE, $length, $duration); - - if (true === $container->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $ships = $commander->getNbrShipByType(); - $price = 0; - - for ($i = 0; $i < count($ships); $i++) { - $price += DataAnalysis::resourceToStdUnit(ShipResource::getInfo($i, 'resourcePrice') * $ships[$i]); - } - - $qr->execute([$commander->rPlayer, $place->rPlayer, 7, $price, Utils::now()]); - } - } else { - throw new ErrorException('Cet emplacement est trop éloigné.'); - } - } else { - throw new ErrorException('Cet officier est déjà en déplacement.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas envoyer une flotte sur une planète qui ne vous appartient pas.'); - } - } else { - throw new ErrorException('Ce lieu n\'existe pas.'); - } - } else { - throw new ErrorException('Ce commandant ne vous appartient pas ou n\'existe pas.'); - } -} else { - throw new ErrorException('Manque de précision sur le commandant ou la position.'); -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/report/archive.php b/system/action/std/ares/report/archive.php deleted file mode 100755 index 3d8dd6bc5..000000000 --- a/system/action/std/ares/report/archive.php +++ /dev/null @@ -1,37 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$reportManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\ReportManager::class); - -$id = $request->query->get('id'); - -if ($id) { - if (($report = $reportManager->get($id)) !== null) { - if ($session->get('playerId') == $report->rPlayerAttacker) { - if ($report->statementAttacker == Report::STANDARD) { - $report->statementAttacker = Report::ARCHIVED; - } else { - $report->statementAttacker = Report::STANDARD; - } - } else if ($session->get('playerId') == $report->rPlayerDefender) { - if ($report->statementDefender == Report::STANDARD) { - $report->statementDefender = Report::ARCHIVED; - } else { - $report->statementDefender = Report::STANDARD; - } - } else { - throw new ErrorException('Ce rapport ne vous appartient pas.'); - } - } else { - throw new ErrorException('Ce rapport n\'existe pas.'); - } -} else { - throw new ErrorException('Manque de précision sur le rapport.'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/report/delete.php b/system/action/std/ares/report/delete.php deleted file mode 100755 index 2ea9c8763..000000000 --- a/system/action/std/ares/report/delete.php +++ /dev/null @@ -1,31 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$reportManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\ReportManager::class); - -$id = $request->query->get('id'); - -if ($id) { - if (($report = $reportManager->get($id)) !== null) { - if ($report->rPlayerAttacker == $session->get('playerId')) { - $report->statementAttacker = Report::DELETED; - $response->redirect('fleet/view-archive'); - } elseif ($report->rPlayerDefender == $session->get('playerId')) { - $report->statementDefender = Report::DELETED; - $response->redirect('fleet/view-archive'); - } else { - throw new ErrorException('Ce rapport ne vous appartient pas'); - } - } else { - throw new ErrorException('Ce rapport n\'existe pas'); - } -} else { - throw new ErrorException('veuillez indiquer le numéro du rapport'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); diff --git a/system/action/std/ares/report/deleteAll.php b/system/action/std/ares/report/deleteAll.php deleted file mode 100755 index a0d86d3f3..000000000 --- a/system/action/std/ares/report/deleteAll.php +++ /dev/null @@ -1,16 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$this - ->getContainer() - ->get(\Asylamba\Modules\Ares\Manager\ReportManager::class) - ->removePlayerReports( - $session->get('playerId') - ) -; -$session->addFlashbag('Vos rapports ont été correctement supprimés', Flashbag::TYPE_SUCCESS); - -$this->getContainer()->get('app.response')->redirect('fleet/view-archive'); diff --git a/system/action/std/artemis/delete.php b/system/action/std/artemis/delete.php deleted file mode 100755 index ef702967f..000000000 --- a/system/action/std/artemis/delete.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$spyReportManager = $this->getContainer()->get(\Asylamba\Modules\Artemis\Manager\SpyReportManager::class); - -$id = $request->query->get('id'); - -if ($id) { - $S_SRM1 = $spyReportManager->getCurrentSession(); - $spyReportManager->newSession(); - $spyReportManager->load(array('id' => $id)); - $report = $spyReportManager->get(); - if ($spyReportManager->size() == 1) { - - if ($report->rPlayer == $session->get('playerId')) { - $spyReportManager->deleteById($report->id); - $session->addFlashbag('Rapport d\'espionnage supprimé', Flashbag::TYPE_SUCCESS); - $response->redirect('fleet/view-spyreport'); - } else { - throw new ErrorException('Ce rapport ne vous appartient pas'); - } - } else { - throw new ErrorException('Ce rapport n\'existe pas'); - } - $spyReportManager->changeSession($S_SRM1); -} else { - throw new ErrorException('veuillez indiquer le numéro du rapport'); -} diff --git a/system/action/std/artemis/deleteAll.php b/system/action/std/artemis/deleteAll.php deleted file mode 100755 index c3dfe8b4f..000000000 --- a/system/action/std/artemis/deleteAll.php +++ /dev/null @@ -1,23 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$spyReportManager = $this->getContainer()->get(\Asylamba\Modules\Artemis\Manager\SpyReportManager::class); - -$S_SRM1 = $spyReportManager->getCurrentSession(); -$spyReportManager->newSession(ASM_UMODE); -$spyReportManager->load(array('rPlayer' => $session->get('playerId'))); - -$nbr = $spyReportManager->deleteByRPlayer($session->get('playerId')); - -if ($nbr > 1) { - $session->addFlashbag($nbr . ' rapports ont été supprimés.', Flashbag::TYPE_SUCCESS); -} else if ($nbr == 1) { - $session->addFlashbag('Un rapport a été supprimé.', Flashbag::TYPE_SUCCESS); -} else { - $session->addFlashbag('Tous vos rapports ont déjà été supprimés.', Flashbag::TYPE_SUCCESS); -} - -$spyReportManager->changeSession($S_SRM1); diff --git a/system/action/std/artemis/spy.php b/system/action/std/artemis/spy.php deleted file mode 100755 index ee10bb1ca..000000000 --- a/system/action/std/artemis/spy.php +++ /dev/null @@ -1,179 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$spyReportManager = $this->getContainer()->get(\Asylamba\Modules\Artemis\Manager\SpyReportManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -$rPlace = $request->query->get('rplace'); -$price = $request->query->has('price') ? $request->query->get('price') : $request->request->get('price'); - -if ($rPlace !== FALSE AND $price !== FALSE) { - $price = intval($price); - $price = $price > 0 ? $price : 0; - $price = $price < 1000000 ? $price : 0; - - if ($session->get('playerInfo')->get('credit') >= $price && $price > 0) { - # place - $place = $placeManager->get($rPlace); - - if ($place->typeOfPlace == Place::TERRESTRIAL && $place->playerColor != $session->get('playerInfo')->get('color')) { - # débit des crédits au joueur - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), $price); - - # espionnage - $sr = new SpyReport(); - $sr->rPlayer = $session->get('playerId'); - $sr->rPlace = $rPlace; - $sr->price = $price; - $sr->placeColor = $place->playerColor; - $sr->typeOfBase = $place->typeOfBase; - $sr->placeName = $place->baseName; - $sr->points = $place->points; - $sr->shipsInStorage = serialize([]); - $sr->antiSpyInvest = 0; - $sr->commercialRouteIncome = 0; - - $sr->dSpying = Utils::now(); - - switch ($place->typeOfBase) { - case Place::TYP_EMPTY: - $sr->resources = $place->resources; - - $sr->typeOfOrbitalBase = OrbitalBase::TYP_NEUTRAL; - $sr->rEnemy = 0; - $sr->enemyName = 'Rebelle'; - $sr->enemyAvatar = ''; - $sr->enemyLevel = 1; - - # generate a commander for the place - $commander = $commanderManager->createVirtualCommander($place); - - $commandersArray = array(); - $commandersArray[0]['name'] = $commander->name; - $commandersArray[0]['avatar'] = $commander->avatar; - $commandersArray[0]['level'] = $commander->level; - $commandersArray[0]['line'] = $commander->line; - $commandersArray[0]['statement'] = $commander->statement; - $commandersArray[0]['pev'] = $commander->getPev(); - $commandersArray[0]['army'] = $commander->getNbrShipByType(); - - $sr->commanders = serialize($commandersArray); - - $antiSpy = $place->maxDanger * 40; - $sr->success = Game::getSpySuccess($antiSpy, $price); - $sr->type = SpyReport::TYP_NOT_CAUGHT; - - break; - case Place::TYP_ORBITALBASE: - # orbitalBase - $orbitalBase = $orbitalBaseManager->get($rPlace); - - $enemy = $playerManager->get($orbitalBase->rPlayer); - - $sr->resources = $orbitalBase->resourcesStorage; - - $sr->typeOfOrbitalBase = $orbitalBase->typeOfBase; - $sr->rEnemy = $orbitalBase->rPlayer; - $sr->enemyName = $enemy->name; - $sr->enemyAvatar = $enemy->avatar; - $sr->enemyLevel = $enemy->level; - - $sr->shipsInStorage = serialize($orbitalBase->shipStorage); - $sr->antiSpyInvest = $orbitalBase->iAntiSpy; - $sr->commercialRouteIncome = $commercialRouteManager->getBaseIncome($orbitalBase); - - $commandersArray = array(); - $commanders = $commanderManager->getBaseCommanders($rPlace, [Commander::AFFECTED, Commander::MOVING]); - - foreach ($commanders as $commander) { - $commandersArray[] = [ - 'name' => $commander->name, - 'avatar' => $commander->avatar, - 'level' => $commander->level, - 'line' => $commander->line, - 'statement' => $commander->statement, - 'pev' => $commander->getPev(), - 'army' => $commander->getNbrShipByType() - ]; - } - $sr->commanders = serialize($commandersArray); - - $antiSpy = $orbitalBase->antiSpyAverage; // entre 100 et 4000 - $sr->success = Game::getSpySuccess($antiSpy, $price); - $sr->type = Game::getTypeOfSpy($sr->success, $antiSpy); - - switch ($sr->type) { - case SpyReport::TYP_ANONYMOUSLY_CAUGHT: - $n = new Notification(); - $n->setRPlayer($orbitalBase->rPlayer); - $n->setTitle('Espionnage détecté'); - $n->addBeg(); - $n->addTxt('Un joueur a espionné votre base '); - $n->addLnk('map/place-' . $orbitalBase->rPlace, $orbitalBase->name)->addTxt('.'); - $n->addBrk()->addTxt('Malheureusement, nous n\'avons pas pu connaître l\'identité de l\'espion.'); - $n->addEnd(); - $notificationManager->add($n); - break; - case SpyReport::TYP_CAUGHT: - $n = new Notification(); - $n->setRPlayer($orbitalBase->rPlayer); - $n->setTitle('Espionnage intercepté'); - $n->addBeg(); - $n->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name'))->addTxt(' a espionné votre base '); - $n->addLnk('map/place-' . $orbitalBase->rPlace, $orbitalBase->name)->addTxt('.'); - $n->addBrk()->addTxt('L\'espion s\'est fait attrapé en train de fouiller dans vos affaires.'); - $n->addEnd(); - $notificationManager->add($n); - break; - default: - break; - } - break; - default: - throw new ErrorException('espionnage pour vaisseau-mère pas encore implémenté'); - } - - $spyReportManager->add($sr); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::SPY_PLANET) { - $tutorialHelper->setStepDone(); - } - - $session->addFlashbag('Espionnage effectué.', Flashbag::TYPE_SUCCESS); - $response->redirect('fleet/view-spyreport/report-' . $sr->id); - } else { - throw new ErrorException('Impossible de lancer un espionnage'); - } - } else { - throw new ErrorException('Impossible de lancer un espionnage avec le montant proposé'); - } -} else { - throw new FormException('Pas assez d\'informations pour espionner'); -} diff --git a/system/action/std/athena/building/build.php b/system/action/std/athena/building/build.php deleted file mode 100755 index 151f03cf2..000000000 --- a/system/action/std/athena/building/build.php +++ /dev/null @@ -1,160 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$request = $this->getContainer()->get('app.request'); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$building = $request->query->get('building'); - -if ($baseId !== FALSE AND $building !== FALSE AND in_array($baseId, $verif)) { - if ($orbitalBaseHelper->isABuilding($building)) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $buildingQueues = $buildingQueueManager->getBaseQueues($baseId); - - $currentLevel = call_user_func(array($ob, 'getReal' . ucfirst($orbitalBaseHelper->getBuildingInfo($building, 'name')) . 'Level')); - $technos = $technologyManager->getPlayerTechnology($session->get('playerId')); - if ($orbitalBaseHelper->haveRights($building, $currentLevel + 1, 'resource', $ob->getResourcesStorage()) - AND $orbitalBaseHelper->haveRights(OrbitalBaseResource::GENERATOR, $ob->getLevelGenerator(), 'queue', count($buildingQueues)) - AND ($orbitalBaseHelper->haveRights($building, $currentLevel + 1, 'buildingTree', $ob) === TRUE) - AND $orbitalBaseHelper->haveRights($building, $currentLevel + 1, 'techno', $technos)) { - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE) { - switch ($session->get('playerInfo')->get('stepTutorial')) { - case TutorialResource::GENERATOR_LEVEL_2: - if ($building == OrbitalBaseResource::GENERATOR AND $currentLevel + 1 >= 2) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::REFINERY_LEVEL_3: - if ($building == OrbitalBaseResource::REFINERY AND $currentLevel + 1 >= 3) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::STORAGE_LEVEL_3: - if ($building == OrbitalBaseResource::STORAGE AND $currentLevel + 1 >= 3) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::DOCK1_LEVEL_1: - if ($building == OrbitalBaseResource::DOCK1 AND $currentLevel + 1 >= 1) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::TECHNOSPHERE_LEVEL_1: - if ($building == OrbitalBaseResource::TECHNOSPHERE AND $currentLevel + 1 >= 1) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::REFINERY_LEVEL_10: - if ($building == OrbitalBaseResource::REFINERY AND $currentLevel + 1 >= 10) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::STORAGE_LEVEL_8: - if ($building == OrbitalBaseResource::STORAGE AND $currentLevel + 1 >= 8) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::DOCK1_LEVEL_6: - if ($building == OrbitalBaseResource::DOCK1 AND $currentLevel + 1 >= 6) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::REFINERY_LEVEL_16: - if ($building == OrbitalBaseResource::REFINERY AND $currentLevel + 1 >= 16) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::STORAGE_LEVEL_12: - if ($building == OrbitalBaseResource::STORAGE AND $currentLevel + 1 >= 12) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::TECHNOSPHERE_LEVEL_6: - if ($building == OrbitalBaseResource::TECHNOSPHERE AND $currentLevel + 1 >= 6) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::DOCK1_LEVEL_15: - if ($building == OrbitalBaseResource::DOCK1 AND $currentLevel + 1 >= 15) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::REFINERY_LEVEL_20: - if ($building == OrbitalBaseResource::REFINERY AND $currentLevel + 1 >= 20) { - $tutorialHelper->setStepDone(); - } - break; - } - } - - # build the new building - $bq = new BuildingQueue(); - $bq->rOrbitalBase = $baseId; - $bq->buildingNumber = $building; - $bq->targetLevel = $currentLevel + 1; - $time = $orbitalBaseHelper->getBuildingInfo($building, 'level', $currentLevel + 1, 'time'); - $bonus = $time * $session->get('playerBonus')->get(PlayerBonus::GENERATOR_SPEED) / 100; - $nbBuildingQueues = count($buildingQueues); - if ($nbBuildingQueues === 0) { - $bq->dStart = Utils::now(); - } else { - $bq->dStart = $buildingQueues[$nbBuildingQueues - 1]->dEnd; - } - $bq->dEnd = Utils::addSecondsToDate($bq->dStart, round($time - $bonus)); - $buildingQueueManager->add($bq); - - # debit resources - $orbitalBaseManager->decreaseResources($ob, $orbitalBaseHelper->getBuildingInfo($building, 'level', $currentLevel + 1, 'resourcePrice')); - - if ($container->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, opt2, weight, dAction) - VALUES(?, ?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 1, $building, $currentLevel + 1, DataAnalysis::resourceToStdUnit($orbitalBaseHelper->getBuildingInfo($building, 'level', $currentLevel + 1, 'resourcePrice')), Utils::now()]); - } - - # add the event in controller - $session->get('playerEvent')->add($bq->dEnd, $container->getParameter('event_base'), $baseId); - - $session->addFlashbag('Construction programmée', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('les conditions ne sont pas remplies pour construire ce bâtiment'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('le bâtiment indiqué n\'est pas valide'); - } -} else { - throw new FormException('pas assez d\'informations pour construire un bâtiment'); -} diff --git a/system/action/std/athena/building/dequeue.php b/system/action/std/athena/building/dequeue.php deleted file mode 100755 index 4cbd642bf..000000000 --- a/system/action/std/athena/building/dequeue.php +++ /dev/null @@ -1,87 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$buildingResourceRefund = $this->getContainer()->getParameter('athena.building.building_queue_resource_refund'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$building = $request->query->get('building'); - - -if ($baseId !== FALSE AND $building !== FALSE AND in_array($baseId, $verif)) { - if ($orbitalBaseHelper->isABuilding($building)) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $buildingQueues = $buildingQueueManager->getBaseQueues($baseId); - - $index = NULL; - $nbBuildingQueues = count($buildingQueues); - for ($i = 0; $i < $nbBuildingQueues; $i++) { - $queue = $buildingQueues[$i]; - # get the last element from the correct building - if ($queue->buildingNumber == $building) { - $index = $i; - $targetLevel = $queue->targetLevel; - $dStart = $queue->dStart; - } - } - - # if it's the first, the next must restart by now - if ($index == 0) { - $dStart = Utils::now(); - } - - if ($index !== NULL) { - # shift - for ($i = $index + 1; $i < $nbBuildingQueues; $i++) { - $queue = $buildingQueues[$i]; - - $oldDate = $queue->dEnd; - $queue->dEnd = Utils::addSecondsToDate($dStart, Utils::interval($queue->dStart, $queue->dEnd, 's')); - $queue->dStart = $dStart; - - // @TODO handle rescheduling - // $scheduler->reschedule($queue, $queue->dEnd, $oldDate); - - $dStart = $queue->dEnd; - } - - // @TODO handle cancellation - // $scheduler->cancel($buildingQueues[$index], $buildingQueues[$index]->dEnd); - $entityManager->remove($buildingQueues[$index]); - $entityManager->flush(BuildingQueue::class); - - // give the resources back - $resourcePrice = $orbitalBaseHelper->getBuildingInfo($building, 'level', $targetLevel, 'resourcePrice'); - $resourcePrice *= $buildingResourceRefund; - $orbitalBaseManager->increaseResources($ob, $resourcePrice, TRUE); - $session->addFlashbag('Construction annulée, vous récupérez le ' . $buildingResourceRefund * 100 . '% du montant investi pour la construction', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('suppression de bâtiment impossible'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('le bâtiment indiqué n\'est pas valide'); - } -} else { - throw new FormException('pas assez d\'informations pour annuler la construction d\'un bâtiment'); -} diff --git a/system/action/std/athena/general/changeBaseType.php b/system/action/std/athena/general/changeBaseType.php deleted file mode 100755 index a3079c9e0..000000000 --- a/system/action/std/athena/general/changeBaseType.php +++ /dev/null @@ -1,448 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); -$recyclingLogManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingLogManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$baseMinLevelForChange = $this->getContainer()->getParameter('athena.obm.change_type_min_level'); -$baseMinLevelForCapital = $this->getContainer()->getParameter('athena.obm.capital_min_level'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$eventDispatcher = $this->getContainer()->get(\Symfony\Contracts\EventDispatcher\EventDispatcherInterface::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$type = $request->query->get('type'); - - -if ($baseId !== FALSE AND $type !== FALSE AND in_array($baseId, $verif)) { - if (($orbitalBase = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $player = $playerManager->get($session->get('playerId')); - - if ($orbitalBase->typeOfBase == OrbitalBase::TYP_NEUTRAL) { - if ($orbitalBase->levelGenerator >= $baseMinLevelForChange) { - switch ($type) { - case OrbitalBase::TYP_COMMERCIAL: - $totalPrice = PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price'); - if ($player->credit >= $totalPrice) { - - $orbitalBase->typeOfBase = $type; - $playerManager->decreaseCredit($player, $totalPrice); - - # change base type in session - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('type', OrbitalBase::TYP_COMMERCIAL); - break; - } - } - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 4, $type, DataAnalysis::creditToStdUnit($totalPrice), Utils::now()]); - } - - $session->addFlashbag($orbitalBase->name . ' est désormais un Centre Industriel', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Evolution de votre colonie impossible - vous n\'avez pas assez de crédits'); - } - break; - case OrbitalBase::TYP_MILITARY: - $totalPrice = PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price'); - if ($player->credit >= $totalPrice) { - - $orbitalBase->typeOfBase = $type; - $playerManager->decreaseCredit($player, $totalPrice); - - # change base type in session - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('type', OrbitalBase::TYP_MILITARY); - break; - } - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 4, $type, DataAnalysis::creditToStdUnit($totalPrice), Utils::now()]); - } - - $session->addFlashbag($orbitalBase->name . ' est désormais une Base Militaire', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Evolution de votre colonie impossible - vous n\'avez pas assez de crédits'); - } - break; - default : - throw new ErrorException('Modification du type de la base orbitale impossible (seulement commercial ou militaire)'); - } - } else { - throw new ErrorException('Evolution de votre colonie impossible - niveau du générateur pas assez élevé'); - } - } elseif ($orbitalBase->typeOfBase == OrbitalBase::TYP_COMMERCIAL OR $orbitalBase->typeOfBase == OrbitalBase::TYP_MILITARY) { - if ($type == OrbitalBase::TYP_CAPITAL) { - if ($orbitalBase->levelGenerator >= $baseMinLevelForCapital) { - $playerBases = $orbitalBaseManager->getPlayerBases($session->get('playerId')); - - $capitalQuantity = 0; - foreach ($playerBases as $playerBase) { - if ($playerBase->typeOfBase == OrbitalBase::TYP_CAPITAL) { - $capitalQuantity++; - } - } - if ($capitalQuantity == 0) { - $totalPrice = PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'price'); - if ($player->credit >= $totalPrice) { - $orbitalBase->typeOfBase = $type; - $playerManager->decreaseCredit($player, $totalPrice); - - # change base type in session - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('type', OrbitalBase::TYP_CAPITAL); - break; - } - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 4, $type, DataAnalysis::creditToStdUnit($totalPrice), Utils::now()]); - } - $session->addFlashbag($orbitalBase->name . ' est désormais une capitale.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Modification du type de la base orbitale impossible - vous n\'avez pas assez de crédits'); - } - } else { - throw new ErrorException('Vous ne pouvez pas avoir plus d\'une Capitale. Sauf si vous en conquérez à vos ennemis bien sûr.'); - } - } else { - throw new ErrorException('Pour transformer votre base en capitale, vous devez augmenter votre générateur jusqu\'au niveau ' . $baseMinLevelForCapital . '.'); - } - } elseif (($orbitalBase->typeOfBase == OrbitalBase::TYP_COMMERCIAL AND $type == OrbitalBase::TYP_MILITARY) - OR ($orbitalBase->typeOfBase == OrbitalBase::TYP_MILITARY AND $type == OrbitalBase::TYP_COMMERCIAL)) { - # commercial --> military OR military --> commercial - if ($type == OrbitalBase::TYP_COMMERCIAL) { - $totalPrice = PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price'); - } else { - $totalPrice = PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price'); - } - if ($player->credit >= $totalPrice) { - $canChangeBaseType = TRUE; - if ($type == OrbitalBase::TYP_COMMERCIAL) { - # delete all recycling missions and logs - $recyclingMissionManager->removeBaseMissions($orbitalBase->rPlace); - - # verify if fleets are moving or not - # transfer to the mess the extra commanders and change line if needed - $firstLineCommanders = $commanderManager->getCommandersByLine($orbitalBase->rPlace, 1); - $totalQtyLine1 = count($firstLineCommanders); - $movingQtyLine1 = 0; - foreach ($firstLineCommanders as $commander) { - if ($commander->statement == Commander::MOVING) { - $movingQtyLine1++; - } - } - $secondLineCommanders = $commanderManager->getCommandersByLine($orbitalBase->rPlace, 2); - $totalQtyLine2 = count($secondLineCommanders); - $movingQtyLine2 = 0; - foreach ($secondLineCommanders as $commander) { - if ($commander->statement == Commander::MOVING) { - $movingQtyLine2++; - } - } - - $totalQty = $totalQtyLine1 + $totalQtyLine2; - $movingQty = $movingQtyLine1 + $movingQtyLine2; - - if ($totalQty >= 2) { - switch ($movingQty){ - case 2 : - $line1 = FALSE; - $line2 = FALSE; - foreach ($firstLineCommanders as $commander) { - if ($commander->statement == Commander::MOVING) { - if ($line1) { - # move to line 2 - $commander->line = 2; - $line2 = TRUE; - continue; - } - # stay on line 1 - $line1 = TRUE; - continue; - } - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - foreach ($secondLineCommanders as $commander) { - if ($commander->statement == Commander::MOVING) { - if ($line2) { - # move to line 1 - $commander->line = 1; - $line1 = TRUE; - continue; - } - # stay on line 2 - $line2 = TRUE; - continue; - } - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - break; - case 1 : - if ($movingQtyLine1 == 1) { - if ($totalQtyLine1 >= 1 && $totalQtyLine2 >= 1) { - // let stay one cmder on each line - foreach ($firstLineCommanders as $commander) { - if ($commander->statement != Commander::MOVING) { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - $line2 = FALSE; - foreach ($secondLineCommanders as $commander) { - if (!$line2) { - $line2 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } else { - // change line of one from line 1 to 2 - $line2 = FALSE; - foreach ($firstLineCommanders as $commander) { - if ($commander->statement != Commander::MOVING) { - if (!$line2) { - $line2 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } - } - } else { # $movingQtyLine2 == 1 - if ($totalQtyLine1 >= 1 && $totalQtyLine2 >= 1) { - // let stay one cmder on each line - foreach ($secondLineCommanders as $commander) { - if ($commander->statement != Commander::MOVING) { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - $line1 = FALSE; - foreach ($firstLineCommanders as $commander) { - if (!$line1) { - $line1 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } else { - // change line of one from line 2 to 1 - $line1 = FALSE; - foreach ($firstLineCommanders as $commander) { - if ($commander->statement != Commander::MOVING) { - if (!$line1) { - $line1 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } - } - } - break; - case 0 : - if ($totalQtyLine1 == 0) { - # one from line 2 to line 1 - $line1 = FALSE; - $line2 = FALSE; - foreach ($firstLineCommanders as $commander) { - if (!$line1) { - $line1 = TRUE; - } else if (!$line2) { - # move one to line 2 - $commander->line = 2; - $line2 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } else if ($totalQtyLine2 == 0) { - # one from line 1 to line 2 - $line1 = FALSE; - $line2 = FALSE; - foreach ($secondLineCommanders as $commander) { - if (!$line2) { - $line2 = TRUE; - } else if (!$line1) { - # move one to line 1 - $commander->line = 1; - $line1 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } else { - # one on each line - $line1 = FALSE; - foreach ($firstLineCommanders as $commander) { - if (!$line1) { - $line1 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - $line2 = FALSE; - foreach ($secondLineCommanders as $commander) { - if (!$line2) { - $line2 = TRUE; - } else { - # move to the mess - $commander->statement = Commander::RESERVE; - $commanderManager->emptySquadrons($commander); - } - } - } - break; - default : - # the user can't change base type to commercial right now ! - $canChangeBaseType = FALSE; - } - } else { - if ($totalQtyLine1 == 2) { - # switch one from line 1 to line 2 - $firstLineCommanders[0]->line = 2; - } - if ($totalQtyLine2 == 2) { - # switch one from line 2 to line 1 - $secondLineCommanders[1]->line = 1; - } - } - } - if ($canChangeBaseType) { - $playerManager->decreaseCredit($player, $totalPrice); - $orbitalBase->typeOfBase = $type; - # delete commercial buildings - for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; $i++) { - $maxLevel = $orbitalBaseHelper->getBuildingInfo($i, 'maxLevel', $type); - if ($orbitalBase->getBuildingLevel($i) > $maxLevel) { - $orbitalBase->setBuildingLevel($i, $maxLevel); - } - } - # delete buildings in queue - $buildingQueues = $buildingQueueManager->getBaseQueues($baseId); - foreach ($buildingQueues as $buildingQueue) { - $entityManager->remove($buildingQueue); - } - $entityManager->flush(); - # send the right alert - if ($type == OrbitalBase::TYP_COMMERCIAL) { - # change base type in session - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('type', OrbitalBase::TYP_COMMERCIAL); - break; - } - } - $session->addFlashbag('Votre Base Militaire devient un Centre Commerciale. Vos bâtiments militaires superflus sont détruits.', Flashbag::TYPE_SUCCESS); - } else { - # change base type in session - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('type', OrbitalBase::TYP_MILITARY); - break; - } - } - $session->addFlashbag('Votre Centre Industriel devient une Base Militaire. Vos bâtiments commerciaux superflus sont détruits.', Flashbag::TYPE_SUCCESS); - } - } else { - throw new ErrorException('modification du type de la base orbitale impossible - vous avez trop de flottes en mouvement pour changer votre base en Centre Industriel'); - } - } else { - throw new ErrorException('modification du type de la base orbitale impossible - vous n\'avez pas assez de crédits'); - } - } else { - throw new ErrorException('modification du type de la base orbitale impossible (seulement capitale, commercial ou militaire)'); - } - } elseif ($orbitalBase->typeOfBase == OrbitalBase::TYP_CAPITAL) { - /*switch ($type) { - case OrbitalBase::TYP_COMMERCIAL: - $orbitalBase->typeOfBase = $type; - # casser les bâtiments en trop - # killer la file de construction - throw new ErrorException('Votre base orbitale devient commerciale.', ALERT_STD_SUCCESS); - break; - case OrbitalBase::TYP_MILITARY: - $orbitalBase->typeOfBase = $type; - # casser les bâtiments en trop - # killer la file de construction - throw new ErrorException('Votre base orbitale devient militaire.', ALERT_STD_SUCCESS); - break; - default : - throw new ErrorException('modification du type de la base orbitale impossible (seulement commercial ou militaire)', ALERT_STD_ERROR); - break; - }*/ - throw new ErrorException('modification du type de la base orbitale impossible - c\'est déjà une capitale !'); - } else { - throw new ErrorException('modification du type de la base orbitale impossible - type invalide'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } -} else { - throw new FormException('pas assez d\'informations pour changer le type de la base orbitale'); -} -$entityManager->flush(); -$entityManager->getRepository(OrbitalBase::class)->updateBuildingLevels($orbitalBase); -$eventDispatcher->dispatch(new PlaceOwnerChangeEvent($placeManager->get($orbitalBase->getId())), PlaceOwnerChangeEvent::NAME); diff --git a/system/action/std/athena/general/createSchoolClass.php b/system/action/std/athena/general/createSchoolClass.php deleted file mode 100755 index d130e714d..000000000 --- a/system/action/std/athena/general/createSchoolClass.php +++ /dev/null @@ -1,94 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$school = $request->query->get('school'); -$name = $request->request->get('name'); - -$cn = new CheckName(); -$cn->maxLength = 20; - -if ($baseId !== FALSE AND $school !== FALSE AND $name !== FALSE AND in_array($baseId, $verif)) { - if (($orbitalBase = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $schoolCommanders = $commanderManager->getBaseCommanders($baseId, [Commander::INSCHOOL]); - - if (count($schoolCommanders) < PlaceResource::get($orbitalBase->typeOfBase, 'school-size')) { - $reserveCommanders = $commanderManager->getBaseCommanders($baseId, [Commander::RESERVE]); - - if (count($reserveCommanders) < OrbitalBase::MAXCOMMANDERINMESS) { - $school = intval($school); - $nbrCommandersToCreate = rand(SchoolClassResource::getInfo($school, 'minSize'), SchoolClassResource::getInfo($school, 'maxSize')); - - if ($cn->checkLength($name) && $cn->checkChar($name)) { - if (SchoolClassResource::getInfo($school, 'credit') <= $session->get('playerInfo')->get('credit')) { - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::CREATE_COMMANDER) { - $tutorialHelper->setStepDone(); - } - - # débit des crédits au joueur - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), SchoolClassResource::getInfo($school, 'credit')); - - for ($i = 0; $i < $nbrCommandersToCreate; $i++) { - $newCommander = new Commander(); - $commanderManager->upExperience($newCommander, rand(SchoolClassResource::getInfo($school, 'minExp'), SchoolClassResource::getInfo($school, 'maxExp'))); - $newCommander->rPlayer = $session->get('playerId'); - $newCommander->rBase = $baseId; - $newCommander->palmares = 0; - $newCommander->statement = 0; - $newCommander->name = $name; - $newCommander->avatar = 't' . rand(1, 21) . '-c' . $session->get('playerInfo')->get('color'); - $newCommander->dCreation = Utils::now(); - $newCommander->uCommander = Utils::now(); - $newCommander->setSexe(1); - $newCommander->setAge(rand(40, 70)); - $entityManager->persist($newCommander); - $entityManager->flush($newCommander); - } - $session->addFlashbag($nbrCommandersToCreate . ' commandant' . Format::addPlural($nbrCommandersToCreate) . ' inscrit' . Format::addPlural($nbrCommandersToCreate) . ' au programme d\'entraînement.', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('vous n\'avez pas assez de crédit.'); - } - } else { - throw new FormException('le nom contient des caractères non autorisé ou trop de caractères.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas créer de nouveaux officiers si vous en avez déjà ' . Orbitalbase::MAXCOMMANDERINMESS . ' ou plus.'); - } - } else { - throw new ErrorException('Trop d\'officiers en formation. Déplacez des officiers dans le mess pour libérer de la place.'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } -} diff --git a/system/action/std/athena/general/giveResource.php b/system/action/std/athena/general/giveResource.php deleted file mode 100755 index 52099f55d..000000000 --- a/system/action/std/athena/general/giveResource.php +++ /dev/null @@ -1,123 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$otherBaseId = $request->request->get('otherbaseid'); -$quantity = $request->request->get('quantity'); - -if ($baseId !== FALSE AND $otherBaseId !== FALSE AND $quantity !== FALSE AND in_array($baseId, $verif)) { - if ($baseId != $otherBaseId) { - - $resource = intval($quantity); - - if (($orbitalBase = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - if ($resource > 0) { - if ($orbitalBase->getResourcesStorage() >= $resource) { - //--------------------------- - # controler le nombre de vaisseaux - # verif : have we enough commercialShips - $totalShips = $orbitalBaseHelper->getBuildingInfo(6, 'level', $orbitalBase->getLevelCommercialPlateforme(), 'nbCommercialShip'); - $usedShips = 0; - - foreach ($orbitalBase->commercialShippings as $commercialShipping) { - if ($commercialShipping->rBase == $orbitalBase->rPlace) { - $usedShips += $commercialShipping->shipQuantity; - } - } - - $remainingShips = $totalShips - $usedShips; - $commercialShipQuantity = Game::getCommercialShipQuantityNeeded(Transaction::TYP_RESOURCE, $resource); - - if ($remainingShips >= $commercialShipQuantity) { - if (($otherBase = $orbitalBaseManager->get($otherBaseId)) !== null) { - # load places to compute travel time - $startPlace = $placeManager->get($orbitalBase->rPlace); - $destinationPlace = $placeManager->get($otherBase->rPlace); - $timeToTravel = Game::getTimeToTravelCommercial($startPlace, $destinationPlace); - $departure = Utils::now(); - $arrival = Utils::addSecondsToDate($departure, $timeToTravel); - - # création du convoi - $cs = new CommercialShipping(); - $cs->rPlayer = $session->get('playerId'); - $cs->rBase = $orbitalBase->rPlace; - $cs->rBaseDestination = $otherBase->rPlace; - $cs->resourceTransported = $resource; - $cs->shipQuantity = $commercialShipQuantity; - $cs->dDeparture = $departure; - $cs->dArrival = $arrival; - $cs->statement = CommercialShipping::ST_GOING; - $commercialShippingManager->add($cs); - - $orbitalBaseManager->decreaseResources($orbitalBase, $resource); - - if ($orbitalBase->getRPlayer() != $otherBase->getRPlayer()) { - $n = new Notification(); - $n->setRPlayer($otherBase->getRPlayer()); - $n->setTitle('Envoi de ressources'); - $n->addBeg()->addTxt($otherBase->getName())->addSep(); - $n->addLnk('embassy/player-' . $placeManager->get('playerId'), $session->get('playerInfo')->get('name')); - $n->addTxt(' a lancé un convoi de ')->addStg(Format::numberFormat($resource))->addTxt(' ressources depuis sa base '); - $n->addLnk('map/place-' . $orbitalBase->getRPlace(), $orbitalBase->getName())->addTxt('. '); - $n->addBrk()->addTxt('Quand le convoi arrivera, les ressources seront à vous.'); - $n->addSep()->addLnk('bases/base-' . $otherBase->getId() . '/view-commercialplateforme/mode-market', 'vers la place du commerce →'); - $n->addEnd(); - $notificationManager->add($n); - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$placeManager->get('playerId'), $otherBase->getRPlayer(), 4, DataAnalysis::resourceToStdUnit($resource), Utils::now()]); - } - - $session->addFlashbag('Ressources envoyées', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('envoi de ressources impossible - erreur dans les bases orbitales'); - } - } else { - throw new ErrorException('envoi de ressources impossible - vous n\'avez pas assez de vaisseaux de transport'); - } - } else { - throw new ErrorException('envoi de ressources impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); - } - } else { - throw new ErrorException('envoi de ressources impossible - il faut envoyer un nombre entier positif'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('envoi de ressources impossible - action inutile, vous ressources sont déjà sur cette base orbitale'); - } -} else { - throw new FormException('pas assez d\'informations pour envoyer des ressources'); -} diff --git a/system/action/std/athena/general/giveShips.php b/system/action/std/athena/general/giveShips.php deleted file mode 100644 index 05db8c382..000000000 --- a/system/action/std/athena/general/giveShips.php +++ /dev/null @@ -1,158 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$otherBaseId = $request->request->get('otherbaseid'); - -if ($baseId !== FALSE AND $otherBaseId !== FALSE AND in_array($baseId, $verif)) { - if ($baseId != $otherBaseId) { - for ($i = 0; $i < ShipResource::SHIP_QUANTITY; $i++) { - if ($request->request->has('identifier-' . $i)) { - $shipType = $i; - $shipName = ShipResource::getInfo($i, 'codeName'); - - if ($request->request->has('quantity-' . $i)) { - $ships = $request->request->get('quantity-' . $i) > 0 - ? $request->request->get('quantity-' . $i) : 1; - $ships = intval($ships); - } - - break; - } - } - - if (isset($shipType) AND isset($ships)) { - if (($orbitalBase = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - if (ShipResource::isAShipFromDock1($shipType) OR ShipResource::isAShipFromDock2($shipType)) { - if ($ships > 0) { - if ($orbitalBase->getShipStorage($shipType) >= $ships) { - $commercialShipQuantity = Game::getCommercialShipQuantityNeeded(Transaction::TYP_SHIP, $ships, $shipType); - $totalShips = $orbitalBaseHelper->getBuildingInfo(6, 'level', $orbitalBase->getLevelCommercialPlateforme(), 'nbCommercialShip'); - $usedShips = 0; - - foreach ($orbitalBase->commercialShippings as $commercialShipping) { - if ($commercialShipping->rBase == $orbitalBase->rPlace) { - $usedShips += $commercialShipping->shipQuantity; - } - } - - $remainingShips = $totalShips - $usedShips; - - if ($remainingShips >= $commercialShipQuantity) { - if (($otherBase = $orbitalBaseManager->get($otherBaseId)) !== null) { - # load places to compute travel time - $startPlace = $placeManager->get($orbitalBase->rPlace); - $destinationPlace = $placeManager->get($otherBase->rPlace); - $timeToTravel = Game::getTimeToTravelCommercial($startPlace, $destinationPlace); - $departure = Utils::now(); - $arrival = Utils::addSecondsToDate($departure, $timeToTravel); - - # création de la transaction - $tr = new Transaction(); - $tr->rPlayer = $session->get('playerId'); - $tr->rPlace = $orbitalBase->rPlace; - $tr->type = Transaction::TYP_SHIP; - $tr->quantity = $ships; - $tr->identifier = $shipType; - $tr->price = 0; - $tr->commercialShipQuantity = $commercialShipQuantity; - $tr->statement = Transaction::ST_COMPLETED; - $tr->dPublication = Utils::now(); - $transactionManager->add($tr); - - # création du convoi - $cs = new CommercialShipping(); - $cs->rPlayer = $session->get('playerId'); - $cs->rBase = $orbitalBase->rPlace; - $cs->rBaseDestination = $otherBase->rPlace; - $cs->rTransaction = $tr->id; - $cs->resourceTransported = 0; - $cs->shipQuantity = $commercialShipQuantity; - $cs->dDeparture = $departure; - $cs->dArrival = $arrival; - $cs->statement = CommercialShipping::ST_GOING; - $commercialShippingManager->add($cs); - - $orbitalBase->setShipStorage($shipType, $orbitalBase->getShipStorage($shipType) - $ships); - - if ($orbitalBase->getRPlayer() != $otherBase->getRPlayer()) { - $n = new Notification(); - $n->setRPlayer($otherBase->getRPlayer()); - $n->setTitle('Envoi de vaisseaux'); - $n->addBeg()->addTxt($otherBase->getName())->addSep(); - $n->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name')); - $n->addTxt(' a lancé un convoi de ')->addStg(Format::numberFormat($ships))->addTxt(' ' . $shipName . ' depuis sa base '); - $n->addLnk('map/place-' . $orbitalBase->getRPlace(), $orbitalBase->getName())->addTxt('. '); - $n->addBrk()->addTxt('Quand le convoi arrivera, les vaisseaux seront placés dans votre hangar.'); - $n->addSep()->addLnk('bases/base-' . $otherBase->getId() . '/view-commercialplateforme/mode-market', 'vers la place du commerce →'); - $n->addEnd(); - - $notificationManager->add($n); - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class)->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), $otherBase->getRPlayer(), 3, DataAnalysis::resourceToStdUnit(ShipResource::getInfo($shipType, 'resourcePrice') * $ships), Utils::now()]); - } - $session->addFlashbag('Vaisseaux envoyés', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Erreur dans les bases orbitales'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de vaisseaux de transport'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de vaisseaux de ce type'); - } - } else { - throw new ErrorException('Envoi de vaisseaux impossible'); - } - } else { - throw new ErrorException('Vaisseau inconnu'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('erreur système'); - } - } else { - throw new ErrorException('envoi de vaisseau impossible'); - } -} else { - throw new FormException('pas assez d\'informations pour envoyer des vaisseaux'); -} -$entityManager->flush(); diff --git a/system/action/std/athena/general/leaveBase.php b/system/action/std/athena/general/leaveBase.php deleted file mode 100755 index 43752106e..000000000 --- a/system/action/std/athena/general/leaveBase.php +++ /dev/null @@ -1,99 +0,0 @@ - avec message - -# int id id (rPlace) de la base orbitale - -use Asylamba\Classes\Library\Flashbag; -use Asylamba\Classes\Exception\ErrorException; -use Asylamba\Classes\Library\Utils; -use Asylamba\Classes\Library\Format; -use Asylamba\Modules\Athena\Resource\OrbitalBaseResource; -use Asylamba\Modules\Athena\Model\OrbitalBase; -use Asylamba\Modules\Ares\Model\Commander; -use Asylamba\Modules\Gaia\Event\PlaceOwnerChangeEvent; - -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$eventDispatcher = $this->getContainer()->get(\Symfony\Contracts\EventDispatcher\EventDispatcherInterface::class); -$gaiaId = $this->getContainer()->getParameter('id_gaia'); - -$baseId = $request->query->get('id'); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -if (count($verif) > 1) { - $baseCommanders = $commanderManager->getBaseCommanders($baseId); - $areAllFleetImmobile = TRUE; - // @TODO Break when expected result is found in the loop - foreach ($baseCommanders as $commander) { - if ($commander->statement == Commander::MOVING) { - $areAllFleetImmobile = FALSE; - } - } - if ($areAllFleetImmobile) { - if ($baseId != FALSE && in_array($baseId, $verif)) { - if (($base = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - if (Utils::interval(Utils::now(), $base->dCreation, 'h') >= OrbitalBase::COOL_DOWN) { - - # delete buildings in queue - foreach ($base->buildingQueues as $buildingQueue) { - $entityManager->remove($buildingQueue); - } - - # change base type if it is a capital - if ($base->typeOfBase == OrbitalBase::TYP_CAPITAL) { - if (rand(0,1) == 0) { - $newType = OrbitalBase::TYP_COMMERCIAL; - } else { - $newType = OrbitalBase::TYP_MILITARY; - } - # delete extra buildings - for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; $i++) { - $maxLevel = $orbitalBaseHelper->getBuildingInfo($i, 'maxLevel', $newType); - if ($base->getBuildingLevel($i) > $maxLevel) { - $base->setBuildingLevel($i, $maxLevel); - } - } - # change base type - $base->typeOfBase = $newType; - } - $place = $placeManager->get($baseId); - - $orbitalBaseManager->changeOwnerById($baseId, $base, $gaiaId, $baseCommanders); - $place->rPlayer = $gaiaId; - $entityManager->flush(); - $eventDispatcher->dispatch(new PlaceOwnerChangeEvent($place), PlaceOwnerChangeEvent::NAME); - - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($verif[$i] == $baseId) { - unset($verif[$i]); - $verif = array_merge($verif); - } - } - $session->addFlashbag('Base abandonnée', Flashbag::TYPE_SUCCESS); - $response->redirect(Format::actionBuilder('switchbase', $session->get('token'), ['base' => $verif[0]], FALSE)); - } else { - throw new ErrorException('Vous ne pouvez pas abandonner de base dans les ' . OrbitalBase::COOL_DOWN . ' premières relèves.'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('toute les flottes de cette base doivent être immobiles'); - } -} else { - throw new ErrorException('vous ne pouvez pas abandonner votre unique planète'); -} diff --git a/system/action/std/athena/general/renameBase.php b/system/action/std/athena/general/renameBase.php deleted file mode 100755 index c12b5e064..000000000 --- a/system/action/std/athena/general/renameBase.php +++ /dev/null @@ -1,56 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$name = $request->request->get('name'); - -// protection du nouveau nom de la base -$p = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$name = $p->protect($name); - -if ($baseId !== FALSE AND $name !== FALSE AND in_array($baseId, $verif)) { - if (($orbitalBase = $orbitalBaseManager->get($baseId, $session->get('playerId'))) !== null) { - $check = new CheckName(); - $check->setMaxLength(20); - - if ($check->checkLength($name)) { - if ($check->checkChar($name)) { - $orbitalBase->setName($name); - - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('id') == $baseId) { - $session->get('playerBase')->get('ob')->get($i)->add('name', $name); - } - } - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($orbitalBase); - - $session->addFlashbag('Le nom a été changé en ' . $name . ' avec succès', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('modification du nom de la base orbitale impossible - le nom contient des caractères non-autorisés'); - } - } else { - throw new ErrorException('modification du nom de la base orbitale impossible - nom trop long ou trop court'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } -} else { - throw new FormException('pas assez d\'informations pour changer le nom de la base orbitale'); -} diff --git a/system/action/std/athena/general/switchDockMode.php b/system/action/std/athena/general/switchDockMode.php deleted file mode 100755 index 2c4be86f1..000000000 --- a/system/action/std/athena/general/switchDockMode.php +++ /dev/null @@ -1,48 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$dock = $request->query->get('dock'); - - -if ($baseId !== FALSE AND $dock !== FALSE AND in_array($baseId, $verif)) { - if (($base = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) === null) { - $cancel = TRUE; - throw new ErrorException('modification du mode du dock impossible - base inconnue'); - } - switch ($dock) { - case 1: - if ($base->getIsProductionDock1() == 1) { - $base->setIsProductionDock1(0); - } else { - $base->setIsProductionDock1(1); - } - break; - case 2: - if ($base->getIsProductionDock2() == 1) { - $base->setIsProductionDock2(0); - } else { - $base->setIsProductionDock2(1); - } - break; - default: - throw new ErrorException('modification du mode du dock impossible - dock inconnue'); - break; - } -} else { - throw new FormException('pas assez d\'informations pour changer le mode du dock'); -} diff --git a/system/action/std/athena/general/updateInvest.php b/system/action/std/athena/general/updateInvest.php deleted file mode 100755 index 0d0ab2fd8..000000000 --- a/system/action/std/athena/general/updateInvest.php +++ /dev/null @@ -1,53 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$credit = $request->request->get('credit'); -$category = $request->query->get('category'); - - -if ($baseId !== FALSE AND $credit !== FALSE AND $category !== FALSE AND in_array($baseId, $verif)) { - if (($base = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - switch ($category) { - case 'school': - if ($credit <= 50000) { - $base->setISchool((int) $credit); - $session->addFlashbag('L\'investissement dans l\'école de commandement de votre base ' . $base->getName() . ' a été modifié', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('La limite maximale d\'investissement dans l\'école de commandement est de 50\'000 crédits.'); - } - break; - case 'antispy': - if ($credit <= 100000) { - $base->setIAntiSpy((int) $credit); - $session->addFlashbag('L\'investissement dans l\'anti-espionnage sur votre base ' . $base->getName() . ' a été modifié', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('La limite maximale d\'investissement dans l\'anti-espionnage est de 100\'000 crédits.'); - } - break; - default: - throw new ErrorException('modification d\'investissement impossible'); - } - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($base); - } else { - throw new ErrorException('modification d\'investissement impossible - base inconnue'); - } -} else { - throw new FormException('pas assez d\'informations pour modifier un investissement'); -} diff --git a/system/action/std/athena/recycling/addToMission.php b/system/action/std/athena/recycling/addToMission.php deleted file mode 100644 index 240625383..000000000 --- a/system/action/std/athena/recycling/addToMission.php +++ /dev/null @@ -1,66 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} -$missionId = (int) $request->query->get('id'); -$rPlace = $request->query->get('place'); -$quantity = $request->request->get('quantity'); - -if ($rPlace !== FALSE AND !empty($missionId) AND $quantity !== FALSE AND in_array($rPlace, $verif)) { - - if ($quantity > 0) { - if (($base = $orbitalBaseManager->get($rPlace)) !== null) { - $maxRecyclers = $orbitalBaseHelper->getInfo(OrbitalBaseResource::RECYCLING, 'level', $base->levelRecycling, 'nbRecyclers'); - $usedRecyclers = 0; - - $baseMissions = $recyclingMissionManager->getBaseActiveMissions($rPlace); - - foreach ($baseMissions as $mission) { - $usedRecyclers += $mission->recyclerQuantity + $mission->addToNextMission; - } - - if ($maxRecyclers - $usedRecyclers >= $quantity) { - - $mission = NULL; - foreach ($baseMissions as $baseMission) { - if ($baseMission->id === $missionId && $baseMission->statement === RecyclingMission::ST_ACTIVE) { - $mission = $baseMission; - break; - } - } - if ($mission !== NULL) { - $mission->addToNextMission += $quantity; - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($mission); - $session->addFlashbag('Vos recycleurs ont bien été affectés, ils seront ajoutés à la prochaine mission.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Il y a un problème, la mission est introuvable. Veuillez contacter un administrateur.'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de recycleurs libres pour lancer cette mission.'); - } - } else { - throw new ErrorException('cette base orbitale ne vous appartient pas'); - } - } else { - throw new FormException('Ca va être dur de recycler avec autant peu de recycleurs. Entrez un nombre plus grand que zéro.'); - } -} else { - throw new FormException('pas assez d\'informations pour créer une mission de recyclage'); -} diff --git a/system/action/std/athena/recycling/cancelMission.php b/system/action/std/athena/recycling/cancelMission.php deleted file mode 100755 index 95a192db8..000000000 --- a/system/action/std/athena/recycling/cancelMission.php +++ /dev/null @@ -1,38 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$missionId = $request->query->get('id'); -$rPlace = (int) $request->query->get('place'); - -if ($missionId !== FALSE AND !empty($rPlace) AND in_array($rPlace, $verif)) { - if (($base = $orbitalBaseManager->get($rPlace)) !== null) { - if (($mission = $recyclingMissionManager->get($missionId)) !== null && $mission->statement = RecyclingMission::ST_ACTIVE && $mission->rBase === $rPlace) { - $mission->statement = RecyclingMission::ST_BEING_DELETED; - $session->addFlashbag('Ordre de mission annulé.', Flashbag::TYPE_SUCCESS); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($mission); - } else { - throw new ErrorException('impossible de supprimer la mission.'); - } - } else { - throw new ErrorException('cette base orbitale ne vous appartient pas'); - } -} else { - throw new FormException('pas assez d\'informations pour supprimer une mission de recyclage'); -} diff --git a/system/action/std/athena/recycling/createMission.php b/system/action/std/athena/recycling/createMission.php deleted file mode 100755 index 7557912fd..000000000 --- a/system/action/std/athena/recycling/createMission.php +++ /dev/null @@ -1,82 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$rPlace = $request->query->get('rplace'); -$rTarget = $request->query->get('rtarget'); -$quantity = $request->request->get('quantity'); - -if ($rPlace !== FALSE AND $rTarget !== FALSE AND $quantity !== FALSE AND in_array($rPlace, $verif)) { - if ($quantity > 0) { - if (($base = $orbitalBaseManager->get($rPlace)) !== null) { - $maxRecyclers = $orbitalBaseHelper->getInfo(OrbitalBaseResource::RECYCLING, 'level', $base->levelRecycling, 'nbRecyclers'); - $usedRecyclers = 0; - - $baseMissions = $recyclingMissionManager->getBaseActiveMissions($rPlace); - - foreach ($baseMissions as $mission) { - $usedRecyclers += $mission->recyclerQuantity; - $usedRecyclers += $mission->addToNextMission; - } - - if ($maxRecyclers - $usedRecyclers >= $quantity) { - if (($startPlace = $placeManager->get($rPlace)) !== null && ($destinationPlace = $placeManager->get($rTarget)) !== null) { - if ($destinationPlace->rPlayer == NULL AND in_array($destinationPlace->typeOfPlace, [2, 3, 4 ,5])) { - $travelTime = Game::getTimeToTravel($startPlace, $destinationPlace); - - if ($session->get('playerInfo')->get('color') == $destinationPlace->sectorColor || $destinationPlace->sectorColor == ColorResource::NO_FACTION) { - # create mission - $rm = new RecyclingMission(); - $rm->rBase = $rPlace; - $rm->rTarget = $rTarget; - $rm->cycleTime = (2 * $travelTime) + RecyclingMission::RECYCLING_TIME; - $rm->recyclerQuantity = $quantity; - $rm->uRecycling = Utils::addSecondsToDate(Utils::now(), $rm->cycleTime); - $rm->statement = RecyclingMission::ST_ACTIVE; - $recyclingMissionManager->add($rm); - - $session->addFlashbag('Votre mission a été lancée.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Vous pouvez recycler uniquement dans les secteurs de votre faction ainsi que dans les secteurs neutres.'); - } - } else { - throw new ErrorException('On ne peut pas recycler ce lieu, petit hacker.'); - } - } else { - throw new ErrorException('Il y a un problème avec le lieu de départ ou d\'arrivée. Veuillez contacter un administrateur.'); - } - } else { - throw new ErrorException('Vous n\'avez pas assez de recycleurs libres pour lancer cette mission.'); - } - } else { - throw new ErrorException('cette base orbitale ne vous appartient pas'); - } - } else { - throw new FormException('Ca va être dur de recycler avec autant peu de recycleurs. Entrez un nombre plus grand que zéro.'); - } -} else { - throw new FormException('pas assez d\'informations pour créer une mission de recyclage'); -} diff --git a/system/action/std/athena/route/accept.php b/system/action/std/athena/route/accept.php deleted file mode 100755 index b0e099d40..000000000 --- a/system/action/std/athena/route/accept.php +++ /dev/null @@ -1,113 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$routeExperienceCoeff = $this->getContainer()->getParameter('athena.trade.experience_coeff'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$mediaPath = $this->getContainer()->getParameter('media'); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$base = $request->query->get('base'); -$route = $request->query->get('route'); - - -if ($base !== FALSE AND $route !== FALSE AND in_array($base, $verif)) { - $cr = $commercialRouteManager->getByIdAndDistantBase($route, $base); - - if ($cr !== null && $cr->getStatement() == CommercialRoute::PROPOSED) { - $proposerFaction = $colorManager->get($cr->playerColor1); - $acceptorFaction = $colorManager->get($cr->playerColor2); - - if ($proposerFaction->colorLink[$cr->playerColor2] != Color::ENEMY && $acceptorFaction->colorLink[$cr->playerColor1] != Color::ENEMY) { - $proposerBase = $orbitalBaseManager->get($cr->getROrbitalBase()); - $acceptorBase = $orbitalBaseManager->get($cr->getROrbitalBaseLinked()); - - $nbrMaxCommercialRoute = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $acceptorBase->getLevelSpatioport(), 'nbRoutesMax'); - - if ($commercialRouteManager->countBaseActiveAndStandbyRoutes($acceptorBase->getId()) <= $nbrMaxCommercialRoute) { - # compute bonus if the player is from Negore - if ($session->get('playerInfo')->get('color') == ColorResource::NEGORA) { - $price = round($cr->getPrice() - ($cr->getPrice() * ColorResource::BONUS_NEGORA_ROUTE / 100)); - } else { - $price = $cr->getPrice(); - } - - if ($session->get('playerInfo')->get('credit') >= $price) { - # débit des crédits au joueur - $acceptor = $playerManager->get($session->get('playerId')); - $playerManager->decreaseCredit($acceptor, $price); - - # augmentation de l'expérience des deux joueurs - $exp = round($cr->getIncome() * $routeExperienceCoeff); - $playerManager->increaseExperience($acceptor, $exp); - $playerManager->increaseExperience($playerManager->get($proposerBase->getRPlayer()), $exp); - - # activation de la route - $cr->setStatement(CommercialRoute::ACTIVE); - $cr->setDCreation(Utils::now()); - - $n = new Notification(); - $n->setRPlayer($proposerBase->getRPlayer()); - $n->setTitle('Route commerciale acceptée'); - $n->addBeg(); - $n->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name'))->addTxt(' a accepté la route commerciale proposée entre '); - $n->addLnk('map/place-' . $acceptorBase->getRPlace(), $acceptorBase->getName())->addTxt(' et '); - $n->addLnk('map/place-' . $proposerBase->getRPlace(), $proposerBase->getName()); - $n->addSep()->addTxt('Cette route vous rapporte ' . Format::numberFormat($cr->getIncome()) . ' crédits par relève.'); - $n->addBrk()->addBoxResource('xp', $exp, 'expérience gagnée', $mediaPath); - $n->addSep()->addLnk('action/a-switchbase/base-' . $proposerBase->getRPlace() . '/page-spatioport', 'En savoir plus ?'); - $n->addEnd(); - $notificationManager->add($n); - - $entityManager->flush(); - $entityManager->clear(CommercialRoute::class); - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$cr->playerId1, $cr->playerId2, 6, DataAnalysis::creditToStdUnit($cr->price), Utils::now()]); - } - - $session->addFlashbag('Route commerciale acceptée, vous gagnez ' . $exp . ' points d\'expérience', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('impossible d\'accepter une route commerciale'); - } - } else { - throw new ErrorException('impossible d\'accepter une route commerciale'); - } - } else { - throw new ErrorException('Vous ne pouvez pas accepter les routes de ce joueur, vos deux factions sont en guerre'); - } - } else { - throw new ErrorException('impossible d\'accepter une route commerciale'); - } -} else { - throw new FormException('pas assez d\'informations pour accepter une route commerciale'); -} diff --git a/system/action/std/athena/route/cancel.php b/system/action/std/athena/route/cancel.php deleted file mode 100755 index a7af4ba3d..000000000 --- a/system/action/std/athena/route/cancel.php +++ /dev/null @@ -1,58 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$routeCancelRefund = $this->getContainer()->getParameter('athena.trade.route.cancellation_refund'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$base = $request->query->get('base'); -$route = $request->query->get('route'); - -if ($base !== FALSE AND $route !== FALSE AND in_array($base, $verif)) { - $cr = $commercialRouteManager->getByIdAndBase($route, $base); - if ($cr !== null && $cr->getStatement() == CommercialRoute::PROPOSED) { - $proposerBase = $orbitalBaseManager->get($cr->getROrbitalBase()); - $linkedBase = $orbitalBaseManager->get($cr->getROrbitalBaseLinked()); - - //rend 80% des crédits investis - $playerManager->increaseCredit($playerManager->get($session->get('playerId')), round($cr->getPrice() * $routeCancelRefund)); - - //notification - $n = new Notification(); - $n->setRPlayer($linkedBase->getRPlayer()); - $n->setTitle('Route commerciale annulée'); - - $n->addBeg()->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name'))->addTxt(' a finalement retiré la proposition de route commerciale qu\'il avait faite entre '); - $n->addLnk('map/place-' . $linkedBase->getRPlace(), $linkedBase->getName())->addTxt(' et '); - $n->addLnk('map/place-' . $proposerBase->getRPlace(), $proposerBase->getName()); - $n->addEnd(); - $notificationManager->add($n); - - //destruction de la route - $commercialRouteManager->remove($cr); - $session->addFlashbag('Route commerciale annulée. Vous récupérez les ' . $routeCancelRefund * 100 . '% du montant investi.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('impossible d\'annuler une route commerciale'); - } -} else { - throw new FormException('pas assez d\'informations pour annuler une route commerciale'); -} -$entityManager->flush(); diff --git a/system/action/std/athena/route/delete.php b/system/action/std/athena/route/delete.php deleted file mode 100755 index 8b79aafcd..000000000 --- a/system/action/std/athena/route/delete.php +++ /dev/null @@ -1,83 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$routeExperienceCoeff = $this->getContainer()->getParameter('athena.trade.experience_coeff'); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$base = $request->query->get('base'); -$route = $request->query->get('route'); - -if ($base !== FALSE AND $route !== FALSE AND in_array($base, $verif)) { - $cr = $commercialRouteManager->get($route); - if ($cr !== null && in_array($cr->statement, [CommercialRoute::ACTIVE, CommercialRoute::STANDBY])) { - if ($cr->playerId1 == $session->get('playerId') || $cr->playerId2 == $session->get('playerId')) { - if ($cr->getROrbitalBase() == $base OR $cr->getROrbitalBaseLinked() == $base) { - $proposerBase = $orbitalBaseManager->get($cr->getROrbitalBase()); - $linkedBase = $orbitalBaseManager->get($cr->getROrbitalBaseLinked()); - if ($cr->getROrbitalBase() == $base) { - $notifReceiver = $linkedBase->getRPlayer(); - $myBaseName = $proposerBase->getName(); - $otherBaseName = $linkedBase->getName(); - $myBaseId = $proposerBase->getRPlace(); - $otherBaseId = $linkedBase->getRPlace(); - } else { //if ($cr->getROrbitalBaseLinked == $base) { - $notifReceiver = $proposerBase->getRPlayer(); - $myBaseName = $linkedBase->getName(); - $otherBaseName = $proposerBase->getName(); - $myBaseId = $linkedBase->getRPlace(); - $otherBaseId = $proposerBase->getRPlace(); - } - - # perte du prestige pour les joueurs Négoriens - # @TODO check if this code is used somewhere or not -// $S_PAM1 = $playerManager->getCurrentSession(); -// $playerManager->newSession(); -// $playerManager->load(array('id' => array($cr->playerId1, $cr->playerId2))); -// $exp = round($cr->getIncome() * $routeExperienceCoeff); -// -// $playerManager->changeSession($S_PAM1); - //notification - $n = new Notification(); - $n->setRPlayer($notifReceiver); - $n->setTitle('Route commerciale détruite'); - $n->addBeg()->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name'))->addTxt(' annule les accords commerciaux entre '); - $n->addLnk('map/place-' . $myBaseId, $myBaseName)->addTxt(' et '); - $n->addLnk('map/place-' . $otherBaseId, $otherBaseName)->addTxt('.'); - $n->addSep()->addTxt('La route commerciale qui liait les deux bases orbitales est détruite, elle ne vous rapporte donc plus rien !'); - $n->addEnd(); - $notificationManager->add($n); - - //destruction de la route - $commercialRouteManager->remove($cr); - - $session->addFlashbag('Route commerciale détruite', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('impossible de supprimer une route commerciale'); - } - } else { - throw new ErrorException('cette route ne vous appartient pas'); - } - } else { - throw new ErrorException('impossible de supprimer une route commerciale'); - } -} else { - throw new FormException('pas assez d\'informations pour supprimer une route commerciale'); -} diff --git a/system/action/std/athena/route/propose.php b/system/action/std/athena/route/propose.php deleted file mode 100755 index b3fb41fd5..000000000 --- a/system/action/std/athena/route/propose.php +++ /dev/null @@ -1,122 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$routeColorBonus = $this->getContainer()->getParameter('athena.trade.route.color_bonus'); -$routeSectorBonus = $this->getContainer()->getParameter('athena.trade.route.sector_bonus'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} -$baseFrom = $request->query->get('basefrom'); -$baseTo = $request->query->get('baseto'); - -if ($baseFrom !== FALSE AND $baseTo !== FALSE AND in_array($baseFrom, $verif)) { - $proposerBase = $orbitalBaseManager->get($baseFrom); - $otherBase = $orbitalBaseManager->get($baseTo); - - $nbrMaxCommercialRoute = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $proposerBase->getLevelSpatioport(), 'nbRoutesMax'); - - // Check if a route already exists between these two bases - $alreadyARoute = $commercialRouteManager->isAlreadyARoute($proposerBase->getId(), $otherBase->getId()); - - if (($commercialRouteManager->countBaseRoutes($proposerBase->getId()) < $nbrMaxCommercialRoute) && (!$alreadyARoute) && ($proposerBase->getLevelSpatioport() > 0) && ($otherBase->getLevelSpatioport() > 0)) { - $player = $playerManager->get($otherBase->getRPlayer()); - - $playerFaction = $colorManager->get($session->get('playerInfo')->get('color')); - $otherFaction = $colorManager->get($player->rColor); - - if ($playerFaction->colorLink[$player->rColor] != Color::ENEMY && $otherFaction->colorLink[$session->get('playerInfo')->get('color')] != Color::ENEMY) { - - if ($proposerBase !== null && $otherBase !== null && ($proposerBase->getRPlayer() != $otherBase->getRPlayer()) && $player !== null) { - $distance = Game::getDistance($proposerBase->getXSystem(), $otherBase->getXSystem(), $proposerBase->getYSystem(), $otherBase->getYSystem()); - $bonusA = ($proposerBase->getSector() != $otherBase->getSector()) ? $routeSectorBonus : 1; - $bonusB = ($session->get('playerInfo')->get('color')) != $player->getRColor() ? $routeColorBonus : 1; - $price = Game::getRCPrice($distance); - $income = Game::getRCIncome($distance, $bonusA, $bonusB); - - if ($distance == 1) { - $imageLink = '1-' . rand(1, 3); - } elseif ($distance < 26) { - $imageLink = '2-' . rand(1, 3); - } elseif ($distance < 126) { - $imageLink = '3-' . rand(1, 3); - } else { - $imageLink = '4-' . rand(1, 3); - } - - # compute bonus - if (in_array(ColorResource::COMMERCIALROUTEPRICEBONUS, $playerFaction->bonus)) { - $priceWithBonus = round($price - ($price * ColorResource::BONUS_NEGORA_ROUTE / 100)); - } else { - $priceWithBonus = $price; - } - - if ($session->get('playerInfo')->get('credit') >= $priceWithBonus) { - # création de la route - $cr = new CommercialRoute(); - $cr->setROrbitalBase($proposerBase->getId()); - $cr->setROrbitalBaseLinked($otherBase->getId()); - $cr->setImageLink($imageLink); - $cr->setDistance($distance); - $cr->setPrice($price); - $cr->setIncome($income); - $cr->setDProposition(Utils::now()); - $cr->setDCreation(NULL); - $cr->setStatement(0); - $commercialRouteManager->add($cr); - - # débit des crédits au joueur - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), $priceWithBonus); - - $n = new Notification(); - $n->setRPlayer($otherBase->getRPlayer()); - $n->setTitle('Proposition de route commerciale'); - $n->addBeg()->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name')); - $n->addTxt(' vous propose une route commerciale liant '); - $n->addLnk('map/place-' . $proposerBase->getRPlace(), $proposerBase->getName())->addTxt(' et '); - $n->addLnk('map/place-' . $otherBase->getRPlace(), $otherBase->getName())->addTxt('.'); - $n->addSep()->addTxt('Les frais de l\'opération vous coûteraient ' . Format::numberFormat($priceWithBonus) . ' crédits; Les gains estimés pour cette route sont de ' . Format::numberFormat($income) . ' crédits par relève.'); - $n->addSep()->addLnk('action/a-switchbase/base-' . $otherBase->getRPlace() . '/page-spatioport', 'En savoir plus ?'); - $n->addEnd(); - $notificationManager->add($n); - - $session->addFlashbag('Route commerciale proposée', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('impossible de proposer une route commerciale - vous n\'avez pas assez de crédits'); - } - } else { - throw new ErrorException('impossible de proposer une route commerciale (2)'); - } - } else { - throw new ErrorException('impossible de proposer une route commerciale à ce joueur, vos factions sont en guerre.'); - } - } else { - throw new ErrorException('impossible de proposer une route commerciale (3)'); - } -} else { - throw new FormException('pas assez d\'informations pour proposer une route commerciale'); -} diff --git a/system/action/std/athena/route/refuse.php b/system/action/std/athena/route/refuse.php deleted file mode 100755 index 875eb0b1c..000000000 --- a/system/action/std/athena/route/refuse.php +++ /dev/null @@ -1,58 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$base = $request->query->get('base'); -$route = $request->query->get('route'); - -if ($base !== FALSE AND $route !== FALSE AND in_array($base, $verif)) { - $cr = $commercialRouteManager->getByIdAndDistantBase($route, $base); - if ($cr !== null && $cr->getStatement() === CommercialRoute::PROPOSED) { - $proposerBase = $orbitalBaseManager->get($cr->getROrbitalBase()); - $refusingBase = $orbitalBaseManager->get($cr->getROrbitalBaseLinked()); - - //rend les crédits au proposant - $playerManager->increaseCredit($playerManager->get($proposerBase->getRPlayer()), intval($cr->getPrice())); - - //notification - $n = new Notification(); - $n->setRPlayer($proposerBase->getRPlayer()); - $n->setTitle('Route commerciale refusée'); - $n->addBeg()->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name'))->addTxt(' a refusé la route commerciale proposée entre '); - $n->addLnk('map/place-' . $refusingBase->getRPlace(), $refusingBase->getName())->addTxt(' et '); - $n->addLnk('map/place-' . $proposerBase->getRPlace(), $proposerBase->getName())->addTxt('.'); - $n->addSep()->addTxt('Les ' . Format::numberFormat($cr->getPrice()) . ' crédits bloqués sont à nouveau disponibles.'); - $n->addEnd(); - $notificationManager->add($n); - - //destruction de la route - $commercialRouteManager->remove($cr); - $session->addFlashbag('Route commerciale refusée', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('impossible de refuser une route commerciale'); - } -} else { - throw new FormException('pas assez d\'informations pour refuser une route commerciale'); -} diff --git a/system/action/std/athena/ship/build.php b/system/action/std/athena/ship/build.php deleted file mode 100755 index 129c5b9d6..000000000 --- a/system/action/std/athena/ship/build.php +++ /dev/null @@ -1,142 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$shipHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\ShipHelper::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$ship = $request->query->get('ship'); -$quantity = $request->query->get('quantity'); - -if ($baseId !== FALSE AND $ship !== FALSE AND $quantity !== FALSE AND in_array($baseId, $verif) AND $quantity != 0) { - if (ShipResource::isAShip($ship)) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - if ($orbitalBaseHelper->isAShipFromDock1($ship)) { - $dockType = 1; - } elseif ($orbitalBaseHelper->isAShipFromDock2($ship)) { - $dockType = 2; - $quantity = 1; - } else { - $dockType = 3; - $quantity = 1; - } - $shipQueues = $shipQueueManager->getByBaseAndDockType($baseId, $dockType); - $nbShipQueues = count($shipQueues); - $technos = $technologyManager->getPlayerTechnology($session->get('playerId')); - if ($shipHelper->haveRights($ship, 'resource', $ob->getResourcesStorage(), $quantity) - AND $shipHelper->haveRights($ship, 'queue', $ob, $nbShipQueues) - AND $shipHelper->haveRights($ship, 'shipTree', $ob) - AND $shipHelper->haveRights($ship, 'pev', $ob, $quantity) - AND $shipHelper->haveRights($ship, 'techno', $technos)) { - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE) { - switch ($session->get('playerInfo')->get('stepTutorial')) { - case TutorialResource::BUILD_SHIP0: - if ($ship == ShipResource::PEGASE) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::BUILD_SHIP1: - if ($ship == ShipResource::SATYRE) { - $tutorialHelper->setStepDone(); - } - break; - } - } - - // construit le(s) nouveau(x) vaisseau(x) - $sq = new ShipQueue(); - $sq->rOrbitalBase = $baseId; - $sq->dockType = $dockType; - $sq->shipNumber = $ship; - $sq->quantity = $quantity; - - $time = ShipResource::getInfo($ship, 'time') * $quantity; - switch ($dockType) { - case 1: - $playerBonus = PlayerBonus::DOCK1_SPEED; - break; - case 2: - $playerBonus = PlayerBonus::DOCK2_SPEED; - break; - case 3: - $playerBonus = PlayerBonus::DOCK3_SPEED; - break; - } - $bonus = $time * $session->get('playerBonus')->get($playerBonus) / 100; - - $sq->dStart = ($nbShipQueues === 0) ? Utils::now() : $shipQueues[$nbShipQueues - 1]->dEnd; - $sq->dEnd = Utils::addSecondsToDate($sq->dStart, round($time - $bonus)); - - $shipQueueManager->add($sq); - - // débit des ressources au joueur - $resourcePrice = ShipResource::getInfo($ship, 'resourcePrice') * $quantity; - if ($ship == ShipResource::CERBERE || $ship == ShipResource::PHENIX) { - if (in_array(ColorResource::PRICEBIGSHIPBONUS, $colorManager->get($session->get('playerInfo')->get('color'))->bonus)) { - $resourcePrice -= round($resourcePrice * ColorResource::BONUS_EMPIRE_CRUISER / 100); - } - } - $orbitalBaseManager->decreaseResources($ob, $resourcePrice); - - // ajout de l'event dans le contrôleur - $session->get('playerEvent')->add($sq->dEnd, $this->getContainer()->getParameter('event_base'), $baseId); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, opt2, weight, dAction) - VALUES(?, ?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 3, $ship, $quantity, DataAnalysis::resourceToStdUnit(ShipResource::getInfo($ship, 'resourcePrice') * $quantity), Utils::now()]); - } - - // alerte - if ($quantity == 1) { - $session->addFlashbag('Construction d\'' . (ShipResource::isAFemaleShipName($ship) ? 'une ' : 'un ') . ShipResource::getInfo($ship, 'codeName') . ' commandée', Flashbag::TYPE_SUCCESS); - } else { - $session->addFlashbag('Construction de ' . $quantity . ' ' . ShipResource::getInfo($ship, 'codeName') . Format::addPlural($quantity) . ' commandée', Flashbag::TYPE_SUCCESS); - } - } else { - throw new ErrorException('les conditions ne sont pas remplies pour construire ce vaisseau'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('construction de vaisseau impossible - vaisseau inconnu'); - } -} else { - throw new FormException('pas assez d\'informations pour construire un vaisseau'); -} diff --git a/system/action/std/athena/ship/dequeue.php b/system/action/std/athena/ship/dequeue.php deleted file mode 100755 index a3a1e6b26..000000000 --- a/system/action/std/athena/ship/dequeue.php +++ /dev/null @@ -1,93 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$shipResourceRefund = $this->getContainer()->getParameter('athena.building.ship_queue_resource_refund'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$queue = $request->query->get('queue'); -$dock = $request->query->get('dock'); - -if ($baseId !== FALSE AND $queue !== FALSE AND $dock !== FALSE AND in_array($baseId, $verif)) { - if (intval($dock) > 0 AND intval($dock) < 4) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $shipQueues = $shipQueueManager->getByBaseAndDockType($baseId, $dock); - $nbShipQueues = count($shipQueues); - - $index = NULL; - for ($i = 0; $i < $nbShipQueues; ++$i) { - $shipQueue = $shipQueues[$i]; - # get the index of the queue - if ($shipQueue->id == $queue) { - $index = $i; - $dStart = $shipQueue->dStart; - $shipNumber = $shipQueue->shipNumber; - $dockType = $shipQueue->dockType; - $quantity = $shipQueue->quantity; - break; - } - } - - # if it's the first, the next must restart by now - if ($index == 0) { - $dStart = Utils::now(); - } - - if ($index !== NULL) { - # shift - for ($i = $index + 1; $i < $nbShipQueues; $i++) { - $shipQueue = $shipQueues[$i]; - - $oldDate = $shipQueue->dEnd; - $shipQueue->dEnd = Utils::addSecondsToDate($dStart, Utils::interval($shipQueue->dStart, $shipQueue->dEnd, 's')); - $shipQueue->dStart = $dStart; - - // @TODO handle rescheduling - // $scheduler->reschedule($shipQueue, $shipQueue->dEnd, $oldDate); - - $dStart = $shipQueue->dEnd; - } - - // @TODO handle cancellation - // $scheduler->cancel($shipQueues[$index], $shipQueues[$index]->dEnd); - $entityManager->remove($shipQueues[$index]); - $entityManager->flush(ShipQueue::class); - // give a part of the resources back - $resourcePrice = ShipResource::getInfo($shipNumber, 'resourcePrice'); - if ($dockType == 1) { - $resourcePrice *= $quantity; - } - $resourcePrice *= $shipResourceRefund; - $orbitalBaseManager->increaseResources($ob, $resourcePrice, TRUE); - $session->addFlashbag('Commande annulée, vous récupérez le ' . $shipResourceRefund * 100 . '% du montant investi pour la construction', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('suppression de vaisseau impossible'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('suppression de vaisseau impossible - chantier invalide'); - } -} else { - throw new FormException('pas assez d\'informations pour enlever un vaisseau de la file d\'attente'); -} diff --git a/system/action/std/athena/ship/recycle.php b/system/action/std/athena/ship/recycle.php deleted file mode 100644 index aec8f237f..000000000 --- a/system/action/std/athena/ship/recycle.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - -$baseId = $request->query->get('baseid'); -$typeOfShip = $request->query->get('typeofship'); -$quantity = $request->request->get('quantity'); - -if ($baseId !== FALSE AND $typeOfShip !== FALSE AND $quantity !== FALSE) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId')))) { - if ($quantity > 0 && $quantity <= $ob->shipStorage[$typeOfShip]) { - $resources = ($quantity * ShipResource::getInfo($typeOfShip, 'resourcePrice')) / 2; - $ob->shipStorage[$typeOfShip] -= $quantity; - $orbitalBaseManager->increaseResources($ob, $resources); - } else { - throw new ErrorException('cette quantité ne correspond pas à votre stock'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } -} else { - throw new FormException('pas assez d\'informations'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($ob); diff --git a/system/action/std/athena/transaction/accept.php b/system/action/std/athena/transaction/accept.php deleted file mode 100755 index a438591e5..000000000 --- a/system/action/std/athena/transaction/accept.php +++ /dev/null @@ -1,150 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$commercialTaxManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$rPlace = $request->query->get('rplace'); -$rTransaction = $request->query->get('rtransaction'); - -if ($rPlace !== FALSE AND $rTransaction !== FALSE AND in_array($rPlace, $verif)) { - $transaction = $transactionManager->get($rTransaction); - - $commercialShipping = $commercialShippingManager->getByTransactionId($rTransaction); - - if ($transaction !== null AND $commercialShipping !== null AND $transaction->statement == Transaction::ST_PROPOSED) { - $base = $orbitalBaseManager->get($rPlace); - - $exportTax = 0; - $importTax = 0; - - #compute total price - $S_CTM1 = $commercialTaxManager->getCurrentSession(); - $commercialTaxManager->newSession(); - $commercialTaxManager->load(array()); - - for ($i = 0; $i < $commercialTaxManager->size(); $i++) { - $comTax = $commercialTaxManager->get($i); - - if ($comTax->faction == $transaction->sectorColor AND $comTax->relatedFaction == $base->sectorColor) { - $exportTax = $comTax->exportTax; - } - if ($comTax->faction == $base->sectorColor AND $comTax->relatedFaction == $transaction->sectorColor) { - $importTax = $comTax->importTax; - } - } - - $exportTax = round($transaction->price * $exportTax / 100); - $importTax = round($transaction->price * $importTax / 100); - - $totalPrice = $transaction->price + $exportTax + $importTax; - - if ($session->get('playerInfo')->get('credit') >= $totalPrice) { - # chargement des joueurs - $buyer = $playerManager->get($session->get('playerId')); - $seller = $playerManager->get($transaction->rPlayer); - - if ($buyer !== null && $seller !== null) { - # transfert des crédits entre joueurs - $playerManager->decreaseCredit($buyer, $totalPrice); - $playerManager->increaseCredit($seller, $transaction->price); - - # transfert des crédits aux alliances - if ($transaction->sectorColor != 0) { - $exportFaction = $colorManager->get($transaction->sectorColor); - $exportFaction->increaseCredit($exportTax); - } - - if ($base->sectorColor != 0) { - $importFaction = $colorManager->get($base->sectorColor); - $importFaction->increaseCredit($importTax); - } - - # gain d'expérience - $experience = $transaction->getExperienceEarned(); - $playerManager->increaseExperience($seller, $experience); - - # load places to compute travel time - $startPlace = $placeManager->get($commercialShipping->rBase); - $destinationPlace = $placeManager->get($rPlace); - $timeToTravel = Game::getTimeToTravelCommercial($startPlace, $destinationPlace); - $departure = Utils::now(); - $arrival = Utils::addSecondsToDate($departure, $timeToTravel); - - # update commercialShipping - $commercialShipping->rBaseDestination = $rPlace; - $commercialShipping->dDeparture = $departure; - $commercialShipping->dArrival = $arrival; - $commercialShipping->statement = CommercialShipping::ST_GOING; - - # update transaction statement - $transaction->statement = Transaction::ST_COMPLETED; - $transaction->dValidation = Utils::now(); - - # update exchange rate - $transaction->currentRate = Game::calculateCurrentRate($transactionManager->getExchangeRate($transaction->type), $transaction->type, $transaction->quantity, $transaction->identifier, $transaction->price); - - # notif pour le proposeur - $n = new Notification(); - $n->setRPlayer($transaction->rPlayer); - $n->setTitle('Transaction validée'); - $n->addBeg()->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name')); - $n->addTxt(' a accepté une de vos propositions dans le marché. Des vaisseaux commerciaux viennent de partir de votre '); - $n->addLnk('map/place-' . $commercialShipping->rBase, 'base')->addTxt(' et se dirigent vers '); - $n->addLnk('map/place-' . $base->getRPlace(), $base->getName())->addTxt(' pour acheminer la marchandise. '); - $n->addSep()->addTxt('Vous gagnez ' . Format::numberFormat($transaction->price) . ' crédits et ' . Format::numberFormat($experience) . ' points d\'expérience.'); - $n->addSep()->addLnk('action/a-switchbase/base-' . $commercialShipping->rBase . '/page-sell', 'En savoir plus ?'); - $n->addEnd(); - $notificationManager->add($n); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$transaction->rPlayer, $session->get('playerId'), $transaction->type, DataAnalysis::creditToStdUnit($transaction->price), Utils::now()]); - } - - $session->addFlashbag('Proposition acceptée. Les vaisseaux commerciaux sont en route vers votre base orbitale.', Flashbag::TYPE_MARKET_SUCCESS); - } else { - throw new ErrorException('erreur dans les propositions sur le marché, joueur inexistant'); - } - } else { - throw new ErrorException('vous n\'avez pas assez de crédits pour accepter cette proposition'); - } - $commercialTaxManager->changeSession($S_CTM1); - } else { - throw new ErrorException('erreur dans les propositions sur le marché'); - } -} else { - throw new FormException('pas assez d\'informations pour accepter une proposition sur le marché'); -} -$entityManager->flush(); diff --git a/system/action/std/athena/transaction/cancel.php b/system/action/std/athena/transaction/cancel.php deleted file mode 100755 index 5d7cd8374..000000000 --- a/system/action/std/athena/transaction/cancel.php +++ /dev/null @@ -1,102 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -$rTransaction = $request->query->get('rtransaction'); - -if ($rTransaction !== FALSE) { - $transaction = $transactionManager->get($rTransaction); - - $commercialShipping = $commercialShippingManager->getByTransactionId($rTransaction); - - if ($transaction !== null AND $commercialShipping !== null AND $transaction->statement == Transaction::ST_PROPOSED AND $transaction->rPlayer == $session->get('playerId')) { - $base = $orbitalBaseManager->get($transaction->rPlace); - - if ($session->get('playerInfo')->get('credit') >= $transaction->getPriceToCancelOffer()) { - if (($player = $playerManager->get($session->get('playerId'))) !== null) { - - $valid = TRUE; - - switch ($transaction->type) { - case Transaction::TYP_RESOURCE : - $maxStorage = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $base->getLevelStorage(), 'storageSpace'); - $storageBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_STORAGE); - if ($storageBonus > 0) { - $maxStorage += ($maxStorage * $storageBonus / 100); - } - $storageSpace = $maxStorage - $base->getResourcesStorage(); - - if ($storageSpace >= $transaction->quantity) { - $orbitalBaseManager->increaseResources($base, $transaction->quantity, TRUE); - } else { - $valid = FALSE; - throw new ErrorException('Vous n\'avez pas assez de place dans votre Stockage pour stocker les ressources. Videz un peu le hangar et revenez plus tard pour annuler cette offre.'); - } - break; - case Transaction::TYP_SHIP : - $orbitalBaseManager->addShipToDock($base, $transaction->identifier, $transaction->quantity); - break; - case Transaction::TYP_COMMANDER : - $commander = $commanderManager->get($transaction->identifier); - $commander->setStatement(Commander::RESERVE); - break; - default : - $valid = FALSE; - } - - if ($valid) { - // débit des crédits au joueur - $playerManager->decreaseCredit($player, $transaction->getPriceToCancelOffer()); - - // annulation de l'envoi commercial (libération des vaisseaux de commerce) - $entityManager->remove($commercialShipping); - - // update transaction statement - $transaction->statement = Transaction::ST_CANCELED; - $transaction->dValidation = Utils::now(); - - switch ($transaction->type) { - case Transaction::TYP_RESOURCE : - $session->addFlashbag('Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et vous récupérez vos ressources.', Flashbag::TYPE_MARKET_SUCCESS); - break; - case Transaction::TYP_SHIP : - $session->addFlashbag('Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et vous récupérez vos vaisseaux de combat.', Flashbag::TYPE_MARKET_SUCCESS); - break; - case Transaction::TYP_COMMANDER : - $session->addFlashbag('Annulation de la proposition commerciale. Les vaisseaux commerciaux sont à nouveau disponibles et votre commandant est placé à l\'école de commandement.', Flashbag::TYPE_MARKET_SUCCESS); - break; - } - } - } else { - throw new ErrorException('erreur dans l\'annulation de proposition sur le marché, joueur inexistant'); - } - } else { - throw new ErrorException('vous n\'avez pas assez de crédits pour annuler la proposition'); - } - } else { - throw new ErrorException('impossible d\'annuler une proposition sur le marché'); - } -} else { - throw new FormException('pas assez d\'informations pour annuler une proposition sur le marché'); -} -$entityManager->flush(); diff --git a/system/action/std/athena/transaction/propose.php b/system/action/std/athena/transaction/propose.php deleted file mode 100755 index 60f9627e5..000000000 --- a/system/action/std/athena/transaction/propose.php +++ /dev/null @@ -1,196 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$rPlace = $request->query->get('rplace'); -$type = $request->query->get('type'); -$quantity = $request->request->get('quantity'); -$identifier = $request->query->get('identifier'); -$price = $request->request->get('price'); - -if ($rPlace !== FALSE AND $type !== FALSE AND $price !== FALSE AND in_array($rPlace, $verif)) { - $valid = TRUE; - - switch ($type) { - case Transaction::TYP_RESOURCE : - if ($quantity !== FALSE AND intval($quantity) > 0) { - $identifier = 0; - } else { - $valid = FALSE; - } - break; - case Transaction::TYP_SHIP : - if ($identifier !== FALSE AND ShipResource::isAShip($identifier)) { - if (ShipResource::isAShipFromDock1($identifier) OR ShipResource::isAShipFromDock2($identifier)) { - if ($quantity === FALSE) { - $quantity = 1; - } else { - if (intval($quantity) < 1) { - $valid = FALSE; - } - } - } else { - $valid = FALSE; - } - } else { - $valid = FALSE; - } - break; - case Transaction::TYP_COMMANDER : - if ($identifier === FALSE OR $identifier < 1) { - $valid = FALSE; - } - break; - default : - $valid = FALSE; - } - if ($valid) { - $minPrice = Game::getMinPriceRelativeToRate($type, $quantity, $identifier); - $maxPrice = Game::getMaxPriceRelativeToRate($type, $quantity, $identifier); - - if ($price < $minPrice) { - throw new ErrorException('Le prix que vous avez fixé est trop bas. Une limite inférieure est fixée selon la catégorie de la vente.'); - } elseif ($price > $maxPrice) { - throw new ErrorException('Le prix que vous avez fixé est trop haut. Une limite supérieure est fixée selon la catégorie de la vente.'); - } else { - $valid = TRUE; - $base = $orbitalBaseManager->get($rPlace); - - if ($valid) { - # verif : have we enough commercialShips - $totalShips = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::COMMERCIAL_PLATEFORME, 'level', $base->getLevelCommercialPlateforme(), 'nbCommercialShip'); - $usedShips = 0; - - foreach ($base->commercialShippings as $commercialShipping) { - if ($commercialShipping->rBase == $rPlace) { - $usedShips += $commercialShipping->shipQuantity; - } - } - - # determine commercialShipQuantity needed - switch ($type) { - case Transaction::TYP_RESOURCE : - if ($base->getResourcesStorage() >= $quantity) { - $commercialShipQuantity = Game::getCommercialShipQuantityNeeded($type, $quantity); - } else { - $valid = FALSE; - } - break; - case Transaction::TYP_SHIP : - $inStorage = $base->getShipStorage($identifier); - if ($inStorage >= $quantity) { - $commercialShipQuantity = Game::getCommercialShipQuantityNeeded($type, $quantity, $identifier); - } else { - $valid = FALSE; - } - break; - case Transaction::TYP_COMMANDER : - $commercialShipQuantity = Game::getCommercialShipQuantityNeeded($type, $quantity); - break; - } - - $remainingShips = $totalShips - $usedShips; - if ($valid) { - if ($remainingShips >= $commercialShipQuantity) { - switch ($type) { - case Transaction::TYP_RESOURCE : - $orbitalBaseManager->decreaseResources($base, $quantity); - break; - case Transaction::TYP_SHIP : - $inStorage = $base->getShipStorage($identifier); - $base->setShipStorage($identifier, $inStorage - $quantity); - break; - case Transaction::TYP_COMMANDER : - if (($commander = $commanderManager->get($identifier)) !== null AND $commander->getRPlayer() == $session->get('playerId') AND $commander->statement !== Commander::ONSALE) { - $commander->statement = Commander::ONSALE; - $commanderManager->emptySquadrons($commander); - } else { - $valid = FALSE; - } - break; - } - - if ($valid) { - # création de la transaction - $tr = new Transaction(); - $tr->rPlayer = $session->get('playerId'); - $tr->rPlace = $rPlace; - $tr->type = $type; - $tr->quantity = $quantity; - $tr->identifier = $identifier; - $tr->price = $price; - $tr->commercialShipQuantity = $commercialShipQuantity; - $tr->statement = Transaction::ST_PROPOSED; - $tr->dPublication = Utils::now(); - $transactionManager->add($tr); - - # création du convoi - $cs = new CommercialShipping(); - $cs->rPlayer = $session->get('playerId'); - $cs->rBase = $rPlace; - $cs->rBaseDestination = 0; - $cs->rTransaction = $tr->id; - $cs->resourceTransported = NULL; - $cs->shipQuantity = $commercialShipQuantity; - $cs->dDeparture = NULL; - $cs->dArrival = NULL; - $cs->statement = CommercialShipping::ST_WAITING; - $commercialShippingManager->add($cs); - - $session->addFlashbag('Votre proposition a été envoyée sur le marché.', Flashbag::TYPE_MARKET_SUCCESS); - } else { - throw new ErrorException('Il y a un problème avec votre commandant.'); - } - } else { - throw new FormException('Vous n\'avez pas assez de vaisseaux de transport disponibles.'); - } - } else { - switch ($type) { - case Transaction::TYP_RESOURCE : - throw new FormException('Vous n\'avez pas assez de ressources en stock.'); - case Transaction::TYP_SHIP : - throw new FormException('Vous n\'avez pas assez de vaisseaux.'); - default: - throw new ErrorException('Erreur pour une raison étrange, contactez un administrateur.'); - } - } - } else { - throw new ErrorException('impossible de faire une proposition sur le marché !'); - } - } - } else { - throw new ErrorException('impossible de faire une proposition sur le marché'); - } -} else { - throw new FormException('pas assez d\'informations pour faire une proposition sur le marché'); -} -$entityManager->flush(); diff --git a/system/action/std/common/discordRequest.php b/system/action/std/common/discordRequest.php deleted file mode 100644 index 7c457d3d4..000000000 --- a/system/action/std/common/discordRequest.php +++ /dev/null @@ -1,56 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$discordId = $request->request->get('discord-id'); - -if ($discordId !== FALSE AND $discordId !== '') { - - $chickenBot = 'http://chickenbot.cloudapp.net:8080/register'; - - $data = array("discordId" => $discordId, "server" => "s" . $this->getContainer()->getParameter('server_id'), "username" => $session->get('playerInfo')->get('name'), "factionColor" => $session->get('playerInfo')->get('color')); - $data_string = json_encode($data); - $ch = curl_init($chickenBot); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - #curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt( - $ch, - CURLOPT_HTTPHEADER, - array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) - ); - $answer = curl_exec($ch); - $json = json_decode($answer,true); - curl_close($ch); - - if ($answer !== FALSE) { - #$rep = unserialize($answer); - switch($answer) { - case 'user register correctly': - $session->addFlashbag('Vos droits ont été ajoutés sur Discord. Rendez-vous là-bas.', Flashbag::TYPE_SUCCESS); - break; - case 'user register correctly (update Status)': - $session->addFlashbag('Vos droits ont été mis à jour sur Discord. Rendez-vous là-bas.', Flashbag::TYPE_SUCCESS); - break; - case 'Wrong factionColor': - throw new ErrorException('Vous êtes dans une faction inexistance, cela doit être une erreur, contactez un administrateur'); - case 'disord user already register': - throw new ErrorException('Vous avez déjà vos droits sur Discord, le faire une seconde fois ne sert à rien. S\'il s\'agit d\'une erreur, contactez un administrateur.'); - case 'userID not found in Aslymaba 2.0 server': - throw new ErrorException('Cet identifiant n\'existe pas. Créez un compte sur Discord et entrez votre identifiant dans le champ'); - default: - throw new ErrorException('Erreur, contactez un administrateur'); - } - #throw new ErrorException('message de retour : ' . $answer, ALERT_STD_SUCCESS); - } else { - throw new ErrorException('Le Chicken Bot ne répond pas. Ré-essayez plus tard et/ou contactez un admin.'); - } -} else { - throw new FormException('il faut entrer votre identifiant Discord dans le champ de texte'); -} diff --git a/system/action/std/common/sendSponsorshipEmail.php b/system/action/std/common/sendSponsorshipEmail.php deleted file mode 100644 index 35828d9f4..000000000 --- a/system/action/std/common/sendSponsorshipEmail.php +++ /dev/null @@ -1,22 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -$email = $request->request->get('email'); - -$sponsorLink = $this->getContainer()->getParameter('getout_root') . 'action/a-invitation/i-' . $session->get('playerId') . '/s-' . $this->getContainer()->getParameter('server_id'); - -# sending email API call -$ok = $this->getContainer()->get('api')->sendMail2($email, $this->getContainer()->getParameter('server_id'), API::TEMPLATE_SPONSORSHIP, $session->get('playerId')); - -if ($ok) { - $session->addFlashbag('Un e-mail va être envoyé dans quelques minutes à ' . $email, Flashbag::TYPE_SUCCESS); -} else { - throw new ErrorException('L\'e-mail n\'a pas pu être envoyé, veuillez ré-essayer. Si cela persiste, contactez un administrateur.'); -} - diff --git a/system/action/std/common/switchBase.php b/system/action/std/common/switchBase.php deleted file mode 100755 index 160d60c68..000000000 --- a/system/action/std/common/switchBase.php +++ /dev/null @@ -1,30 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$base = $request->query->get('base'); -$page = $request->query->get('page'); # facultatif - -if ($base !== FALSE) { - if ($session->baseExist($base)) { - $session->get('playerParams')->add('base', $base); - } -} - -if ($page !== null) { - switch ($page) { - case 'generator' : $page = 'bases/view-generator'; break; - case 'refinery' : $page = 'bases/view-refinery'; break; - case 'dock1' : $page = 'bases/view-dock1'; break; - case 'dock2' : $page = 'bases/view-dock2'; break; - case 'technosphere' : $page = 'bases/view-technosphere'; break; - case 'commercialroute' : $page = 'bases/view-commercialplateforme/mode-route'; break; - case 'sell' : $page = 'bases/view-commercialplateforme/mode-sell'; break; - case 'school' : $page = 'bases/view-school'; break; - case 'spatioport' : $page = 'bases/view-spatioport'; break; - } - $this->getContainer()->get('app.response')->redirect($page); -} else { - // otherwise no redirection -} diff --git a/system/action/std/common/switchParams.php b/system/action/std/common/switchParams.php deleted file mode 100755 index c459965ec..000000000 --- a/system/action/std/common/switchParams.php +++ /dev/null @@ -1,16 +0,0 @@ -getContainer()->get('app.request'); -$params = $request->query->get('params'); - -if ($params !== FALSE) { - if (in_array($params, Params::getParams())) { - if ($request->cookies->get('p' . $params, $params)) { - $request->cookies->add('p' . $params, false, true); - } else { - $request->cookies->add('p' . $params, true, true); - } - } -} diff --git a/system/action/std/demeter/donate.php b/system/action/std/demeter/donate.php deleted file mode 100755 index e72f5e4bb..000000000 --- a/system/action/std/demeter/donate.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -#credit -$credit = $request->request->get('credit'); - -if ($credit) { - $player = $playerManager->get($session->get('playerId')); - - $credit = ($credit > $player->credit) ? $player->credit : $credit; - $playerManager->decreaseCredit($player, $credit); - $colorManager->get($session->get('playerInfo')->get('color'))->credits += $credit; - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - - $session->addFlashbag('Vous venez de remplir les caisse de votre faction de ' . $credit . ' crédit' . Format::addPlural($credit) . ' :)', Flashbag::TYPE_SUCCESS); -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/election/abdicate.php b/system/action/std/demeter/election/abdicate.php deleted file mode 100644 index 3a1a802b1..000000000 --- a/system/action/std/demeter/election/abdicate.php +++ /dev/null @@ -1,79 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -$rPlayer = $request->request->get('rplayer'); - -if ($statusArray = ColorResource::getInfo($session->get('playerInfo')->get('color'), 'regime') == Color::DEMOCRATIC) { - if ($session->get('playerInfo')->get('status') == Player::CHIEF) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - - if ($faction->electionStatement == Color::MANDATE) { - $date = new \DateTime(Utils::now()); - $date->modify('-' . $faction->mandateDuration . ' second'); - $date = $date->format('Y-m-d H:i:s'); - $faction->dLastElection = $date; - $session->addFlashbag('Des élections anticipées vont être lancées.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Des élections sont déjà en cours.'); - } - } else { - throw new ErrorException('Vous n\'êtes pas le chef de votre faction.'); - } -} else { - if ($rPlayer !== FALSE) { - if ($session->get('playerInfo')->get('status') == Player::CHIEF) { - if (($heir = $playerManager->get($rPlayer)) !== null) { - if ($heir->rColor == $session->get('playerInfo')->get('color')) { - if ($heir->status >= Player::PARLIAMENT) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - - if ($faction->electionStatement == Color::MANDATE) { - $heir->status = Player::CHIEF; - // The player is now a member of Parliament - $playerManager->get($session->get('playerId'))->status = Player::PARLIAMENT; - $session->get('playerInfo')->add('status', Player::PARLIAMENT); - - $statusArray = ColorResource::getInfo($heir->rColor, 'status'); - $notif = new Notification(); - $notif->setRPlayer($rPlayer); - $notif->setTitle('Héritier du Trône.'); - $notif->addBeg() - ->addTxt('Vous avez été choisi par le ' . $statusArray[5] . ' de votre faction pour être son successeur, vous prenez la tête du gouvernement immédiatement.'); - $notificationManager->add($notif); - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - $session->addFlashbag($heir->name . ' est désigné comme votre successeur.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('vous ne pouvez pas abdiquer pendant un putsch.'); - } - } else { - throw new ErrorException('Vous ne pouvez choisir qu\'un membre du sénat ou du gouvernement.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas choisir un joueur d\'une autre faction.'); - } - } else { - throw new ErrorException('Ce joueur n\'existe pas.'); - } - } else { - throw new ErrorException('Vous n\'êtes pas le chef de votre faction.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } -} diff --git a/system/action/std/demeter/election/chooseGovernment.php b/system/action/std/demeter/election/chooseGovernment.php deleted file mode 100755 index bece0d80a..000000000 --- a/system/action/std/demeter/election/chooseGovernment.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -$rPlayer = $request->request->get('rplayer'); -$department = $request->query->get('department'); - -if ($rPlayer !== FALSE && $department !== FALSE) { - if (($minister = $playerManager->getGovernmentMember($session->get('playerInfo')->get('color'), $department)) === null) { - if ($session->get('playerInfo')->get('status') == Player::CHIEF) { - if (($appointee = $playerManager->get($rPlayer)) !== null) { - if ($appointee->rColor == $session->get('playerInfo')->get('color')) { - if ($appointee->status == Player::PARLIAMENT) { - if ($department > Player::PARLIAMENT && $department < Player::CHIEF) { - $appointee->status = $department; - - $statusArray = ColorResource::getInfo($appointee->rColor, 'status'); - $notif = new Notification(); - $notif->setRPlayer($rPlayer); - $notif->setTitle('Nomination au gouvernement'); - $notif->addBeg() - ->addTxt('Vous avez été choisi pour être le ' . $statusArray[$department - 1] . ' de votre faction.'); - $notificationManager->add($notif); - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($appointee); - $session->addFlashbag($appointee->name . ' a rejoint votre gouvernement.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Ce département est inconnu.'); - } - } else { - throw new ErrorException('Vous ne pouvez choisir qu\'un membre du sénat.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas choisir un joueur d\'une autre faction.'); - } - } else { - throw new ErrorException('Ce joueur n\'existe pas.'); - } - } else { - throw new ErrorException('Vous n\'êtes pas le chef de votre faction.'); - } - } else { - throw new ErrorException('Quelqu\'un occupe déjà ce poste.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/election/fire.php b/system/action/std/demeter/election/fire.php deleted file mode 100755 index fd537d3c2..000000000 --- a/system/action/std/demeter/election/fire.php +++ /dev/null @@ -1,47 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -$rPlayer = $request->query->get('rplayer'); - -if ($rPlayer !== FALSE) { - if ($session->get('playerInfo')->get('status') == Player::CHIEF) { - if (($minister = $playerManager->get($rPlayer)) !== null) { - if ($minister->rColor == $session->get('playerInfo')->get('color')) { - if ($minister->status > Player::PARLIAMENT) { - $statusArray = ColorResource::getInfo($minister->rColor, 'status'); - $notif = new Notification(); - $notif->setRPlayer($rPlayer); - $notif->setTitle('Eviction du gouvernement'); - $notif->addBeg() - ->addTxt('Vous avez été renvoyé du poste de ' . $statusArray[$minister->status - 1] . ' de votre faction.'); - $notificationManager->add($notif); - - $minister->status = Player::PARLIAMENT; - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($minister); - } else { - throw new ErrorException('Vous ne pouvez choisir qu\'un membre du gouvernement.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas virer un joueur d\'une autre faction.'); - } - } else { - throw new ErrorException('Ce joueur n\'existe pas.'); - } - } else { - throw new ErrorException('Vous n\'êtes pas le chef de votre faction.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/election/makeACoup.php b/system/action/std/demeter/election/makeACoup.php deleted file mode 100755 index 9acb4f800..000000000 --- a/system/action/std/demeter/election/makeACoup.php +++ /dev/null @@ -1,113 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$electionManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\ElectionManager::class); -$candidateManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$voteManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\VoteManager::class); - -$program = $request->request->get('program'); -$chiefChoice = $request->request->get('chiefchoice'); -$treasurerChoice = $request->request->get('treasurerchoice'); -$warlordChoice = $request->request->get('warlordchoice'); -$ministerChoice = $request->request->get('ministerchoice'); - -if ($program !== FALSE) { - if ($session->get('playerInfo')->get('status') > Player::STANDARD && $session->get('playerInfo')->get('status') < Player::CHIEF) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - - if($faction->electionStatement === Color::MANDATE) { - if ($faction->regime == Color::ROYALISTIC) { - - $election = new Election(); - $election->rColor = $faction->id; - $election->dElection = (new \DateTime('+' . Color::PUTSCHTIME . ' second'))->format('Y-m-d H:i:s'); - - $electionManager->add($election); - - $candidate = new Candidate(); - $candidate->rElection = $election->id; - $candidate->rPlayer = $session->get('playerId'); - $candidate->chiefChoice = $chiefChoice; - $candidate->treasurerChoice = $treasurerChoice; - $candidate->warlordChoice = $warlordChoice; - $candidate->ministerChoice = $ministerChoice; - $candidate->dPresentation = Utils::now(); - $candidate->program = $program; - $candidateManager->add($candidate); - - $topic = new ForumTopic(); - $topic->title = 'Candidat ' . $session->get('playerInfo')->get('name'); - $topic->rForum = 30; - $topic->rPlayer = $candidate->rPlayer; - $topic->rColor = $session->get('playerInfo')->get('color'); - $topic->dCreation = Utils::now(); - $topic->dLastMessage = Utils::now(); - $topicManager->add($topic); - - $faction->electionStatement = Color::ELECTION; - $faction->dLastElection = Utils::now(); - - $vote = new Vote(); - $vote->rPlayer = $session->get('playerId'); - $vote->rCandidate = $session->get('playerId'); - $vote->rElection = $election->id; - $vote->dVotation = Utils::now(); - $voteManager->add($vote); - - $factionPlayers = $playerManager->getFactionPlayers($faction->id); - - foreach ($factionPlayers as $factionPlayer) { - if ($factionPlayer->getStatement() !== Player::ACTIVE) { - continue; - } - $notif = new Notification(); - $notif->setRPlayer($factionPlayer->id); - $notif->setTitle('Coup d\'Etat.'); - $notif->addBeg() - ->addTxt('Un membre de votre Faction soulève une partie du peuple et tente un coup d\'état contre le gouvernement.') - ->addSep() - ->addLnk('faction/view-election', 'prendre parti sur le coup d\'état.') - ->addEnd(); - $notificationManager->add($notif); - } - $session->addFlashbag('Coup d\'état lancé.', Flashbag::TYPE_SUCCESS); - $this->getContainer()->get(\Symfony\Component\Messenger\MessageBusInterface::class)->dispatch( - new \Asylamba\Modules\Demeter\Message\BallotMessage($faction->getId()), - [\Asylamba\Classes\Library\DateTimeConverter::to_delay_stamp($election->dElection)], - ); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - } else { - throw new ErrorException('Vous vivez dans une faction démocratique.'); - } - } else { - throw new ErrorException('Un coup d\'état est déjà en cours.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas vous présenter, vous ne faite pas partie de l\'élite ou vous êtes déjà le hef de la faction.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/election/postulate.php b/system/action/std/demeter/election/postulate.php deleted file mode 100755 index 8bd48787e..000000000 --- a/system/action/std/demeter/election/postulate.php +++ /dev/null @@ -1,108 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$electionManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\ElectionManager::class); -$candidateManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$voteManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\VoteManager::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -$rElection = $request->query->get('relection'); -$program = $request->request->get('program'); -$chiefChoice = $request->request->get('chiefchoice'); -$treasurerChoice = $request->request->get('treasurerchoice'); -$warlordChoice = $request->request->get('warlordchoice'); -$ministerChoice = $request->request->get('ministerchoice'); - -if ($rElection !== FALSE && $program !== FALSE) { - if (($election = $electionManager->get($rElection)) !== null) { - if ($election->rColor == $session->get('playerInfo')->get('color')) { - $chiefChoice = 1; - $treasurerChoice = 1; - $warlordChoice = 1; - $ministerChoice = 1; - - if ($session->get('playerInfo')->get('status') > Player::STANDARD) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - - if ($faction->electionStatement == Color::CAMPAIGN) { - if ($chiefChoice !== NULL && $treasurerChoice !== FALSE && $warlordChoice !== FALSE && $ministerChoice !== FALSE) { - if (($candidate = $candidateManager->getByElectionAndPlayer($election, $playerManager->get($session->get('playerId')))) === null) { - $candidate = new Candidate(); - - $candidate->rElection = $rElection; - $candidate->rPlayer = $session->get('playerId'); - $candidate->chiefChoice = $chiefChoice; - $candidate->treasurerChoice = $treasurerChoice; - $candidate->warlordChoice = $warlordChoice; - $candidate->ministerChoice = $ministerChoice; - $candidate->dPresentation = Utils::now(); - $candidate->program = $program; - - $candidateManager->add($candidate); - - $topic = new ForumTopic(); - $topic->title = 'Candidat ' . $session->get('playerInfo')->get('name'); - $topic->rForum = 30; - $topic->rPlayer = $candidate->rPlayer; - $topic->rColor = $session->get('playerInfo')->get('color'); - $topic->dCreation = Utils::now(); - $topic->dLastMessage = Utils::now(); - - $topicManager->add($topic); - - if ($session->get('playerInfo')->get('color') == 4) { - $vote = new Vote(); - - $vote->rPlayer = $session->get('playerId'); - $vote->rCandidate = $session->get('playerId'); - $vote->rElection = $election->id; - $vote->dVotation = Utils::now(); - - $voteManager->add($vote); - } - - $response->redirect('faction/view-election/candidate-' . $candidate->id); - $session->addFlashbag('Candidature déposée.', Flashbag::TYPE_SUCCESS); - } else { - $entityManager->remove($candidate); - $session->addFlashbag('Candidature retirée.', Flashbag::TYPE_SUCCESS); - } - } else { - throw new ErrorException('Informations manquantes sur les choix.'); - } - } else { - throw new ErrorException('Vous ne pouvez présenter ou retirer votre candidature qu\'en période de campagne.'); - } - } else { - throw new ErrorException('Vous ne pouvez pas vous présenter, vous ne faite pas partie de l\'élite.'); - } - } else { - throw new ErrorException('Cette election ne se déroule pas dans la faction du joueur.'); - } - } else { - throw new ErrorException('Cette election n\'existe pas.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/election/resign.php b/system/action/std/demeter/election/resign.php deleted file mode 100644 index 5d7059bd7..000000000 --- a/system/action/std/demeter/election/resign.php +++ /dev/null @@ -1,23 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -if ($session->get('playerInfo')->get('status') > Player::PARLIAMENT && $session->get('playerInfo')->get('status') < Player::CHIEF) { - if (($minister = $playerManager->get($session->get('playerId'))) !== null) { - $minister->status = Player::PARLIAMENT; - $session->get('playerInfo')->add('status', Player::PARLIAMENT); - $session->addFlashbag('Vous n\'êtes plus membre du gouvernement.', Flashbag::TYPE_SUCCESS); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($minister); - } else { - throw new ErrorException('Ce joueur n\'existe pas.'); - } -} else { - throw new ErrorException('Vous n\'êtes pas dans le gouvernement de votre faction ou en êtes le chef.'); -} diff --git a/system/action/std/demeter/election/vote.php b/system/action/std/demeter/election/vote.php deleted file mode 100755 index 9b45efe7d..000000000 --- a/system/action/std/demeter/election/vote.php +++ /dev/null @@ -1,61 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$electionManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\ElectionManager::class); -$candidateManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$voteManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\VoteManager::class); - -$rElection = $request->query->get('relection'); -$rCandidate = $request->query->get('rcandidate'); - -if ($rElection !== FALSE && $rCandidate !== FALSE) { - $leader = $playerManager->getFactionLeader($session->get('playerInfo')->get('color')); - - if ($rCandidate == 0) { - $rCandidate = $leader->id; - } - - if (($election = $electionManager->get($rElection)) !== null) { - if (($candidateManager->getByElectionAndPlayer($election, $playerManager->get($rCandidate))) !== null || $leader->id == $rCandidate) { - if ($election->rColor == $session->get('playerInfo')->get('color')) { - if (($voteManager->getPlayerVote($playerManager->get($session->get('playerId')), $election)) === null) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - - if($faction->electionStatement == Color::ELECTION) { - $vote = new Vote(); - $vote->rPlayer = $session->get('playerId'); - $vote->rCandidate = $rCandidate; - $vote->rElection = $rElection; - $vote->dVotation = Utils::now(); - $voteManager->add($vote); - $session->addFlashbag('Vous avez voté.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Vous ne pouvez voter pour un candidat qu\'en période d\'élection.'); - } - } else { - throw new ErrorException('Vous avez déjà voté.'); - } - } else { - throw new ErrorException('Cette election ne se déroule pas dans votre faction.'); - } - } else { - throw new ErrorException('Ce candidat n\'existe pas.'); - } - } else { - throw new ErrorException('Cette election n\'existe pas.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/law/cancelLaw.php b/system/action/std/demeter/law/cancelLaw.php deleted file mode 100755 index e21ea25d0..000000000 --- a/system/action/std/demeter/law/cancelLaw.php +++ /dev/null @@ -1,25 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$lawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\LawManager::class); -$candidateManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); - -$rLaw = $request->query->get('rlaw'); - -if ($rLaw !== FALSE) { - if ($session->get('playerInfo')->get('status') == LawResources::getInfo($type, 'department')) { - if (($law = $lawManager->get($rLaw)) === null) { - throw new ErrorException('Cette loi n\'existe pas.'); - } - } else { - throw new ErrorException('Vous n\'avez pas le droit d\'annuler cette loi.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/law/createLaw.php b/system/action/std/demeter/law/createLaw.php deleted file mode 100755 index 40a4fc908..000000000 --- a/system/action/std/demeter/law/createLaw.php +++ /dev/null @@ -1,364 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$lawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\LawManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$commercialTaxManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); - -$type = $request->query->get('type'); -$duration = (int) $request->request->get('duration'); - -if ($type !== FALSE) { - if (LawResources::size() >= $type) { - if ($session->get('playerInfo')->get('status') == LawResources::getInfo($type, 'department')) { - $faction = $colorManager->get($session->get('playerInfo')->get('color')); - $law = new Law(); - - $law->rColor = $session->get('playerInfo')->get('color'); - $law->type = $type; - if (LawResources::getInfo($type, 'department') == Player::CHIEF) { - $law->statement = Law::EFFECTIVE; - - $law->dCreation = Utils::now(); - $law->dEndVotation = Utils::now(); - - if (LawResources::getInfo($type, 'undeterminedDuration')) { - $date = new DateTime(Utils::now()); - $date->modify('+' . 5 . ' years'); - $law->dEnd = $date->format('Y-m-d H:i:s'); - } else if ($duration) { - $duration = ($duration > 2400) ? 2400 : $duration; - $date = new DateTime(Utils::now()); - $date->modify('+' . $duration . ' hours'); - $law->dEnd = $date->format('Y-m-d H:i:s'); - } else { - $law->dEnd = Utils::now(); - } - } else { - $law->statement = Law::VOTATION; - - $date = new DateTime(Utils::now()); - $law->dCreation = $date->format('Y-m-d H:i:s'); - $date->modify('+' . Law::VOTEDURATION . ' second'); - $law->dEndVotation = $date->format('Y-m-d H:i:s'); - - if (LawResources::getInfo($type, 'undeterminedDuration')) { - $date = new DateTime($law->dEndVotation); - $date->modify('+' . 5 . ' years'); - $law->dEnd = $date->format('Y-m-d H:i:s'); - } else if ($duration) { - if ($duration > 2400) { - $duration = 2400; - } else if ($duration < 1) { - $duration = 1; - } - $date = new DateTime($law->dEndVotation); - $date->modify('+' . $duration . ' hours'); - $law->dEnd = $date->format('Y-m-d H:i:s'); - } else { - $law->dEnd = Utils::now(); - } - } - if (LawResources::getInfo($type, 'bonusLaw')) { - if ($duration !== FALSE) { - if ($faction->credits >= LawResources::getInfo($type, 'price') * $duration * $faction->activePlayers) { - $law->options = serialize(array()); - - if (!$lawManager->lawExists($session->get('playerInfo')->get('color'), $type)) { - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price') * $duration * $faction->activePlayers; - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Cette loi est déjà proposée ou en vigueur.'); - } - } else { - throw new ErrorException('Il n\'y a pas assez de crédits dans les caisses de l\'Etat.'); - } - } - } else { - if ($faction->credits >= LawResources::getInfo($type, 'price')) { - switch ($type) { - case Law::SECTORTAX: - $taxes = intval($request->request->get('taxes')); - $rSector = $request->request->get('rsector'); - if ($taxes !== FALSE && $rSector !== FALSE) { - if ($taxes >= 2 && $taxes <= 15) { - if (($sector = $sectorManager->get($rSector)) !== null) { - if ($sector->rColor == $session->get('playerInfo')->get('color')) { - $law->options = serialize(array('taxes' => $taxes, 'rSector' => $rSector, 'display' => array('Secteur' => $sector->name, 'Taxe actuelle' => $sector->tax . ' %', 'Taxe proposée' => $taxes . ' %'))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Ce secteur n\'est pas sous votre contrôle.'); - } - } else { - throw new ErrorException('Ce secteur n\'existe pas.'); - } - } else { - throw new ErrorException('La taxe doit être entre 2 et 15 %.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::SECTORNAME: - $rSector = $request->request->get('rsector'); - $name = $request->request->get('name'); - if ($rSector !== FALSE && $name !== FALSE) { - if (strlen($name) >= 1 AND strlen($name) <= 50) { - $name = $parser->protect($name); - if (($sector = $sectorManager->get($rSector)) !== null) { - if ($sector->rColor == $session->get('playerInfo')->get('color')) { - $law->options = serialize(array('name' => $name, 'rSector' => $rSector)); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction, TRUE); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Ce secteur n\'est pas sous votre contrôle.'); - } - } else { - throw new ErrorException('Ce secteur n\'existe pas.'); - } - } else { - throw new ErrorException('Le nom doit faire entre 1 et 50 caractères.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::COMTAXEXPORT: - $taxes = intval($request->request->get('taxes')); - $rColor = $request->request->get('rcolor'); - if ($taxes !== FALSE && $rColor !== FALSE) { - $_CTM = $commercialTaxManager->getCurrentsession(); - $commercialTaxManager->load(array('faction' => $session->get('playerInfo')->get('color'), 'relatedFaction' => $rColor)); - if ($commercialTaxManager->size() > 0) { - if ($commercialTaxManager->get()->relatedFaction == $session->get('playerInfo')->get('color')) { - if ($taxes <= 15) { - $law->options = serialize(array('taxes' => $taxes, 'rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName'), 'Taxe actuelle' => $commercialTaxManager->get()->exportTax . ' %', 'Taxe proposée' => $taxes . ' %'))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Pas plus que 15.'); - } - } else { - if ($taxes <= 15 && $taxes >= 2) { - $law->options = serialize(array('taxes' => $taxes, 'rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName'), 'Taxe actuelle' => $commercialTaxManager->get()->exportTax . ' %', 'Taxe proposée' => $taxes . ' %'))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Entre 2 et 15.'); - } - } - } else { - throw new ErrorException('Cette faction n\'existe pas.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::COMTAXIMPORT: - $taxes = intval($request->request->get('taxes')); - $rColor = $request->request->get('rcolor'); - if ($taxes !== FALSE && $rColor !== FALSE) { - $_CTM = $commercialTaxManager->getCurrentsession(); - $commercialTaxManager->load(array('faction' => $session->get('playerInfo')->get('color'), 'relatedFaction' => $rColor)); - if ($commercialTaxManager->size() > 0) { - if ($commercialTaxManager->get()->relatedFaction == $session->get('playerInfo')->get('color')) { - if ($taxes <= 15) { - $law->options = serialize(array('taxes' => $taxes, 'rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName'), 'Taxe actuelle' => $commercialTaxManager->get()->importTax . ' %', 'Taxe proposée' => $taxes . ' %'))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Pas plus que 15.'); - } - } else { - if ($taxes <= 15 && $taxes >= 2) { - $law->options = serialize(array('taxes' => $taxes, 'rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName'), 'Taxe actuelle' => $commercialTaxManager->get()->importTax . ' %', 'Taxe proposée' => $taxes . ' %'))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Entre 2 et 15.'); - } - } - } else { - throw new ErrorException('Cette faction n\'existe pas.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::NEUTRALPACT: - $rColor = $request->request->get('rcolor'); - if ($rColor !== FALSE) { - if ($rColor >= 1 && $rColor <= (ColorResource::size() - 1) && $rColor != $faction->id) { - - if ($faction->colorLink[$rColor] != Color::NEUTRAL) { - $law->options = serialize(array('rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName')))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction, TRUE); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Vous considérez déjà cette faction comme votre alliée.'); - } - } else { - throw new ErrorException('Cette faction n\'existe pas ou il s\'agit de la votre.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::PEACEPACT: - $rColor = $request->request->get('rcolor'); - if ($rColor !== FALSE) { - if ($rColor >= 1 && $rColor <= (ColorResource::size() - 1) && $rColor != $faction->id) { - $nbrPact = 0; - foreach ($faction->colorLink as $relation) { - if($relation == Color::PEACE) { - $nbrPact++; - } - } - if ($nbrPact < 2) { - if ($faction->colorLink[$rColor] != Color::PEACE) { - $law->options = serialize(array('rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName')))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction, TRUE); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Vous considérez déjà cette faction comme votre alliée.'); - } - } else { - throw new ErrorException('Vous ne pouvez faire que 2 pactes de ce type.'); - } - } else { - throw new ErrorException('Cette faction n\'existe pas ou il s\'agit de la votre.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::TOTALALLIANCE: - $rColor = $request->request->get('rcolor'); - if ($rColor !== FALSE) { - if ($rColor >= 1 && $rColor <= (ColorResource::size() - 1) && $rColor != $faction->id) { - $allyYet = FALSE; - foreach ($faction->colorLink as $relation) { - if($relation == Color::ALLY) { - $allyYet = TRUE; - } - } - if (!$allyYet) { - if ($faction->colorLink[$rColor] != Color::ALLY) { - $law->options = serialize(array('rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName')))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction, TRUE); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Vous considérez déjà cette faction comme votre alliée.'); - } - } else { - throw new ErrorException('Vous ne pouvez considérez qu\'une seule faction comme alliée.'); - } - } else { - throw new ErrorException('Cette faction n\'existe pas ou il s\'agit de la votre.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::WARDECLARATION: - $rColor = $request->request->get('rcolor'); - if ($rColor !== FALSE) { - if ($rColor >= 1 && $rColor <= (ColorResource::size() - 1) && $rColor != $faction->id) { - - if ($faction->colorLink[$rColor] != Color::ENEMY) { - $law->options = serialize(array('rColor' => $rColor, 'display' => array('Faction' => ColorResource::getInfo($rColor, 'officialName')))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction, TRUE); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Vous considérez déjà cette faction comme votre ennemmi.'); - } - } else { - throw new ErrorException('Cette faction n\'existe pas ou il s\'agit de la votre.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - case Law::PUNITION: - $rPlayer = $request->request->get('rplayer'); - $credits = intval($request->request->get('credits')); - - if ($rPlayer !== FALSE && $credits !== FALSE) { - if ($credits > 0) { - $targetPlayer = $playerManager->get($rPlayer); - if ($targetPlayer->rColor == $session->get('playerInfo')->get('color')) { - $law->options = serialize(array('rPlayer' => $rPlayer, 'credits' => $credits, 'display' => array('Joueur' => $targetPlayer->name, 'amende' => $credits))); - $lawManager->add($law); - $faction->credits -= LawResources::getInfo($type, 'price'); - $colorManager->sendSenateNotif($faction); - $response->redirect('faction/view-senate'); - } else { - throw new ErrorException('Ce joueur n\'est pas de votre faction.'); - } - } else { - throw new ErrorException('l\'amende doit être un entier positif.'); - } - } else { - throw new ErrorException('Informations manquantes.'); - } - break; - default: - throw new ErrorException('Cette loi n\'existe pas.'); - } - } else { - throw new ErrorException('Il n\'y assez pas a de crédits dans les caisses de l\'Etat.'); - } - } - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - } else { - throw new ErrorException('Vous n\' avez pas le droit de proposer cette loi.'); - } - } else { - throw new ErrorException('Cette loi n\'existe pas.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/law/vote.php b/system/action/std/demeter/law/vote.php deleted file mode 100755 index 82e1e16b9..000000000 --- a/system/action/std/demeter/law/vote.php +++ /dev/null @@ -1,43 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$lawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\LawManager::class); -$voteLawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\VoteLawManager::class); - -$rLaw = $request->query->get('rlaw'); -$choice = $request->query->get('choice'); - -if ($rLaw !== FALSE && $choice !== FALSE) { - if ($session->get('playerInfo')->get('status') == Player::PARLIAMENT) { - - if (($law = $lawManager->get($rLaw)) !== null) { - if ($law->statement == Law::VOTATION) { - if ($voteLawManager->hasVoted($session->get('playerId'), $law)) { - throw new ErrorException('Vous avez déjà voté.'); - } - $vote = new VoteLaw(); - $vote->rPlayer = $session->get('playerId'); - $vote->rLaw = $rLaw; - $vote->vote = $choice; - $vote->dVotation = Utils::now(); - $voteLawManager->add($vote); - } else { - throw new ErrorException('Cette loi est déjà votée.'); - } - } else { - throw new ErrorException('Cette loi n\'existe pas.'); - } - } else { - throw new ErrorException('Vous n\'avez pas le droit de voter.'); - } -} else { - throw new ErrorException('Informations manquantes.'); -} diff --git a/system/action/std/demeter/message/edit.php b/system/action/std/demeter/message/edit.php deleted file mode 100755 index f7b2bc843..000000000 --- a/system/action/std/demeter/message/edit.php +++ /dev/null @@ -1,47 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$forumMessageManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumMessageManager::class); - -$content = $request->request->get('content'); -$id = $request->query->get('id'); - -if ($content && $id) { - $_FMM = $forumMessageManager->getCurrentSession(); - $forumMessageManager->newSession(); - $forumMessageManager->load(array('id' => $id)); - - if ($forumMessageManager->size() > 0) { - $m = $forumMessageManager->get(); - - $_TOM = $topicManager->getCurrentSession(); - $topicManager->newSession(); - $topicManager->load(array('id' => $m->rTopic)); - - $t = $topicManager->get(); - - if ($session->get('playerId') == $m->rPlayer || ($session->get('playerInfo')->get('status') > 2 && $t->rForum != 20)) { - $forumMessageManager->edit($m, $content); - $m->dLastModification = Utils::now(); - - $session->addFlashbag('Message édité.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Vous ne pouvez pas éditer ce message.'); - } - - $topicManager->changeSession($_TOM); - } else { - throw new ErrorException('Le message n\'existe pas.'); - } - - $forumMessageManager->changeSession($_FMM); -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/message/write.php b/system/action/std/demeter/message/write.php deleted file mode 100755 index 9dfc8f6d2..000000000 --- a/system/action/std/demeter/message/write.php +++ /dev/null @@ -1,71 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$forumMessageManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumMessageManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -$content = $request->request->get('content'); -$rTopic = $request->query->get('rtopic'); - -if ($rTopic AND $content) { - $S_TOM_1 = $topicManager->getCurrentSession(); - $topicManager->load(array('id' => $rTopic)); - - if ($topicManager->size() == 1) { - if (!$topicManager->get()->isClosed) { - $message = new ForumMessage(); - $message->rPlayer = $session->get('playerId'); - $message->rTopic = $rTopic; - $message->dCreation = Utils::now(); - $message->dLastMessage = Utils::now(); - - $forumMessageManager->edit($message, $content); - - $forumMessageManager->add($message); - - $topicManager->get()->dLastMessage = Utils::now(); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::FACTION_FORUM) { - $tutorialHelper->setStepDone(); - } - - if ($topicManager->get()->rForum != 30) { - $response->redirect('faction/view-forum/forum-' . $topicManager->get()->rForum . '/topic-' . $rTopic . '/sftr-2'); - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_SocialRelation(`from`, type, message, dAction) - VALUES(?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 1, $content, Utils::now()]); - } - - $session->addFlashbag('Message créé.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Ce sujet est fermé.'); - } - } else { - throw new ErrorException('Le topic n\'existe pas.'); - } - - $topicManager->changeSession($S_TOM_1); -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/news/delete.php b/system/action/std/demeter/news/delete.php deleted file mode 100644 index c4c785996..000000000 --- a/system/action/std/demeter/news/delete.php +++ /dev/null @@ -1,20 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class); -$request = $this->getContainer()->get('app.request'); - -$id = $request->query->get('id'); - -if ($id !== FALSE) { - if (($factionNew = $factionNewsManager->get($id)) !== null) { - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->remove($factionNew); - $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->addFlashbag('L\'annonce a bien été supprimée.', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('Cette annonce n\'existe pas.'); - } -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/news/edit.php b/system/action/std/demeter/news/edit.php deleted file mode 100755 index 2d2c5ed0d..000000000 --- a/system/action/std/demeter/news/edit.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$id = $request->query->get('id'); -$content = $request->request->get('content'); -$title = $request->request->get('title'); - -if ($title !== FALSE AND $content !== FALSE && $id !== FALSE) { - if (($factionNew = $factionNewsManager->get($id)) !== null) { - if ($session->get('playerInfo')->get('status') >= 3) { - $factionNew->title = $title; - $factionNewsManager->edit($factionNew, $content); - } else { - throw new ErrorException('Vous n\'avez pas le droit pour créer une annonce.'); - } - } else { - throw new FormException('Cette annonce n\'existe pas.'); - } -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/news/pin.php b/system/action/std/demeter/news/pin.php deleted file mode 100644 index 5cb1f63d3..000000000 --- a/system/action/std/demeter/news/pin.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -if (($id = $request->query->get('id')) === FALSE) { - throw new FormException('Manque d\'information.'); -} - -$factionNews = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class)->getFactionNews($session->get('playerInfo')->get('color')); -$newExists = false; -// This way of doing things remove all previous pins -foreach ($factionNews as $factionNew) { - if ($factionNew->id == $id) { - $newExists = true; - $factionNew->pinned = 1; - } else { - $factionNew->pinned = 0; - } -} -if ($newExists !== true) { - throw new FormException('Cette annonce n\'existe pas.'); -} -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(FactionNews::class); diff --git a/system/action/std/demeter/news/write.php b/system/action/std/demeter/news/write.php deleted file mode 100755 index 0c9d82973..000000000 --- a/system/action/std/demeter/news/write.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$content = $request->request->get('content'); -$title = $request->request->get('title'); - -if ($title !== FALSE AND $content !== FALSE) { - if ($session->get('playerInfo')->get('status') >= 3) { - $news = new FactionNews(); - $news->rFaction = $session->get('playerInfo')->get('color'); - $news->title = $title; - $factionNewsManager->edit($news, $content); - $news->dCreation = Utils::now(); - - $factionNewsManager->add($news); - } else { - throw new ErrorException('Vous n\'avez pas le droit pour créer une annonce.'); - } -} else { - throw new FormException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/topic/archive.php b/system/action/std/demeter/topic/archive.php deleted file mode 100755 index b5cfb5946..000000000 --- a/system/action/std/demeter/topic/archive.php +++ /dev/null @@ -1,37 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); - -$id = $request->query->get('id'); - -if ($id !== FALSE) { - $S_TOM = $topicManager->getCurrentSession(); - $topicManager->newSession(); - $topicManager->load(array('id' => $id)); - - if ($topicManager->size() == 1) { - if ($session->get('playerInfo')->get('status') > 2) { - if ($topicManager->get()->isArchived == 1) { - $topicManager->get()->isArchived = 0; - } else { - $topicManager->get()->isArchived = 1; - } - $response->redirect('faction/view-forum/forum-' . $topicManager->get()->rForum); - $session->addFlashbag('Le sujet a bien été archivé/désarchivé', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('Vous n\'avez pas les droits'); - } - } else { - throw new FormException('Ce sujet n\'existe pas'); - } - - $topicManager->changeSession($S_TOM); -} else { - throw new FormException('Manque d\'information'); -} diff --git a/system/action/std/demeter/topic/close.php b/system/action/std/demeter/topic/close.php deleted file mode 100755 index 1ef6cb509..000000000 --- a/system/action/std/demeter/topic/close.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); - -$id = $request->query->get('id'); - -if ($id !== FALSE) { - $S_TOM = $topicManager->getCurrentSession(); - $topicManager->newSession(); - $topicManager->load(array('id' => $id)); - - if ($topicManager->size() == 1) { - if ($session->get('playerInfo')->get('status') > 2) { - if ($topicManager->get()->isClosed == 1) { - $topicManager->get()->isClosed = 0; - } else { - $topicManager->get()->isClosed = 1; - } - $session->addFlashbag('Le sujet a bien été fermé/ouvert', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('Vous n\'avez pas les droits'); - } - } else { - throw new FormException('Ce sujet n\'existe pas'); - } - - $topicManager->changeSession($S_TOM); -} else { - throw new FormException('Manque d\'information'); -} diff --git a/system/action/std/demeter/topic/createTopic.php b/system/action/std/demeter/topic/createTopic.php deleted file mode 100755 index 1e1310f85..000000000 --- a/system/action/std/demeter/topic/createTopic.php +++ /dev/null @@ -1,64 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$forumMessageManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumMessageManager::class); - -$title = $request->request->get('title'); -$content = $request->request->get('content'); -$rForum = $request->query->get('rforum'); - - -if ($title !== FALSE AND $content !== FALSE AND $rForum !== FALSE) { - $topic = new ForumTopic(); - $topic->title = $title; - $topic->rForum = $rForum; - $topic->rPlayer = $session->get('playerId'); - $topic->rColor = $session->get('playerInfo')->get('color'); - $topic->dCreation = Utils::now(); - $topic->dLastMessage = Utils::now(); - - $rTopic = $topicManager->add($topic); - - $message = new ForumMessage(); - $message->rPlayer = $session->get('playerId'); - $message->rTopic = $rTopic; - $forumMessageManager->edit($message, $content); - $message->dCreation = Utils::now(); - $message->dLastMessage = Utils::now(); - - $forumMessageManager->add($message); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::FACTION_FORUM) { - $tutorialHelper->setStepDone(); - } - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_SocialRelation(`from`, type, message, dAction) - VALUES(?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 1, $content, Utils::now()]); - } - - $response->redirect('faction/view-forum/forum-' . $topic->rForum . '/topic-' . $topic->id . '/sftr-2'); - $session->addFlashbag('Topic créé.', Flashbag::TYPE_SUCCESS); -} else { - throw new FormException('Manque d\information.'); -} diff --git a/system/action/std/demeter/topic/move.php b/system/action/std/demeter/topic/move.php deleted file mode 100755 index 76bf0fcf0..000000000 --- a/system/action/std/demeter/topic/move.php +++ /dev/null @@ -1,48 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); - -$rForum = $request->request->get('rforum'); -$id = $request->query->get('id'); - -if ($rForum !== FALSE && $id !== FALSE) { - $_TOM = $topicManager->getCurrentSession(); - $topicManager->newSession(); - $topicManager->load(array('id' => $id)); - - if ($topicManager->size() > 0) { - if ($session->get('playerInfo')->get('status') > 2) { - $isOk = FALSE; - - for ($i = 1; $i < ForumResources::size() + 1; $i++) { - if (ForumResources::getInfo($i, 'id') == $rForum) { - $isOk = TRUE; - break; - } - } - - if ($isOk) { - $topicManager->get()->rForum = $rForum; - $topicManager->get()->dLastModification = Utils::now(); - - $response->redirect('faction/view-forum/forum-' . $rForum . '/topic-' . $topicManager->get()->id); - } else { - throw new FormException('Le forum de destination n\'existe pas'); - } - } else { - throw new FormException('Vous n\'avez pas les droits pour cette opération'); - } - } else { - throw new FormException('Ce sujet n\'existe pas'); - } - $topicManager->changeSession($_TOM); -} else { - throw new FormException('Manque d\'information'); -} diff --git a/system/action/std/demeter/topic/up.php b/system/action/std/demeter/topic/up.php deleted file mode 100755 index ae9f7897f..000000000 --- a/system/action/std/demeter/topic/up.php +++ /dev/null @@ -1,37 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$topicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); - -$id = $request->query->get('id'); - -if ($id !== FALSE) { - $_TOM = $topicManager->getCurrentsession(); - $topicManager->newSession(); - $topicManager->load(array('id' => $id)); - - if ($topicManager->size() == 1) { - if (in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER])) { - $topic = $topicManager->get(); - - if ($topic->isUp) { - $topic->isUp = FALSE; - } else { - $topic->isUp = TRUE; - } - } else { - throw new ErrorException('Vous ne disposez pas des droits nécessaires pour cette action.'); - } - } else { - throw new ErrorException('Le sujet demandé n\'existe pas.'); - } - - $this->getContainer()->get('app.response')->redirect('faction/view-forum/forum-' . $topicManager->get()->rForum . '/topic-' . $topicManager->get()->id . '/sftr-2'); - $topicManager->changeSession($_TOM); -} else { - throw new ErrorException('Manque d\'information.'); -} diff --git a/system/action/std/demeter/updateFactionDesc.php b/system/action/std/demeter/updateFactionDesc.php deleted file mode 100644 index 05a8b2b62..000000000 --- a/system/action/std/demeter/updateFactionDesc.php +++ /dev/null @@ -1,30 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -if (($description = $request->request->get('description')) !== FALSE) { - if (($player = $playerManager->get($session->get('playerId')))) { - if ($player->status > Player::PARLIAMENT) { - if ($description !== '' && strlen($description) < 25000) { - $faction = $colorManager->get($player->rColor); - $faction->description = $description; - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($faction); - } else { - throw new FormException('La description est vide ou trop longue'); - } - } else { - throw new FormException('Vous n\'avez pas les droits pour poster une description'); - } - } else { - throw new FormException('Vous n\'existez pas'); - } -} else { - throw new FormException('Pas assez d\'informations pour écrire une description'); -} diff --git a/system/action/std/hermes/conversation/addUser.php b/system/action/std/hermes/conversation/addUser.php deleted file mode 100644 index 13f54d06b..000000000 --- a/system/action/std/hermes/conversation/addUser.php +++ /dev/null @@ -1,96 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -$conversation = $request->query->get('conversation'); -$recipients = $request->request->get('recipients'); - -if ($recipients !== FALSE AND $conversation !== FALSE) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load([ - 'c.id' => $conversation, - 'cu.rPlayer' => $session->get('playerId'), - 'cu.playerStatement' => ConversationUser::US_ADMIN - ]); - - if ($conversationManager->size() == 1) { - $conv = $conversationManager->get(); - $players = $conv->players; - - $playersId = array(); - foreach ($players as $player) { - $playersId[] = $player->rPlayer; - } - - # traitement des utilisateurs multiples - $recipients = explode(',', $recipients); - $recipients = array_filter($recipients, function($e) use ($session) { - return $e == $session->get('playerId') ? FALSE : TRUE; - }); - $recipients[] = 0; - - if ((count($recipients) + count($players)) <= ConversationUser::MAX_USERS) { - # chargement des utilisateurs - $newPlayers = $playerManager->getByIdsAndStatements($recipients, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); - if (count($newPlayers) >= 1) { - # création de la date précédente - $readingDate = date('Y-m-d H:i:s', (strtotime(Utils::now()) - 20)); - - # créer la liste des users - foreach ($newPlayers as $newPlayer) { - if (!in_array($newPlayer->id, $playersId)) { - $user = new ConversationUser(); - - $user->rConversation = $conv->id; - $user->rPlayer = $newPlayer->id; - $user->convPlayerStatement = ConversationUser::US_STANDARD; - $user->convStatement = ConversationUser::CS_DISPLAY; - $user->dLastView = $readingDate; - - $conversationUserManager->add($user); - - # création du message système - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $newPlayer->id; - $message->type = ConversationMessage::TY_SYSTEM; - $message->content = $newPlayer->name . ' est entré dans la conversation'; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - - # mise à jour de la conversation - $conv->messages++; - $conv->dLastMessage = Utils::now(); - } - } - - $session->addFlashbag('Le joueur a été ajouté.', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('Le joueur n\'est pas joignable.'); - } - } else { - throw new ErrorException('Nombre maximum de joueur atteint.'); - } - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - $conversationManager->changeSession($S_CVM); -} else { - throw new ErrorException('Informations manquantes pour ajouter un joueur à la conversation.'); -} diff --git a/system/action/std/hermes/conversation/leave.php b/system/action/std/hermes/conversation/leave.php deleted file mode 100644 index b42ddb92f..000000000 --- a/system/action/std/hermes/conversation/leave.php +++ /dev/null @@ -1,87 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); - -$conversation = $request->query->get('conversation'); - -if ($conversation !== FALSE) { - # vérifier que c'est l'utilisateur courant - - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - array('c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')) - ); - - if ($conversationManager->size() == 1) { - # vérifier qu'il y a plus de 2 personnes - - $conv = $conversationManager->get(); - - if ($conv->type != Conversation::TY_SYSTEM) { - $players = $conv->players; - - if (count($players) > 2) { - $admin = 0; - $playerConv = NULL; - - foreach ($players as $player) { - if ($player->rPlayer == $session->get('playerId')) { - $playerConv = $player; - } elseif ($player->convPlayerStatement == ConversationUser::US_ADMIN) { - $admin++; - } - } - - # vérifier qu'il y a encore un admin - if ($admin < 1) { - foreach ($players as $player) { - if ($player->rPlayer != $session->get('playerId')) { - $player->convPlayerStatement = ConversationUser::US_ADMIN; - break; - } - } - } - - # mise à jour de la conversation - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # création du message système - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $playerConv->rPlayer; - $message->type = ConversationMessage::TY_SYSTEM; - $message->content = $playerConv->playerName . ' a quitté la conversation'; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - - # suppresion de l'utilisateur - $conversationUserManager->deleteById($playerConv->id); - - $this->getContainer()->get('app.response')->redirect('message'); - } else { - throw new ErrorException('Impossible de quitter une conversation entre deux personnes.'); - } - } - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); -} else { - throw new ErrorException('Informations manquantes pour quitter la conversation.'); -} diff --git a/system/action/std/hermes/conversation/start.php b/system/action/std/hermes/conversation/start.php deleted file mode 100644 index 9f62351f8..000000000 --- a/system/action/std/hermes/conversation/start.php +++ /dev/null @@ -1,111 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Database\Database::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); -$response = $this->getContainer()->get('app.response'); -$request = $this->getContainer()->get('app.request'); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); - -$recipients = $request->request->get('recipients'); -$content = $request->request->get('content'); - -$content = $parser->parse($content); - -if (!empty($recipients) && !empty($content)) { - if (strlen($content) < 10000) { - # traitement des utilisateurs multiples - $recipients = explode(',', $recipients); - $plId = $session->get('playerId'); - $recipients = array_filter($recipients, function($e) use($plId){ - return $e == $plId ? FALSE : TRUE; - }); - $recipients[] = 0; - - if (count($recipients) <= ConversationUser::MAX_USERS) { - # chargement des utilisateurs - $players = $playerManager->getByIdsAndStatements($recipients, [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); - - if (count($players) >= 1) { - # création de la date précédente - $readingDate = date('Y-m-d H:i:s', (strtotime(Utils::now()) - 20)); - - # créer la conversation - $conv = new Conversation(); - - $conv->messages = 1; - $conv->type = Conversation::TY_USER; - $conv->dCreation = Utils::now(); - $conv->dLastMessage = Utils::now(); - - $conversationManager->add($conv); - - # créer le user créateur de la conversation - $user = new ConversationUser(); - - $user->rConversation = $conv->id; - $user->rPlayer = $session->get('playerId'); - $user->convPlayerStatement = ConversationUser::US_ADMIN; - $user->convStatement = ConversationUser::CS_DISPLAY; - $user->dLastView = Utils::now(); - - $conversationUserManager->add($user); - - # créer la liste des users - foreach ($players as $player) { - $user = new ConversationUser(); - - $user->rConversation = $conv->id; - $user->rPlayer = $player->id; - $user->convPlayerStatement = ConversationUser::US_STANDARD; - $user->convStatement = ConversationUser::CS_DISPLAY; - $user->dLastView = $readingDate; - - $conversationUserManager->add($user); - } - - # créer le premier message - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $session->get('playerId'); - $message->type = ConversationMessage::TY_STD; - $message->content = $content; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_SocialRelation(`from`, `to`, `type`, `message`, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), $players[0]->getId(), 2, $content, Utils::now()]); - } - - $session->addFlashbag('La conversation a été créée.', Flashbag::TYPE_SUCCESS); - $response->redirect('message/conversation-' . $conv->id); - } else { - throw new ErrorException('Le joueur n\'est pas joignable.'); - } - } else { - throw new ErrorException('Nombre maximum de joueur atteint.'); - } - } else { - throw new ErrorException('Le message est trop long.'); - } -} else { - throw new FormException('Informations manquantes pour démarrer une nouvelle conversation.'); -} diff --git a/system/action/std/hermes/conversation/updateDisplay.php b/system/action/std/hermes/conversation/updateDisplay.php deleted file mode 100644 index 8dd6a560c..000000000 --- a/system/action/std/hermes/conversation/updateDisplay.php +++ /dev/null @@ -1,46 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); - -$conversation = $request->query->get('conversation'); - -if ($conversation !== FALSE) { - # vérifier que c'est l'utilisateur courant - - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - array('c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')) - ); - - if ($conversationManager->size() == 1) { - $conv = $conversationManager->get(); - $users = $conv->players; - - foreach ($users as $user) { - if ($user->rPlayer == $session->get('playerId')) { - if ($user->convStatement == ConversationUser::CS_DISPLAY) { - $user->convStatement = ConversationUser::CS_ARCHIVED; - $session->addFlashbag('La conversation a été archivée.', Flashbag::TYPE_SUCCESS); - } else { - $user->convStatement = ConversationUser::CS_DISPLAY; - $session->addFlashbag('La conversation a été désarchivée.', Flashbag::TYPE_SUCCESS); - } - break; - } - } - - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); -} else { - throw new ErrorException('Informations manquantes pour quitter la conversation.'); -} diff --git a/system/action/std/hermes/conversation/updateTitle.php b/system/action/std/hermes/conversation/updateTitle.php deleted file mode 100644 index 1a3f86e9c..000000000 --- a/system/action/std/hermes/conversation/updateTitle.php +++ /dev/null @@ -1,40 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); - -$conversation = $request->query->get('conversation'); -$title = $request->request->get('title'); - -$title = $parser->parse($title); - -if ($conversation !== FALSE) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - array( - 'c.id' => $conversation, - 'cu.rPlayer' => $session->get('playerId'), - 'cu.playerStatement' => ConversationUser::US_ADMIN - ) - ); - - if ($conversationManager->size() == 1) { - if (strlen($title) < 255) { - $conv = $conversationManager->get()->title = $title; - } else { - throw new ErrorException('Le titre est trop long.'); - } - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); -} else { - throw new ErrorException('Informations manquantes pour ajouter un joueur à la conversation.'); -} diff --git a/system/action/std/hermes/conversation/write.php b/system/action/std/hermes/conversation/write.php deleted file mode 100644 index 52ac7a45b..000000000 --- a/system/action/std/hermes/conversation/write.php +++ /dev/null @@ -1,80 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); - -$conversation = $request->query->get('conversation'); -$content = $request->request->get('content'); - -$content = $parser->parse($content); - -if (!empty($conversation) && !empty($content)) { - if (strlen($content) < 10000) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - array('c.id' => $conversation, 'cu.rPlayer' => $session->get('playerId')) - ); - - if ($conversationManager->size() == 1) { - $conv = $conversationManager->get(); - - if ($conv->type != Conversation::TY_SYSTEM) { - $DA_recipient; - - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # désarchiver tout les users - $users = $conv->players; - foreach ($users as $user) { - $user->convStatement = ConversationUser::CS_DISPLAY; - - if ($user->rPlayer == $session->get('playerId')) { - $user->dLastView = Utils::now(); - } else { - $DA_recipient = $user->rPlayer; - } - } - - # création du message - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $session->get('playerId'); - $message->type = ConversationMessage::TY_STD; - $message->content = $content; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_SocialRelation(`from`, `to`, `type`, `message`, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), $DA_recipient, 2, $content, Utils::now()]); - } - } - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); - } else { - throw new ErrorException('Le message est trop long.'); - } -} else { - throw new ErrorException('Informations manquantes pour démarrer une nouvelle conversation.'); -} diff --git a/system/action/std/hermes/conversation/writeFaction.php b/system/action/std/hermes/conversation/writeFaction.php deleted file mode 100644 index b9c161da5..000000000 --- a/system/action/std/hermes/conversation/writeFaction.php +++ /dev/null @@ -1,76 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); - -# protection des inputs -$content = $parser->parse($request->request->get('message')); - -if ($content !== FALSE) { - if (($player = $playerManager->get($session->get('playerId')))) { - if ($player->status > Player::PARLIAMENT) { - if ($content !== '' && strlen($content) < 25000) { - if (($factionAccount = $playerManager->getFactionAccount($player->rColor)) !== null) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - ['cu.rPlayer' => $factionAccount->id] - ); - - if ($conversationManager->size() == 1) { - $conv = $conversationManager->get(); - - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # désarchiver tout les users - $users = $conv->players; - foreach ($users as $user) { - $user->convStatement = ConversationUser::CS_DISPLAY; - } - - # création du message - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = $player->id; - $message->type = ConversationMessage::TY_STD; - $message->content = $content; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); - } - } else { - throw new FormException('Le message est vide ou trop long'); - } - } else { - throw new FormException('Vizs n\'avez pas les droits pour poster un message officiel'); - } - } else { - throw new FormException('Ce joueur n\'existe pas'); - } -} else { - throw new FormException('Pas assez d\'informations pour écrire un message officiel'); -} diff --git a/system/action/std/hermes/conversation/writeOfficial.php b/system/action/std/hermes/conversation/writeOfficial.php deleted file mode 100644 index 2f6877570..000000000 --- a/system/action/std/hermes/conversation/writeOfficial.php +++ /dev/null @@ -1,62 +0,0 @@ -getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); - -$content = $parser->parse($request->request->get('message')); - -if ($session->get('playerInfo')->get('admin') == FALSE) { - $response->redirect('profil'); -} else { - if ($content !== FALSE) { - if (strlen($content) < 10000) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load( - ['cu.rPlayer' => ID_JEANMI] - ); - - if ($conversationManager->size() == 1) { - $conv = $conversationManager->get(); - - $conv->messages++; - $conv->dLastMessage = Utils::now(); - - # désarchiver tous les users - $users = $conv->players; - foreach ($users as $user) { - $user->convStatement = ConversationUser::CS_DISPLAY; - } - - # création du message - $message = new ConversationMessage(); - - $message->rConversation = $conv->id; - $message->rPlayer = ID_JEANMI; - $message->type = ConversationMessage::TY_STD; - $message->content = $content; - $message->dCreation = Utils::now(); - $message->dLastModification = NULL; - - $conversationMessageManager->add($message); - } else { - throw new ErrorException('La conversation n\'existe pas ou ne vous appartient pas.'); - } - - $conversationManager->changeSession($S_CVM); - } else { - throw new ErrorException('Le message est trop long.'); - } - } else { - throw new ErrorException('Informations manquantes pour démarrer une nouvelle conversation.'); - } -} diff --git a/system/action/std/hermes/notification/archive.php b/system/action/std/hermes/notification/archive.php deleted file mode 100755 index 00b2eb02a..000000000 --- a/system/action/std/hermes/notification/archive.php +++ /dev/null @@ -1,21 +0,0 @@ -getContainer()->get('app.request')->query->get('id'); - -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -if ($id) { - if (($notification = $notificationManager->get($id)) !== null && $notification->rPlayer === $session->get('playerId')) { - $notification->setArchived(!$notification->getArchived()); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($notification); - } else { - throw new ErrorException('Ce n\'est pas bien d\'archiver les notifications des autres.'); - } -} else { - throw new ErrorException('cette notification n\'existe pas'); -} diff --git a/system/action/std/hermes/notification/delete.php b/system/action/std/hermes/notification/delete.php deleted file mode 100755 index 3e6cd787d..000000000 --- a/system/action/std/hermes/notification/delete.php +++ /dev/null @@ -1,25 +0,0 @@ -getContainer()->get('app.request')->query->get('id'); - -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -if ($id) { - if (($notification = $notificationManager->get($id)) !== null && $notification->rPlayer === $session->get('playerId')) { - $entityManager->remove($notification); - $entityManager->flush($notification); - $session->addFlashbag('Notification supprimée', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('C\'est pas très bien de supprimer les notifications des autres.'); - } -} else { - throw new ErrorException('Cette notification n\'existe pas'); -} diff --git a/system/action/std/hermes/notification/deleteAll.php b/system/action/std/hermes/notification/deleteAll.php deleted file mode 100755 index 5c2b36c4e..000000000 --- a/system/action/std/hermes/notification/deleteAll.php +++ /dev/null @@ -1,17 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$nbr = $notificationManager->deleteByRPlayer($session->get('playerId')); - -if ($nbr > 1) { - $session->addFlashbag($nbr . ' notifications ont été supprimées.', Flashbag::TYPE_SUCCESS); -} else if ($nbr == 1) { - $session->addFlashbag('Une notification a été supprimée.', Flashbag::TYPE_SUCCESS); -} else { - $session->addFlashbag('Toutes vos notifications ont déjà été supprimées.', Flashbag::TYPE_SUCCESS); -} diff --git a/system/action/std/hermes/notification/readAll.php b/system/action/std/hermes/notification/readAll.php deleted file mode 100755 index 0694214bd..000000000 --- a/system/action/std/hermes/notification/readAll.php +++ /dev/null @@ -1,26 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$notifications = $notificationManager->getUnreadNotifications($session->get('playerId')); -$nbNotifications = count($notifications); - -foreach ($notifications as $notification) { - $notification->setReaded(1); -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(Notification::class); - -if ($nbNotifications > 1) { - $session->addFlashbag($nbNotifications . ' notifications ont été marquées comme lues.', Flashbag::TYPE_SUCCESS); -} else if ($nbNotifications == 1) { - $session->addFlashbag('Une notification a été marquée comme lue.', Flashbag::TYPE_SUCCESS); -} else { - $session->addFlashbag('Toutes vos notifications ont déjà été lues.', Flashbag::TYPE_SUCCESS); -} diff --git a/system/action/std/hermes/radio/write.php b/system/action/std/hermes/radio/write.php deleted file mode 100755 index 710c62def..000000000 --- a/system/action/std/hermes/radio/write.php +++ /dev/null @@ -1,39 +0,0 @@ -getContainer()->get('app.request'); -//$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -//$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -// -//for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { -// $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('sector'); -//} -//for ($i = 0; $i < $session->get('playerBase')->get('ms')->size(); $i++) { -// $verif[] = $session->get('playerBase')->get('ms')->get($i)->get('sector'); -//} -//$verif = array_unique($verif); -// -//$sector = Utils::getHTTPData('sector'); -//$content = Utils::getHTTPData('content'); -// -// -//// protection des inputs -//$content = $parser->protect($content); -// -//if ($sector !== FALSE AND $content !== FALSE AND in_array($sector, $verif) AND $content !== '') { -// $sector = intval($sector); -// -// $message = new MessageRadio(); -// $message->rPlayer = $session->get('playerId'); -// $message->rSystem = $sector; -// $message->edit($content); -// ASM::$mrm->add($message); -// -// CTR::$alert->add('Message envoyé', ALERT_STD_SUCCESS); -//} else { -// CTR::$alert->add('pas assez d\'informations pour écrire un message dans une radio', ALERT_STD_FILLFORM); -//} diff --git a/system/action/std/hermes/roadmap/write.php b/system/action/std/hermes/roadmap/write.php deleted file mode 100755 index a9fcc9215..000000000 --- a/system/action/std/hermes/roadmap/write.php +++ /dev/null @@ -1,43 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$roadmapManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\RoadMapManager::class); - -if ($session->get('playerInfo')->get('admin') == FALSE) { - $response->redirect('profil'); -} else { - $content = $request->request->get('content'); - $statement = $request->query->get('statement', false); - - if (!empty($content)) { - - $rm = new RoadMap(); - $rm->rPlayer = $session->get('playerId'); - $rm->setContent($content); - $rm->setParsedContent($parser->parse($content)); - if ($statement !== false) { - if ($statement == 0 OR $statement == 1) { - $rm->statement = $statement; - } - } else { - $rm->statement = RoadMap::DISPLAYED; - } - $rm->dCreation = Utils::now(); - $roadmapManager->add($rm); - - $session->addFlashbag('Roadmap publiée', Flashbag::TYPE_SUCCESS); - } else { - throw new FormException('pas assez d\'informations pour écrire un message dans la roadmap'); - } -} diff --git a/system/action/std/main.php b/system/action/std/main.php deleted file mode 100755 index 30149dfd7..000000000 --- a/system/action/std/main.php +++ /dev/null @@ -1,150 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$actionPath = $container->getParameter('action'); - -# démarre la redirection standard vers la page précédente -$response->redirect($session->getLastHistory()); - -if ($request->query->has('sftr')) { - $session->add('sftr', $request->query->get('sftr')); -} - -if ($request->query->has('token') && $session->get('token') === $request->query->get('token')) { - switch ($request->query->get('a')) { - # GENERAL - case 'switchbase': include $actionPath . 'common/switchBase.php'; break; - case 'switchparams': include $actionPath . 'common/switchParams.php'; break; - case 'sendsponsorshipemail': include $actionPath . 'common/sendSponsorshipEmail.php'; break; - case 'discordrequest': include $actionPath . 'common/discordRequest.php'; break; - - # ATHENA - case 'updateinvest': include $actionPath . 'athena/general/updateInvest.php'; break; - case 'switchdockmode': include $actionPath . 'athena/general/switchDockMode.php'; break; - case 'createschoolclass': include $actionPath . 'athena/general/createSchoolClass.php'; break; - case 'giveresource': include $actionPath . 'athena/general/giveResource.php'; break; - case 'giveships': include $actionPath . 'athena/general/giveShips.php'; break; - case 'renamebase': include $actionPath . 'athena/general/renameBase.php'; break; - case 'changebasetype': include $actionPath . 'athena/general/changeBaseType.php'; break; - case 'leavebase': include $actionPath . 'athena/general/leaveBase.php'; break; - - case 'buildbuilding': include $actionPath . 'athena/building/build.php'; break; - case 'dequeuebuilding': include $actionPath . 'athena/building/dequeue.php'; break; - - case 'buildship': include $actionPath . 'athena/ship/build.php'; break; - case 'dequeueship': include $actionPath . 'athena/ship/dequeue.php'; break; - case 'recycleship': include $actionPath . 'athena/ship/recycle.php'; break; - - case 'proposeroute': include $actionPath . 'athena/route/propose.php'; break; - case 'acceptroute': include $actionPath . 'athena/route/accept.php'; break; - case 'refuseroute': include $actionPath . 'athena/route/refuse.php'; break; - case 'cancelroute': include $actionPath . 'athena/route/cancel.php'; break; - case 'deleteroute': include $actionPath . 'athena/route/delete.php'; break; - - case 'proposetransaction': include $actionPath . 'athena/transaction/propose.php'; break; - case 'accepttransaction': include $actionPath . 'athena/transaction/accept.php'; break; - case 'canceltransaction': include $actionPath . 'athena/transaction/cancel.php'; break; - - case 'createmission': include $actionPath . 'athena/recycling/createMission.php'; break; - case 'cancelmission': include $actionPath . 'athena/recycling/cancelMission.php'; break; - case 'addtomission': include $actionPath . 'athena/recycling/addToMission.php'; break; - - # HERMES - case 'startconversation': include $actionPath . 'hermes/conversation/start.php'; break; - case 'writeconversation': include $actionPath . 'hermes/conversation/write.php'; break; - case 'leaveconversation': include $actionPath . 'hermes/conversation/leave.php'; break; - case 'adduserconversation': include $actionPath . 'hermes/conversation/addUser.php'; break; - case 'updatedisplayconversation':include $actionPath .'hermes/conversation/updateDisplay.php'; break; - case 'updatetitleconversation': include $actionPath . 'hermes/conversation/updateTitle.php'; break; - case 'writeofficialconversation':include $actionPath .'hermes/conversation/writeOfficial.php'; break; - case 'writefactionconversation':include $actionPath . 'hermes/conversation/writeFaction.php'; break; - - case 'readallnotif': include $actionPath . 'hermes/notification/readAll.php'; break; - case 'deleteallnotif': include $actionPath . 'hermes/notification/deleteAll.php'; break; - case 'deletenotif': include $actionPath . 'hermes/notification/delete.php'; break; - case 'archivenotif': include $actionPath . 'hermes/notification/archive.php'; break; - - case 'writeroadmap': include $actionPath . 'hermes/roadmap/write.php'; break; - - # PROMETHEE - case 'buildtechno': include $actionPath . 'promethee/technology/build.php'; break; - case 'dequeuetechno': include $actionPath . 'promethee/technology/dequeue.php'; break; - - # ZEUS - case 'searchplayer': include $actionPath . 'zeus/player/searchPlayer.php'; break; - case 'updateuniinvest': include $actionPath . 'zeus/player/updateUniInvest.php'; break; - case 'disconnect': include $actionPath . 'zeus/player/disconnect.php'; break; - case 'sendcredit': include $actionPath . 'zeus/player/sendCredit.php'; break; - case 'sendcredittofaction': include $actionPath . 'zeus/player/sendCreditToFaction.php'; break; - case 'sendcreditfromfaction': include $actionPath . 'zeus/player/sendCreditFromFaction.php'; break; - case 'abandonserver': include $actionPath . 'zeus/player/abandonServer.php'; break; - case 'switchadvertisement': include $actionPath . 'zeus/player/switchAdvertisement.php'; break; - - case 'validatestep': include $actionPath . 'zeus/tutorial/validateStep.php'; break; - - # ARTEMIS - case 'spy': include $actionPath . 'artemis/spy.php'; break; - case 'deletespyreport': include $actionPath . 'artemis/delete.php'; break; - case 'deleteallspyreport': include $actionPath . 'artemis/deleteAll.php'; break; - - # ARES - case 'archivereport': include $actionPath . 'ares/report/archive.php'; break; - case 'deletereport': include $actionPath . 'ares/report/delete.php'; break; - case 'deleteallreport': include $actionPath . 'ares/report/deleteAll.php'; break; - - case 'movefleet': include $actionPath . 'ares/fleet/move.php'; break; - case 'loot': include $actionPath . 'ares/fleet/loot.php'; break; - case 'colonize': include $actionPath . 'ares/fleet/colonize.php'; break; - case 'conquer': include $actionPath . 'ares/fleet/conquer.php'; break; - case 'cancelmove': include $actionPath . 'ares/fleet/cancel.php'; break; - - case 'affectcommander': include $actionPath . 'ares/commander/affect.php'; break; - case 'putcommanderinschool': include $actionPath . 'ares/commander/putInSchool.php'; break; - case 'updatenamecommander': include $actionPath . 'ares/commander/updateName.php'; break; - case 'emptycommander': include $actionPath . 'ares/commander/empty.php'; break; - case 'firecommander': include $actionPath . 'ares/commander/fire.php'; break; - case 'changeline': include $actionPath . 'ares/commander/changeLine.php'; break; - - # DEMETER - case 'writemessageforum': include $actionPath . 'demeter/message/write.php'; break; - case 'movetopicforum': include $actionPath . 'demeter/topic/move.php'; break; - case 'closetopicforum': include $actionPath . 'demeter/topic/close.php'; break; - case 'uptopicforum': include $actionPath . 'demeter/topic/up.php'; break; - case 'archivetopicforum': include $actionPath . 'demeter/topic/archive.php'; break; - case 'editmessageforum': include $actionPath . 'demeter/message/edit.php'; break; - case 'createtopicforum': include $actionPath . 'demeter/topic/createTopic.php'; break; - - case 'writenews': include $actionPath . 'demeter/news/write.php'; break; - case 'editnews': include $actionPath . 'demeter/news/edit.php'; break; - case 'pinnews': include $actionPath . 'demeter/news/pin.php'; break; - case 'deletenews': include $actionPath . 'demeter/news/delete.php'; break; - - case 'postulate': include $actionPath . 'demeter/election/postulate.php'; break; - case 'makeacoup': include $actionPath . 'demeter/election/makeACoup.php'; break; - case 'vote': include $actionPath . 'demeter/election/vote.php'; break; - case 'choosegovernment': include $actionPath . 'demeter/election/chooseGovernment.php'; break; - case 'fireminister': include $actionPath . 'demeter/election/fire.php'; break; - case 'resign': include $actionPath . 'demeter/election/resign.php'; break; - case 'abdicate': include $actionPath . 'demeter/election/abdicate.php'; break; - - case 'votelaw': include $actionPath . 'demeter/law/vote.php'; break; - case 'createlaw': include $actionPath . 'demeter/law/createLaw.php'; break; - - case 'updatefactiondesc': include $actionPath . 'demeter/updateFactionDesc.php'; break; - - case 'donate': include $actionPath . 'demeter/donate.php'; break; - - default : - throw new ErrorException('action inconnue ou non-référencée'); - } -} elseif ($request->query->get('a') == 'switchbase') { - # action sans token - include $actionPath . 'common/switchBase.php'; -} else { - throw new ErrorException('votre token CSRF a expiré'); -} diff --git a/system/action/std/promethee/technology/build.php b/system/action/std/promethee/technology/build.php deleted file mode 100755 index aa2b825e7..000000000 --- a/system/action/std/promethee/technology/build.php +++ /dev/null @@ -1,140 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Database\Database::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$technologyQueueManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyQueueManager::class); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$researchManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\ResearchManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -for ($i=0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$techno = $request->query->get('techno'); - - -if ($baseId !== FALSE AND $techno !== FALSE AND in_array($baseId, $verif)) { - if ($technologyHelper->isATechnology($techno) && !$technologyHelper->isATechnologyNotDisplayed($techno)) { - if (($technologyQueueManager->getPlayerTechnologyQueue($session->get('playerId'), $techno)) === null) { - - $technos = $technologyManager->getPlayerTechnology($session->get('playerId')); - $targetLevel = $technos->getTechnology($techno) + 1; - // @TODO I think this piece of code is dead - $technologyQueues = $technologyQueueManager->getPlaceQueues($baseId); - $nbTechnologyQueues = count($technologyQueues); - foreach ($technologyQueues as $technologyQueue) { - if ($technologyQueue->technology == $techno) { - $targetLevel++; - } - } - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $S_RSM1 = $researchManager->getCurrentSession(); - $researchManager->newSession(ASM_UMODE); - $researchManager->load(array('rPlayer' => $session->get('playerId'))); - - if ($technologyHelper->haveRights($techno, 'resource', $targetLevel, $ob->getResourcesStorage()) - AND $technologyHelper->haveRights($techno, 'credit', $targetLevel, $session->get('playerInfo')->get('credit')) - AND $technologyHelper->haveRights($techno, 'queue', $ob, $nbTechnologyQueues) - AND $technologyHelper->haveRights($techno, 'levelPermit', $targetLevel) - AND $technologyHelper->haveRights($techno, 'technosphereLevel', $ob->getLevelTechnosphere()) - AND ($technologyHelper->haveRights($techno, 'research', $targetLevel, $researchManager->getResearchList($researchManager->get())) === TRUE) - AND $technologyHelper->haveRights($techno, 'maxLevel', $targetLevel) - AND $technologyHelper->haveRights($techno, 'baseType', $ob->typeOfBase)) { - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE) { - switch ($session->get('playerInfo')->get('stepTutorial')) { - case TutorialResource::SHIP0_UNBLOCK: - if ($techno == Technology::SHIP0_UNBLOCK) { - $tutorialHelper->setStepDone(); - } - break; - case TutorialResource::SHIP1_UNBLOCK: - if ($techno == Technology::SHIP1_UNBLOCK) { - $tutorialHelper->setStepDone(); - } - break; - } - } - - // construit la nouvelle techno - $time = $technologyHelper->getInfo($techno, 'time', $targetLevel); - $bonusPercent = $session->get('playerBonus')->get(PlayerBonus::TECHNOSPHERE_SPEED); - if ($session->get('playerInfo')->get('color') == ColorResource::APHERA) { - # bonus if the player is from Aphera - $bonusPercent += ColorResource::BONUS_APHERA_TECHNO; - } - - # ajout du bonus du lieu - $bonusPercent += Game::getImprovementFromScientificCoef($ob->planetHistory); - $bonus = round($time * $bonusPercent / 100); - - $createdAt = - ($nbTechnologyQueues === 0) - ? Utils::now() - : $technologyQueues[$nbTechnologyQueues - 1]->getEndedAt() - ; - $tq = - (new TechnologyQueue()) - ->setPlayerId($session->get('playerId')) - ->setPlaceId($baseId) - ->setTechnology($techno) - ->setTargetLevel($targetLevel) - ->setCreatedAt($createdAt) - ->setEndedAt(Utils::addSecondsToDate($createdAt, round($time - $bonus))) - ; - $technologyQueueManager->add($tq); - - // débit resources - $orbitalBaseManager->decreaseResources($ob, $technologyHelper->getInfo($techno, 'resource', $targetLevel)); - - // débit des crédits - $playerManager->decreaseCredit($playerManager->get($session->get('playerId')), $technologyHelper->getInfo($techno, 'credit', $targetLevel)); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_BaseAction(`from`, type, opt1, opt2, weight, dAction) - VALUES(?, ?, ?, ?, ?, ?)' - ); - $qr->execute([$session->get('playerId'), 2, $techno, $targetLevel, (DataAnalysis::resourceToStdUnit($technologyHelper->getInfo($techno, 'resource', $targetLevel)) + DataAnalysis::creditToStdUnit($technologyHelper->getInfo($techno, 'credit', $targetLevel))), Utils::now()]); - } - - // alerte - $session->addFlashbag('Développement de la technologie programmée', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('les conditions ne sont pas remplies pour développer une technologie'); - } - $researchManager->changeSession($S_RSM1); - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('Cette technologie est déjà en construction'); - } - } else { - throw new ErrorException('la technologie indiquée n\'est pas valide'); - } -} else { - throw new FormException('pas assez d\'informations pour développer une technologie'); -} diff --git a/system/action/std/promethee/technology/dequeue.php b/system/action/std/promethee/technology/dequeue.php deleted file mode 100755 index 5ceadc210..000000000 --- a/system/action/std/promethee/technology/dequeue.php +++ /dev/null @@ -1,95 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$technologyQueueManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyQueueManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$technologyResourceRefund = $this->getContainer()->getParameter('promethee.technology_queue.resource_refund'); -$technologyCreditRefund = $this->getContainer()->getParameter('promethee.technology_queue.credit_refund'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $verif[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); -} - -$baseId = $request->query->get('baseid'); -$techno = $request->query->get('techno'); - - -if ($baseId !== FALSE AND $techno !== FALSE AND in_array($baseId, $verif)) { - if ($technologyHelper->isATechnology($techno)) { - if (($ob = $orbitalBaseManager->getPlayerBase($baseId, $session->get('playerId'))) !== null) { - $placeTechnologyQueues = $technologyQueueManager->getPlaceQueues($baseId); - - $player = $playerManager->get($session->get('playerId')); - - $index = NULL; - $targetLevel = 0; - $nbQueues = count($placeTechnologyQueues); - for ($i = 0; $i < $nbQueues; $i++) { - $queue = $placeTechnologyQueues[$i]; - // get the queue to delete - if ($queue->technology == $techno AND $queue->targetLevel > $targetLevel) { - $index = $i; - $targetLevel = $queue->targetLevel; - $dStart = $queue->dStart; - } - } - - # if it's the first, the next must restart by now - if ($index == 0) { - $dStart = Utils::now(); - } - - if ($index !== NULL) { - # shift - for ($i = $index + 1; $i < $nbQueues; $i++) { - $queue = $placeTechnologyQueues[$i]; - - $oldDate = $queue->dEnd; - $queue->dEnd = Utils::addSecondsToDate($dStart, Utils::interval($queue->dStart, $queue->dEnd, 's')); - $queue->dStart = $dStart; - // @TODO handle rescheduling - //$scheduler->reschedule($queue, $queue->dEnd, $oldDate); - - $dStart = $queue->dEnd; - } - - // @TODO handle cancellation - //$scheduler->cancel($placeTechnologyQueues[$index], $placeTechnologyQueues[$index]->getEndedAt()); - $entityManager->remove($placeTechnologyQueues[$index]); - $entityManager->flush(TechnologyQueue::class); - - // rends les ressources et les crédits au joueur - $resourcePrice = $technologyHelper->getInfo($techno, 'resource', $targetLevel); - $resourcePrice *= $technologyResourceRefund; - $orbitalBaseManager->increaseResources($ob, $resourcePrice, TRUE); - $creditPrice = $technologyHelper->getInfo($techno, 'credit', $targetLevel); - $creditPrice *= $technologyCreditRefund; - $playerManager->increaseCredit($player, $creditPrice); - $session->addFlashbag('Construction annulée, vous récupérez le ' . $technologyResourceRefund * 100 . '% des ressources ainsi que le ' . $technologyCreditRefund * 100 . '% des crédits investis pour le développement', Flashbag::TYPE_SUCCESS); - - } else { - throw new ErrorException('impossible d\'annuler la technologie'); - } - } else { - throw new ErrorException('cette base ne vous appartient pas'); - } - } else { - throw new ErrorException('la technologie indiquée n\'est pas valide'); - } -} else { - throw new FormException('pas assez d\'informations pour annuler le développement d\'une technologie'); -} diff --git a/system/action/std/zeus/player/abandonServer.php b/system/action/std/zeus/player/abandonServer.php deleted file mode 100644 index 46da5dbb2..000000000 --- a/system/action/std/zeus/player/abandonServer.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$response = $this->getContainer()->get('app.response'); - -if (($player = $playerManager->get($session->get('playerId'))) !== null) { - # sending API call to delete account link to server - $success = $this->getContainer()->get('api')->abandonServer($player->bind); - - if ($success) { - $player->bind = $player->bind . 'ABANDON'; - $player->statement = Player::DELETED; - - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); - # clean session - $session->destroy(); - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs', TRUE); - } else { - throw new ErrorException('Une erreur s\'est produite sur le portail. Contactez un administrateur pour résoudre ce problème.'); - } -} else { - throw new ErrorException('Une erreur s\'est produite. Contactez un administrateur pour résoudre ce problème.'); -} diff --git a/system/action/std/zeus/player/disconnect.php b/system/action/std/zeus/player/disconnect.php deleted file mode 100755 index 0b078bae0..000000000 --- a/system/action/std/zeus/player/disconnect.php +++ /dev/null @@ -1,7 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionId = $session->get('session_id'); -$session->destroy(); -$this->getContainer()->get(\Asylamba\Classes\Daemon\ClientManager::class)->removeClient($sessionId); -$this->getContainer()->get('app.response')->redirect('profil', TRUE); diff --git a/system/action/std/zeus/player/searchPlayer.php b/system/action/std/zeus/player/searchPlayer.php deleted file mode 100755 index 372651d0c..000000000 --- a/system/action/std/zeus/player/searchPlayer.php +++ /dev/null @@ -1,22 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); - -# string name nom du joueur -$playerid = $request->request->get('playerid'); - -if ($playerid !== FALSE) { - if (($player = $playerManager->get($playerid)) !== null) { - $response->redirect('embassy/player-' . $player->getId()); - } else { - throw new ErrorException('Aucun joueur ne correspond à votre recherche.'); - } -} else { - throw new FormException('pas assez d\'informations pour chercher un joueur'); -} diff --git a/system/action/std/zeus/player/sendCredit.php b/system/action/std/zeus/player/sendCredit.php deleted file mode 100755 index 44d281110..000000000 --- a/system/action/std/zeus/player/sendCredit.php +++ /dev/null @@ -1,102 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$mediaPath = $this->getContainer()->get('media'); - -$name = $request->request->get('name'); -$quantity = $request->request->get('quantity'); -$text = $request->request->get('text'); - -// input protection -$name = $parser->protect($name); -$text = $parser->parse($text); - -if ($name !== FALSE AND $quantity !== FALSE) { - if (strlen($text) < 500) { - $credit = intval($quantity); - - if ($credit > 0) { - $receiver = $playerManager->getByName($name); - $sender = $playerManager->get($session->get('playerId')); - - if ($receiver !== null && $sender !== null) { - if ($sender->credit >= $credit) { - $playerManager->decreaseCredit($sender, $credit); - $playerManager->increaseCredit($receiver, $credit); - - # create the transaction - $ct = new CreditTransaction(); - $ct->rSender = $session->get('playerId'); - $ct->type = CreditTransaction::TYP_PLAYER; - $ct->rReceiver = $receiver->id; - $ct->amount = $credit; - $ct->dTransaction = Utils::now(); - $ct->comment = $text; - $creditTransactionManager->add($ct); - - $n = new Notification(); - $n->setRPlayer($receiver->id); - $n->setTitle('Réception de crédits'); - $n->addBeg(); - $n->addLnk('embassy/player-' . $session->get('playerId'), $session->get('playerInfo')->get('name')); - $n->addTxt(' vous a envoyé des crédits'); - if ($text !== '') { - $n->addTxt(' avec le message suivant : ')->addBrk()->addTxt('"' . $text . '"'); - } else { - $n->addTxt('.'); - } - $n->addBoxResource('credit', Format::numberFormat($credit), ($credit == 1 ? 'crédit reçu' : 'crédits reçus'), $mediaPath); - $n->addEnd(); - $notificationManager->add($n); - - if (true === $this->getContainer()->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_CommercialRelation(`from`, `to`, type, weight, dAction) - VALUES(?, ?, ?, ?, ?)' - ); - $qr->execute([$ct->rSender, $ct->rReceiver, 5, DataAnalysis::creditToStdUnit($ct->amount), Utils::now()]); - } - - $session->addFlashbag('Crédits envoyés', Flashbag::TYPE_SUCCESS); - - } else { - throw new ErrorException('envoi de crédits impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); - } - } else { - if ($sender !== null) { - throw new ErrorException('envoi de crédits impossible - aucun intérêt d\'envoyer des crédits à vous-même !?'); - } else { - throw new ErrorException('envoi de crédits impossible - erreur dans les joueurs'); - } - } - } else { - throw new ErrorException('envoi de crédits impossible - il faut envoyer un nombre entier positif'); - } - } else { - throw new FormException('le texte ne doit pas dépasser les 500 caractères'); - } -} else { - throw new FormException('pas assez d\'informations pour envoyer des crédits'); -} diff --git a/system/action/std/zeus/player/sendCreditFromFaction.php b/system/action/std/zeus/player/sendCreditFromFaction.php deleted file mode 100644 index 0f5fffc64..000000000 --- a/system/action/std/zeus/player/sendCreditFromFaction.php +++ /dev/null @@ -1,92 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$mediaPath = $this->getContainer()->getParameter('media'); - -# give credit from faction to player action - -# int name destination player name -# int quantity quantity of credit to send -# [string text] facultative text - -$name = $request->request->get('name'); -$quantity = $request->request->get('quantity'); -$text = $request->request->get('text'); - -// input protection -$p = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$name = $p->protect($name); -$text = $p->parse($text); - -if ($name !== FALSE AND $quantity !== FALSE) { - if ($session->get('playerInfo')->get('status') == Player::TREASURER) { - if (strlen($text) < 500) { - $credit = intval($quantity); - - if ($credit > 0) { - if (($faction = $colorManager->get($session->get('playerInfo')->get('color'))) !== null) { - if (($receiver = $playerManager->getByName($name)) !== null) { - if ($faction->credits >= $credit) { - $faction->decreaseCredit($credit); - $playerManager->increaseCredit($receiver, $credit); - - # create the transaction - $ct = new CreditTransaction(); - $ct->rSender = $session->get('playerInfo')->get('color'); - $ct->type = CreditTransaction::TYP_F_TO_P; - $ct->rReceiver = $receiver->id; - $ct->amount = $credit; - $ct->dTransaction = Utils::now(); - $ct->comment = $text; - $creditTransactionManager->add($ct); - - $n = new Notification(); - $n->setRPlayer($receiver->id); - $n->setTitle('Réception de crédits'); - $n->addBeg(); - $n->addTxt('Votre faction vous a envoyé des crédits'); - if ($text !== '') { - $n->addTxt(' avec le message suivant : ')->addBrk()->addTxt('"' . $text . '"'); - } else { - $n->addTxt('.'); - } - $n->addBoxResource('credit', Format::numberFormat($credit), ($credit == 1 ? 'crédit reçu' : 'crédits reçus'), $mediaPath); - $n->addEnd(); - $notificationManager->add($n); - $session->addFlashbag('Crédits envoyés', Flashbag::TYPE_SUCCESS); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - } else { - throw new ErrorException('envoi de crédits impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); - } - } else { - throw new ErrorException('envoi de crédits impossible - erreur dans les joueurs'); - } - } else { - throw new ErrorException('envoi de crédits impossible - erreur dans la faction'); - } - } else { - throw new ErrorException('envoi de crédits impossible - il faut envoyer un nombre entier positif'); - } - } else { - throw new FormException('le texte ne doit pas dépasser les 500 caractères'); - } - } else { - throw new ErrorException('Seul le responsable financier de votre faction peut faire cette action.'); - } -} else { - throw new FormException('pas assez d\'informations pour envoyer des crédits'); -} diff --git a/system/action/std/zeus/player/sendCreditToFaction.php b/system/action/std/zeus/player/sendCreditToFaction.php deleted file mode 100755 index c3f899b46..000000000 --- a/system/action/std/zeus/player/sendCreditToFaction.php +++ /dev/null @@ -1,61 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$quantity = $request->request->get('quantity'); - -if ($quantity !== FALSE) { - $credit = intval($quantity); - - if ($credit > 0) { - if (($sender = $playerManager->get($session->get('playerId'))) !== null) { - if ($sender->rColor > 0) { - if ($sender->credit >= $credit) { - if (($faction = $colorManager->get($sender->rColor)) !== null) { - # make the transaction - $playerManager->decreaseCredit($sender, $credit); - $faction->increaseCredit($credit); - - # create the transaction - $ct = new CreditTransaction(); - $ct->rSender = $session->get('playerId'); - $ct->type = CreditTransaction::TYP_FACTION; - $ct->rReceiver = $sender->rColor; - $ct->amount = $credit; - $ct->dTransaction = Utils::now(); - $ct->comment = NULL; - $creditTransactionManager->add($ct); - - $session->addFlashbag('Crédits envoyés', Flashbag::TYPE_SUCCESS); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(); - } else { - throw new ErrorException('envoi de crédits impossible - faction introuvable'); - } - } else { - throw new ErrorException('envoi de crédits impossible - vous ne pouvez pas envoyer plus que ce que vous possédez'); - } - } else { - throw new ErrorException('envoi de crédits impossible - vous n\'avez pas de faction'); - } - } else { - throw new ErrorException('envoi de crédits impossible - erreur dans le joueur'); - } - } else { - throw new ErrorException('envoi de crédits impossible - il faut envoyer un nombre entier positif'); - } -} else { - throw new FormException('pas assez d\'informations pour envoyer des crédits'); -} diff --git a/system/action/std/zeus/player/switchAdvertisement.php b/system/action/std/zeus/player/switchAdvertisement.php deleted file mode 100755 index b20e79757..000000000 --- a/system/action/std/zeus/player/switchAdvertisement.php +++ /dev/null @@ -1,23 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -if (($player = $playerManager->get($session->get('playerId'))) !== null) { - if ($player->premium == 0) { - $player->premium = 1; - $session->get('playerInfo')->add('premium', 1); - $session->addFlashbag('Publicité déactivée. Vous êtes vraiment sûr ? Allez, re-cliquez un coup, c\'est cool les pubs.', Flashbag::TYPE_SUCCESS); - } else { - $player->premium = 0; - $session->get('playerInfo')->add('premium', 0); - $session->addFlashbag('Publicitées activées. Merci beaucoup pour votre soutien. Je vous aime.', Flashbag::TYPE_SUCCESS); - } - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); -} else { - throw new ErrorException('petit bug là, contactez un administrateur rapidement sous risque que votre ordinateur explose'); -} diff --git a/system/action/std/zeus/player/updateUniInvest.php b/system/action/std/zeus/player/updateUniInvest.php deleted file mode 100755 index 50f0b0dd8..000000000 --- a/system/action/std/zeus/player/updateUniInvest.php +++ /dev/null @@ -1,34 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); - -$investment = $request->request->get('credit'); - -if ($investment !== FALSE) { - if ($investment <= 500000) { - $playerManager->updateUniversityInvestment($session->get('playerId'), (int) $investment); - - # tutorial - if ($session->get('playerInfo')->get('stepDone') == FALSE && - $session->get('playerInfo')->get('stepTutorial') === TutorialResource::MODIFY_UNI_INVEST) { - $tutorialHelper->setStepDone(); - } - - $session->addFlashbag('L\'investissement dans l\'université a été modifié', Flashbag::TYPE_SUCCESS); - } else { - throw new ErrorException('La limite maximale d\'investissement dans l\'Université est de 500\'000 crédits.'); - } -} else { - throw new FormException('pas assez d\'informations pour modifier cet investissement'); -} diff --git a/system/action/std/zeus/tutorial/validateStep.php b/system/action/std/zeus/tutorial/validateStep.php deleted file mode 100755 index 762fe96d5..000000000 --- a/system/action/std/zeus/tutorial/validateStep.php +++ /dev/null @@ -1,234 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$response = $this->getContainer()->get('app.response'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$tutorialHelper = $this->getContainer()->get(\Asylamba\Modules\Zeus\Helper\TutorialHelper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); - -$playerId = $session->get('playerId'); -$stepTutorial = $session->get('playerInfo')->get('stepTutorial'); -$stepDone = $session->get('playerInfo')->get('stepDone'); - -if ($stepDone == TRUE AND TutorialResource::stepExists($stepTutorial)) { - $player = $playerManager->get($playerId); - - if ($player->stepDone == $stepDone AND $player->stepTutorial == $stepTutorial) { - - $experience = TutorialResource::getInfo($stepTutorial, 'experienceReward'); - $credit = TutorialResource::getInfo($stepTutorial, 'creditReward'); - $resource = TutorialResource::getInfo($stepTutorial, 'resourceReward'); - $ship = TutorialResource::getInfo($stepTutorial, 'shipReward'); - $playerBases = $orbitalBaseManager->getPlayerBases($player->id); - $alert = 'Etape validée. '; - - $firstReward = true; - if ($experience > 0) { - $firstReward = false; - $alert .= 'Vous gagnez ' . $experience . ' points d\'expérience'; - $playerManager->increaseExperience($player, $experience); - } - - if ($credit > 0) { - if ($firstReward) { - $firstReward = false; - $alert .= 'Vous gagnez ' . $credit . 'crédits'; - } else { - $alert .= ', ainsi que ' . $credit . ' crédits'; - } - $playerManager->increaseCredit($player, $credit); - } - - if ($resource > 0 || $ship != array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) { - $ob = $playerBases[0]; - - if ($resource > 0) { - if ($firstReward) { - $firstReward = false; - $alert .= 'Vous gagnez ' . $resource . ' ressources'; - } else { - $alert .= ' et ' . $resource . ' ressources'; - } - $alert .= ' sur votre base orbitale ' . $ob->name . '. '; - $orbitalBaseManager->increaseResources($ob, $resource, TRUE); - } - - if ($ship != array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) { - $qty = 0; - $ships = array(); - foreach ($ship as $key => $value) { - if ($value != 0) { - $ships[$qty] = array(); - $ships[$qty]['quantity'] = $value; - $ships[$qty]['name'] = ShipResource::getInfo($key, 'codeName'); - $qty++; - - # add ship to dock - $orbitalBaseManager->addShipToDock($ob, $key, $value); - } - } - if ($firstReward) { - $firstReward = false; - $alert .= 'Vous gagnez '; - $endOfAlert = ' sur votre base orbitale ' . $ob->name . '. '; - } else { - $alert .= '. Vous gagnez également '; - $endOfAlert = '. '; - } - - # complete alert - foreach ($ships as $key => $value) { - if ($key == 0) { - $alert .= $value['quantity'] . ' ' . $value['name'] . Format::plural($value['quantity']); - } else if ($qty - 1 == $key) { - $alert .= ' et ' . $value['quantity'] . ' ' . $value['name'] . Format::plural($value['quantity']); - } else { - $alert .= ', ' . $value['quantity'] . ' ' . $value['name'] . Format::plural($value['quantity']); - } - } - $alert .= $endOfAlert; - } - } else { - $alert .= '. '; - } - - $alert .= 'La prochaine étape vous attend.'; - $session->addFlashbag($alert, Flashbag::TYPE_SUCCESS); - - $nextStep = $stepTutorial; - if (TutorialResource::isLastStep($stepTutorial)) { - $nextStep = 0; - $session->addFlashbag('Bravo, vous avez terminé le tutoriel. Bonne continuation et bon amusement sur Asylamba, vous pouvez maintenant voler de vos propres ailes !', Flashbag::TYPE_SUCCESS); - } else { - $nextStep += 1; - } - - # verify if the next step is already done - $nextStepAlreadyDone = FALSE; - $redirectWithoutJeanMi = FALSE; - switch ($nextStep) { - case TutorialResource::NAVIGATION : - $redirectWithoutJeanMi = TRUE; - $nextStepAlreadyDone = TRUE; - break; - case TutorialResource::GENERATOR_LEVEL_2 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::GENERATOR, 2); - break; - case TutorialResource::REFINERY_LEVEL_3 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::REFINERY, 3); - break; - case TutorialResource::STORAGE_LEVEL_3 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::STORAGE, 3); - break; - case TutorialResource::TECHNOSPHERE_LEVEL_1 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::TECHNOSPHERE, 1); - break; - case TutorialResource::MODIFY_UNI_INVEST: - # asdf - break; - case TutorialResource::CREATE_COMMANDER: - # asdf - break; - case TutorialResource::DOCK1_LEVEL_1 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::DOCK1, 1); - break; - case TutorialResource::SHIP0_UNBLOCK : - $nextStepAlreadyDone = $tutorialHelper->isNextTechnoStepAlreadyDone($playerId, Technology::SHIP0_UNBLOCK); - break; - case TutorialResource::BUILD_SHIP0 : - # verify in the queue - # load the queues - foreach ($playerBases as $ob) { - $shipQueues = $shipQueueManager->getBaseQueues($ob->rPlace); - foreach ($shipQueues as $shipQueue) { - if ($shipQueue->shipNumber == ShipResource::PEGASE) { - $nextStepAlreadyDone = TRUE; - break; - } - } - } - break; - case TutorialResource::AFFECT_COMMANDER: - # asdf - break; - case TutorialResource::FILL_SQUADRON : - # asdf - break; - case TutorialResource::MOVE_FLEET_LINE : - # asdf - break; - case TutorialResource::SPY_PLANET : - # asdf - break; - case TutorialResource::LOOT_PLANET : - # asdf - break; - case TutorialResource::FACTION_FORUM : - # asdf - break; - case TutorialResource::SHARE_ASYLAMBA : - $nextStepAlreadyDone = TRUE; - break; - case TutorialResource::REFINERY_LEVEL_10 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::REFINERY, 10); - break; - case TutorialResource::STORAGE_LEVEL_8 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::STORAGE, 8); - break; - case TutorialResource::DOCK1_LEVEL_6 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::DOCK1, 6); - break; - case TutorialResource::REFINERY_LEVEL_16 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::REFINERY, 16); - break; - case TutorialResource::STORAGE_LEVEL_12 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::STORAGE, 12); - break; - case TutorialResource::TECHNOSPHERE_LEVEL_6 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::TECHNOSPHERE, 6); - break; - case TutorialResource::SHIP1_UNBLOCK : - $nextStepAlreadyDone = $tutorialHelper->isNextTechnoStepAlreadyDone($playerId, Technology::SHIP1_UNBLOCK); - break; - case TutorialResource::DOCK1_LEVEL_15 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::DOCK1, 15); - break; - case TutorialResource::BUILD_SHIP1 : - # asdf - break; - case TutorialResource::REFINERY_LEVEL_20 : - $nextStepAlreadyDone = $tutorialHelper->isNextBuildingStepAlreadyDone($playerId, OrbitalBaseResource::REFINERY, 20); - break; - case TutorialResource::SPONSORSHIP : - $nextStepAlreadyDone = TRUE; - break; - } - if (!$nextStepAlreadyDone) { - $player->stepDone = 0; - $session->get('playerInfo')->add('stepDone', FALSE); - } - $player->stepTutorial = $nextStep; - $session->get('playerInfo')->add('stepTutorial', $nextStep); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); - if ($redirectWithoutJeanMi) { - $response->redirect('profil'); - } - } else { - $session->get('playerInfo')->add('stepDone', $player->stepDone); - $session->get('playerInfo')->add('stepTutorial', $player->stepTutorial); - - throw new FormException('Vous ne pouvez pas valider deux fois la même étape.'); - } -} else { - throw new FormException('Impossible de valider l\'étape avant de l\'avoir effectuée.'); -} diff --git a/system/api/apis/ban.php b/system/api/apis/ban.php deleted file mode 100755 index 303da06b0..000000000 --- a/system/api/apis/ban.php +++ /dev/null @@ -1,24 +0,0 @@ -getContainer()->get('app.request'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -if ($request->query->exist('bindkey')) { - if (($player = $playerManager->getByBindKey($request->query->get('bindkey')))) { - $player->setStatement(Player::BANNED); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); - echo serialize(array('statement' => 'success')); - } else { - echo serialize(array( - 'statement' => 'error', - 'message' => 'Joueur inconnu' - )); - } -} else { - echo serialize(array( - 'statement' => 'error', - 'message' => 'Donnée manquante' - )); -} diff --git a/system/api/main.php b/system/api/main.php deleted file mode 100755 index 103e039e7..000000000 --- a/system/api/main.php +++ /dev/null @@ -1,41 +0,0 @@ -getContainer()->get('app.request'); - -$query = API::unParse($_SERVER['REQUEST_URI']); -$query = explode('/', $query); - -foreach ($query as $q) { - $args = explode('-', $q); - - if (count($args) == 2) { - $request->query->add($args[0], $args[1]); - } -} - -# réglage de l'encodage -header('Content-type: text/html; charset=utf-8'); - -if ($this->getContainer()->getParameter('environment') === 'dev' || $request->query->has('password')) { - switch ($request->query->get('a')) { - # case 'ban': include API . 'apis/ban.php'; break; - - default: - echo serialize(array( - 'statement' => 'error', - 'message' => 'API non reconnue par le système' - )); - break; - } -} else { - echo serialize(array( - 'statement' => 'error', - 'message' => 'Accès refusé' - )); -} \ No newline at end of file diff --git a/system/buffer/main.php b/system/buffer/main.php deleted file mode 100755 index 90f9f5d87..000000000 --- a/system/buffer/main.php +++ /dev/null @@ -1,61 +0,0 @@ -getContainer(); -if ($this->getContainer()->getParameter('environment') === 'dev' || $this->getContainer()->get('app.request')->query->get('key') === $this->getContainer()->getParameter('security_buffer_key')) { - - $playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - $security = $this->getContainer()->get(\Asylamba\Classes\Library\Security::class); - - $activePlayers = $playerManager->getByStatements([Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY]); -?> - - - - - <?php echo $this->getContainer()->get('app.response')->getTitle() ?> — <?php echo $container->getParameter('app_subname') ?> — Asylamba - - - - - - - - - -

test

- -
-getParameter('app_root') . 'inscription/bindkey-' . $security->crypt($security->buildBindkey(Utils::generateString(10))) . '">'; - echo 'Créer un'; - echo 'Personnage lvl. 1'; - echo ''; - echo ''; - - if ($container->getParameter('highmode')) { - echo ''; - echo 'Créer un'; - echo 'Personnage lvl. 5'; - echo 'œ""'; - echo '+5'; - echo ''; - } - - foreach ($activePlayers as $player) { - echo ''; - echo 'Grade ' . $player->level . ''; - echo '' . $player->name . ''; - echo ''; - echo '' . $player->level . ''; - echo ''; - } -?> -
- - -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$playerBonusManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerBonusManager::class); -$clientManager = $this->getContainer()->get(\Asylamba\Classes\Daemon\ClientManager::class); - -# création des tableaux de données dans le contrôler -$session->initPlayerInfo(); -$session->initPlayerBase(); -$session->initPlayerBonus(); - -# remplissage des données du joueur -$session->add('playerId', $player->getId()); -$clientManager->bindPlayerId($session->get('session_id'), $player->getId()); - -$session->get('playerInfo')->add('color', $player->getRColor()); -$session->get('playerInfo')->add('name', $player->getName()); -$session->get('playerInfo')->add('avatar', $player->getAvatar()); -$session->get('playerInfo')->add('credit', $player->getCredit()); -$session->get('playerInfo')->add('experience', $player->getExperience()); -$session->get('playerInfo')->add('level', $player->getLevel()); -$session->get('playerInfo')->add('stepTutorial', $player->stepTutorial); -$session->get('playerInfo')->add('stepDone', $player->stepDone); -$session->get('playerInfo')->add('status', $player->status); -$session->get('playerInfo')->add('premium', $player->premium); - -if (Utils::isAdmin($player->getBind())) { - $session->get('playerInfo')->add('admin', TRUE); -} else { - $session->get('playerInfo')->add('admin', FALSE); -} - -$playerBases = $orbitalBaseManager->getPlayerBases($player->getId()); -foreach ($playerBases as $base) { - $session->addBase( - 'ob', $base->getId(), - $base->getName(), - $base->getSector(), - $base->getSystem(), - '1-' . Game::getSizeOfPlanet($base->getPlanetPopulation()), - $base->typeOfBase - ); -} -# remplissage des bonus -$bonus = $playerBonusManager->getBonusByPlayer($player); -$playerBonusManager->initialize($bonus); - -# création des paramètres utilisateur -$session->add('playerParams', new ArrayList()); - -# remplissage des paramètres utilisateur -$session->get('playerParams')->add('base', $session->get('playerBase')->get('ob')->get(0)->get('id')); - -# création des tableaux de données dans le contrôleur -$session->initPlayerEvent(); - -# remplissage des events -$now = Utils::now(); diff --git a/system/connection/main.php b/system/connection/main.php deleted file mode 100755 index 4295186ef..000000000 --- a/system/connection/main.php +++ /dev/null @@ -1,51 +0,0 @@ -getContainer(); -$security = $this->getContainer()->get(\Asylamba\Classes\Library\Security::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -# extraction du bindkey -$query = $security->uncrypt($request->query->get('bindkey')); -$bindKey= $security->extractBindKey($query); -$time = $security->extractTime($query); - -# vérification de la validité du bindkey -if (abs((int)$time - time()) > 300) { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'profil'); -} - -if (($player = $playerManager->getByBindKey($bindKey)) !== null && in_array($player->getStatement(), [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY])) { - $player->synchronized = true; - $player->setStatement(Player::ACTIVE); - - $session->initLastUpdate(); - $session->add('token', Utils::generateString(5)); - - include $container->getParameter('connection') . '/create-session.php'; - - # mise de dLastConnection + dLastActivity - $player->setDLastConnection(Utils::now()); - $player->setDLastActivity(Utils::now()); - - # confirmation au portail - if ($this->getContainer()->getParameter('apimode') === 'enabled') { - $this->getContainer()->get('api')->confirmConnection($bindKey); - } - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); - // redirection vers page de départ - $response->redirect( - ($request->query->get('mode') === 'splash') - ? 'profil/mode-splash' - : 'profil' - ); -} else { - $response->redirect('profil'); -} diff --git a/system/event/loadEvent.php b/system/event/loadEvent.php deleted file mode 100755 index c5a6d2de3..000000000 --- a/system/event/loadEvent.php +++ /dev/null @@ -1,29 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -# chargement des événements concernant les flottes qui attaquent le joueur -if (Utils::interval($session->get('lastUpdate')->get('event'), Utils::now(), 's') > $container->getParameter('time_event_update')) { - - # update de l'heure dans le contrôleur - $session->get('lastUpdate')->add('event', Utils::now()); - - # ajout des événements des flottes entrantes dans le périmètre de contre-espionnage - $places = array(); - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $places[] = $session->get('playerBase')->get('ob')->get($i)->get('id'); - } - for ($i = 0; $i < $session->get('playerBase')->get('ms')->size(); $i++) { - $places[] = $session->get('playerBase')->get('ms')->get($i)->get('id'); - } - # mettre à jour dLastActivity - $player = $playerManager->get($session->get('playerId')); - $player->setDLastActivity(Utils::now()); - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush($player); -} diff --git a/system/inscription/check.php b/system/inscription/check.php deleted file mode 100755 index 75fd62421..000000000 --- a/system/inscription/check.php +++ /dev/null @@ -1,147 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$response = $this->getContainer()->get('app.response'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -# choix des étapes -if (!$request->query->has('step') || $request->query->get('step') == 1) { - if ($request->query->has('bindkey')) { - # extraction du bindkey - $security = $this->container->get(\Asylamba\Classes\Library\Security::class); - $query = $security->uncrypt($request->query->get('bindkey')); - $bindkey= $security->extractBindKey($query); - $time = $security->extractTime($query); - # vérification de la validité du bindkey - if (abs((int)$time - time()) <= 300) { - $session->add('prebindkey', $bindkey); - - # mode de création de joueur - if ($container->getParameter('highmode') && $request->query->has('mode')) { - $session->add('high-mode', TRUE); - } else { - $session->add('high-mode', FALSE); - } - $response->redirect('inscription'); - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs'); - } - } elseif ($session->exist('prebindkey')) { - if ($this->getContainer()->getParameter('apimode') === 'enabled') { - # utilisation de l'API - $api = $this->getContainer()->get('api'); - - if ($api->userExist($session->get('prebindkey'))) { - if ($playerManager->getByBindKey($session->get('prebindkey')) === null) { - $session->add('inscription', new ArrayList()); - $session->get('inscription')->add('bindkey', $session->get('prebindkey')); - $session->get('inscription')->add('portalPseudo', $api->data['userInfo']['pseudo']); - - # check du rgodfather - if (!empty($api->data['userInfo']['sponsorship'])) { - list($server, $player) = explode('#', $api->data['userInfo']['sponsorship']); - - if ($server == $this->getContainer()->getParameter('server_id')) { - $session->add('rgodfather', $player); - } - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-useralreadysigned'); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-unknowuser'); - } - } else { - $session->add('inscription', new ArrayList()); - $session->get('inscription')->add('bindkey', $session->get('prebindkey')); - $session->get('inscription')->add('portalPseudo', NULL); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-nobindkey'); - } -} elseif ($request->query->get('step') == 2) { - if ($session->exist('inscription')) { - # création du tableau des alliances actives - # entre 1 et 7 - # alliance pas défaites - # algorythme de fermeture automatique des alliances (auto-balancing) - $openFactions = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class)->getOpenFactions(); - - $ally = []; - - foreach ($openFactions as $openFaction) { - $ally[] = $openFaction->id; - } - - if ($request->query->has('ally') && in_array($request->query->get('ally'), $ally)) { - $session->get('inscription')->add('ally', $request->query->get('ally')); - } elseif (!$session->get('inscription')->exist('ally')) { - throw new FormException('faction inconnues ou non-sélectionnable', 'inscription/'); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-forbiddenaccess'); - } -} elseif ($request->query->get('step') == 3) { - if ($session->exist('inscription')) { - if ($playerManager->getByName($request->request->get('pseudo')) === null) { - $check = new CheckName(); - - if ($request->request->has('pseudo') && $check->checkLength($request->request->get('pseudo')) && $check->checkChar($request->request->get('pseudo'))) { - $session->get('inscription')->add('pseudo', $request->request->get('pseudo')); - - # check avatar - if ((int)$request->request->get('avatar') > 0 && (int)$request->request->get('avatar') <= $container->getParameter('nb_avatar')) { - $session->get('inscription')->add('avatar', $request->request->get('avatar')); - } elseif (!$session->get('inscription')->exist('avatar')) { - throw new FormException('Cet avatar n\'existe pas ou est invalide', 'inscription/step-2'); - } - } elseif (!$session->get('inscription')->exist('pseudo')) { - throw new FormException('Votre pseudo est trop long, trop court ou contient des caractères non-autorisés', 'inscription/step-2'); - } - } elseif (!$session->get('inscription')->exist('pseudo')) { - throw new FormException('Ce pseudo est déjà utilisé par un autre joueur', 'inscription/step-2'); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-forbiddenaccess'); - } -} elseif ($request->query->get('step') == 4) { - if (null === $session->get('bindkey') || $playerManager->getByBindKey($session->get('bindkey')) === null) { - if ($session->exist('inscription')) { - $check = new CheckName(); - - if ($request->request->has('base') && $check->checkLength($request->request->get('base'))) { - if ($check->checkChar($request->request->get('base'))) { - $session->get('inscription')->add('base', $request->request->get('base')); - - $sectors = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class)->getAll(); - - $factionSectors = array(); - foreach ($sectors as $sector) { - if ($sector->getRColor() == $session->get('inscription')->get('ally')) { - $factionSectors[] = $sector->getId(); - } - } - if (in_array($request->request->get('sector'), $factionSectors)) { - $session->get('inscription')->add('sector', $request->request->get('sector')); - } else { - throw new FormException('il faut sélectionner un des secteurs de la couleur de votre faction', 'inscription/step-3'); - } - } else { - throw new FormException('le nom de votre base ne doit pas contenir de caractères spéciaux', 'inscription/step-3'); - } - } else { - throw new FormException('le nom de votre base doit contenir entre ' . $check->getMinLength() . ' et ' . $check->getMaxLength() . ' caractères', 'inscription/step-3'); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-forbiddenaccess'); - } - } else { - $response->redirect($this->getContainer()->getParameter('getout_root') . 'serveurs/message-forbiddenaccess'); - } -} diff --git a/system/inscription/content.php b/system/inscription/content.php deleted file mode 100755 index 589061cac..000000000 --- a/system/inscription/content.php +++ /dev/null @@ -1,17 +0,0 @@ -getContainer()->get('app.request'); -$registrationPath = $this->getContainer()->getParameter('inscription'); - -// choix des étapes -if ($request->query->get('step') == 1 || !$request->query->has('step')) { - if (!$request->query->has('bindkey')) { - include $registrationPath . 'step/ally.php'; - } -} elseif ($request->query->get('step') == 2) { - include $registrationPath . 'step/profil.php'; -} elseif ($request->query->get('step') == 3) { - include $registrationPath . 'step/place.php'; -} elseif ($request->query->get('step') == 4) { - include $registrationPath . 'step/save.php'; -} diff --git a/system/inscription/step/ally.php b/system/inscription/step/ally.php deleted file mode 100755 index 0ac883184..000000000 --- a/system/inscription/step/ally.php +++ /dev/null @@ -1,98 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$appRoot = $container->getParameter('app_root'); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); - -# background paralax -echo '
'; - -# inclusion des elements -include 'inscriptionElement/movers.php'; -include 'inscriptionElement/subnav.php'; - -# contenu spécifique -echo '
'; - include $container->getParameter('component') . 'invisible.php'; - - echo '
'; - echo '
'; - echo '

Faction

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Choisissez votre faction

'; - echo '

Il vous faut choisir entre l\'une des factions disponibles.

'; - echo '

Chaque faction a ses forces et ses faiblesses. Certaines sont plus belliqueuses, certaines sont plus sages. De plus, le système politique change en fonction de la faction.

'; - echo '
'; - //echo 'Vous ne savez pas quoi choisir ?'; - echo '
'; - echo '
'; - echo '
'; - - $sortedFactions = $colorManager->getAllByActivePlayersNumber(); - - $firstAlly = TRUE; - foreach ($sortedFactions as $ally) { - if ($ally->id != 0) { - echo '
'; - echo '
'; - echo ''; - echo '

' . ColorResource::getInfo($ally->id, 'officialName') . '

'; - echo '' . ColorResource::getInfo($ally->id, 'government') . ''; - echo '
'; - echo '
'; - echo '
'; - echo '

A propos

'; - echo '

' . ColorResource::getInfo($ally->id, 'desc1') . '

'; - echo '

Moeurs & autres

'; - echo '

' . ColorResource::getInfo($ally->id, 'desc2') . '

'; - echo '

Guerre

'; - echo '

' . ColorResource::getInfo($ally->id, 'desc3') . '

'; - echo '

Culture

'; - echo '

' . ColorResource::getInfo($ally->id, 'desc4') . '

'; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '
'; - echo '
'; - if (!$ally->isClosed) { - echo ''; - echo 'Choisir cette faction'; - if ($firstAlly) { - echo 'recommandée pour les joueurs débutants'; - $firstAlly = FALSE; - } else { - echo 'et passer à l\'étape suivante'; - } - echo ''; - } else { - echo ''; - echo 'Cette faction est actuellement fermée'; - echo 'De manière à équilibrer le jeu'; - echo ''; - } - echo '
"' . ColorResource::getInfo($ally->id, 'devise') . '"
'; - - echo '

Bonus & Malus de faction

'; - foreach ($ally->bonusText as $bonus) { - echo '
'; - echo '
'; - echo ''; - echo '' . $bonus['title'] . ''; - echo '' . $bonus['desc'] . ''; - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; - echo '
'; - } - } -echo '
'; diff --git a/system/inscription/step/inscriptionElement/movers.php b/system/inscription/step/inscriptionElement/movers.php deleted file mode 100755 index 1a330c279..000000000 --- a/system/inscription/step/inscriptionElement/movers.php +++ /dev/null @@ -1,5 +0,0 @@ -'; - echo ''; - echo ''; -echo '
'; \ No newline at end of file diff --git a/system/inscription/step/inscriptionElement/subnav.php b/system/inscription/step/inscriptionElement/subnav.php deleted file mode 100755 index 462af8606..000000000 --- a/system/inscription/step/inscriptionElement/subnav.php +++ /dev/null @@ -1,26 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '
'; - echo '

'; - if ($session->get('inscription')->exist('pseudo')) { - echo '

' . $session->get('inscription')->get('pseudo') . '

'; - } - echo ''; - if ($session->get('inscription')->exist('avatar')) { - echo ''; - } else { - echo ''; - } - echo '1'; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/inscription/step/place.php b/system/inscription/step/place.php deleted file mode 100755 index 98b8d2b96..000000000 --- a/system/inscription/step/place.php +++ /dev/null @@ -1,82 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$appRoot = $container->getParameter('app_root'); -$componentPath = $container->getParameter('component'); - -# background paralax -echo '
'; - -# inclusion des elements -include 'inscriptionElement/movers.php'; -include 'inscriptionElement/subnav.php'; - -# contenu spécifique -echo '
'; - - echo '
'; - include $componentPath . 'invisible.php'; - echo '
'; - echo '
'; - echo '

Localisation

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Choisissez le nom de votre première planète

'; - echo '

'; - echo '

Vous pourrez changer ce nom plus tard.

'; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '

Choisissez l\'emplacement dans la galaxie

'; - echo '
'; - echo '
'; - echo '
'; - - $galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - $sectors = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class)->getAll(); - $rate = 750 / $galaxyConfiguration->galaxy['size']; - - echo '
'; - echo ''; - echo ''; - foreach ($sectors as $sector) { - echo ''; - } - - echo ''; - echo '
'; - $nbSectors = count($sectors); - for ($i = 0; $i < $nbSectors; ++$i) { - $sector = $sectors[$i]; - echo ''; - echo $sector->getId(); - echo ''; - } - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/inscription/step/profil.php b/system/inscription/step/profil.php deleted file mode 100755 index 421c7a921..000000000 --- a/system/inscription/step/profil.php +++ /dev/null @@ -1,94 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$mediaPath = $container->getParameter('media'); -$componentPath = $container->getParameter('component'); -$appRoot = $container->getParameter('app_root'); - -# background paralax -echo '
'; - -# inclusion des elements -include 'inscriptionElement/movers.php'; -include 'inscriptionElement/subnav.php'; - -# contenu spécifique -echo '
'; - - echo '
'; - include $componentPath . 'invisible.php'; - echo '
'; - echo '
'; - echo '

Profil

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Choisissez votre nom dans le jeu

'; - - if ($session->get('inscription')->exist('pseudo')) { - echo '

'; - } elseif ($session->get('inscription')->get('portalPseudo') !== '') { - echo '

'; - } else { - echo '

'; - } - - echo '

Nous déconseillons les noms moins roleplay, essayez de coller avec l\'histoire et les moeurs de votre faction.

'; - echo '

Ce nom ne pourra pas être changé plus tard.

'; - - echo '
'; - - echo ''; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '

Choisissez un avatar

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 1; $i <= $container->getParameter('nb_avatar'); $i++) { - if (!in_array($i, array(77, 19))) { - $avatar = $i < 10 ? '00' : '0'; - $avatar .= $i . '-' . $session->get('inscription')->get('ally'); - $avatars[] = $avatar; - } - } - - shuffle($avatars); - - $isLong = FALSE; - $cursor = 0; - for ($i = 0; $i < ($container->getParameter('nb_avatar') - 2); $i++) { - echo '
'; - echo ''; - echo ''; - echo '
'; - - $cursor++; - - if (!$isLong && $cursor == 5) { - $cursor = 0; - $isLong = TRUE; - echo '
'; - } elseif ($isLong && $cursor == 6) { - $cursor = 0; - $isLong = FALSE; - echo '
'; - } - } - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/inscription/step/save.php b/system/inscription/step/save.php deleted file mode 100755 index 633d53bdd..000000000 --- a/system/inscription/step/save.php +++ /dev/null @@ -1,283 +0,0 @@ -getContainer(); - $session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - $playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - $notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - $researchManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\ResearchManager::class); - $researchHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\ResearchHelper::class); - $database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); - $conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); - $placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); - $orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); - $entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - - $entityManager->beginTransaction(); - - $faction = $session->get('inscription')->get('ally'); - # AJOUT DU JOUEUR EN BASE DE DONNEE - $player = new Player(); - - # ajout des variables inchangées - $player->setBind($session->get('inscription')->get('bindkey')); - $player->setRColor($session->get('inscription')->get('ally')); - $player->setName(trim($session->get('inscription')->get('pseudo'))); - $player->setAvatar($session->get('inscription')->get('avatar')); - - $playerManager->saveSessionData($player); - - if ($session->exist('rgodfather')) { - $player->rGodfather = $session->get('rgodfather'); - } - - $player->setStatus(1); - $player->uPlayer = Utils::now(); - - $player->victory = 0; - $player->defeat = 0; - - $player->stepTutorial = 1; - $player->stepDone = TRUE; - - $player->iUniversity = 1000; - $player->partNaturalSciences = 25; - $player->partLifeSciences = 25; - $player->partSocialPoliticalSciences = 25; - $player->partInformaticEngineering = 25; - - $player->setDInscription(Utils::now()); - $player->setDLastConnection(Utils::now()); - $player->setDLastActivity(Utils::now()); - - $player->setPremium(0); - $player->setStatement(1); - - # ajout des variables dépendantes - if ($session->get('high-mode')) { - $player->credit = 10000000; - $player->setExperience(18000); - $player->setLevel(5); - } else { - $player->credit = 5000; - $player->setExperience(630); - $player->setLevel(1); - } - - $playerManager->add($player); - - if ($session->exist('rgodfather')) { - # send a message to the godfather - $n = new Notification(); - $n->setRPlayer($player->rGodfather); - $n->setTitle('Votre filleul s\'est inscrit'); - $n->addBeg()->addTxt('Un de vos amis a créé un compte.')->addSep(); - $n->addTxt('Vous pouvez le contacter, son nom de joueur est '); - $n->addLnk('embassy/player-' . $player->getId(), '"' . $player->name . '"')->addTxt('.'); - $n->addBrk()->addTxt('Vous venez de gagner 1000 crédits. Vous en gagnerez 1 million de plus lorsqu\'il atteindra le niveau 3.'); - $n->addEnd(); - - $notificationManager->add($n); - - # add 1000 credits to the godfather - if (($godFather = $playerManager->get($player->rGodFather))) { - $playerManager->increaseCredit($godFather, 1000); - } - - # remove godFather from session - $session->remove('rgodfather'); - } - - # INITIALISATION DES RECHERCHES - # rendre aléatoire - $rs = new Research(); - $rs->rPlayer = $player->getId(); - - if ($session->get('high-mode')) { - $rs->mathLevel = 15; - $rs->physLevel = 15; - $rs->chemLevel = 15; - $rs->bioLevel = 15; - $rs->mediLevel = 15; - $rs->econoLevel = 15; - $rs->psychoLevel = 15; - $rs->networkLevel = 15; - $rs->algoLevel = 15; - $rs->statLevel = 15; - } - - $rs->naturalTech = Research::MATH; - $rs->lifeTech = Research::LAW; - $rs->socialTech = Research::ECONO; - $rs->informaticTech = Research::NETWORK; - - $rs->naturalToPay = $researchHelper->getInfo($rs->naturalTech, 'level', 1, 'price'); - $rs->lifeToPay = $researchHelper->getInfo($rs->lifeTech, 'level', 1, 'price'); - $rs->socialToPay = $researchHelper->getInfo($rs->socialTech, 'level', 1, 'price'); - $rs->informaticToPay = $researchHelper->getInfo($rs->informaticTech, 'level', 1, 'price'); - $researchManager->add($rs); - - # CREATION DE LA BASE ORBITALE - $ob = new OrbitalBase(); - - # choix de la place - $qr = $database->prepare('SELECT p.id FROM place AS p - INNER JOIN system AS sy ON p.rSystem = sy.id - INNER JOIN sector AS se ON sy.rSector = se.id - WHERE p.typeOfPlace = 1 - AND se.id = ? - AND p.rPlayer IS NULL - ORDER BY p.population ASC - LIMIT 0, 30' - ); - $qr->execute(array($session->get('inscription')->get('sector'))); - $aw = $qr->fetchAll(); - - $placeId = $aw[rand(0, (count($aw) - 1))]['id']; - - $ob->setRPlace($placeId); - - $ob->setRPlayer($player->getId()); - $ob->setName($session->get('inscription')->get('base')); - - # création des premiers bâtiments - if ($session->get('high-mode')) { - # batiments haut-level - $ob->setLevelGenerator(35); - $ob->setLevelRefinery(35); - $ob->setLevelDock1(35); - $ob->setLevelDock2(10); - $ob->setLevelDock3(0); - $ob->setLevelTechnosphere(35); - $ob->setLevelCommercialPlateforme(10); - $ob->setLevelStorage(35); - $ob->setLevelRecycling(15); - $ob->setLevelSpatioport(10); - $ob->setResourcesStorage(3000000); - - # remplir le dock - $orbitalBaseManager->addShipToDock($ob, 1, 50); - $orbitalBaseManager->addShipToDock($ob, 2, 50); - $orbitalBaseManager->addShipToDock($ob, 3, 10); - $orbitalBaseManager->addShipToDock($ob, 4, 10); - $orbitalBaseManager->addShipToDock($ob, 5, 5); - $orbitalBaseManager->addShipToDock($ob, 6, 5); - $orbitalBaseManager->addShipToDock($ob, 7, 2); - $orbitalBaseManager->addShipToDock($ob, 8, 2); - $orbitalBaseManager->addShipToDock($ob, 9, 1); - $orbitalBaseManager->addShipToDock($ob, 10, 1); - $orbitalBaseManager->addShipToDock($ob, 11, 0); - $orbitalBaseManager->addShipToDock($ob, 12, 0); - } else { - $ob->setLevelGenerator(1); - $ob->setLevelRefinery(1); - $ob->setLevelDock1(0); - $ob->setLevelDock2(0); - $ob->setLevelDock3(0); - $ob->setLevelTechnosphere(0); - $ob->setLevelCommercialPlateforme(0); - $ob->setLevelStorage(1); - $ob->setLevelRecycling(0); - $ob->setLevelSpatioport(0); - $ob->setResourcesStorage(1000); - } - - $orbitalBaseManager->updatePoints($ob); - - # initialisation des investissement - $ob->setISchool(500); - $ob->setIAntiSpy(500); - - # ajout de la base - $ob->uOrbitalBase = Utils::now(); - $ob->setDCreation(Utils::now()); - $orbitalBaseManager->add($ob); - - # ajout des techs haut-level - if ($session->get('high-mode')) { - $technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); - $technologyManager->addTech($player->id, Technology::COM_PLAT_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::DOCK2_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::DOCK3_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::RECYCLING_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SPATIOPORT_UNBLOCK, 1); - - $technologyManager->addTech($player->id, Technology::SHIP0_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP1_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP2_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP3_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP4_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP5_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP6_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP7_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP8_UNBLOCK, 1); - $technologyManager->addTech($player->id, Technology::SHIP9_UNBLOCK, 1); - - $technologyManager->addTech($player->id, Technology::COLONIZATION, 1); - $technologyManager->addTech($player->id, Technology::CONQUEST, 1); - $technologyManager->addTech($player->id, Technology::BASE_QUANTITY, 4); - } - - # modification de la place - $place = $placeManager->turnAsSpawnPlace($placeId, $player->getId()); - - # confirmation au portail - if ($this->getContainer()->getParameter('apimode') === 'enabled') { - $return = $this->getContainer()->get('api')->confirmInscription($session->get('inscription')->get('bindkey')); - } - - # enregistrement DA - if ($container->getParameter('data_analysis')) { - $qr = $database->prepare('INSERT INTO - DA_Player(id, color, dInscription) - VALUES(?, ?, ?)' - ); - $qr->execute([$player->getId(), $player->rColor, Utils::now()]); - } - - # clear les sessions - $session->remove('inscription'); - $session->remove('prebindkey'); - - # ajout aux conversation de faction et techniques - $readingDate = date('Y-m-d H:i:s', (strtotime(Utils::now()) - 20)); - - if (($factionAccount = $playerManager->getFactionAccount($player->rColor)) !== null) { - $S_CVM = $conversationManager->getCurrentSession(); - $conversationManager->newSession(); - $conversationManager->load([ - 'cu.rPlayer' => [$container->getParameter('id_jeanmi'), $factionAccount->id] - ], [], [0, 2] - ); - - for ($i = 0; $i < $conversationManager->size(); $i++) { - $user = new ConversationUser(); - $user->rConversation = $conversationManager->get($i)->id; - $user->rPlayer = $player->getId(); - $user->convPlayerStatement = ConversationUser::US_STANDARD; - $user->convStatement = ConversationUser::CS_ARCHIVED; - $user->dLastView = $readingDate; - - $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class)->add($user); - } - - $conversationManager->changeSession($S_CVM); - } - $entityManager->commit(); - $security = $this->getContainer()->get(\Asylamba\Classes\Library\Security::class); - # redirection vers connection - $this->getContainer()->get('app.response')->redirect('connection/bindkey-' . $security->crypt($security->buildBindkey($player->getBind())) . '/mode-splash'); -} catch (Exception $e) { - # tentative de réparation de l'erreur - $this->getContainer()->get('app.response')->redirect('inscription/step-3'); - // Transmit the exception to the error handler - throw $e; -} diff --git a/system/script/main.php b/system/script/main.php deleted file mode 100755 index fe8dc4e83..000000000 --- a/system/script/main.php +++ /dev/null @@ -1,97 +0,0 @@ - [ - ['deploy_dbinstall', '/deploy/dbinstall.php'], - ['deploy_newgalaxy', '/deploy/newgalaxy.php'], - ], - 'Serveur' => [ - ['monitoring', '/server/monitoring.php'] - ], - 'Tâches Cron' => [ - ['cron_daily', '/cron/daily.php'], - ['cron_playerranking', '/cron/playerRanking.php'], - ['cron_factionranking', '/cron/factionRanking.php'], - ], - 'Utilitaires' => [ - ['utils_commanderAttack', '/utils/commanderAttack.php'], - ['utils_sectors', '/utils/sectors.php'], - ['utils_maprender', '/utils/map-render.php'], - ['utils_findsectorinfos', '/utils/find-sector-infos.php'], - ['utils_getstatistic', '/utils/get-stats.php'], - ['utils_recolorsector', '/utils/recolor-sector.php'], - ], - 'Test' => [ - ['test_main', '/test/test.php'], - ['test_http', '/test/http-data.php'], - ['test_updateSenatAphera', '/test/updateSenate.php'], - ], - 'Migration' => [ - ['migration_color', '/migration/updateColor.php'], - ['migration_recycling', '/migration/updateRecycling.php'], - ['migration_sector', '/migration/updateSector.php'], - ['migration_factionranking', '/migration/updateFactionRanking.php'], - ['migration_addconversation', '/migration/add-conversation.php'], - ['migration_removemessage', '/migration/remove-message.php'], - ] -]; - -# unlimited time -set_time_limit(250); -ini_set('display_errors', TRUE); - -$container = $this->getContainer(); -$appRoot = $container->getParameter('app_root'); -$scriptPath = $container->getParameter('script'); - -include $scriptPath . 'template/open.php'; - -$request = $this->getContainer()->get('app.request'); -$scriptKey = $this->getContainer()->getParameter('security_script_key'); - -if ($this->getContainer()->getParameter('environment') === 'dev' || $request->query->get('key') === $scriptKey) { - if (!$request->query->has('a')) { - echo '
'; - echo '
'; - echo ' '; - echo 'Liste des scripts'; - echo '
'; - - echo '
'; - foreach ($scripts as $type => $typeScripts) { - echo '

' . $type . '

'; - - foreach ($typeScripts as $i => $script) { - echo ''; - echo '' . $script[0] . ''; - echo $script[1]; - echo ''; - } - } - echo '
'; - echo '
'; - } else { - $requestedScript = $request->query->get('a'); - foreach ($scripts as $typeScripts) { - foreach ($typeScripts as $i => $script) { - if ($requestedScript === $script[0]) { - $scrp = $scriptPath . 'scripts' . $script[1]; - $name = $script[1]; - } - } - } - - echo '
'; - echo '
'; - echo ' '; - echo $name; - echo '
'; - - echo '
'; - include $scrp; - echo '
'; - echo '
'; - } -} - -include $scriptPath . 'template/close.php'; diff --git a/system/script/scripts/deploy/data-analysis/baseAction.php b/system/script/scripts/deploy/data-analysis/baseAction.php deleted file mode 100644 index 3a84708bb..000000000 --- a/system/script/scripts/deploy/data-analysis/baseAction.php +++ /dev/null @@ -1,17 +0,0 @@ -Ajout de la table DA_BaseAction'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_BaseAction`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_BaseAction` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `from` INT unsigned NOT NULL, - - `type` SMALLINT unsigned NOT NULL, - `opt1` SMALLINT unsigned NULL DEFAULT NULL, - `opt2` SMALLINT unsigned NULL DEFAULT NULL, - `weight` INT unsigned NOT NULL, - `dAction` datetime DEFAULT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); diff --git a/system/script/scripts/deploy/data-analysis/commercialRelation.php b/system/script/scripts/deploy/data-analysis/commercialRelation.php deleted file mode 100644 index eb344e3f2..000000000 --- a/system/script/scripts/deploy/data-analysis/commercialRelation.php +++ /dev/null @@ -1,16 +0,0 @@ -Ajout de la table DA_CommercialRelation'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_CommercialRelation`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_CommercialRelation` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `from` INT unsigned NOT NULL, - `to` INT unsigned NOT NULL, - - `type` SMALLINT unsigned NOT NULL, - `weight` INT unsigned NOT NULL, - `dAction` datetime DEFAULT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); diff --git a/system/script/scripts/deploy/data-analysis/fleetMovement.php b/system/script/scripts/deploy/data-analysis/fleetMovement.php deleted file mode 100644 index e1d041123..000000000 --- a/system/script/scripts/deploy/data-analysis/fleetMovement.php +++ /dev/null @@ -1,17 +0,0 @@ -Ajout de la table DA_FleetMovement'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_FleetMovement`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_FleetMovement` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `from` INT unsigned NOT NULL, - `to` INT unsigned NOT NULL, - - `type` SMALLINT unsigned NOT NULL, - `isWinner` SMALLINT unsigned NOT NULL, - `weight` INT unsigned NOT NULL, - `dAction` DATETIME NOT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); diff --git a/system/script/scripts/deploy/data-analysis/player.php b/system/script/scripts/deploy/data-analysis/player.php deleted file mode 100644 index 63cd9e3b6..000000000 --- a/system/script/scripts/deploy/data-analysis/player.php +++ /dev/null @@ -1,12 +0,0 @@ -Ajout de la table DA_Player'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_Player`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_Player` ( - `id` INT unsigned NOT NULL, - `color` SMALLINT unsigned NOT NULL, - `dInscription` datetime DEFAULT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); diff --git a/system/script/scripts/deploy/data-analysis/playerDaily.php b/system/script/scripts/deploy/data-analysis/playerDaily.php deleted file mode 100644 index 368ad184f..000000000 --- a/system/script/scripts/deploy/data-analysis/playerDaily.php +++ /dev/null @@ -1,27 +0,0 @@ -Ajout de la table DA_PlayerDaily'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_PlayerDaily`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_PlayerDaily` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `credit` INT unsigned NOT NULL, - `experience` INT unsigned NOT NULL, - `level` INT unsigned NOT NULL, - `victory` INT unsigned NOT NULL, - `defeat` INT unsigned NOT NULL, - `status` SMALLINT unsigned NOT NULL, - `resources` INT unsigned NOT NULL, - `fleetSize` INT unsigned NOT NULL, - `nbPlanet` INT unsigned NOT NULL, - `planetPoints` INT unsigned NOT NULL, - `rkGeneral` INT unsigned NOT NULL, - `rkFighter` INT unsigned NOT NULL, - `rkProducer` INT unsigned NOT NULL, - `rkButcher` INT unsigned NOT NULL, - `rkTrader` INT unsigned NOT NULL, - `dStorage` DATETIME NOT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); diff --git a/system/script/scripts/deploy/data-analysis/socialRelation.php b/system/script/scripts/deploy/data-analysis/socialRelation.php deleted file mode 100644 index bfdcbc005..000000000 --- a/system/script/scripts/deploy/data-analysis/socialRelation.php +++ /dev/null @@ -1,16 +0,0 @@ -Ajout de la table DA_SocialRelation'; - -$db = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$db->query("DROP TABLE IF EXISTS `DA_SocialRelation`"); -$db->query("CREATE TABLE IF NOT EXISTS `DA_SocialRelation` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `from` INT unsigned NOT NULL, - `to` INT unsigned NULL DEFAULT NULL, - - `type` SMALLINT unsigned NOT NULL, - `message` TEXT NOT NULL, - `dAction` datetime DEFAULT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); diff --git a/system/script/scripts/deploy/dbinstall.php b/system/script/scripts/deploy/dbinstall.php deleted file mode 100755 index 697ae8ffe..000000000 --- a/system/script/scripts/deploy/dbinstall.php +++ /dev/null @@ -1,1252 +0,0 @@ -getContainer(); -$availableFactions = $this->getContainer()->getParameter('game.available_factions'); -$db = $this->getContainer()->get(\Asylamba\Classes\Database\DatabaseAdmin::class); - -$db->query('SET FOREIGN_KEY_CHECKS = 0;'); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table color

'; - -$db->query("DROP TABLE IF EXISTS `color`"); -$db->query("CREATE TABLE IF NOT EXISTS `color` ( - `id` INT unsigned NOT NULL, - - `alive` TINYINT NOT NULL DEFAULT 0, - `isWinner` TINYINT NOT NULL DEFAULT 0, - `credits` INT unsigned NOT NULL DEFAULT 0, - `players` SMALLINT unsigned NOT NULL DEFAULT 0, - `activePlayers` SMALLINT unsigned NOT NULL DEFAULT 0, - `rankingPoints` INT unsigned NOT NULL DEFAULT 0, - `points` INT unsigned NOT NULL DEFAULT 0, - `sectors` TINYINT unsigned NOT NULL DEFAULT 0, - `regime` TINYINT NOT NULL, - `electionStatement` TINYINT NOT NULL DEFAULT 0, - `isClosed` TINYINT NOT NULL DEFAULT 1, - `isInGame` TINYINT NOT NULL DEFAULT 0, - `description` TEXT NULL, - - `dClaimVictory` datetime NULL DEFAULT NULL, - `dLastElection` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - -echo '

Remplissage de la table color

'; -$qr = $db->prepare("INSERT INTO `color` (`id`, `alive`, `credits`, `players`, `activePlayers`, `points`, `sectors`, `regime`, `electionStatement`, `isClosed`, `isInGame`, `description`, `dClaimVictory`, `dLastElection`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, NULL, ?)"); -$date = Utils::addSecondsToDate(Utils::now(), - 500000); - -# génération de la faction zero -$qr->execute(array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, $date)); - -# génération des factions disponibles -foreach ($availableFactions as $faction) { - $qr->execute(array($faction, 1, 0, 0, 0, 0, 0, ColorResource::getInfo($faction, 'regime'), 1, 0, 1, $date)); -} -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table factionNews

'; - -$db->query("DROP TABLE IF EXISTS `factionNews`"); -$db->query("CREATE TABLE IF NOT EXISTS `factionNews` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rFaction` INT unsigned NOT NULL, - - `title` varchar(255) NOT NULL DEFAULT 'Nouvelle', - `oContent` text NOT NULL, - `pContent` text NOT NULL, - `pinned` TINYINT unsigned NOT NULL DEFAULT 0, - `statement` TINYINT unsigned NOT NULL DEFAULT 1, - - `dCreation` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkFactionNewsFaction FOREIGN KEY (rFaction) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table player

'; - -$db->query("DROP TABLE IF EXISTS `player`"); -$db->query("CREATE TABLE IF NOT EXISTS `player` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rColor` INT unsigned NOT NULL, - `rGodfather` INT unsigned NULL, - - `bind` varchar(50) default NULL, - `name` varchar(25) NOT NULL, - `avatar` varchar(12) NOT NULL, - `sex` TINYINT NOT NULL DEFAULT 1, - `status` SMALLINT unsigned NOT NULL DEFAULT 1, - `credit` BIGINT unsigned NOT NULL DEFAULT 0, - `experience` INT unsigned NOT NULL DEFAULT 0, - `factionPoint` INT unsigned NOT NULL DEFAULT 0, - `level` TINYINT unsigned DEFAULT NULL DEFAULT 0, - `victory` INT unsigned DEFAULT NULL DEFAULT 0, - `defeat` INT unsigned DEFAULT NULL DEFAULT 0, - `premium` TINYINT NOT NULL DEFAULT 0, - `statement` TINYINT NOT NULL DEFAULT 0, - `description` text DEFAULT NULL, - - `stepTutorial` TINYINT unsigned DEFAULT NULL, - `stepDone` TINYINT unsigned NOT NULL DEFAULT 0, - - `iUniversity` INT unsigned NOT NULL DEFAULT 0, - `partNaturalSciences` TINYINT unsigned NOT NULL DEFAULT 0, - `partLifeSciences` TINYINT unsigned NOT NULL DEFAULT 0, - `partSocialPoliticalSciences` TINYINT unsigned NOT NULL DEFAULT 0, - `partInformaticEngineering` TINYINT unsigned NOT NULL DEFAULT 0, - - `dInscription` datetime DEFAULT NULL, - `dLastConnection` datetime DEFAULT NULL, - `dLastActivity` datetime DEFAULT NULL, - `uPlayer` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - UNIQUE KEY `name_UNIQUE` (`name`), - CONSTRAINT fkPlayerColor FOREIGN KEY (rColor) REFERENCES color(id), - CONSTRAINT fkPlayerPlayer FOREIGN KEY (rGodfather) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT = 1;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout du Joueur Gaia

'; - -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -$p = new Player(); -$p->status = 1; -$p->credit = 10000000; -$p->uPlayer = Utils::now(); -$p->experience = 15000; -$p->factionPoint = 0; -$p->level = 5; -$p->victory = 0; -$p->defeat = 0; -$p->stepTutorial = 0; -$p->stepDone = 0; -$p->iUniversity = 0; -$p->partNaturalSciences = 25; -$p->partLifeSciences = 25; -$p->partSocialPoliticalSciences = 25; -$p->partInformaticEngineering = 25; -$p->dInscription = Utils::now(); -$p->dLastConnection = Utils::now(); -$p->dLastActivity = Utils::now(); -$p->premium = 0; -$p->statement = Player::DEAD; - -# Joueur rebelle -$p = clone($p); -$p->bind = Utils::generateString(25); -$p->name = 'Rebelle'; -$p->avatar = 'rebel'; -$p->rColor = 0; -$playerManager->add($p); - -# Jean-Mi -$p = clone($p); -$p->bind = Utils::generateString(25); -$p->name = 'Jean-Mi'; -$p->avatar = 'jm'; -$p->rColor = 0; -$playerManager->add($p); - -# Joueurs de factions -foreach ($availableFactions as $faction) { - $p = clone($p); - $p->bind = Utils::generateString(25); - $p->name = ColorResource::getInfo($faction, 'officialName'); - $p->avatar = ('color-' . $faction); - $p->rColor = $faction; - $p->status = 6; - $playerManager->add($p); -} - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table sector

'; - -$db->query("DROP TABLE IF EXISTS `sector`"); -$db->query("CREATE TABLE IF NOT EXISTS `sector` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rColor` INT unsigned NOT NULL, - `rSurrender` INT unsigned DEFAULT NULL, - - `xPosition` SMALLINT unsigned DEFAULT NULL, - `yPosition` SMALLINT unsigned DEFAULT NULL, - `xBarycentric` SMALLINT unsigned NOT NULL DEFAULT 0, - `yBarycentric` SMALLINT unsigned NOT NULL DEFAULT 0, - `tax` TINYINT unsigned NOT NULL DEFAULT 0, - `population` INT unsigned NOT NULL, - `lifePlanet` INT unsigned DEFAULT NULL, - `points` INT unsigned NOT NULL DEFAULT 1, - `name` varchar(255) DEFAULT NULL, - `prime` TINYINT NOT NULL DEFAULT 0, - - PRIMARY KEY (`id`), - CONSTRAINT fkSectorColor FOREIGN KEY (rColor) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -echo '

Ajout du trigger sector

'; -$db->query("DROP TRIGGER IF EXISTS `saveSectorChange`;"); -$db->query("CREATE TRIGGER `saveSectorChange` BEFORE UPDATE ON `sector` - FOR EACH ROW BEGIN - IF NEW.rColor != OLD.rColor THEN - INSERT INTO changeColorSector( - rSector, - oldColor, - newColor, - dChangement) - VALUES( - OLD.id, - OLD.rColor, - NEW.rColor, - NOW()); - END IF; -END;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table system

'; - -$db->query("DROP TABLE IF EXISTS `system`"); -$db->query("CREATE TABLE IF NOT EXISTS `system` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rSector` INT unsigned NOT NULL, - `rColor` INT unsigned NOT NULL, - - `xPosition` SMALLINT unsigned DEFAULT NULL, - `yPosition` SMALLINT unsigned DEFAULT NULL, - `typeOfSystem` SMALLINT unsigned DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkSystemSector FOREIGN KEY (rSector) REFERENCES sector(id), - CONSTRAINT fkSystemColor FOREIGN KEY (rColor) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -echo '

Ajout du trigger system

'; -$db->query("DROP TRIGGER IF EXISTS `saveSystemChange`;"); -$db->query("CREATE TRIGGER `saveSystemChange` BEFORE UPDATE ON `system` - FOR EACH ROW BEGIN - IF NEW.rColor != OLD.rColor THEN - INSERT INTO changeColorSystem( - rSystem, - oldColor, - newColor, - dChangement) - VALUES( - OLD.id, - OLD.rColor, - NEW.rColor, - NOW()); - END IF; -END;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table place

'; - -$db->query("DROP TABLE IF EXISTS `place`"); -$db->query("CREATE TABLE IF NOT EXISTS `place` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NULL, - `rSystem` INT unsigned NOT NULL, - - `typeOfPlace` TINYINT unsigned NOT NULL, - `position` TINYINT unsigned NOT NULL, - - `population` float unsigned NOT NULL, - `coefResources` float unsigned NOT NULL, - `coefHistory` float unsigned NOT NULL, - - `resources` INT unsigned DEFAULT 0, - `danger` TINYINT unsigned DEFAULT 0, - `maxDanger` TINYINT unsigned DEFAULT 0, - - `uPlace` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkPlacePlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkPlaceSystem FOREIGN KEY (rSystem) REFERENCES system(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -echo '

Ajout du trigger place

'; - -$db->query("DROP TRIGGER IF EXISTS `savePlaceChange`;"); -$db->query("CREATE TRIGGER `savePlaceChange` BEFORE UPDATE ON `place` - FOR EACH ROW BEGIN - IF NEW.rPlayer != OLD.rPlayer THEN - INSERT INTO changeColorPlace( - rPlace, - oldPlayer, - newPlayer, - dChangement) - VALUES( - OLD.id, - OLD.rPlayer, - NEW.rPlayer, - NOW()); - END IF; -END;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table changeColorPlace

'; - -$db->query("DROP TABLE IF EXISTS `changeColorPlace`"); -$db->query("CREATE TABLE IF NOT EXISTS `changeColorPlace` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlace` INT unsigned NOT NULL, - `oldPlayer` TINYINT unsigned NOT NULL, - `newPlayer` TINYINT unsigned NOT NULL, - `dChangement` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table changeColorSector

'; - -$db->query("DROP TABLE IF EXISTS `changeColorSector`"); -$db->query("CREATE TABLE IF NOT EXISTS `changeColorSector` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rSector` INT unsigned NOT NULL, - `oldColor` TINYINT unsigned NOT NULL, - `newColor` TINYINT unsigned NOT NULL, - `dChangement` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table changeColorSystem

'; - -$db->query("DROP TABLE IF EXISTS `changeColorSystem`"); -$db->query("CREATE TABLE IF NOT EXISTS `changeColorSystem` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rSystem` INT unsigned NOT NULL, - `oldColor` TINYINT unsigned NOT NULL, - `newColor` TINYINT unsigned NOT NULL, - `dChangement` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout des trois vues

'; - -$db->query("DROP VIEW IF EXISTS `vGalaxyDiary`;"); -$db->query("CREATE VIEW `vGalaxyDiary` AS select `h`.`id` AS `id`,`h`.`rSector` AS `sector`,`h`.`oldColor` AS `oldColor`,`h`.`newColor` AS `newColor`,`h`.`dChangement` AS `dChangement` from (`changeColorSector` `h` left join `system` `s` on((`h`.`rSector` = `s`.`id`))) order by `h`.`dChangement` desc limit 0,100;"); - -$db->query("DROP VIEW IF EXISTS `vSectorDiary`;"); -$db->query("CREATE VIEW `vSectorDiary` AS select count(`h`.`id`) AS `occurency`,`h`.`id` AS `id`,`h`.`rSystem` AS `system`,`s`.`rSector` AS `sector`,`h`.`oldColor` AS `oldColor`,`h`.`newColor` AS `newColor`,`h`.`dChangement` AS `dChangement` from (((`changeColorSystem` `h` left join `system` `s` on((`h`.`rSystem` = `s`.`id`))) left join `color` `c1` on((`h`.`oldColor` = `c1`.`id`))) left join `color` `c2` on((`h`.`newColor` = `c2`.`id`))) group by `c1`.`id`,`c2`.`id`,hour(`h`.`dChangement`) order by `h`.`dChangement` desc limit 0,1000;"); - -$db->query("DROP VIEW IF EXISTS `vSystemDiary`;"); -$db->query("CREATE VIEW `vSystemDiary` AS select `h`.`id` AS `id`,`h`.`rPlace` AS `place`,`h`.`oldPlayer` AS `oldPlayer`,`p1`.`name` AS `oldName`,`c1`.`id` AS `oldColor`,`h`.`newPlayer` AS `newPlayer`,`p2`.`name` AS `newName`,`c2`.`id` AS `newColor`,`h`.`dChangement` AS `dChangement`,`p`.`position` AS `position`,`p`.`rSystem` AS `system` from (((((`changeColorPlace` `h` left join `place` `p` on((`p`.`id` = `h`.`rPlace`))) left join `player` `p1` on((`h`.`oldPlayer` = `p1`.`id`))) left join `color` `c1` on((`p1`.`rColor` = `c1`.`id`))) left join `player` `p2` on((`h`.`newPlayer` = `p2`.`id`))) left join `color` `c2` on((`p2`.`rColor` = `c2`.`id`))) order by `h`.`dChangement` desc limit 0,5000;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table orbitalBase

'; - -$db->query("DROP TABLE IF EXISTS `orbitalBase`"); -$db->query("CREATE TABLE IF NOT EXISTS `orbitalBase` ( - `rPlace` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - - `name` varchar(45) COLLATE utf8_bin NOT NULL, - `typeOfBase` TINYINT unsigned NOT NULL DEFAULT 0, - `levelGenerator` TINYINT unsigned DEFAULT 0, - `levelRefinery` TINYINT unsigned DEFAULT 0, - `levelDock1` TINYINT unsigned DEFAULT 0, - `levelDock2` TINYINT unsigned DEFAULT 0, - `levelDock3` TINYINT unsigned DEFAULT 0, - `levelTechnosphere` TINYINT unsigned DEFAULT 0, - `levelCommercialPlateforme` TINYINT unsigned DEFAULT 0, - `levelStorage` TINYINT unsigned DEFAULT 0, - `levelRecycling` TINYINT unsigned DEFAULT 0, - `levelSpatioport` TINYINT unsigned DEFAULT 0, - `points` INT unsigned DEFAULT 0, - - `iSchool` INT unsigned DEFAULT 0, - `iAntiSpy` INT unsigned DEFAULT 0, - `antiSpyAverage` INT unsigned DEFAULT 0, - - `pegaseStorage` SMALLINT unsigned DEFAULT 0, - `satyreStorage` SMALLINT unsigned DEFAULT 0, - `sireneStorage` SMALLINT unsigned DEFAULT 0, - `dryadeStorage` SMALLINT unsigned DEFAULT 0, - `chimereStorage` SMALLINT unsigned DEFAULT 0, - `meduseStorage` SMALLINT unsigned DEFAULT 0, - `griffonStorage` SMALLINT unsigned DEFAULT 0, - `cyclopeStorage` SMALLINT unsigned DEFAULT 0, - `minotaureStorage` SMALLINT unsigned DEFAULT 0, - `hydreStorage` SMALLINT unsigned DEFAULT 0, - `cerbereStorage` SMALLINT unsigned DEFAULT 0, - `phenixStorage` SMALLINT unsigned DEFAULT 0, - - `motherShip` TINYINT DEFAULT 0, - `resourcesStorage` INT unsigned DEFAULT 0, - - `uOrbitalBase` datetime DEFAULT NULL, - `dCreation` datetime DEFAULT NULL, - - PRIMARY KEY (`rPlace`), - CONSTRAINT fkOrbitalBasePlace FOREIGN KEY (rPlace) REFERENCES place(id), - CONSTRAINT fkOrbitalBasePlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table commercialRoute

'; - -$db->query("DROP TABLE IF EXISTS `commercialRoute`"); -$db->query("CREATE TABLE IF NOT EXISTS `commercialRoute` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rOrbitalBase` INT unsigned NOT NULL, - `rOrbitalBaseLinked` INT unsigned NOT NULL, - - `imageLink` varchar(10) NOT NULL, - `distance` SMALLINT unsigned NOT NULL, - `price` INT unsigned NOT NULL, - `income` INT unsigned NOT NULL, - - `dProposition` datetime DEFAULT NULL, - `dCreation` datetime DEFAULT NULL, - `statement` TINYINT unsigned NOT NULL COMMENT '0 = pas acceptée, 1 = active', - - PRIMARY KEY (`id`), - CONSTRAINT fkCommercialRouteOrbitalBaseA FOREIGN KEY (rOrbitalBase) REFERENCES orbitalBase(rPlace), - CONSTRAINT fkCommercialRouteOrbitalBaseB FOREIGN KEY (rOrbitalBaseLinked) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table orbitalBaseBuildingQueue

'; - -$db->query("DROP TABLE IF EXISTS `orbitalBaseBuildingQueue`"); -$db->query("CREATE TABLE IF NOT EXISTS `orbitalBaseBuildingQueue` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rOrbitalBase` INT unsigned NOT NULL, - - `buildingNumber` TINYINT unsigned NOT NULL, - `targetLevel` TINYINT unsigned NOT NULL, - `dStart` datetime NOT NULL, - `dEnd` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkOrbitalBaseBuildingQueueOrbitalBase FOREIGN KEY (rOrbitalBase) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table orbitalBaseShipQueue

'; - -$db->query("DROP TABLE IF EXISTS `orbitalBaseShipQueue`"); -$db->query("CREATE TABLE IF NOT EXISTS `orbitalBaseShipQueue` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rOrbitalBase` INT unsigned NOT NULL, - - `dockType` TINYINT unsigned NOT NULL, - `shipNumber` TINYINT unsigned NOT NULL, - `quantity` SMALLINT unsigned NOT NULL, - - `dStart` datetime NOT NULL, - `dEnd` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkOrbitalBaseShipQueueOrbitalBase FOREIGN KEY (rOrbitalBase) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table transaction

'; - -$db->query("DROP TABLE IF EXISTS `transaction`"); -$db->query("CREATE TABLE IF NOT EXISTS `transaction` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rPlace` INT unsigned NOT NULL, - - `type` TINYINT NOT NULL COMMENT '0 = resource, 1 = ship, 2 = commander', - `quantity` INT NOT NULL, - `identifier` SMALLINT DEFAULT NULL, - `price` INT NOT NULL, - `commercialShipQuantity` SMALLINT NOT NULL, - `statement` TINYINT NOT NULL COMMENT '0 = proposed, 1 = completed, 2 = canceled', - - `dPublication` datetime NOT NULL, - `dValidation` datetime DEFAULT NULL, - `currentRate` float DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkTransactionPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -echo '

Remplissage de la table transaction

'; - -$qr = $db->prepare("INSERT INTO `transaction` (`rPlayer`, `rPlace`, `type`, `quantity`, `identifier`, `price`, `commercialShipQuantity`, `statement`, `dPublication`, `dValidation`, `currentRate`) VALUES -(1, 0, ?, 8, NULL, 10, 0, ?, ?, ?, ?), -(1, 0, ?, 1, NULL, 12, 0, ?, ?, ?, ?), -(1, 0, ?, 8, NULL, 15, 0, ?, ?, ?, ?);"); -$qr->execute(array(Transaction::TYP_RESOURCE, Transaction::ST_COMPLETED, Utils::now(), Utils::now(), 1.26, - Transaction::TYP_COMMANDER, Transaction::ST_COMPLETED, Utils::now(), Utils::now(), 12, - Transaction::TYP_SHIP, Transaction::ST_COMPLETED, Utils::now(), Utils::now(), 1.875)); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table commercialShipping

'; - -$db->query("DROP TABLE IF EXISTS `commercialShipping`"); -$db->query("CREATE TABLE IF NOT EXISTS `commercialShipping` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rBase` INT unsigned NOT NULL, - `rBaseDestination` INT unsigned NOT NULL, - `rTransaction` INT unsigned DEFAULT NULL, - - `resourceTransported` INT DEFAULT NULL, - `shipQuantity` INT NOT NULL, - - `dDeparture` datetime, - `dArrival` datetime, - `statement` SMALLINT NOT NULL COMMENT '0 = prêt au départ, 1 = aller, 2 = retour', - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table commercialTax

'; - -$db->query("DROP TABLE IF EXISTS `commercialTax`"); -$db->query("CREATE TABLE IF NOT EXISTS `commercialTax` ( - `id` INT NOT NULL AUTO_INCREMENT, - `faction` SMALLINT NOT NULL, - `relatedFaction` SMALLINT NOT NULL, - `exportTax` float NOT NULL, - `importTax` float NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -echo '

Remplissage de la table commercialTax

'; -$qr = $db->prepare("INSERT INTO `commercialTax` (`faction`, `relatedFaction`, `exportTax`, `importTax`) VALUES (?, ?, 5, 5)"); - -# génération des taxes -foreach ($availableFactions as $faction) { - foreach ($availableFactions as $rfaction) { - $qr->execute(array($faction, $rfaction)); - } -} - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table law

'; - -$db->query("DROP TABLE IF EXISTS `law`"); -$db->query("CREATE TABLE IF NOT EXISTS `law` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rColor` INT unsigned NOT NULL, - - `type` INT NOT NULL, - `statement` INT NOT NULL, - `options` text DEFAULT NULL, - - `dEnd` datetime DEFAULT NULL, - `dEndVotation` datetime DEFAULT NULL, - `dCreation` datetime DEFAULT NULL, - - PRIMARY KEY `id` (`id`), - CONSTRAINT fkLawColor FOREIGN KEY (rColor) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table voteLaw

'; - -$db->query("DROP TABLE IF EXISTS `voteLaw`"); -$db->query("CREATE TABLE IF NOT EXISTS `voteLaw` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - - `rLaw` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - - `vote` TINYINT NOT NULL, - `dVotation` date NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkVoteLawLaw FOREIGN KEY (rLaw) REFERENCES law(id), - CONSTRAINT fkVoteLawPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table forumTopic

'; - -$db->query("DROP TABLE IF EXISTS `forumTopic`"); -$db->query("CREATE TABLE IF NOT EXISTS `forumTopic` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rColor` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - `rForum` INT unsigned NOT NULL, - - `title` varchar(255) NOT NULL, - `isClosed` TINYINT NOT NULL DEFAULT 0, - `isArchived` TINYINT NOT NULL DEFAULT 0, - `isUp` TINYINT NOT NULL DEFAULT 0, - - `dCreation` datetime NOT NULL, - `dLastMessage` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkForumTopicColor FOREIGN KEY (rColor) REFERENCES color(id), - CONSTRAINT fkForumTopicPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table forumMessage

'; - -$db->query("DROP TABLE IF EXISTS `forumMessage`"); -$db->query("CREATE TABLE IF NOT EXISTS `forumMessage` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rTopic` INT unsigned NOT NULL, - - `oContent` text NOT NULL, - `pContent` text NOT NULL, - - `statement` INT NOT NULL DEFAULT 0, - - `dCreation` datetime NOT NULL, - `dLastModification` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkForumMessagePlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkForumMessageTopic FOREIGN KEY (rTopic) REFERENCES forumTopic(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table forumLastView

'; - -$db->query("DROP TABLE IF EXISTS `forumLastView`"); -$db->query("CREATE TABLE IF NOT EXISTS `forumLastView` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rTopic` INT unsigned NOT NULL, - - `dView` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkForumLastViewsPlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkForumLastViewsTopic FOREIGN KEY (rTopic) REFERENCES forumTopic(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table election

'; - -$db->query("DROP TABLE IF EXISTS `election`"); -$db->query("CREATE TABLE IF NOT EXISTS `election` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rColor` INT unsigned NOT NULL, - - `dElection` datetime NOT NULL, - PRIMARY KEY (`id`), - CONSTRAINT fkElectionColor FOREIGN KEY (rColor) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table candidate

'; - -$db->query("DROP TABLE IF EXISTS `candidate`"); -$db->query("CREATE TABLE IF NOT EXISTS `candidate` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rElection` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - - `chiefChoice` TINYINT unsigned DEFAULT 1, - `treasurerChoice` TINYINT unsigned DEFAULT 1, - `warlordChoice` TINYINT unsigned DEFAULT 1, - `ministerChoice` TINYINT unsigned DEFAULT 1, - - `program` text, - `dPresentation` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkCandidateElection FOREIGN KEY (rElection) REFERENCES election(id), - CONSTRAINT fkCandidatePlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table vote

'; - -$db->query("DROP TABLE IF EXISTS `vote`"); -$db->query("CREATE TABLE IF NOT EXISTS `vote` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rCandidate` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - `rElection` INT unsigned NOT NULL, - - `dVotation` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkVoteCandidate FOREIGN KEY (rCandidate) REFERENCES player(id), - CONSTRAINT fkVotePlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkVoteElection FOREIGN KEY (rElection) REFERENCES election(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table commander

'; - -$db->query("DROP TABLE IF EXISTS `commander`"); -$db->query("CREATE TABLE IF NOT EXISTS `commander` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rBase` INT unsigned NOT NULL, - - `name` varchar(45) NOT NULL, - `comment` text, - `sexe` TINYINT NOT NULL DEFAULT 1, - `age` INT unsigned NOT NULL DEFAULT 20, - `avatar` varchar(20) NOT NULL, - `level` TINYINT unsigned NOT NULL DEFAULT 1, - `experience` INT unsigned NOT NULL DEFAULT 1, - `palmares` INT unsigned NOT NULL DEFAULT 0, - `statement` TINYINT unsigned NOT NULL DEFAULT 0, - `line` TINYINT unsigned DEFAULT NULL, - `rStartPlace` INT unsigned DEFAULT NULL, - `rDestinationPlace` INT unsigned DEFAULT NULL, - `dStart` datetime DEFAULT NULL, - `dArrival` datetime DEFAULT NULL, - `resources` INT unsigned NOT NULL DEFAULT 0, - `travelType` TINYINT unsigned DEFAULT NULL, - `travelLength` TINYINT unsigned DEFAULT NULL, - - `dCreation` datetime DEFAULT NULL, - `dAffectation` datetime DEFAULT NULL, - `dDeath` datetime DEFAULT NULL, - `uCommander` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkCommanderPlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkCommanderBase FOREIGN KEY (rBase) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table squadron

'; - -$db->query("DROP TABLE IF EXISTS `squadron`"); -$db->query("CREATE TABLE IF NOT EXISTS `squadron` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rCommander` INT unsigned NOT NULL, - - `ship0` SMALLINT unsigned DEFAULT 0, - `ship1` SMALLINT unsigned DEFAULT 0, - `ship2` SMALLINT unsigned DEFAULT 0, - `ship3` SMALLINT unsigned DEFAULT 0, - `ship4` SMALLINT unsigned DEFAULT 0, - `ship5` SMALLINT unsigned DEFAULT 0, - `ship6` SMALLINT unsigned DEFAULT 0, - `ship7` SMALLINT unsigned DEFAULT 0, - `ship8` SMALLINT unsigned DEFAULT 0, - `ship9` SMALLINT unsigned DEFAULT 0, - `ship10` SMALLINT unsigned DEFAULT 0, - `ship11` SMALLINT unsigned DEFAULT 0, - - `dCreation` datetime DEFAULT NULL, - `dLastModification` datetime DEFAULT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkSquadronCommander FOREIGN KEY (rCommander) REFERENCES commander(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table report

'; - -$db->query("DROP TABLE IF EXISTS `report`"); -$db->query("CREATE TABLE IF NOT EXISTS `report` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayerAttacker` INT unsigned NOT NULL, - `rPlayerDefender` INT unsigned NOT NULL, - `rPlayerWinner` INT unsigned NOT NULL, - - `resources` INT unsigned NOT NULL, - `expCom` INT unsigned NOT NULL, - `rPlace` INT unsigned NOT NULL, - `placeName` varchar(45) NOT NULL, - `type` TINYINT unsigned DEFAULT NULL, - `isLegal` TINYINT unsigned DEFAULT 1, - `hasBeenPunished` TINYINT unsigned DEFAULT 0, - `round` INT unsigned DEFAULT 0, - `importance` INT unsigned DEFAULT NULL, - `pevInBeginA` SMALLINT unsigned, - `pevInBeginD` SMALLINT unsigned, - `pevAtEndA` SMALLINT unsigned, - `pevAtEndD` SMALLINT unsigned, - - `avatarA` varchar(255) NOT NULL, - `avatarD` varchar(255) NOT NULL, - `nameA` varchar(255) NOT NULL, - `nameD` varchar(255) NOT NULL, - `levelA` SMALLINT unsigned NOT NULL, - `levelD` SMALLINT unsigned NOT NULL, - `experienceA` INT unsigned NOT NULL, - `experienceD` INT unsigned NOT NULL, - `palmaresA` SMALLINT unsigned NOT NULL, - `palmaresD` SMALLINT unsigned NOT NULL, - `expPlayerA` INT unsigned NOT NULL, - `expPlayerD` INT unsigned NOT NULL, - `statementAttacker` TINYINT unsigned NOT NULL DEFAULT 0, - `statementDefender` TINYINT unsigned NOT NULL DEFAULT 0, - - `dFight` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - CONSTRAINT fkReportPlayerA FOREIGN KEY (rPlayerAttacker) REFERENCES player(id), - CONSTRAINT fkReportPlayerD FOREIGN KEY (rPlayerDefender) REFERENCES player(id), - CONSTRAINT fkReportPlayerW FOREIGN KEY (rPlayerWinner) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table squadronReport

'; - -$db->query("DROP TABLE IF EXISTS `squadronReport`"); -$db->query("CREATE TABLE IF NOT EXISTS `squadronReport` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rReport` INT unsigned NOT NULL, - `rCommander` INT unsigned NULL, - - `position` TINYINT unsigned NOT NULL, - `round` INT NOT NULL, - - `ship0` SMALLINT unsigned NOT NULL, - `ship1` SMALLINT unsigned NOT NULL, - `ship2` SMALLINT unsigned NOT NULL, - `ship3` SMALLINT unsigned NOT NULL, - `ship4` SMALLINT unsigned NOT NULL, - `ship5` SMALLINT unsigned NOT NULL, - `ship6` SMALLINT unsigned NOT NULL, - `ship7` SMALLINT unsigned NOT NULL, - `ship8` SMALLINT unsigned NOT NULL, - `ship9` SMALLINT unsigned NOT NULL, - `ship10` SMALLINT unsigned NOT NULL, - `ship11` SMALLINT unsigned NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkSquadronReportReport FOREIGN KEY (rReport) REFERENCES report(id), - CONSTRAINT fkSquadronReportCommander FOREIGN KEY (rCommander) REFERENCES commander(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table spyReport

'; - -$db->query("DROP TABLE IF EXISTS `spyReport`"); -$db->query("CREATE TABLE IF NOT EXISTS `spyReport` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rPlace` INT unsigned NOT NULL, - - `price` INT unsigned NOT NULL, - `placeColor` SMALLINT unsigned NOT NULL, - `typeOfBase` TINYINT unsigned NOT NULL, - `typeOfOrbitalBase` TINYINT unsigned NOT NULL, - `placeName` varchar(255) NOT NULL, - `points` INT unsigned NOT NULL, - `rEnemy` INT unsigned NOT NULL, - `enemyName` varchar(255) NOT NULL, - `enemyAvatar` varchar(255) NOT NULL, - `enemyLevel` INT unsigned NOT NULL, - `resources` INT unsigned NOT NULL, - `shipsInStorage` text NOT NULL, - `antiSpyInvest` INT NOT NULL, - `commercialRouteIncome` INT NOT NULL, - `commanders` text NOT NULL, - `success` SMALLINT unsigned NOT NULL, - `type` TINYINT unsigned NOT NULL, - - `dSpying` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkSpyReportPlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkSpyReportPlace FOREIGN KEY (rPlace) REFERENCES place(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table ranking

'; - -$qr = $db->prepare("DROP TABLE IF EXISTS `ranking`"); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `ranking` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `dRanking` datetime NOT NULL, - `player` TINYINT unsigned NOT NULL DEFAULT 0, - `faction` TINYINT unsigned NOT NULL DEFAULT 0, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table playerRanking

'; - -$qr = $db->prepare("DROP TABLE IF EXISTS `playerRanking`"); -$qr->execute(); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `playerRanking` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rRanking` INT unsigned NOT NULL, - `rPlayer` INT unsigned NOT NULL, - - `general` INT unsigned NOT NULL, - `generalPosition` SMALLINT NOT NULL, - `generalVariation` SMALLINT NOT NULL, - - `experience` INT unsigned NOT NULL, - `experiencePosition` SMALLINT NOT NULL, - `experienceVariation` SMALLINT NOT NULL, - - `butcher` INT unsigned NOT NULL, - `butcherDestroyedPEV` INT unsigned NOT NULL, - `butcherLostPEV` INT unsigned NOT NULL, - `butcherPosition` SMALLINT NOT NULL, - `butcherVariation` SMALLINT NOT NULL, - - `armies` INT unsigned NOT NULL, - `armiesPosition` SMALLINT NOT NULL, - `armiesVariation` SMALLINT NOT NULL, - - `trader` INT unsigned NOT NULL, - `traderPosition` SMALLINT NOT NULL, - `traderVariation` SMALLINT NOT NULL, - - `resources` INT unsigned NOT NULL, - `resourcesPosition` SMALLINT NOT NULL, - `resourcesVariation` SMALLINT NOT NULL, - - `fight` INT unsigned NOT NULL, - `victories` INT unsigned NOT NULL, - `defeat` INT unsigned NOT NULL, - `fightPosition` SMALLINT NOT NULL, - `fightVariation` SMALLINT NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkPlayerRankingRanking FOREIGN KEY (rRanking) REFERENCES ranking(id), - CONSTRAINT fkPlayerRankingPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table factionRanking

'; - -$qr = $db->prepare("DROP TABLE IF EXISTS `factionRanking`"); -$qr->execute(); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `factionRanking` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rRanking` INT unsigned NOT NULL, - `rFaction` INT unsigned NOT NULL, - - `points` INT unsigned NOT NULL, - `pointsPosition` SMALLINT NOT NULL, - `pointsVariation` SMALLINT NOT NULL, - `newPoints` SMALLINT NOT NULL, - - `general` INT unsigned NOT NULL, - `generalPosition` SMALLINT NOT NULL, - `generalVariation` SMALLINT NOT NULL, - - `wealth` INT unsigned NOT NULL, - `wealthPosition` SMALLINT NOT NULL, - `wealthVariation` SMALLINT NOT NULL, - - `territorial` INT unsigned NOT NULL, - `territorialPosition` SMALLINT NOT NULL, - `territorialVariation` SMALLINT NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkFactionRankingRanking FOREIGN KEY (rRanking) REFERENCES ranking(id), - CONSTRAINT fkFactionRankingPlayer FOREIGN KEY (rFaction) REFERENCES color(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout du module de Conversation

'; - -echo '

Ajout de la table Conversation

'; - -$db = $this->getContainer()->get(Database::class); -$db->query("DROP TABLE IF EXISTS `conversation`"); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `conversation` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `title` VARCHAR(255) NULL, - `messages` INT(5) NOT NULL DEFAULT 0, - `type` TINYINT(2) NOT NULL DEFAULT 1, - `dCreation` datetime NOT NULL, - `dLastMessage` datetime NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -echo '

Ajout de la table userConversation

'; - -$db->query("DROP TABLE IF EXISTS `conversationUser`"); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `conversationUser` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `rConversation` INT(11) NOT NULL, - `rPlayer` INT(11) NOT NULL, - `playerStatement` INT(5) NOT NULL DEFAULT 0, - `convStatement` INT(5) NOT NULL DEFAULT 0, - `dLastView` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -echo '

Ajout de la table messageConversation

'; - -$db->query("DROP TABLE IF EXISTS `conversationMessage`"); -$qr = $db->prepare("CREATE TABLE IF NOT EXISTS `conversationMessage` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `rConversation` INT(11) NOT NULL, - `rPlayer` INT(11) NOT NULL, - `type` INT(5) NOT NULL DEFAULT 0, - - `content` TEXT NOT NULL, - - `dCreation` datetime NOT NULL, - `dLastModification` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -echo '

Remplissage des conversations

'; - -# conv jeanmi -$conv = new Conversation(); -$conv->messages = 0; -$conv->type = Conversation::TY_SYSTEM; -$conv->title = 'Jean-Mi, administrateur système'; -$conv->dCreation = Utils::now(); -$conv->dLastMessage = Utils::now(); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationManager->add($conv); - -$user = new ConversationUser(); -$user->rConversation = $conv->id; -$user->rPlayer = $container->getParameter('id_jeanmi'); -$user->convPlayerStatement = ConversationUser::US_ADMIN; -$user->convStatement = ConversationUser::CS_DISPLAY; -$user->dLastView = Utils::now(); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$conversationUserManager->add($user); - -foreach ($availableFactions as $faction) { - $player = $playerManager->getFactionAccount($faction); - - $conv = new Conversation(); - $conv->messages = 0; - $conv->type = Conversation::TY_SYSTEM; - $conv->title = 'Communication de ' . ColorResource::getInfo($player->rColor, 'popularName'); - $conv->dCreation = Utils::now(); - $conv->dLastMessage = Utils::now(); - $conversationManager->add($conv); - - $user = new ConversationUser(); - $user->rConversation = $conv->id; - $user->rPlayer = $player->id; - $user->convPlayerStatement = ConversationUser::US_ADMIN; - $user->convStatement = ConversationUser::CS_DISPLAY; - $user->dLastView = Utils::now(); - $conversationUserManager->add($user); -} - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table notification

'; - -$db->query("DROP TABLE IF EXISTS `notification`"); -$db->query("CREATE TABLE IF NOT EXISTS `notification` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `title` varchar(100) NOT NULL, - `content` text, - `dSending` datetime NOT NULL, - `readed` TINYINT DEFAULT 0, - `archived` TINYINT DEFAULT 0, - - PRIMARY KEY (`id`), - CONSTRAINT fkNotificationPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table roadMap

'; - -$db->query("DROP TABLE IF EXISTS `roadMap`"); -$db->query("CREATE TABLE IF NOT EXISTS `roadMap` ( - `id` INT NOT NULL AUTO_INCREMENT, - `rPlayer` INT NOT NULL, - `oContent` text NOT NULL, - `pContent` text NOT NULL, - `statement` TINYINT NOT NULL COMMENT '0 = caché, 1 = affiché', - `dCreation` datetime NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table research

'; - -$db->query("DROP TABLE IF EXISTS `research`"); -$db->query("CREATE TABLE IF NOT EXISTS `research` ( - `rPlayer` INT unsigned NOT NULL, - - `mathLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `physLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `chemLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `bioLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `mediLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `econoLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `psychoLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `networkLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `algoLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `statLevel` TINYINT unsigned NOT NULL DEFAULT 0, - `naturalTech` TINYINT NOT NULL DEFAULT 0, - `lifeTech` TINYINT NOT NULL DEFAULT 3, - `socialTech` TINYINT NOT NULL DEFAULT 5, - `informaticTech` TINYINT NOT NULL DEFAULT 7, - `naturalToPay` INT unsigned NOT NULL, - `lifeToPay` INT unsigned NOT NULL, - `socialToPay` INT unsigned NOT NULL, - `informaticToPay` INT unsigned NOT NULL, - - PRIMARY KEY (`rPlayer`), - CONSTRAINT fkResearchPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table technology

'; - -$db->query("DROP TABLE IF EXISTS `technology`"); -$db->query("CREATE TABLE IF NOT EXISTS `technology` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - - `technology` SMALLINT unsigned NOT NULL, - `level` TINYINT unsigned NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkTechnologyPlayer FOREIGN KEY (rPlayer) REFERENCES player(id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table technologyQueue

'; - -$db->query("DROP TABLE IF EXISTS `technologyQueue`"); -$db->query("CREATE TABLE IF NOT EXISTS `technologyQueue` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rPlayer` INT unsigned NOT NULL, - `rPlace` INT unsigned NOT NULL, - - `technology` SMALLINT unsigned NOT NULL, - `targetLevel` TINYINT unsigned NOT NULL, - - `dStart` datetime NOT NULL, - `dEnd` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkTechnologyQueuePlayer FOREIGN KEY (rPlayer) REFERENCES player(id), - CONSTRAINT fkTechnologyQueueOB FOREIGN KEY (rPlace) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -$db->query("DROP TABLE IF EXISTS `recyclingLog`"); -$db->query("DROP TABLE IF EXISTS `recyclingMission`"); - -echo '

Ajout de la table recyclingMission

'; - -$db->query("CREATE TABLE IF NOT EXISTS `recyclingMission` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rBase` INT unsigned NOT NULL, - `rTarget` INT unsigned NOT NULL, - - `cycleTime` INT unsigned NOT NULL, - `recyclerQuantity` SMALLINT unsigned NOT NULL, - `addToNextMission` SMALLINT unsigned NOT NULL, - - `uRecycling` datetime NOT NULL, - `statement` TINYINT NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkRecyclingMissionOB FOREIGN KEY (rBase) REFERENCES orbitalBase(rPlace) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table recyclingLog

'; - -$db->query("CREATE TABLE IF NOT EXISTS `recyclingLog` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rRecycling` INT unsigned NOT NULL, - - `resources` INT unsigned NOT NULL, - `credits` INT unsigned NOT NULL, - `ship0` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship1` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship2` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship3` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship4` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship5` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship6` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship7` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship8` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship9` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship10` SMALLINT unsigned NOT NULL DEFAULT 0, - `ship11` SMALLINT unsigned NOT NULL DEFAULT 0, - `dLog` datetime NOT NULL, - - PRIMARY KEY (`id`), - CONSTRAINT fkRecyclingLogRec FOREIGN KEY (rRecycling) REFERENCES recyclingMission(id) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -#-------------------------------------------------------------------------------------------- -echo '

Ajout de la table creditTransaction

'; - -$db->query("DROP TABLE IF EXISTS `creditTransaction`"); -$db->query("CREATE TABLE IF NOT EXISTS `creditTransaction` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - `rSender` INT unsigned NOT NULL, - `rReceiver` INT unsigned NOT NULL, - `amount` INT unsigned NOT NULL, - `type` TINYINT unsigned NOT NULL, - `dTransaction` datetime NOT NULL, - `comment` text DEFAULT NULL, - - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); - -echo '

Ajout de la table colorLink

'; -$db->query("DROP TABLE IF EXISTS `colorLink`"); -$db->query("CREATE TABLE IF NOT EXISTS `colorLink` ( - `id` INT unsigned NOT NULL AUTO_INCREMENT, - - `rColor` TINYINT NOT NULL DEFAULT 0, - `rColorLinked` TINYINT NOT NULL DEFAULT 0, - `statement` TINYINT unsigned NOT NULL DEFAULT 0, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - -$values = ''; -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$factions = $colorManager->getAll(); -$nbFactions = count($factions); -for ($i = 1; $i < $nbFactions; $i++) { - for ($j = 1; $j < $nbFactions; $j++) { - if (!(($i == $nbFactions - 1) && ($j == $nbFactions - 1))) { - $values .= '(' . $factions[$i]->id . ',' . $factions[$j]->id . ',' . 0 .'),'; - } - } -} - -$values .= '(' . $factions[$nbFactions - 1]->id . ',' . $factions[$nbFactions - 1]->id . ',' . 0 .');'; - -echo '

Remplissage de la table colorLink

'; -$qr = $db->prepare("INSERT INTO `colorLink` (`rColor`, `rColorLinked`, `statement`) VALUES" . $values); -$qr->execute(); - -$db->query('SET FOREIGN_KEY_CHECKS = 1;'); - -if ($container->getParameter('data_analysis')) { - echo '

Création des tables du module d\'analyse

'; - - include 'data-analysis/player.php'; - include 'data-analysis/playerDaily.php'; -// include 'data-analysis/fleetMovement.php'; - include 'data-analysis/commercialRelation.php'; - include 'data-analysis/socialRelation.php'; - include 'data-analysis/baseAction.php'; -} - -echo '

Génération de la galaxie

'; - -$galaxyGenerator = $this->getContainer()->get(\Asylamba\Modules\Gaia\Helper\GalaxyGenerator::class); -$galaxyGenerator->generate(); -echo $galaxyGenerator->getLog(); diff --git a/system/script/scripts/deploy/newgalaxy.php b/system/script/scripts/deploy/newgalaxy.php deleted file mode 100755 index 682b68bba..000000000 --- a/system/script/scripts/deploy/newgalaxy.php +++ /dev/null @@ -1,8 +0,0 @@ -Test galaxy'; - -$galaxyGenerator = $this->getContainer()->get(\Asylamba\Modules\Gaia\Helper\GalaxyGenerator::class); - -$galaxyGenerator->generate(); -echo $galaxyGenerator->getLog(); diff --git a/system/script/scripts/migration/add-conversation.php b/system/script/scripts/migration/add-conversation.php deleted file mode 100644 index 72203c908..000000000 --- a/system/script/scripts/migration/add-conversation.php +++ /dev/null @@ -1,47 +0,0 @@ -Ajout du module de Conversation'; - -echo '

Ajout de la table Conversation

'; - -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); - -$qr = $database->prepare("CREATE TABLE IF NOT EXISTS `conversation` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `title` VARCHAR(255) NULL, - `messages` INT(5) NOT NULL DEFAULT 0, - `type` TINYINT(2) NOT NULL DEFAULT 1, - `dCreation` datetime NOT NULL, - `dLastMessage` datetime NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -echo '

Ajout de la table userConversation

'; - -$qr = $database->prepare("CREATE TABLE IF NOT EXISTS `conversationUser` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `rConversation` INT(11) NOT NULL, - `rPlayer` INT(11) NOT NULL, - `playerStatement` INT(5) NOT NULL DEFAULT 0, - `convStatement` INT(5) NOT NULL DEFAULT 0, - `dLastView` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); - -echo '

Ajout de la table messageConversation

'; - -$qr = $database->prepare("CREATE TABLE IF NOT EXISTS `conversationMessage` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `rConversation` INT(11) NOT NULL, - `rPlayer` INT(11) NOT NULL, - `type` INT(5) NOT NULL DEFAULT 0, - - `content` TEXT NOT NULL, - - `dCreation` datetime NOT NULL, - `dLastModification` datetime DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); -$qr->execute(); diff --git a/system/script/scripts/migration/remove-message.php b/system/script/scripts/migration/remove-message.php deleted file mode 100644 index b83c1fd6c..000000000 --- a/system/script/scripts/migration/remove-message.php +++ /dev/null @@ -1,8 +0,0 @@ -Suppression du module de Message'; - -echo '

Suppression de la table Message

'; - -$qr = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class)->prepare("DROP TABLE `message`;"); -$qr->execute(); diff --git a/system/script/scripts/migration/updateColor.php b/system/script/scripts/migration/updateColor.php deleted file mode 100755 index d58b85b84..000000000 --- a/system/script/scripts/migration/updateColor.php +++ /dev/null @@ -1,15 +0,0 @@ -Ajout de isInGame dans color'; - -$this->getContainer()->get(\Asylamba\Classes\Database\DatabaseAdmin::class)->query("ALTER TABLE `color` ADD `isInGame` TINYINT NULL DEFAULT 0 AFTER `isClosed`;"); - -$factions = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class)->getAll(); - -foreach ($factions as $faction) { - $faction->isInGame = 1; -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(Color::class); diff --git a/system/script/scripts/migration/updateFactionRanking.php b/system/script/scripts/migration/updateFactionRanking.php deleted file mode 100644 index 8a95571a5..000000000 --- a/system/script/scripts/migration/updateFactionRanking.php +++ /dev/null @@ -1,14 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Database\DatabaseAdmin::class); - -echo '

Ajout du classement total (points) dans playerRanking

'; - -$db->query("ALTER TABLE `factionRanking` ADD `newPoints` SMALLINT NOT NULL AFTER `rFaction`;"); -$db->query("ALTER TABLE `factionRanking` ADD `pointsVariation` SMALLINT NOT NULL AFTER `rFaction`;"); -$db->query("ALTER TABLE `factionRanking` ADD `pointsPosition` SMALLINT NOT NULL AFTER `rFaction`;"); -$db->query("ALTER TABLE `factionRanking` ADD `points` INT unsigned NOT NULL AFTER `rFaction`;"); - -echo '

Ajout des points du classement total dans color

'; - -$db->query("ALTER TABLE `color` ADD `rankingPoints` INT unsigned NOT NULL DEFAULT 0 AFTER `activePlayers`;"); diff --git a/system/script/scripts/migration/updateRecycling.php b/system/script/scripts/migration/updateRecycling.php deleted file mode 100644 index a5b7e4c63..000000000 --- a/system/script/scripts/migration/updateRecycling.php +++ /dev/null @@ -1,5 +0,0 @@ -Ajout de addToNextMission dans recyclingMission'; - -$this->getContainer()->get(\Asylamba\Classes\Database\Database::class)->query("ALTER TABLE `recyclingMission` ADD `addToNextMission` SMALLINT unsigned NOT NULL AFTER `recyclerQuantity`;"); diff --git a/system/script/scripts/migration/updateSector.php b/system/script/scripts/migration/updateSector.php deleted file mode 100644 index abfb95180..000000000 --- a/system/script/scripts/migration/updateSector.php +++ /dev/null @@ -1,5 +0,0 @@ -Ajout de points dans sector'; - -$this->getContainer()->get(\Asylamba\Classes\Database\DatabaseAdmin::class)->query("ALTER TABLE `sector` ADD `points` INT NOT NULL DEFAULT 1 AFTER `lifePlanet`;"); diff --git a/system/script/scripts/server/monitoring.php b/system/script/scripts/server/monitoring.php deleted file mode 100644 index 2e640d9ad..000000000 --- a/system/script/scripts/server/monitoring.php +++ /dev/null @@ -1,51 +0,0 @@ -getContainer()->get('server'); -$clientManager = $this->getContainer()->get(\Asylamba\Classes\Daemon\ClientManager::class); -$processManager = $this->getContainer()->get('process_manager'); -$memoryManager = $this->getContainer()->get('memory_manager'); - -$memoryManager->refreshNodeMemory(); -$masterData = $memoryManager->getNodeMemory(); -$poolData = $memoryManager->getPoolMemory(); -echo '

Serveur

'; -echo ('

Mémoire utilisée au pool: ' . $poolData['allocated_memory'] . 'b

'); -echo ('

Mémoire allouée au pool: ' . $poolData['memory'] . 'b

'); -echo ('

Mémoire utilisée au master: ' . $masterData['allocated_memory'] . 'b

'); -echo ('

Mémoire allouée au master: ' . $masterData['memory'] . 'b

'); -echo ('

Heure : ' . Utils::now() . '

'); - -echo ('

Process

'); -echo '
'; -foreach ($processManager->getProcesses() as $process) { - $tasks = $process->getTasks(); - echo ("
  • Name : {$process->getName()}
  • "); - echo "
  • Mémoire allouée: {$process->getAllocatedMemory()}b
  • "; - echo "
  • Mémoire utilisée: {$process->getMemory()}
  • "; - echo "
  • Temps estimé de travail: {$process->getExpectedWorkTime()}
  • "; - echo ("
  • Tasks ".count($tasks)."
  • "); - foreach($tasks as $task) { - var_dump($task); - } - echo ('
'); -} -echo '
'; -echo '
'; -// @TODO refactor UI -echo '

Schedulers

Real Time Action Scheduler (unavailable, see RabbitMQ)
    '; -//foreach ($rtc->getQueue() as $date => $elements) -//{ -// echo '
  • ';
    -//	var_dump($date);
    -//	var_dump($elements);
    -//	echo '
  • '; -//} -echo '

'; - -echo '

Clients

    '; -foreach ($clientManager->getClients() as $id => $client) { - echo("
  • ");var_dump($client);echo('
  • '); -} -echo '
'; diff --git a/system/script/scripts/test/http-data.php b/system/script/scripts/test/http-data.php deleted file mode 100644 index 985fd42f3..000000000 --- a/system/script/scripts/test/http-data.php +++ /dev/null @@ -1,13 +0,0 @@ -getContainer()->get('app.request'); - -var_dump($request->headers->get('user-agent')); -var_dump($request->headers->get('accept')); -var_dump($request->headers->get('accept-encoding')); -var_dump($request->headers->get('accept-language')); - -var_dump('____________________________________________________'); - -var_dump(md5($request->headers->get('user-agent') . $request->headers->get('accept-language'))); -var_dump(md5($request->headers->get('x-real-ip') . $request->headers->get('user-agent') . $request->headers->get('accept-language'))); \ No newline at end of file diff --git a/system/script/scripts/test/test.php b/system/script/scripts/test/test.php deleted file mode 100644 index 2ae1ca225..000000000 --- a/system/script/scripts/test/test.php +++ /dev/null @@ -1,5 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class)->getMovingCommanders(); - -foreach ($commanders as $commander) { - $commander->dArrival = $commander->dStart; -} - -$this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->flush(Commander::class); diff --git a/system/script/scripts/utils/find-sector-infos.php b/system/script/scripts/utils/find-sector-infos.php deleted file mode 100755 index fd87cc7fe..000000000 --- a/system/script/scripts/utils/find-sector-infos.php +++ /dev/null @@ -1,5 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); -$galaxyConfiguration->fillSectorsData(); diff --git a/system/script/scripts/utils/get-stats.php b/system/script/scripts/utils/get-stats.php deleted file mode 100644 index 36c710219..000000000 --- a/system/script/scripts/utils/get-stats.php +++ /dev/null @@ -1,75 +0,0 @@ -Création automatisée de statistiques'; - -echo '

Joueurs

'; - -echo '

'; - echo 'Joueurs actifs
'; - echo '' . Format::number(PlayerManager::count(array('statement' => Player::ACTIVE))) . ''; -echo '

'; - -echo '

'; - echo 'Joueurs inscrits
'; - echo '' . Format::number(PlayerManager::count(array('statement' => array(Player::ACTIVE, Player::INACTIVE)))) . ''; -echo '

'; - -$S_PAM = ASM::$pam->getCurrentSession(); -ASM::$pam->newSession(FALSE); -ASM::$pam->load([], ['credit', 'DESC'], [0, 3]); - -echo '

'; - echo 'Joueurs les plus riches'; - for ($i = 0; $i < ASM::$pam->size(); $i++) { - $p = ASM::$pam->get($i); - - echo '
'; - echo '' . ColorResource::getInfo($p->rColor, 'status')[$p->status] . ' ' . $p->name . ' de ' . ColorResource::getInfo($p->rColor, 'popularName') . ''; - echo ' (' . Format::number($p->credit) . ' crédits)'; - } -echo '

'; - -ASM::$pam->changeSession($S_PAM); - -echo '

Commerce

'; - -echo '

nombre de RC

'; -echo '

max RC

'; - -echo '

CommercialShipping

'; -echo '

CreditTransaction

'; -echo '

transaction

'; - -echo '

Politique / Factions

'; -echo '

Candidate

'; -echo '

Color

'; -echo '

Election

'; -echo '

Law

'; -echo '

vote

'; -echo '

votelaw

'; - -echo '

Guerre

'; -echo '

Commandant

'; -echo '

report

'; -echo '

spyreport

'; - - - -echo '

Interactions

'; -echo '

ForumMessage

'; -echo '

ForumTopic

'; -echo '

Message

'; -echo '

Notifications

'; - -echo '

Bases / Construction

'; -echo '

ob

'; -echo '

vaisseau

'; -echo '

batiment

'; -echo '

tech

'; -echo '

recycl

'; -echo '

recycllog

'; \ No newline at end of file diff --git a/system/script/scripts/utils/map-render.php b/system/script/scripts/utils/map-render.php deleted file mode 100755 index 62d62aa70..000000000 --- a/system/script/scripts/utils/map-render.php +++ /dev/null @@ -1,84 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Manager\SystemManager::class)->getAll(); - -# functions -function getPosition($type, $x, $y, $multiply = 4) { - $_return = 'style="'; - switch($type) { - case 1 : $_return .= 'top: ' . ceil($y * $multiply) . 'px; left: ' . ($x * $multiply) . 'px;'; - break; - case 2 : $_return .= 'top: ' . ceil($y * $multiply) . 'px; left: ' . ($x * $multiply) . 'px;'; - break; - case 3 : $_return .= 'top: ' . ceil(($y * $multiply) - 1) . 'px; left: ' . (($x * $multiply) - 1) . 'px;'; - break; - case 4 : $_return .= 'top: ' . ceil(($y * $multiply) - 1) . 'px; left: ' . (($x * $multiply) - 1) . 'px;'; - break; - case 5 : $_return .= 'top: ' . ceil($y * $multiply) . 'px; left: ' . ($x * $multiply) . 'px;'; - break; - } - $_return .= '"'; - return $_return; -} - -?> - - -'; - foreach ($systems as $system) { - - switch($system->typeOfSystem) { - case 1: echo '
typeOfSystem, $system->xPosition, $system->yPosition) . '>
'; break; - case 2: echo '
typeOfSystem, $system->xPosition, $system->yPosition) . '>
'; break; - case 3: echo '
typeOfSystem, $system->xPosition, $system->yPosition) . '>
'; break; - case 4: echo '
typeOfSystem, $system->xPosition, $system->yPosition) . '>
'; break; - case 5: echo '
typeOfSystem, $system->xPosition, $system->yPosition) . '>
'; break; - default: - break; - } - } -echo ''; diff --git a/system/script/scripts/utils/recolor-sector.php b/system/script/scripts/utils/recolor-sector.php deleted file mode 100644 index b46589773..000000000 --- a/system/script/scripts/utils/recolor-sector.php +++ /dev/null @@ -1,3 +0,0 @@ -'; -} \ No newline at end of file diff --git a/system/script/template/close.php b/system/script/template/close.php deleted file mode 100755 index 04d337910..000000000 --- a/system/script/template/close.php +++ /dev/null @@ -1,3 +0,0 @@ -'; -echo ''; \ No newline at end of file diff --git a/system/script/template/open.php b/system/script/template/open.php deleted file mode 100755 index 4f0ae34d7..000000000 --- a/system/script/template/open.php +++ /dev/null @@ -1,20 +0,0 @@ -getContainer(); - -echo ''; -echo ''; - -echo ''; - echo '' . $this->getContainer()->get('app.response')->getTitle() . ' — ' . $container->getParameter('app_subname') . ' — ' . $container->getParameter('app_name') . ''; - - echo ''; - echo ''; - - echo ''; - - echo ''; - echo ''; -echo ''; - -echo ''; diff --git a/system/views/components/admin/bugtracker/mainBugtracker.php b/system/views/components/admin/bugtracker/mainBugtracker.php deleted file mode 100755 index 7aad68b6e..000000000 --- a/system/views/components/admin/bugtracker/mainBugtracker.php +++ /dev/null @@ -1,83 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$token = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo ''; - echo '

Rapports d\'erreur

'; - echo '' . $listName . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'voir tous les rapports'; - echo 'Bug'; - echo 'Orth'; - echo 'Aff'; - echo 'Cal'; - echo 'Amé'; - echo '
'; - - echo '

Rapports en attente de traitement

'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - foreach ($bugtracker as $bug) { - if ($bug->statement == BugTracker::ST_WAITING) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
datemessageactions
' . $bug->rPlayer . '' . $bug->dSending . '' . $bug->url . '

' . $bug->message . '
'; - echo 'A'; - echo ' X'; - echo '
'; - - echo '

Rapports traités

'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - foreach ($bugtracker as $bug) { - if ($bug->statement == BugTracker::ST_ARCHIVED) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo '
datemessageactions
' . $bug->rPlayer . '' . $bug->dSending . '' . $bug->url . '

' . $bug->message . '
'; - echo 'X'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/admin/message/newOfficialMessage.php b/system/views/components/admin/message/newOfficialMessage.php deleted file mode 100755 index 13a18542e..000000000 --- a/system/views/components/admin/message/newOfficialMessage.php +++ /dev/null @@ -1,26 +0,0 @@ -'; - echo '
'; - echo '

Messagerie

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo ''; diff --git a/system/views/components/admin/roadmap/addEntry.php b/system/views/components/admin/roadmap/addEntry.php deleted file mode 100755 index 39f2b5efb..000000000 --- a/system/views/components/admin/roadmap/addEntry.php +++ /dev/null @@ -1,26 +0,0 @@ -'; - echo '
'; - echo '

Roadmap

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo ''; diff --git a/system/views/components/bases/fastView.php b/system/views/components/bases/fastView.php deleted file mode 100644 index 5f5b74141..000000000 --- a/system/views/components/bases/fastView.php +++ /dev/null @@ -1,299 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$buildingResourceRefund = $this->getContainer()->getParameter('athena.building.building_queue_resource_refund'); -$sessionToken = $session->get('token'); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$mediaPath = $container->getParameter('media'); - -// @TODO: move it to the using part of the code and remove useless data -if ($ob_fastView->getLevelSpatioport() > 0) { - $nMaxCR = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $ob_fastView->getLevelSpatioport(), 'nbRoutesMax'); - $nCRWaitingForOther = 0; $nCRWaitingForMe = 0; - $nCROperational = 0; $nCRInStandBy = 0; - $nCRInDock = 0; - - $routes = array_merge( - $commercialRouteManager->getByBase($ob_fastView->getId()), - $commercialRouteManager->getByDistantBase($ob_fastView->getId()) - ); - if (count($routes) > 0) { - foreach ($routes as $route) { - if ($route->getStatement() == CommercialRoute::PROPOSED AND $route->getPlayerId1() == $session->get('playerId')) { - $nCRWaitingForOther++; - } elseif ($route->getStatement() == CommercialRoute::PROPOSED AND $route->getPlayerId1() != $session->get('playerId')) { - $nCRWaitingForMe++; - } elseif ($route->getStatement() == CommercialRoute::ACTIVE) { - $nCROperational++; - } elseif ($route->getStatement() == CommercialRoute::STANDBY) { - $nCRInStandBy++; - } - } - $entityManager->clear(CommercialRoute::class); - $nCRInDock = $nCROperational + $nCRInStandBy + $nCRWaitingForOther; - } -} - -echo '
'; - if ($fastView_profil) { - echo '
'; - echo '' . $ob_fastView->getName() . ''; - echo '

' . $ob_fastView->getName() . '

'; - echo ''; - echo PlaceResource::get($ob_fastView->typeOfBase, 'name') . ' — ' . $ob_fastView->getPoints() . ' points'; - echo ''; - echo '
'; - } else { - echo '
'; - echo '

Vue de situation

'; - echo '
'; - } - echo '
'; - echo '
'; - # affichage des routes en attentes - if ($ob_fastView->getLevelSpatioport() > 0 && $nCRWaitingForMe != 0) { - echo 'Vous avez ' . $nCRWaitingForMe . ' proposition' . Format::plural($nCRWaitingForMe) . ' commerciale' . Format::plural($nCRWaitingForMe) . ''; - } - - # affichage des ressources - echo '
'; - echo 'Ressources en stock'; - echo ''; - echo Format::numberFormat($ob_fastView->getResourcesStorage()); - echo ' ressources'; - echo ''; - - $storageSpace = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $ob_fastView->getLevelStorage(), 'storageSpace'); - $storageBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_STORAGE); - if ($storageBonus > 0) { - $storageSpace += ($storageSpace * $storageBonus / 100); - } - $percent = Format::numberFormat($ob_fastView->getResourcesStorage() / $storageSpace * 100); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo '

Générateur

'; - - $nextTime = 0; - $nextTotalTime = 0; - $realSizeQueue = 0; - - echo '
'; - for ($j = 0; $j < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::GENERATOR, 'level', $ob_fastView->levelGenerator, 'nbQueues'); $j++) { - if (isset($ob_fastView->buildingQueues[$j])) { - $qe = $ob_fastView->buildingQueues[$j]; - - $realSizeQueue++; - $nextTime = Utils::interval(Utils::now(), $qe->dEnd, 's'); - $nextTotalTime += $orbitalBaseHelper->getBuildingInfo($qe->buildingNumber, 'level', $qe->targetLevel, 'time'); - - echo '
'; - 'class="button hb lt" title="annuler la construction (attention, vous ne récupérerez que ' . $buildingResourceRefund * 100 . '% du montant investi)">×'; - echo ''; - echo ''; - echo $orbitalBaseHelper->getBuildingInfo($qe->buildingNumber, 'frenchName'); - echo ' niv. ' . $qe->targetLevel . ''; - echo ''; - if ($realSizeQueue > 1) { - echo '' . Chronos::secondToFormat($nextTime, 'lite') . ''; - echo ''; - } else { - echo '' . Chronos::secondToFormat($nextTime, 'lite') . ''; - - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo ''; - echo 'Construire un bâtiment'; - echo ''; - - break; - } - } - echo '
'; - - if ($ob_fastView->getLevelDock1() > 0) { - echo '

Chantier Alpha

'; - - $shipQueues = $shipQueueManager->getByBaseAndDockType($ob_fastView->rPlace, 1); - $realSizeQueue = 0; - - echo '
'; - for ($j = 0; $j < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK1, 'level', $ob_fastView->levelDock1, 'nbQueues'); $j++) { - if (isset($shipQueues[$j])) { - $queue = $shipQueues[$j]; - $realSizeQueue++; - $totalTimeShips = $queue->quantity * ShipResource::getInfo($queue->shipNumber, 'time'); - $remainingTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo $realSizeQueue > 1 - ? '
' - : '
'; - echo ''; - echo '' . $queue->quantity . ' ' . ShipResource::getInfo($queue->shipNumber, 'codeName') . Format::addPlural($queue->quantity) . ''; - - if ($realSizeQueue > 1) { - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo ''; - echo 'Lancer la production'; - echo ''; - - break; - } - } - echo '
'; - } - - if ($ob_fastView->getLevelDock2() > 0) { - echo '

Chantier de Ligne

'; - - $shipQueues = $shipQueueManager->getByBaseAndDockType($ob_fastView->rPlace, 2); - $realSizeQueue = 0; - - echo '
'; - for ($j = 0; $j < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK1, 'level', $ob_fastView->levelDock1, 'nbQueues'); $j++) { - if (isset($shipQueues[$j])) { - $queue = $shipQueues[$j]; - $realSizeQueue++; - $totalTimeShips = $queue->quantity * ShipResource::getInfo($queue->shipNumber, 'time'); - $remainingTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo $realSizeQueue > 1 - ? '
' - : '
'; - echo ''; - echo '' . $queue->quantity . ' ' . ShipResource::getInfo($queue->shipNumber, 'codeName') . Format::addPlural($queue->quantity) . ''; - - if ($realSizeQueue > 1) { - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo ''; - echo 'Lancer la production'; - echo ''; - - break; - } - } - echo '
'; - } - - if ($ob_fastView->getLevelTechnosphere() > 0) { - echo '

Technosphère

'; - - $realSizeQueue = 0; - $remainingTotalTime = 0; - $totalTimeTechno = 0; - - echo '
'; - for ($j = 0; $j < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'level', $ob_fastView->levelTechnosphere, 'nbQueues'); $j++) { - if (isset($ob_fastView->technoQueues[$j])) { - $queue = $ob_fastView->technoQueues[$j]; - $realSizeQueue++; - $totalTimeTechno += $technologyHelper->getInfo($queue->technology, 'time', $queue->targetLevel); - $remainingTotalTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo '
'; - echo ''; - echo '' . $technologyHelper->getInfo($queue->technology, 'name'); - if (!$technologyHelper->isAnUnblockingTechnology($queue->technology)) { - echo ' niv. ' . $queue->targetLevel . ''; - } - echo ''; - - if ($realSizeQueue > 1) { - echo '' . Chronos::secondToFormat($remainingTotalTime, 'lite') . ''; - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTotalTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo ''; - echo 'Développer une technologie'; - echo ''; - - break; - } - } - echo '
'; - } - - if ($ob_fastView->getLevelSpatioport() > 0) { - echo '

Spatioport

'; - - echo '
'; - echo 'Routes commerciales'; - echo ''; - echo $nCROperational . ' / ' . $nMaxCR; - echo ''; - - $percent = Format::numberFormat($nCROperational / $nMaxCR * 100); - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; - echo '
'; - - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/base-type.php b/system/views/components/bases/ob/base-type.php deleted file mode 100644 index a79e72849..000000000 --- a/system/views/components/bases/ob/base-type.php +++ /dev/null @@ -1,171 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$minimalBaseChangeLevel = $this->getContainer()->getParameter('athena.obm.change_type_min_level'); -$capitalChangeLevel = $this->getContainer()->getParameter('athena.obm.capital_min_level'); -$mediaPath = $container->getParameter('media'); -# affichage du type de base - -# require - # {orbitalBase} ob_obSituation - # [{commander}] commanders_obSituation - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '' . PlaceResource::get($ob_obSituation->typeOfBase, 'name') . ''; - echo '' . $ob_obSituation->getName() . ''; - echo '' . PlaceResource::get($ob_obSituation->typeOfBase, 'name') . ''; - echo '
'; - - echo '

' . PlaceResource::get($ob_obSituation->typeOfBase, 'desc') . '

'; - - echo '
'; - echo ''; - - echo ''; - - echo ''; - - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo '

' . PlaceResource::get(OrbitalBase::TYP_NEUTRAL, 'name') . '

'; - $fleetQuantity = PlaceResource::get(OrbitalBase::TYP_NEUTRAL, 'l-line') + PlaceResource::get(OrbitalBase::TYP_NEUTRAL, 'r-line'); - echo '

Flottes' . $fleetQuantity . '

'; - echo '

Impôt' . (PlaceResource::get(OrbitalBase::TYP_NEUTRAL, 'tax') * 100) . '%

'; - echo '
'; - - echo '
'; - if ($ob_obSituation->typeOfBase == OrbitalBase::TYP_NEUTRAL && $session->get('playerInfo')->get('credit') >= PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price') && $ob_obSituation->levelGenerator >= $minimalBaseChangeLevel) { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price')); - echo ' crédits
'; - echo '
'; - } elseif (($ob_obSituation->typeOfBase == OrbitalBase::TYP_MILITARY) && $session->get('playerInfo')->get('credit') >= PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price')) { - echo ''; - echo 'Transformer en ' . PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price')); - echo ' crédits
'; - echo '
'; - } elseif ($ob_obSituation->typeOfBase == OrbitalBase::TYP_COMMERCIAL || $ob_obSituation->typeOfBase == OrbitalBase::TYP_CAPITAL) { - # do nothing - } else { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'price')); - echo ' crédits
'; - echo '
'; - } - echo '

Avantages & Inconvénients

'; - $fleetQuantity = PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'l-line') + PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'r-line'); - echo '

Flottes' . $fleetQuantity . '

'; - echo '

Impôt' . (PlaceResource::get(OrbitalBase::TYP_COMMERCIAL, 'tax') * 100) . '%

'; - echo '

TechnologiesOrienté commerce et production

'; - echo '

BâtimentsPlateforme Commerciale et Spatioport au niveau maximum

'; - echo '
'; - echo '

NécessiteGénérateur niveau ' . $minimalBaseChangeLevel . '

'; - echo '
'; - - echo '
'; - if ($ob_obSituation->typeOfBase == OrbitalBase::TYP_NEUTRAL && $session->get('playerInfo')->get('credit') >= PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price') && $ob_obSituation->levelGenerator >= $minimalBaseChangeLevel) { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_MILITARY, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price')); - echo ' crédits
'; - echo '
'; - } elseif (($ob_obSituation->typeOfBase == OrbitalBase::TYP_COMMERCIAL) && $session->get('playerInfo')->get('credit') >= PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price')) { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_MILITARY, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price')); - echo ' crédits
'; - echo '
'; - } elseif ($ob_obSituation->typeOfBase == OrbitalBase::TYP_MILITARY || $ob_obSituation->typeOfBase == OrbitalBase::TYP_CAPITAL) { - # do nothing - } else { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_MILITARY, 'name') . '
'; - echo Format::numberFormat(PlaceResource::get(OrbitalBase::TYP_MILITARY, 'price')); - echo ' crédits
'; - echo '
'; - } - echo '

Avantages & Inconvénients

'; - $fleetQuantity = PlaceResource::get(OrbitalBase::TYP_MILITARY, 'l-line') + PlaceResource::get(OrbitalBase::TYP_MILITARY, 'r-line'); - echo '

Flottes' . $fleetQuantity . '

'; - echo '

Impôt' . (PlaceResource::get(OrbitalBase::TYP_MILITARY, 'tax') * 100) . '%

'; - echo '

TechnologiesOrienté militaire

'; - echo '

BâtimentsCentre de Recyclage et Chantier de Ligne au niveau maximum

'; - echo '
'; - echo '

NécessiteGénérateur niveau ' . $minimalBaseChangeLevel . '

'; - echo '
'; - - echo '
'; - $capitalQuantity = 0; - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($session->get('playerBase')->get('ob')->get($i)->get('type') == OrbitalBase::TYP_CAPITAL) { - $capitalQuantity++; - } - } - $totalPrice = PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'price'); - if ((($ob_obSituation->typeOfBase == OrbitalBase::TYP_COMMERCIAL || $ob_obSituation->typeOfBase == OrbitalBase::TYP_MILITARY) && $session->get('playerInfo')->get('credit') >= $totalPrice && $ob_obSituation->levelGenerator >= $capitalChangeLevel)) { - if ($capitalQuantity == 0) { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'name') . '
'; - echo Format::numberFormat($totalPrice); - echo ' crédits
'; - echo '
'; - } else { - echo ''; - echo 'Vous avez déjà une ' . PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'name') . '
'; - echo '
'; - } - } elseif ($ob_obSituation->typeOfBase == OrbitalBase::TYP_CAPITAL) { - # do nothing - } else { - if ($capitalQuantity == 0) { - echo ''; - echo 'Evoluer en ' . PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'name') . '
'; - echo Format::numberFormat($totalPrice); - echo ' crédits
'; - echo '
'; - } else { - echo ''; - echo 'Vous avez déjà une ' . PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'name') . '
'; - echo '
'; - } - } - echo '

Avantages & Inconvénients

'; - $fleetQuantity = PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'l-line') + PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'r-line'); - echo '

Vous ne pouvez avoir qu\'une capitale

'; - echo '

Flottes' . $fleetQuantity . '

'; - echo '

Impôt' . (PlaceResource::get(OrbitalBase::TYP_CAPITAL, 'tax') * 100) . '%

'; - echo '

TechnologiesToutes disponibles

'; - echo '

BâtimentsTous au niveau maximum

'; - echo '
'; - echo '

NécessiteGénérateur niveau ' . $capitalChangeLevel . '

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/comPlat.php b/system/views/components/bases/ob/comPlat.php deleted file mode 100755 index dba856046..000000000 --- a/system/views/components/bases/ob/comPlat.php +++ /dev/null @@ -1,72 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$componentPath = $container->getParameter('component'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$request = $this->getContainer()->get('app.request'); - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::COMMERCIAL_PLATEFORME, 'frenchName') . '

'; - echo 'niveau ' . $ob_compPlat->getLevelCommercialPlateforme() . ''; - echo '
'; - echo '
'; - echo '
'; - $active = (!$request->query->has('mode') || $request->query->get('mode') == 'market') ? 'active' : ''; - echo ''; - echo ''; - echo 'Place du commerce'; - echo 'Achetez sur le marché'; - echo ''; - - $active = ($request->query->get('mode') == 'sell') ? 'active' : ''; - echo ''; - echo ''; - echo 'Salle des ventes'; - echo 'Vendez sur le marché'; - echo ''; - - echo '
'; - - $active = ($request->query->has('mode') && $request->query->get('mode') == 'resource') ? 'active' : ''; - echo ''; - echo ''; - echo 'Halle de transfert'; - echo 'Envoyez des ressources et des vaisseaux'; - echo ''; - echo '
'; - echo '
'; -echo '
'; - -include $componentPath . 'bases/ob/complat/transaction.php'; - -if (!$request->query->has('mode') || $request->query->get('mode') == 'market') { - include $componentPath . 'bases/ob/complat/market.php'; -} elseif ($request->query->get('mode') == 'sell') { - include $componentPath . 'bases/ob/complat/sell.php'; -} else { - include $componentPath . 'bases/ob/complat/resource.php'; -} - -echo '
'; - echo '
'; - echo '

A propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::COMMERCIAL_PLATEFORME, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/complat/market.php b/system/views/components/bases/ob/complat/market.php deleted file mode 100755 index 61cc06055..000000000 --- a/system/views/components/bases/ob/complat/market.php +++ /dev/null @@ -1,138 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$commercialTradeManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$S_CTM1 = $commercialTradeManager->getCurrentSession(); -$S_CTM2 = $commercialTradeManager->newSession(); -$commercialTradeManager->load(array()); - -# work -$comingCommercialShipping = 0; -foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->statement === CommercialShipping::ST_GOING && $commercialShipping->rBaseDestination == $ob_compPlat->getId()) { - $comingCommercialShipping++; - } -} - -if ($comingCommercialShipping > 0) { - echo '
'; - echo '
'; - echo '

Aperçu des achats

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Convoi en approche

'; - foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->statement == CommercialShipping::ST_GOING && $commercialShipping->rBaseDestination == $ob_compPlat->getId()) { - $commercialShippingManager->render($commercialShipping); - } - } - echo '
'; - echo '
'; - echo '
'; -} - -$transaction = $transactionManager->getLastCompletedTransaction(Transaction::TYP_RESOURCE); -$ressourceCurrentRate = $transaction->currentRate; - -$resourceTransactions = $transactionManager->getProposedTransactions(Transaction::TYP_RESOURCE); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Ressources

'; - echo 'cours actuel | 1:' . Format::numberFormat($ressourceCurrentRate, 3) . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'trier par'; - echo 'ressources'; - echo 'crédit'; - echo 'temps'; - echo 'cours'; - echo '
'; - - echo '
'; - foreach ($resourceTransactions as $transaction) { - if ($session->get('playerId') != $transaction->rPlayer) { - $transactionManager->render($transaction, $ressourceCurrentRate, $S_CTM2, $ob_compPlat); - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -$commanderCurrentRate = $transactionManager->getLastCompletedTransaction(Transaction::TYP_COMMANDER)->currentRate; - -$commanderTransactions = $transactionManager->getProposedTransactions(Transaction::TYP_COMMANDER); - -echo '
'; - echo '
'; - echo 'commandants'; - echo '

Commandants

'; - echo 'cours actuel | 1:' . Format::numberFormat($commanderCurrentRate, 3) . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'trier par'; - echo 'experience'; - echo 'crédit'; - echo 'temps'; - echo 'cours'; - echo '
'; - - echo '
'; - foreach ($commanderTransactions as $transaction) { - if ($session->get('playerId') != $transaction->rPlayer) { - $transactionManager->render($transaction, $commanderCurrentRate, $S_CTM2, $ob_compPlat); - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -$shipCurrentRate = $transactionManager->getLastCompletedTransaction(Transaction::TYP_SHIP)->currentRate; - -$shipTransactions = $transactionManager->getProposedTransactions(Transaction::TYP_SHIP); - -echo '
'; - echo '
'; - echo 'vaisseaux'; - echo '

Vaisseaux

'; - echo 'cours actuel | 1:' . Format::numberFormat($shipCurrentRate, 3) . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'trier par'; - echo 'pev'; - echo 'crédit'; - echo 'temps'; - echo 'cours'; - echo '
'; - - echo '
'; - foreach ($shipTransactions as $transaction) { - if ($session->get('playerId') != $transaction->rPlayer) { - $transactionManager->render($transaction, $shipCurrentRate, $S_CTM2, $ob_compPlat); - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -$commercialTradeManager->changeSession($S_CTM1); diff --git a/system/views/components/bases/ob/complat/resource.php b/system/views/components/bases/ob/complat/resource.php deleted file mode 100755 index c66cf4f1a..000000000 --- a/system/views/components/bases/ob/complat/resource.php +++ /dev/null @@ -1,109 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Envoi de ressources

'; - echo 'à une autre base'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - # base - echo '

'; - echo ''; - echo '

'; - - # form de vente - echo '
'; - echo '
'; - echo 'Ressources'; - echo '' . Format::numberFormat($ob_compPlat->resourcesStorage) . ''; - echo 'ressources'; - echo '
'; - - echo '
'; - echo ''; - echo ''; - echo 'ressources'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'Vaisseaux'; - echo ''; - echo 'vaisseaux transports'; - echo '
'; - - echo '
'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo 'vaisseaux'; - echo '

Envoi de vaisseaux

'; - echo 'à une autre base'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

'; - echo ''; - echo '

'; - - foreach ($ob_compPlat->shipStorage as $key => $ship) { - if ($ship > 0) { - echo '
'; - echo '
'; - echo ''; - echo '' . ShipResource::getInfo($key, 'codeName') . ''; - echo '' . ShipResource::getInfo($key, 'name') . ''; - echo '' . ShipResource::getInfo($key, 'pev') . ' pev'; - echo '
'; - echo '
'; - - echo ''; - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/complat/sell.php b/system/views/components/bases/ob/complat/sell.php deleted file mode 100755 index 74d17a510..000000000 --- a/system/views/components/bases/ob/complat/sell.php +++ /dev/null @@ -1,192 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -# resources current rate -$resourcesCurrentRate = $transactionManager->getLastCompletedTransaction(Transaction::TYP_RESOURCE)->currentRate; - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Ressources

'; - echo 'mettre en vente'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Ressources'; - echo '' . Format::numberFormat($ob_compPlat->resourcesStorage) . ''; - echo 'ressources'; - echo '
'; - - echo '
'; - echo ''; - echo ''; - echo 'ressources'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'Prix minimum'; - echo ''; - echo 'crédits'; - echo '
'; - - echo '
'; - echo ''; - echo ''; - echo 'crédits'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'Vaisseaux'; - echo ''; - echo 'vaisseaux transports'; - echo '
'; - - echo '
'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -$commanders = $commanderManager->getBaseCommanders($ob_compPlat->getId(), [Commander::INSCHOOL, Commander::RESERVE], ['c.experience' => 'DESC']); -$nbCommanders = count($commanders); -# commander current rate -$commanderCurrentRate = $transactionManager->getLastCompletedTransaction(Transaction::TYP_COMMANDER)->currentRate; - -echo '
'; - echo '
'; - echo 'commandants'; - echo '

Commandants

'; - echo 'mettre en vente'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $nbCommanders; ++$i) { - $commander = $commanders[$i]; - echo '
'; - echo '
'; - echo ''; - echo '' . CommanderResources::getInfo($commander->getLevel(), 'grade') . ' ' . $commander->getName() . ''; - echo '' . Format::numberFormat($commander->getExperience()) . ' points d\'expérience'; - echo '
'; - echo '
'; - - echo ''; - } - - if ($nbCommanders === 0) { - echo '

Vous n\'avez aucun commandant dans l\'école.

'; - } - echo '
'; - echo '
'; -echo '
'; - -# ship current rate -$shipCurrentRate = $transactionManager->getLastCompletedTransaction(Transaction::TYP_SHIP)->currentRate; - -echo '
'; - echo '
'; - echo 'vaisseaux'; - echo '

Vaisseaux

'; - echo 'mettre en vente'; - echo '
'; - echo '
'; - echo '
'; - foreach ($ob_compPlat->shipStorage as $key => $ship) { - if ($ship > 0) { - echo '
'; - echo '
'; - echo ''; - echo '' . ShipResource::getInfo($key, 'codeName') . ''; - echo '' . ShipResource::getInfo($key, 'name') . ''; - echo '' . ShipResource::getInfo($key, 'pev') . ' pev'; - echo '
'; - echo '
'; - - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/complat/transaction.php b/system/views/components/bases/ob/complat/transaction.php deleted file mode 100755 index 87b871d85..000000000 --- a/system/views/components/bases/ob/complat/transaction.php +++ /dev/null @@ -1,69 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commercialShippingManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialShippingManager::class); -$commercialTradeManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); - -$S_CTM1 = $commercialTradeManager->getCurrentSession(); - -$usedShips = 0; -foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->rBase == $ob_compPlat->getId()) { - $usedShips += $commercialShipping->shipQuantity; - } -} - -$commercialTradeManager->newSession(); -$commercialTradeManager->load(array()); - -echo '
'; - echo '
'; - echo '

Transactions

'; - echo '
'; - echo '
'; - echo '
'; - $maxShip = $orbitalBaseHelper->getBuildingInfo(6, 'level', $ob_compPlat->getLevelCommercialPlateforme(), 'nbCommercialShip'); - - echo '
'; - echo 'Vaisseaux de commerce disponibles'; - echo ''; - echo Format::numberFormat($maxShip - $usedShips); - echo ' vaisseaux / '; - echo Format::numberFormat($maxShip); - echo ' vaisseaux'; - echo ''; - - echo ''; - echo ''; - echo '
'; - - echo '

Convoi en route

'; - foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->statement == CommercialShipping::ST_GOING && $commercialShipping->rBase == $ob_compPlat->getId()) { - $commercialShippingManager->render($commercialShipping); - } - } - echo '
'; - echo '

Retour de convoi

'; - foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->statement == CommercialShipping::ST_MOVING_BACK && $commercialShipping->rBase == $ob_compPlat->getId()) { - $commercialShippingManager->render($commercialShipping); - } - } - echo '
'; - echo '

Convoi à quai

'; - foreach ($ob_compPlat->commercialShippings as $commercialShipping) { - if ($commercialShipping->statement == CommercialShipping::ST_WAITING && $commercialShipping->rBase == $ob_compPlat->getId()) { - $commercialShippingManager->render($commercialShipping); - } - } - echo '
'; - echo '
'; -echo '
'; - -$commercialTradeManager->changeSession($S_CTM1); diff --git a/system/views/components/bases/ob/dock1.php b/system/views/components/bases/ob/dock1.php deleted file mode 100755 index b280647de..000000000 --- a/system/views/components/bases/ob/dock1.php +++ /dev/null @@ -1,289 +0,0 @@ -getContainer(); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$shipHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\ShipHelper::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$shipResourceRefund = $this->getContainer()->getParameter('athena.building.ship_queue_resource_refund'); -$mediaPath = $container->getParameter('media'); -$appRoot = $container->getParameter('app_root'); - -$shipQueues = $shipQueueManager->getByBaseAndDockType($ob_dock1->rPlace, 1); -$nbShipQueues = count($shipQueues); -$s = array('', '', '', '', '', ''); -$technology = $technologyManager->getPlayerTechnology($session->get('playerId')); - -#place dans le hangar -$totalSpace = $orbitalBaseHelper->getBuildingInfo(2, 'level', $ob_dock1->getLevelDock1(), 'storageSpace'); -$storage = $ob_dock1->getShipStorage(); -$inStorage = 0; - -for ($m = 0; $m < 6; $m++) { - $inStorage += ShipResource::getInfo($m, 'pev') * $storage[$m]; -} - -$inQueue = 0; - -foreach ($shipQueues as $shipQueue) { - $inQueue += ShipResource::getInfo($shipQueue->shipNumber, 'pev') * $shipQueue->quantity; -} - -for ($i = 0; $i < 6; $i++) { - # calcul du nombre de vaisseaux max - $maxShipResource = floor($ob_dock1->getResourcesStorage() / ShipResource::getInfo($i, 'resourcePrice')); - $maxShipResource = ($maxShipResource < 100) ? $maxShipResource : 99; - $maxShipPev = $totalSpace - $inStorage - $inQueue; - $maxShipPev = floor($maxShipPev /ShipResource::getInfo($i, 'pev')); - $maxShipPev = ($maxShipPev < 100) ? $maxShipPev : 99; - $maxShip = ($maxShipResource <= $maxShipPev) ? $maxShipResource : $maxShipPev; - - # display - $name = ShipResource::getInfo($i, 'codeName'); - $picto = $mediaPath . 'ship/picto/' . ShipResource::getInfo($i, 'imageLink') . '.png'; - $disability = 'disable'; - - if (($answer = $shipHelper->haveRights($i, 'techno', $technology)) !== TRUE) { - # technology - $but = ''; - $but .= $answer; - $but .= ''; - } elseif (!$shipHelper->haveRights($i, 'shipTree', $ob_dock1)) { - # ship tree - $but = ''; - $but .= 'il vous faut augmenter votre chantier alpha au niveau ' . $shipHelper->dockLevelNeededFor($i); - $but .= ''; - } else { - # usable ship - $disability = ''; - - if (!$shipHelper->haveRights($i, 'queue', $ob_dock1, $nbShipQueues)) { - # queue size - $but = ''; - $but .= 'file de construction pleine
'; - $but .= '' . Format::numberFormat(ShipResource::getInfo($i, 'resourcePrice')) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time'), 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } elseif ($maxShip < 1) { - $but = ''; - $but .= 'pas assez de ressources / hangar plein
'; - $but .= '' . Format::numberFormat(ShipResource::getInfo($i, 'resourcePrice')) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time'), 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } else { - $but = ''; - - $but .= ''; - $but .= 'construire ' . $maxShip . ' ' . ShipResource::getInfo($i, 'codeName') . ' pour
'; - $but .= '' . Format::numberFormat(ShipResource::getInfo($i, 'resourcePrice') * $maxShip) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time') * $maxShip, 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } - } - - $s[$i] .= '
'; - $s[$i] .= '
'; - $s[$i] .= ''; - $s[$i] .= '' . $name . ''; - $s[$i] .= '' . ShipResource::getInfo($i, 'name') . ''; - $s[$i] .= '+'; - $s[$i] .= '
'; - $s[$i] .= '
'; - $s[$i] .= $but; - $s[$i] .= '
'; -} - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(2, 'frenchName') . '

'; - echo 'niveau ' . $ob_dock1->getLevelDock1() . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'bonus de vitesse de production'; - echo ''; - echo Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::DOCK1_SPEED)) . ' %'; - echo ''; - echo '
'; - - echo '

File de construction

'; - echo '
'; - $realSizeQueue = 0; - - for ($i = 0; $i < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK1, 'level', $ob_dock1->levelDock1, 'nbQueues'); $i++) { - if (isset($shipQueues[$i])) { - $queue = $shipQueues[$i]; - $realSizeQueue++; - $totalTimeShips = $queue->quantity * ShipResource::getInfo($queue->shipNumber, 'time'); - $remainingTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo $realSizeQueue > 1 - ? '
' - : '
'; - echo '×'; - echo ''; - echo '' . $queue->quantity . ' ' . ShipResource::getInfo($queue->shipNumber, 'codeName') . Format::addPlural($queue->quantity) . ''; - - if ($realSizeQueue > 1) { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo '
'; - echo ''; - echo 'Emplacement libre'; - echo ''; - echo '
'; - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Chasseurs

'; - echo '
'; - echo '
'; - echo '
'; - echo $s[0]; - echo $s[1]; - echo $s[2]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Corvettes

'; - echo '
'; - echo '
'; - echo '
'; - echo $s[3]; - echo $s[4]; - echo $s[5]; - echo '
'; - echo '
'; -echo '
'; - - -echo '
'; - echo '
'; - echo '

Hangars

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'intégrer à vos armées'; - echo '?'; - echo '
'; - - echo ''; - - echo '
'; - for ($i = 0; $i < 6; $i++) { - echo '
'; - echo '
'; - echo ''; - echo '' . $storage[$i] . ' ' . ShipResource::getInfo($i, 'codeName') . Format::addPlural($storage[$i]) . ''; - echo '' . ($storage[$i] * ShipResource::getInfo($i, 'pev')) . ' PEV'; - echo '
'; - echo '
'; - - if ($storage[$i] !== 0) { - echo ''; - } - } - echo '
'; - echo 'capacité du hangar'; - echo ''; - echo $inStorage . ' '; - echo ' / '; - echo $totalSpace . ' '; - echo ''; - $percent = Format::numberFormat($inStorage / $totalSpace * 100); - $percent = $percent > 100 ? 100 : $percent; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(2, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/dock2.php b/system/views/components/bases/ob/dock2.php deleted file mode 100755 index 1e47f879b..000000000 --- a/system/views/components/bases/ob/dock2.php +++ /dev/null @@ -1,306 +0,0 @@ -getContainer(); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$shipHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\ShipHelper::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$shipResourceRefund = $this->getContainer()->getParameter('athena.building.ship_queue_resource_refund'); -$mediaPath = $container->getParameter('media'); -$appRoot = $container->getParameter('app_root'); - -$shipQueues = $shipQueueManager->getByBaseAndDockType($ob_dock2->rPlace, 2); -$nbShipQueues = count($shipQueues); -$s = array('', '', '', '', '', ''); -$technology = $technologyManager->getPlayerTechnology($session->get('playerId')); - -#place dans le hangar -$totalSpace = $orbitalBaseHelper->getBuildingInfo(3, 'level', $ob_dock2->getLevelDock2(), 'storageSpace'); -$storage = $ob_dock2->getShipStorage(); -$inStorage = 0; - -for ($m = 6; $m < ShipResource::SHIP_QUANTITY; $m++) { - $inStorage += ShipResource::getInfo($m, 'pev') * $storage[$m]; -} - -$inQueue = 0; - -foreach ($shipQueues as $shipQueue) { - $inQueue += ShipResource::getInfo($shipQueue->shipNumber, 'pev') * $shipQueue->quantity; -} - -for ($i = 6; $i < ShipResource::SHIP_QUANTITY; $i++) { - # calcul du nombre de vaisseaux max - $maxShipResource = floor($ob_dock2->getResourcesStorage() / ShipResource::getInfo($i, 'resourcePrice')); - if ($session->get('playerInfo')->get('color') == ColorResource::EMPIRE) { - if ($i == ShipResource::CERBERE || $i == ShipResource::PHENIX) { - # bonus if the player is from the Empire - $resourcePrice = ShipResource::getInfo($i, 'resourcePrice'); - $resourcePrice -= round($resourcePrice * ColorResource::BONUS_EMPIRE_CRUISER / 100); - $maxShipResource = floor($ob_dock2->getResourcesStorage() / $resourcePrice); - } - } - $maxShipResource = ($maxShipResource < 100) ? $maxShipResource : 99; - $maxShipPev = $totalSpace - $inStorage - $inQueue; - $maxShipPev = floor($maxShipPev /ShipResource::getInfo($i, 'pev')); - $maxShipPev = ($maxShipPev < 100) ? $maxShipPev : 99; - $maxShip = ($maxShipResource <= $maxShipPev) ? $maxShipResource : $maxShipPev; - - # display - $name = ShipResource::getInfo($i, 'codeName'); - $picto = $mediaPath . 'ship/picto/' . ShipResource::getInfo($i, 'imageLink') . '.png'; - $disability = 'disable'; - - if (($answer = $shipHelper->haveRights($i, 'techno', $technology)) !== TRUE) { - # technology - $but = ''; - $but .= $answer; - $but .= ''; - } elseif (!$shipHelper->haveRights($i, 'shipTree', $ob_dock2)) { - # ship tree - $but = ''; - $but .= 'il vous faut augmenter votre chantier de ligne au niveau ' . $shipHelper->dockLevelNeededFor($i); - $but .= ''; - } else { - # usable ship - $disability = ''; - - $resourcePrice = ShipResource::getInfo($i, 'resourcePrice'); - if ($i == ShipResource::CERBERE || $i == ShipResource::PHENIX) { - if ($session->get('playerInfo')->get('color') == ColorResource::EMPIRE) { - # bonus if the player is from the Empire - $resourcePrice -= round($resourcePrice * ColorResource::BONUS_EMPIRE_CRUISER / 100); - } - } - if (!$shipHelper->haveRights($i, 'queue', $ob_dock2, $nbShipQueues)) { - # queue size - $but = ''; - $but .= 'file de construction pleine
'; - $but .= '' . Format::numberFormat($resourcePrice) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time'), 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } elseif ($maxShip < 1) { - $but = ''; - $but .= 'pas assez de ressources / hangar plein
'; - $but .= '' . Format::numberFormat($resourcePrice) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time'), 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } else { - $but = ''; - $but .= 'construire 1 ' . ShipResource::getInfo($i, 'codeName') . ' pour
'; - $but .= '' . Format::numberFormat($resourcePrice) . ' '; - $but .= 'ressources et '; - $but .= '' . Chronos::secondToFormat(ShipResource::getInfo($i, 'time'), 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } - } - - $s[$i - 6] .= '
'; - $s[$i - 6] .= '
'; - $s[$i - 6] .= ''; - $s[$i - 6] .= '' . $name . ''; - $s[$i - 6] .= '' . ShipResource::getInfo($i, 'name') . ''; - $s[$i - 6] .= '+'; - $s[$i - 6] .= '
'; - $s[$i - 6] .= '
'; - $s[$i - 6] .= $but; - $s[$i - 6] .= '
'; -} - -# display -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(3, 'frenchName') . '

'; - echo 'niveau ' . $ob_dock2->getLevelDock2() . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'bonus de vitesse de production'; - echo ''; - echo Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::DOCK2_SPEED)) . ' %'; - echo ''; - echo '
'; - - echo '

File de construction

'; - echo '
'; - $realSizeQueue = 0; - - for ($i = 0; $i < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::DOCK2, 'level', $ob_dock2->levelDock2, 'nbQueues'); $i++) { - if (isset($shipQueues[$i])) { - $queue = $shipQueues[$i]; - $realSizeQueue++; - $totalTimeShips = ShipResource::getInfo($queue->shipNumber, 'time'); - $remainingTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo $realSizeQueue > 1 - ? '
' - : '
'; - echo '×'; - echo ''; - echo '' . ShipResource::getInfo($queue->shipNumber, 'codeName') . ''; - - if ($realSizeQueue > 1) { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo '
'; - echo ''; - echo 'Emplacement libre'; - echo ''; - echo '
'; - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Frégates

'; - echo '
'; - echo '
'; - echo '
'; - echo $s[0]; - echo $s[1]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Destroyers / Croiseurs

'; - echo '
'; - echo '
'; - echo '
'; - echo $s[2]; - echo $s[3]; - echo $s[4]; - echo $s[5]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Hangars

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'intégrer à vos armées'; - echo '?'; - echo '
'; - - echo ''; - - echo '
'; - for ($i = 6; $i < ShipResource::SHIP_QUANTITY; $i++) { - echo '
'; - echo '
'; - echo ''; - if ($i == ShipResource::PHENIX) { - echo '' . $storage[$i] . ' ' . ShipResource::getInfo($i, 'codeName') . ''; - } else { - echo '' . $storage[$i] . ' ' . ShipResource::getInfo($i, 'codeName') . Format::addPlural($storage[$i]) . ''; - } - echo '' . ($storage[$i] * ShipResource::getInfo($i, 'pev')) . ' PEV'; - echo '
'; - echo '
'; - - if ($storage[$i] !== 0) { - echo ''; - } - } - echo '
'; - echo 'capacité du hangar'; - echo ''; - echo $inStorage . ' '; - echo ' / '; - echo $totalSpace . ' '; - echo ''; - $percent = Format::numberFormat($inStorage / $totalSpace * 100); - $percent = $percent > 100 ? 100 : $percent; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(3, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/generator.php b/system/views/components/bases/ob/generator.php deleted file mode 100755 index 1c855e728..000000000 --- a/system/views/components/bases/ob/generator.php +++ /dev/null @@ -1,217 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$buildingResourceRefund = $this->getContainer()->getParameter('athena.building.building_queue_resource_refund'); -$sessionToken = $session->get('token'); -$mediaPath = $container->getParameter('media'); - -$q = ''; -$b = array('', '', '', '', '', '', '', '', '', ''); -$realSizeQueue = 0; - -for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; $i++) { - $name = ucfirst($orbitalBaseHelper->getBuildingInfo($i, 'name')); - $aLevel[$i] = intval(call_user_func(array($ob_generator, 'getLevel' . $name))); - $rLevel[$i] = intval(call_user_func(array($ob_generator, 'getReal' . $name . 'Level'))); -} - -# queue - -$q .= '
'; -$nextTime = 0; -$nextTotalTime = 0; - -for ($i = 0; $i < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::GENERATOR, 'level', $ob_generator->levelGenerator, 'nbQueues'); $i++) { - if (isset($ob_generator->buildingQueues[$i])) { - $qe = $ob_generator->buildingQueues[$i]; - - $realSizeQueue++; - $nextTime = Utils::interval(Utils::now(), $qe->dEnd, 's'); - $nextTotalTime += $orbitalBaseHelper->getBuildingInfo($qe->buildingNumber, 'level', $qe->targetLevel, 'time'); - - $q .= '
'; - $q .= '×'; - $q .= ''; - $q .= ''; - $q .= $orbitalBaseHelper->getBuildingInfo($qe->buildingNumber, 'frenchName'); - $q .= ' niv. ' . $qe->targetLevel . ''; - $q .= ''; - if ($realSizeQueue > 1) { - $q .= '' . Chronos::secondToFormat($nextTime, 'lite') . ''; - $q .= ''; - } else { - $q .= '' . Chronos::secondToFormat($nextTime, 'lite') . ''; - - $q .= ''; - $q .= ''; - $q .=''; - $q .= ''; - } - $q .= '
'; - } else { - $q .= '
'; - $q .= ''; - $q .= 'Emplacement libre'; - $q .= ''; - $q .= '
'; - } -} -$q .= '
'; - - -# building -$technology = $technologyManager->getPlayerTechnology($session->get('playerId')); -for ($i = 0; $i < OrbitalBaseResource::BUILDING_QUANTITY; $i++) { - $level = $aLevel[$i]; - $nextLevel = $rLevel[$i] + 1; - - $b[$i] .= ($rLevel[$i]) ? '
' : '
'; - $b[$i] .= '
'; - $b[$i] .= ''; - $b[$i] .= '' . $orbitalBaseHelper->getBuildingInfo($i, 'frenchName') . ''; - if ($level != 0) { - $b[$i] .= '' . $level . ''; - } - $b[$i] .= '+'; - $b[$i] .= '
'; - - $price = Format::numberFormat($orbitalBaseHelper->getBuildingInfo($i, 'level', ($nextLevel), 'resourcePrice'), -1) . ' ressources'; - $time = Chronos::secondToFormat($orbitalBaseHelper->getBuildingInfo($i, 'level', ($nextLevel), 'time'), 'lite') . ' relèves'; - - if (($answer = $orbitalBaseHelper->haveRights($i, $nextLevel, 'buildingTree', $ob_generator)) !== TRUE) { - if ($answer == 'niveau maximum atteint') { - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'construction impossible
'; - $b[$i] .= 'niveau maximum atteint'; - $b[$i] .= '
'; - $b[$i] .= '
'; - } else { - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'construction impossible
'; - $b[$i] .= $price . ' | ' . $time; - $b[$i] .= '
'; - $b[$i] .= '
'; - } - } elseif (($answer = $orbitalBaseHelper->haveRights($i, $nextLevel, 'techno', $technology)) !== TRUE) { - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'construction impossible
'; - $b[$i] .= $price . ' | ' . $time; - $b[$i] .= '
'; - $b[$i] .= '
'; - } elseif (!$orbitalBaseHelper->haveRights(OrbitalBaseResource::GENERATOR, $aLevel[OrbitalBaseResource::GENERATOR], 'queue', $realSizeQueue)) { - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'construction impossible
'; - $b[$i] .= $price . ' | ' . $time; - $b[$i] .= '
'; - $b[$i] .= '
'; - } elseif (!$orbitalBaseHelper->haveRights($i, $nextLevel, 'resource', $ob_generator->getResourcesStorage())) { - $missingResource = $orbitalBaseHelper->getBuildingInfo($i, 'level', ($nextLevel), 'resourcePrice') - $ob_generator->getResourcesStorage(); - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'construction impossible
'; - $b[$i] .= $price . ' | ' . $time; - $b[$i] .= '
'; - $b[$i] .= '
'; - } else { - $b[$i] .= ''; - $b[$i] .= ''; - $b[$i] .= 'augmenter vers le niveau ' . $nextLevel . '
'; - $b[$i] .= $price . ' | ' . $time; - $b[$i] .= '
'; - $b[$i] .= '
'; - } - $b[$i] .= '
'; -} - -# display -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(0, 'frenchName') . '

'; - echo 'niveau ' . $ob_generator->getLevelGenerator() . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'bonus de vitesse de construction'; - echo ''; - echo Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::GENERATOR_SPEED)) . ' %'; - echo ''; - echo '
'; - - echo '

File de construction

'; - echo $q; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Bâtiments neutres

'; - echo $b[0]; - echo $b[5]; - echo $b[7]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Bâtiments commerciaux

'; - echo $b[1]; - echo $b[6]; - echo $b[9]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Bâtiments militaires

'; - echo $b[2]; - echo $b[8]; - echo $b[3]; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(0, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/leavebase.php b/system/views/components/bases/ob/leavebase.php deleted file mode 100755 index 2f6b3b747..000000000 --- a/system/views/components/bases/ob/leavebase.php +++ /dev/null @@ -1,50 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -$onMission = FALSE; -foreach ($commanders_obSituation as $commander) { - if (in_array($commander->statement, [Commander::MOVING])) { - $onMission = TRUE; - } -} - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Abandonner cette planète

'; - - echo '

Pour abandonner une planète, aucun de vos commandants ne doit être en mission. De plus, vous devez posséder cette planète depuis plus de ' . OrbitalBase::COOL_DOWN . ' relèves.

'; - echo '

Une planète abandonnée peut être conquise par n\'importe qui. Les commandants en orbite autour de celle-ci continuent à la défendre. Les vaisseaux dans le hangar sont conservés. Cependant, les routes commerciales ainsi que les offres de ventes sont supprimées. De plus, toutes les constructions programmées sont annulées.

'; - - echo '
'; - - if ($onMission) { - echo 'Action impossible'; - echo '

Certains de vos commandants sont en mission.

'; - } elseif (Utils::interval(Utils::now(), $ob_obSituation->dCreation, 'h') < OrbitalBase::COOL_DOWN) { - echo 'Action impossible'; - echo '

Vous possédez la planète depuis moins de ' . OrbitalBase::COOL_DOWN . ' relèves.

'; - $totalSec = OrbitalBase::COOL_DOWN * 60 * 60 - Utils::interval(Utils::now(), $ob_obSituation->dCreation, 's'); - echo '

Il reste ' . Chronos::secondToFormat($totalSec, $format = 'large') . ' avant que vous puissiez abandonner la planète.

'; - } else { - echo 'Abandonner la planète'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/recycling.php b/system/views/components/bases/ob/recycling.php deleted file mode 100755 index f1d19f428..000000000 --- a/system/views/components/bases/ob/recycling.php +++ /dev/null @@ -1,193 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::RECYCLING, 'frenchName') . '

'; - echo 'Niveau ' . $ob_recycling->getLevelRecycling() . ''; - echo '
'; - echo '
'; - echo '
'; - $totalRecyclers = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::RECYCLING, 'level', $ob_recycling->levelRecycling, 'nbRecyclers'); - $busyRecyclers = 0; - - foreach ($baseMissions as $mission) { - $busyRecyclers += $mission->recyclerQuantity; - $busyRecyclers += $mission->addToNextMission; - } - - $freeRecyclers = $totalRecyclers - $busyRecyclers; - - echo '
'; - echo 'recycleurs utilisés / totaux'; - echo '' . $busyRecyclers . ' / ' . $totalRecyclers . ''; - echo '
'; - - echo '
'; - echo 'recycleur' . Format::plural($freeRecyclers) . ' libre' . Format::plural($freeRecyclers) . ''; - echo '' . $freeRecyclers . ''; - echo '
'; - - echo '
'; - - echo '

capacité de transport d\'un recycleur

'; - echo '
'; - echo 'en ressources'; - echo '' . Format::number(RecyclingMission::RECYCLER_CAPACTIY) . ' ressources'; - echo '
'; - echo '
'; - echo 'en crédits'; - echo '' . Format::number(RecyclingMission::RECYCLER_CAPACTIY * 10) . ' crédits'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'missions actives'; - echo '' . $missionQuantity . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -foreach ($baseMissions as $mission) { - echo '
'; - echo '
'; - if ($i == 0) { - echo '

Mission' . Format::plural($missionQuantity) . ' en cours

'; - } - echo '
'; - echo '
'; - echo '
'; - # usefull vars - $missionID = md5($mission->id . $mission->recyclerQuantity); - $missionID = strtoupper(substr($missionID, 0, 3) . '-' . substr($missionID, 3, 6) . '-' . substr($missionID, 10, 2)); - - // @TODO Infamous patch - $percent = Utils::interval(Utils::now(), date("Y-m-d H:i:s", strtotime($mission->uRecycling) - $mission->cycleTime), 's') / $mission->cycleTime * 100; - $travelTime= ($mission->cycleTime - RecyclingMission::RECYCLING_TIME) / 2; - $beginRECY = Format::percent($travelTime, $mission->cycleTime); - $endRECY = Format::percent($travelTime + RecyclingMission::RECYCLING_TIME, $mission->cycleTime); - - echo '
'; - echo '
'; - echo ''; - echo 'Mission
' . $missionID . '
'; - echo '
'; - - echo '

La mission recycle la ' . Game::convertPlaceType($mission->typeOfPlace) . ' située aux coordonnées ' . Game::formatCoord($mission->xSystem, $mission->ySystem, $mission->position, $mission->sectorId) . '.

- Il reste ' . Format::number($mission->resources * $mission->coefResources / 100) . ' ressources, ' . Format::number($mission->resources * $mission->coefHistory / 100) . ' débris et ' . Format::number($mission->resources * $mission->population / 100) . ' gaz nobles.

'; - - echo '

Retour ' . Chronos::transform($mission->uRecycling) . '

'; - echo '

'; - echo ''; - echo ''; - echo ''; - echo '

'; - echo '
'; - - echo $mission->statement == RecyclingMission::ST_BEING_DELETED - ? '

Cette mission a été annulée, les recycleurs terminent la mission puis deviennent disponibles.

' - : '

Annuler la mission

'; - - echo '
    '; - echo '
  • '; - echo 'Recycleurs engagés dans la mission'; - if ($mission->addToNextMission == 0) { - echo '' . Format::number($mission->recyclerQuantity) . ''; - } else { - echo '' . Format::number($mission->recyclerQuantity) . ' + ' . Format::number($mission->addToNextMission) . ''; - } - - if ($mission->statement == RecyclingMission::ST_ACTIVE && $freeRecyclers > 0) { - echo '+'; - echo '

    '; - } - echo '
  • '; - echo '
  • '; - echo 'Soute totale de la mission'; - echo '' . Format::number($mission->recyclerQuantity * RecyclingMission::RECYCLER_CAPACTIY) . ' ressources'; - echo '
  • '; - echo '
  • '; - echo 'Durée du cycle'; - echo '' . Chronos::secondToFormat($mission->cycleTime, 'short') . ''; - echo '
  • '; - echo '
'; - - echo '

Dernières livraisons

'; - $nb = 0; - foreach ($missionsLogs as $log) { - if ($log->rRecycling == $mission->id) { - $wedge['ressource'] = $log->resources; - $wedge['crédit'] = $log->credits; - $wedge['pégase'] = $log->ship0; - $wedge['satyre'] = $log->ship1; - $wedge['chimère'] = $log->ship2; - $wedge['sirène'] = $log->ship3; - $wedge['dryade'] = $log->ship4; - $wedge['méduse'] = $log->ship5; - $wedge['griffon'] = $log->ship6; - $wedge['cyclope'] = $log->ship7; - $wedge['minotaure'] = $log->ship8; - $wedge['hydre'] = $log->ship9; - $wedge['cerbère'] = $log->ship10; - $wedge['phénix'] = $log->ship11; - $wedge = array_filter($wedge); - - echo '

'; - echo 'La mission a ramené '; - $n = 1; - foreach ($wedge as $type => $number) { - echo '' . Format::number($number) . ' ' . $type . Format::plural($number); - echo $n == count($wedge) - 1 - ? ' et ' : ', '; - $n++; - } - echo '' . Chronos::transform($log->dLog) . ''; - echo '

'; - - $nb++; - } - - if ($nb > 10) { - break; - } - } - echo '
'; - echo '
'; - echo '
'; -} - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::RECYCLING, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/refinery.php b/system/views/components/bases/ob/refinery.php deleted file mode 100755 index a1b0dc4f1..000000000 --- a/system/views/components/bases/ob/refinery.php +++ /dev/null @@ -1,100 +0,0 @@ -getContainer(); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'frenchName') . '

'; - echo 'Niveau ' . $ob_refinery->getLevelRefinery() . ''; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo 'production par relève'; - echo ''; - $production = Game::resourceProduction($orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'level', $ob_refinery->getLevelRefinery(), 'refiningCoefficient'), $ob_refinery->getPlanetResources()); - echo Format::numberFormat($production); - $refiningBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_REFINING); - - if ($refiningBonus > 0) { - echo '+' . Format::numberFormat(($production * $refiningBonus / 100)) . ''; - } - echo ' ressources'; - echo ''; - echo '
'; - - echo '
'; - - echo '
'; - echo 'coefficient ressource de la planète'; - echo '' . $ob_refinery->getPlanetResources() . ' %'; - echo '
'; - - echo '
'; - echo 'bonus technologique de production'; - echo '' . $refiningBonus . ' %'; - echo '
'; - - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Contrôle du raffinage

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Production par relève

'; - echo '
    '; - $level = $ob_refinery->getLevelRefinery(); - $from = ($level < 3) ? 1 : $level - 2; - $to = ($level > 35) ? 41 : $level + 5; - - for ($i = $from; $i < $to; $i++) { - echo ($i == $level) ? '
  • ' : '
  • '; - echo 'niveau ' . $i . ''; - echo ''; - $production = Game::resourceProduction($orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'level', $i, 'refiningCoefficient'), $ob_refinery->getPlanetResources()); - echo Format::numberFormat($production); - $refiningBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_REFINING); - - if ($refiningBonus > 0) { - echo '+' . Format::numberFormat(($production * $refiningBonus / 100)) . ''; - } - echo 'crédits'; - echo ''; - echo '
  • '; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::REFINERY, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/school.php b/system/views/components/bases/ob/school.php deleted file mode 100755 index 162952a1f..000000000 --- a/system/views/components/bases/ob/school.php +++ /dev/null @@ -1,184 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -$commanders = $commanderManager->getBaseCommanders($ob_school->getId(), [Commander::INSCHOOL], ['c.experience' => 'DESC']); - -# max commander -$maxCommanderInSchool = PlaceResource::get($ob_school->typeOfBase, 'school-size'); - -# gain en crédit -$invest = $ob_school->iSchool; -$invest += $invest * $session->get('playerBonus')->get(PlayerBonus::COMMANDER_INVEST) / 100; -$earnedExperience = $invest / Commander::COEFFSCHOOL; -$earnedExperience = round($earnedExperience); -$earnedExperience = ($earnedExperience < 0) - ? 0 : $earnedExperience; - -echo '
'; - echo '
'; - echo ''; - echo '

Ecole de Cmd.

'; - echo 'Formation des officiers'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'investissements alloués à l\'école'; - echo ''; - echo Format::numberFormat($ob_school->iSchool); - echo ' crédits'; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo $session->get('playerBonus')->get(PlayerBonus::COMMANDER_INVEST) == 0 - ? '
' - : '
'; - echo 'bonus de formation'; - echo ''; - echo $session->get('playerBonus')->get(PlayerBonus::COMMANDER_INVEST) . ' %'; - echo ''; - echo '
'; - - echo '
'; - - echo '
'; - echo '
'; - echo ''; - echo 'Former un nouvel officier'; - echo '
'; - echo ''; - if (count($commanders) >= $maxCommanderInSchool) { - echo ''; - echo ''; - echo 'trop d\'officiers dans l\'école
'; - echo Format::numberFormat(SchoolClassResource::getInfo(0, 'credit')) . ' crédits'; - echo '
'; - echo '
'; - } elseif (SchoolClassResource::getInfo(0, 'credit') > $session->get('playerInfo')->get('credit')) { - echo ''; - echo ''; - echo 'vous ne disposez pas d\'assez de crédit
'; - echo Format::numberFormat(SchoolClassResource::getInfo(0, 'credit')) . ' crédits'; - echo '
'; - echo '
'; - } else { - echo ''; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Salle de formation

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $maxCommanderInSchool; $i++) { - if (isset($commanders[$i])) { - $commander = $commanders[$i]; - $expToLvlUp = $commanderManager->experienceToLevelUp($commander); - echo '
'; - echo ''; - echo '' . CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->getName() . ''; - echo '' . Format::numberFormat($commander->getExperience()) . ' points d\'expérience'; - echo '~ ' . Format::number($earnedExperience) . 'xp/relève'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - } else { - echo '
'; - echo ''; - echo 'Emplacement libre'; - echo ''; - echo '
'; - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -$reserveCommanders = $commanderManager->getBaseCommanders($ob_school->getId(), ['c.statement' => Commander::RESERVE], ['c.experience' => 'DESC']); - -echo '
'; - echo '
'; - echo '

Mess des officiers

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - foreach ($reserveCommanders as $commander) { - $expToLvlUp = $commanderManager->experienceToLevelUp($commander); - echo '
'; - echo ''; - echo '' . CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->getName() . ''; - echo '' . Format::numberFormat($commander->getExperience()) . ' points d\'expérience'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - } - - echo '
'; - echo ''; - echo 'Emplacement libre'; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

L’Ecole de commandement est le centre de formation de vos officiers. Il suffit pour cela d’engager de jeunes recrues sans expérience et d’investir un peu d’argent dans l’école pour que de brillants stratèges issus de toute la galaxie viennent enseigner leur savoir aux jeunes commandants de votre école.

- Au fil du temps ils gagneront de l’expérience et des niveaux. En gradant, ils acquerront la capacité de diriger une escadrille supplémentaire, ce qui augmentera la taille maximale de la flotte qu’ils dirigeront. L’investissement dans l’école de commandement s’applique à tout les commandants en formation.

- Le nombre de place de formation est limité. Il est cepandant plus élevé sur les bases militaires et les capitales. Le mess des officiers permet de mettre vos officiers au repos.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/situation.php b/system/views/components/bases/ob/situation.php deleted file mode 100755 index 5bae2669d..000000000 --- a/system/views/components/bases/ob/situation.php +++ /dev/null @@ -1,114 +0,0 @@ -getContainer(); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Centrer sur la carte'; - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
'; - - echo 'I'; - echo 'II'; - - $lLine = 0; $rLine = 0; - $llp = PlaceResource::get($ob_obSituation->typeOfBase, 'l-line-position'); - $rlp = PlaceResource::get($ob_obSituation->typeOfBase, 'r-line-position'); - foreach ($commanders_obSituation as $commander) { - echo ''; - - if ($commander->line == 1) { - $lLine++; - } else { - $rLine++; - } - } - - for ($lLine; $lLine < PlaceResource::get($ob_obSituation->typeOfBase, 'l-line'); $lLine++) { - echo ''; - echo 'vide'; - echo ''; - echo 'Affecter
'; - echo 'un officier'; - echo '
'; - echo '
'; - } - - for ($rLine; $rLine < PlaceResource::get($ob_obSituation->typeOfBase, 'r-line'); $rLine++) { - echo ''; - echo 'vide'; - echo ''; - echo 'Affecter
'; - echo 'un officier'; - echo '
'; - echo '
'; - } - - echo '
'; - echo '
'; - echo PlaceResource::get($ob_obSituation->typeOfBase, 'name') . '
'; - echo '' . $ob_obSituation->getName() . '
'; - echo Format::numberFormat($ob_obSituation->getPoints()) . ' points'; - echo '
'; - echo '
'; - echo 'coordonnées
'; - echo '' . Game::formatCoord($ob_obSituation->getXSystem(), $ob_obSituation->getYSystem(), $ob_obSituation->getPosition(), $ob_obSituation->getSector()) . ''; - echo '
'; - echo 'planète'; - - $science = Game::getImprovementFromScientificCoef($ob_obSituation->getPlanetHistory()); - echo '
'; - echo '' . Format::numberFormat($ob_obSituation->getPlanetPopulation() * 1000000) . ' habitants
'; - echo '' . $ob_obSituation->getPlanetResources() . ' % coeff. ressource
'; - echo '' . $science . ' % de bonus scientifique'; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/spatioport.php b/system/views/components/bases/ob/spatioport.php deleted file mode 100755 index e10110b2f..000000000 --- a/system/views/components/bases/ob/spatioport.php +++ /dev/null @@ -1,401 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$componentPath = $container->getParameter('component'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$request = $this->getContainer()->get('app.request'); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); - -$nMaxCR = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $ob_spatioport->getLevelSpatioport(), 'nbRoutesMax'); -$nCRWaitingForOther = 0; $nCRWaitingForMe = 0; -$nCROperational = 0; $nCRInStandBy = 0; -$nCRInDock = 0; -$totalIncome = 0; - -$routes = array_merge( - $commercialRouteManager->getByBase($ob_spatioport->getId()), - $commercialRouteManager->getByDistantBase($ob_spatioport->getId()) -); - -if (count($routes) > 0) { - foreach ($routes as $route) { - if ($route->getStatement() == CommercialRoute::PROPOSED AND $route->getPlayerId1() == $session->get('playerId')) { - $nCRWaitingForOther++; - } elseif ($route->getStatement() == CommercialRoute::PROPOSED AND $route->getPlayerId1() != $session->get('playerId')) { - $nCRWaitingForMe++; - } elseif ($route->getStatement() == CommercialRoute::ACTIVE) { - $nCROperational++; - $totalIncome += $route->getIncome(); - } elseif ($route->getStatement() == CommercialRoute::STANDBY) { - $nCRInStandBy++; - } - } - $nCRInDock = $nCROperational + $nCRInStandBy + $nCRWaitingForOther; -} -$inGameFactions = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class)->getInGameFactions(); - -$factions = []; -foreach ($inGameFactions as $inGameFaction) { - $factions[] = $inGameFaction->id; -} - -# view -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'frenchName') . '

'; - echo 'Niveau ' . $ob_spatioport->getLevelSpatioport() . ''; - echo '
'; - echo '
'; - echo '
'; - $active = (!$request->query->has('mode') || $request->query->get('mode') == 'list') ? 'active' : ''; - echo ''; - echo ''; - echo 'Routes commerciales'; - echo 'Gérez vos routes commerciales'; - echo ''; - - $active = ($request->query->get('mode') == 'search') ? 'active' : ''; - echo ''; - echo ''; - echo 'Recherche'; - echo 'Trouvez des partenaires commerciaux'; - echo ''; - - echo '
'; - - echo '
'; - echo 'routes commerciales'; - echo '' . $nCRInDock . ' / ' . $nMaxCR . ''; - - echo ''; - echo ''; - echo '
'; - - echo '
'; - echo 'routes commerciales actives'; - echo '' . $nCROperational . ''; - echo '
'; - - echo '
'; - echo 'routes commerciales en attente'; - echo '' . $nCRWaitingForOther . ''; - echo '
'; - - echo '
'; - echo 'propositions commerciales'; - echo '' . $nCRWaitingForMe . ''; - echo '
'; - - if ($nCRInStandBy > 0) { - echo '
'; - echo 'routes commerciales bloquées'; - echo '' . $nCRInStandBy . ''; - echo '
'; - } - - echo '
'; - - echo '
'; - echo 'revenu total de cette base'; - echo ''; - echo Format::numberFormat($totalIncome); - if ($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) != 0) { - echo '+ ' . Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) * $totalIncome / 100) . ''; - } - echo ' '; - echo ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -if ($request->query->get('mode') === 'search') { - echo '
'; - echo '
'; - echo '

Recherche

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Chercher des partenaires commerciaux...

'; - foreach ($factions as $i) { - echo '

'; - } - - echo '

A une distance...

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - - if ($request->query->get('show') === 'result') { - $min = $request->request->has('min-dist') ? abs(intval($request->request->get('min-dist'))) : 75; - $max = $request->request->has('max-dist') ? abs(intval($request->request->get('max-dist'))) : 75; - - $checkedFactions = [0]; - foreach ($factions as $i) { - if ($request->request->has('faction-' . $i)) { - $checkedFactions[] = $i; - } - } - - $qr = $database->prepare('SELECT - pa.rColor AS playerColor, - pa.avatar AS playerAvatar, - pa.name AS playerName, - ob.name AS baseName, - ob.rPlace AS rPlace, - (FLOOR(SQRT(POW(? - s.xPosition, 2) + POW(? - s.yPosition, 2)))) AS distance - FROM orbitalBase AS ob - LEFT JOIN player AS pa - ON ob.rPlayer = pa.id - LEFT JOIN place AS p - ON ob.rPlace = p.id - LEFT JOIN system AS s - ON p.rSystem = s.id - LEFT JOIN sector AS se - ON s.rSector = se.id - WHERE - pa.id != ? - AND ob.levelSpatioport > 0 - AND (FLOOR(SQRT(POW(? - s.xPosition, 2) + POW(? - s.yPosition, 2)))) >= ? - AND (FLOOR(SQRT(POW(? - s.xPosition, 2) + POW(? - s.yPosition, 2)))) <= ? - AND pa.rColor in (' . implode(',', $checkedFactions) . ') - ORDER BY distance DESC - LIMIT 0, 40' - ); - $qr->execute([ - $ob_spatioport->xSystem, $ob_spatioport->ySystem, - $session->get('playerId'), - $ob_spatioport->xSystem, $ob_spatioport->ySystem, $min, - $ob_spatioport->xSystem, $ob_spatioport->ySystem, $max - ]); - $aw = $qr->fetchAll(); - - echo '
'; - echo '
'; - echo '

Résultats

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($aw as $base) { - echo ''; - echo ''; - echo '' . $base['playerName'] . ''; - echo '' . $base['baseName'] . ''; - echo '' . $base['distance'] . ' al.'; - echo ''; - } - - if (count($aw) == 0) { - echo '

Aucun partenaire commercial trouvé selon les critères de recherche fournis.

'; - } - echo '
'; - echo '
'; - echo '
'; - } -} else { - $j = 0; - foreach ($routes as $rc) { - if ($rc->getStatement() == CommercialRoute::PROPOSED && $rc->getPlayerId2() == $session->get('playerId')) { - $base1 = '
'; - $base1 .= '' . $ob_spatioport->getName() . ''; - $base1 .= '' . PlaceResource::get($rc->baseType1, 'name') . ' ' . $rc->getBaseName1() . '
'; - $base1 .= 'de ' . $rc->getPlayerName1() . '
'; - $base1 .= Format::numberFormat($rc->getPopulation1()) . ' millions de population'; - $base1 .= '
'; - - $base2 = '
'; - $base2 .= '' . $ob_spatioport->getName() . ''; - $base2 .= '' . PlaceResource::get($rc->baseType2, 'name') . ' ' . $rc->getBaseName2() . '
'; - $base2 .= 'de ' . $rc->getPlayerName2() . '
'; - $base2 .= Format::numberFormat($rc->getPopulation2()) . ' millions de population'; - $base2 .= '
'; - - echo '
'; - echo '
'; - echo ($j == 0) ? '

Propositions

' : ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - if ($rc->getPrice() > $session->get('playerInfo')->get('credit')) { - echo 'pas assez de crédits pour accepter'; - } elseif ($nCRInDock >= $nMaxCR) { - echo 'pas d\'emplacement libre pour accepter'; - } else { - $price = $rc->getPrice(); - if ($session->get('playerInfo')->get('color') == ColorResource::NEGORA) { - # bonus if the player is from Negore - $price -= round($price * ColorResource::BONUS_NEGORA_ROUTE / 100); - } - echo 'accepter pour ' . Format::numberFormat($price) . ' crédits'; - } - echo 'x'; - echo '
'; - - echo '
'; - echo 'Etat de la route commerciale'; - echo ''; - echo 'En attente'; - echo ''; - echo '
'; - - echo '
'; - echo ($rc->getPlayerId1() == $session->get('playerId')) ? $base2 : $base1; - - echo '
    '; - echo '
  • Distance ' . $rc->getDistance() . ' al.
  • '; - echo '
  • Prix '; - echo Format::numberFormat($rc->getPrice()); - if ($session->get('playerInfo')->get('color') == ColorResource::NEGORA) { - # bonus if the player is from Negore - echo '- ' . Format::numberFormat(round(ColorResource::BONUS_NEGORA_ROUTE * $rc->getPrice() / 100)) . ''; - } - echo ' '; - echo '
  • '; - echo '
  • Estimation du revenu par relève'; - echo Format::numberFormat($rc->getIncome()); - if ($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) != 0) { - echo '+ ' . Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) * $rc->getIncome() / 100) . ''; - } - echo ' '; - echo '
  • '; - echo '
  • Population touchée ' . Format::numberFormat($rc->getPopulation1() + $rc->getPopulation2()) . ' millions
  • '; - - if (in_array($rc->getStatement(), array(CommercialRoute::ACTIVE, CommercialRoute::STANDBY))) { - echo '
  • En service depuis
    ' . Chronos::transform($rc->dCreation) . '
  • '; - } - echo '
'; - - echo ($rc->getPlayerId1() == $session->get('playerId')) ? $base1 : $base2; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - $j++; - } - } - - $j = 0; - foreach ($routes as $rc) { - if ($rc->getStatement() != CommercialRoute::PROPOSED || $rc->getPlayerId2() != $session->get('playerId')) { - $base1 = '
'; - $base1 .= ''; - $base1 .= '' . PlaceResource::get($rc->baseType1, 'name') . ' ' . $rc->getBaseName1() . '
'; - $base1 .= 'de ' . $rc->getPlayerName1() . '
'; - $base1 .= Format::numberFormat($rc->getPopulation1()) . ' millions de population'; - $base1 .= '
'; - - $base2 = '
'; - $base2 .= ''; - $base2 .= '' . PlaceResource::get($rc->baseType2, 'name') . ' ' . $rc->getBaseName2() . '
'; - $base2 .= 'de ' . $rc->getPlayerName2() . '
'; - $base2 .= Format::numberFormat($rc->getPopulation2()) . ' millions de population'; - $base2 .= '
'; - - echo '
'; - echo '
'; - echo ($j == 0) ? '

Routes commerciales

' : ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - if ($rc->getStatement() == CommercialRoute::PROPOSED) { - echo 'annuler la proposition commerciale'; - } else { - echo 'démanteler la route commerciale'; - } - echo '
'; - - echo '
'; - echo 'Etat de la route commerciale'; - echo ''; - switch ($rc->getStatement()) { - case CommercialRoute::PROPOSED: echo 'En attente'; break; - case CommercialRoute::ACTIVE: echo 'En activité'; break; - case CommercialRoute::STANDBY: echo 'Gelée'; break; - default: break; - } - echo ''; - echo '
'; - - echo '
'; - echo ($rc->getPlayerId1() == $session->get('playerId')) ? $base2 : $base1; - - echo '
    '; - echo '
  • Distance ' . $rc->getDistance() . ' al.
  • '; - echo '
  • Revenu par relève ' . (($rc->getStatement() != CommercialRoute::ACTIVE) ? '[non effectif]' : '') . ''; - echo Format::numberFormat($rc->getIncome()); - if ($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) != 0) { - echo '+ ' . Format::numberFormat($session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME) * $rc->getIncome() / 100) . ''; - } - echo ' '; - echo '
  • '; - echo '
  • Population touchée ' . Format::numberFormat($rc->getPopulation1() + $rc->getPopulation2()) . ' millions
  • '; - - if (in_array($rc->getStatement(), array(CommercialRoute::ACTIVE, CommercialRoute::STANDBY))) { - echo '
  • En service depuis
    ' . Chronos::transform($rc->dCreation) . '
  • '; - } - echo '
'; - - echo ($rc->getPlayerId1() == $session->get('playerId')) ? $base1 : $base2; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - $j++; - } - } -} - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; - -if (count($routes) == 0) { - include $componentPath . 'default.php'; -} - -$entityManager->clear(CommercialRoute::class); diff --git a/system/views/components/bases/ob/storage.php b/system/views/components/bases/ob/storage.php deleted file mode 100755 index 8c95030e8..000000000 --- a/system/views/components/bases/ob/storage.php +++ /dev/null @@ -1,95 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'frenchName') . '

'; - echo 'Niveau ' . $ob_storage->getLevelStorage() . ''; - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo 'ressources en stock'; - echo ''; - echo Format::numberFormat($ob_storage->getResourcesStorage()); - echo ' ressources'; - echo ''; - $storageSpace = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $ob_storage->getLevelStorage(), 'storageSpace'); - $storageBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_STORAGE); - if ($storageBonus > 0) { - $storageSpace += ($storageSpace * $storageBonus / 100); - } - $percent = Format::numberFormat($ob_storage->getResourcesStorage() / $storageSpace * 100); - echo ''; - echo ''; - echo ''; - echo '
'; - - echo '
'; - - echo '
'; - echo 'bonus technologique de stockage'; - echo '' . $storageBonus . ' %'; - echo '
'; - - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Gestion des stocks

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Stockage maximal de la raffinerie

'; - echo '
    '; - $level = $ob_storage->getLevelStorage(); - $from = ($level < 3) ? 1 : $level - 2; - $to = ($level > 35) ? 41 : $level + 5; - for ($i = $from; $i < $to; $i++) { - echo ($i == $level) ? '
  • ' : '
  • '; - echo 'niveau ' . $i . ''; - echo ''; - echo Format::numberFormat($orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $i, 'storageSpace')); - $storageSpace = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $i, 'storageSpace'); - $storageBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_STORAGE); - if ($storageBonus > 0) { - echo '+' . Format::numberFormat(($storageSpace * $storageBonus / 100)) . ''; - } - echo 'ressources'; - echo ''; - echo '
  • '; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/bases/ob/technosphere.php b/system/views/components/bases/ob/technosphere.php deleted file mode 100755 index d50cb52b7..000000000 --- a/system/views/components/bases/ob/technosphere.php +++ /dev/null @@ -1,397 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$technologyQueueManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyQueueManager::class); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$researchManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\ResearchManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$technologyResourceRefund = $this->getContainer()->getParameter('promethee.technology_queue.resource_refund'); - -$technology = $technologyManager->getPlayerTechnology($session->get('playerId')); - -# session avec les technos de cette base -$baseTechnologyQueues = $technologyQueueManager->getPlaceQueues($ob_tech->getId()); -$playerTechnologyQueues = $technologyQueueManager->getPlayerQueues($session->get('playerId')); - -$S_RSM1 = $researchManager->getCurrentSession(); -$researchManager->newSession(); -$researchManager->load(array('rPlayer' => $session->get('playerId'))); - -# déblocage -$c1 = array(); $c2 = array(); $c3 = array(); -$c4 = array(); $c5 = array(); -$c6 = array(); $c7 = array(); - -echo '
'; - echo '
'; - echo ''; - echo '

' . $orbitalBaseHelper->getBuildingInfo(5, 'frenchName') . '

'; - echo 'niveau ' . $ob_tech->getLevelTechnosphere() . ''; - echo '
'; - echo '
'; - echo '
'; - - $coef = $ob_tech->planetHistory; - $coefBonus = Game::getImprovementFromScientificCoef($coef); - $techBonus = $session->get('playerBonus')->get(PlayerBonus::TECHNOSPHERE_SPEED); - $factionBonus = 0; - if ($session->get('playerInfo')->get('color') == ColorResource::APHERA) { - # bonus if the player is from Aphera - $factionBonus += ColorResource::BONUS_APHERA_TECHNO; - } - $totalBonus = $coefBonus + $techBonus + $factionBonus; - - echo '
'; - echo 'bonus total de vitesse de recherche'; - echo ''; - echo $totalBonus . ' %'; - echo ''; - echo '
'; - - echo '

File de construction

'; - echo '
'; - $realSizeQueue = 0; - $remainingTotalTime = 0; - $totalTimeTechno = 0; - - for ($i = 0; $i < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'level', $ob_tech->levelTechnosphere, 'nbQueues'); $i++) { - if (isset($baseTechnologyQueues[$i])) { - $queue = $baseTechnologyQueues[$i]; - $realSizeQueue++; - $totalTimeTechno += $technologyHelper->getInfo($queue->technology, 'time', $queue->targetLevel); - $remainingTotalTime = Utils::interval(Utils::now(), $queue->dEnd, 's'); - - echo '
'; - echo '×'; - echo ''; - echo '' . $technologyHelper->getInfo($queue->technology, 'name'); - if (!$technologyHelper->isAnUnblockingTechnology($queue->technology)) { - echo ' niv. ' . $queue->targetLevel . ''; - } - echo ''; - - if ($realSizeQueue > 1) { - echo '' . Chronos::secondToFormat($remainingTotalTime, 'lite') . ''; - echo ''; - } else { - echo '' . Chronos::secondToFormat($remainingTotalTime, 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
'; - } else { - echo '
'; - echo ''; - echo 'Emplacement libre'; - echo ''; - echo '
'; - } - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -for ($i = 0; $i < Technology::QUANTITY; $i++) { - if (!$technologyHelper->isATechnologyNotDisplayed($i)) { - $but = ''; $sup = ''; $ctn = array(); $ctn[0] = ''; $ctn[1] = TRUE; - $disability = 'disable'; $closed = ''; - $inQueue = FALSE; - $inALocalQueue = FALSE; - - foreach ($playerTechnologyQueues as $playerQueue) { - if ($playerQueue->getTechnology() === $i) { - $inQueue = TRUE; - foreach ($baseTechnologyQueues as $baseQueue) { - if ($baseQueue->getTechnology() === $i) { - $inALocalQueue = TRUE; - break; - } - } - break; - } - } - - $title = $technologyHelper->getInfo($i, 'name'); - if (!$technologyHelper->isAnUnblockingTechnology($i) && $technology->getTechnology($i) != 0) { - $title .= ' [' . $technology->getTechnology($i) . ']'; - } - - if ($technologyHelper->isAnUnblockingTechnology($i)) { - $answer = $technologyHelper->haveRights($i, 'research', 1, $researchManager->getResearchList($researchManager->get())); - } else { - $answer = $technologyHelper->haveRights($i, 'research', $technology->getTechnology($i) + 1, $researchManager->getResearchList($researchManager->get())); - } - - if (!$technologyHelper->haveRights($i, 'technosphereLevel', $ob_tech->getLevelTechnosphere())) { - # building - $but .= ''; - $but .= 'il vous faut augmenter votre technosphère au niveau ' . $technologyHelper->getInfo($i, 'requiredTechnosphere'); - $but .= ''; - } elseif ($answer !== TRUE) { - # recherche - $but .= ''; - $but .= 'nécessite '; - for ($j = 0; $j < $answer->size(); $j++) { - $but .= $answer->get($j)->get('techno') . ' ' . $answer->get($j)->get('level'); - if ($j < ($answer->size() - 1)) { $but .= ', '; } - } - $but .= ''; - } else { - # usable techno - $disability = ''; - - # compute time to build with the bonuses - $timeToBuild = $technologyHelper->getInfo($i, 'time', $technology->getTechnology($i) + 1); - $timeToBuild -= round($timeToBuild * $totalBonus / 100); - # warning : $totalBonus est défini plus haut (ne pas inverser les blocs de code !) - - if ($inQueue) { - $but .= ''; - $but .= 'technologie en cours
de recherche'; - if (!$technologyHelper->isAnUnblockingTechnology($i)) { - $but .= ' vers le niveau ' . ($technology->getTechnology($i) + 1); - } - if (!$inALocalQueue) { - $but .= ' sur une autre de vos bases'; - } - $but .= '
'; - - } elseif ($technologyHelper->isAnUnblockingTechnology($i) && $technology->getTechnology($i)) { - $ctn[1] = FALSE; - $sup .= 'développement terminé'; - $closed = 'closed'; - } elseif (!$technologyHelper->isAnUnblockingTechnology($i) && !$technologyHelper->haveRights($i, 'maxLevel', $technology->getTechnology($i) + 1)) { - # max level reached - $but .= ''; - $but .= 'niveau maximum atteint
'; - $but .= '
'; - } elseif (!$technologyHelper->haveRights($i, 'queue', $ob_tech, count($baseTechnologyQueues))) { - # queue size - $but .= ''; - $but .= 'file de recherche pleine
'; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'resource', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'ressources, '; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'credit', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'crédits et '; - $but .= '' . Chronos::secondToFormat($timeToBuild, 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } elseif (!$technologyHelper->haveRights($i, 'credit', $technology->getTechnology($i) + 1, $session->get('playerInfo')->get('credit'))) { - # crédit - $but .= ''; - $but .= 'pas assez de crédits
'; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'resource', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'ressources, '; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'credit', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'crédits et '; - $but .= '' . Chronos::secondToFormat($timeToBuild, 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } elseif (!$technologyHelper->haveRights($i, 'resource', $technology->getTechnology($i) + 1, $ob_tech->getResourcesStorage())) { - # ressources - $but .= ''; - $but .= 'pas assez de ressources
'; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'resource', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'ressources, '; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'credit', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'crédits et '; - $but .= '' . Chronos::secondToFormat($timeToBuild, 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } else { - $but .= ''; - if ($technologyHelper->isAnUnblockingTechnology($i)) { - $but .= 'rechercher la technologie
'; - } else { - $but .= 'rechercher le niveau ' . ($technology->getTechnology($i) + 1) . '
'; - } - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'resource', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'ressources | '; - $but .= '' . Format::numberFormat($technologyHelper->getInfo($i, 'credit', $technology->getTechnology($i) + 1)) . ' '; - $but .= 'crédits | '; - $but .= '' . Chronos::secondToFormat($timeToBuild, 'lite') . ' '; - $but .= 'relèves'; - $but .= '
'; - } - } - - $ctn[0] .= '
'; - $ctn[0] .= '
'; - $ctn[0] .= '+'; - $ctn[0] .= ''; - $ctn[0] .= '' . $title . ''; - $ctn[0] .= $sup; - $ctn[0] .= '
'; - $ctn[0] .= '
'; - $ctn[0] .= $but; - $ctn[0] .= '
'; - - switch ($technologyHelper->getInfo($i, 'column')) { - case 1 : $c1[] = $ctn; break; - case 2 : $c2[] = $ctn; break; - case 3 : $c3[] = $ctn; break; - case 4 : $c4[] = $ctn; break; - case 5 : $c5[] = $ctn; break; - case 6 : $c6[] = $ctn; break; - case 7 : $c7[] = $ctn; break; - default: $c1[] = $ctn; break; - } - } -} - -# financial -if (in_array($ob_tech->typeOfBase, array(OrbitalBase::TYP_COMMERCIAL, OrbitalBase::TYP_CAPITAL))) { - echo '
'; - echo '
'; - echo '

Améliorations industrielles I

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c4 as $key => $value) { - echo $value[0]; - } - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '

Améliorations industrielles II

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c5 as $key => $value) { - echo $value[0]; - } - echo '
'; - echo '
'; - echo '
'; -} - -# military -if (in_array($ob_tech->typeOfBase, array(OrbitalBase::TYP_MILITARY, OrbitalBase::TYP_CAPITAL))) { - echo '
'; - echo '
'; - echo '

Améliorations militaires I

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c6 as $key => $value) { - echo $value[0]; - } - echo '
'; - echo '
'; - echo '
'; - - echo '
'; - echo '
'; - echo '

Améliorations militaires II

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c7 as $key => $value) { - echo $value[0]; - } - echo '
'; - echo '
'; - echo '
'; -} - -# unblock -echo '
'; - echo '
'; - echo '

Nouvelles technologies

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c1 as $key => $value) { - if ($value[1] == TRUE) { - echo $value[0]; - } - } - foreach ($c1 as $key => $value) { - if ($value[1] == FALSE) { - echo $value[0]; - } - } - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Châssis I

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c2 as $key => $value) { - if ($value[1] == TRUE) { - echo $value[0]; - } - } - foreach ($c2 as $key => $value) { - if ($value[1] == FALSE) { - echo $value[0]; - } - } - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

Châssis II

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($c3 as $key => $value) { - if ($value[1] == TRUE) { - echo $value[0]; - } - } - foreach ($c3 as $key => $value) { - if ($value[1] == FALSE) { - echo $value[0]; - } - } - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::TECHNOSPHERE, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; - -$researchManager->changeSession($S_RSM1); diff --git a/system/views/components/conversation/create.php b/system/views/components/conversation/create.php deleted file mode 100644 index 00e4aaea3..000000000 --- a/system/views/components/conversation/create.php +++ /dev/null @@ -1,46 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$request = $this->getContainer()->get('app.request'); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); - -echo '
'; - echo '
'; - echo '

Démarrer une nouvelle conversation

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

'; - echo 'Destinataire'; - echo '

'; - $name = ''; - if (!empty($playerId = $request->query->get('sendto'))) { - if (($player = $playerManager->get($playerId))) { - $name = $player->name; - } - } - - echo '

'; - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo 'Message'; - echo '

'; - echo '

'; - echo ''; - echo $parser->getToolbar(); - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/conversation/list.php b/system/views/components/conversation/list.php deleted file mode 100644 index cbe9e5961..000000000 --- a/system/views/components/conversation/list.php +++ /dev/null @@ -1,103 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -if (!$conversation_listmode) { - echo '
'; - echo '

Messagerie

'; - echo '
'; - echo '
'; - echo ''; -} - -for ($i = 0; $i < $conversationManager->size(); $i++) { - $conv = $conversationManager->get($i); - - $convAvatar = NULL; - $convName = array(); - $convColor = 0; - $counter = 0; - $restPlayer = 0; - - $ownLastView = NULL; - - if (count($conv->players) > 2) { - $convAvatar = 'multi'; - $convColor = 0; - } else { - $convAvatar = $conv->players[0]->playerAvatar; - $convColor = $conv->players[0]->playerColor; - } - - foreach ($conv->players as $player) { - if ($session->get('playerId') !== $player->rPlayer) { - if ($counter < 5) { - $convName[] = '' . $player->playerName . ''; - } else { - $restPlayer++; - } - - if ($conv->type == Conversation::TY_SYSTEM) { - if ($player->convPlayerStatement == ConversationUser::US_ADMIN) { - $convAvatar = $player->playerAvatar; - $convColor = $player->playerColor; - } - } - - $counter++; - } else { - $ownLastView = $player->dLastView; - } - } - - if ($restPlayer !== 0) { - $convName[count($convName) - 1] .= ' et ' . $restPlayer . '+'; - } - - echo ''; - echo ''; - echo ''; - echo '' . $conv->messages . ''; - if (strtotime($ownLastView) < strtotime($conv->dLastMessage)) { - echo ''; - } - echo ''; - - echo ''; - echo Chronos::transform($conv->dLastMessage) . '
'; - echo empty($conv->title) - ? implode(', ', $convName) - : '' . $conv->title . ''; - echo '
'; - echo '
'; -} - -if ($conversationManager->size() == Conversation::CONVERSATION_BY_PAGE) { - echo ''; - echo 'Afficher plus de conversations'; - echo ''; -} - -if (!$conversation_listmode) { - echo $display == ConversationUser::CS_ARCHIVED - ? 'Retour aux conversations' - : 'Voir les conversations archivées'; - echo '
'; - echo '
'; - echo '
'; -} diff --git a/system/views/components/conversation/manage.php b/system/views/components/conversation/manage.php deleted file mode 100644 index ac243cdbb..000000000 --- a/system/views/components/conversation/manage.php +++ /dev/null @@ -1,82 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - if ($currentUser->convPlayerStatement == ConversationUser::US_ADMIN && $conversationManager->get()->type != Conversation::TY_SYSTEM) { - echo '

Ajouter un utilisateur

'; - - echo '
'; - echo '

'; - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo '
'; - - echo '

Modifier le titre

'; - - echo '
'; - echo '

'; - echo ''; - echo '

'; - - echo '

'; - echo '
'; - } - - if ($conversationManager->get()->type != Conversation::TY_SYSTEM) { - echo '

' . $conversationUserManager->size() . ' participants

'; - - for ($i = 0; $i < $conversationUserManager->size(); $i++) { - $player = $conversationUserManager->get($i); - $status = ColorResource::getInfo($player->playerColor, 'status'); - $status = $status[$player->playerStatus - 1]; - - echo '
'; - echo ''; - echo '' . $player->playerName . ''; - echo ''; - - - echo '' . $status . ''; - echo '' . $player->playerName . ''; - - echo $player->convPlayerStatement == ConversationUser::US_ADMIN - ? 'administrateur' - : NULL; - echo '
'; - } - } - - echo '

Action

'; - - echo ''; - echo $currentUser->convStatement == ConversationUser::CS_DISPLAY - ? 'Archiver la conversation' - : 'Désarchiver la conversation'; - echo ''; - - if ($conversationUserManager->size() > 2 && $conversationManager->get()->type != Conversation::TY_SYSTEM) { - echo ''; - echo 'Quitter la conversation'; - echo ''; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/conversation/messages.php b/system/views/components/conversation/messages.php deleted file mode 100644 index 846c5819e..000000000 --- a/system/views/components/conversation/messages.php +++ /dev/null @@ -1,86 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -if (!$message_listmode) { - echo '
'; - echo '
'; - if (!empty($conversationManager->get()->title)) { - echo '

' . $conversationManager->get()->title . '

'; - } - echo '
'; - echo '
'; - echo '
'; - if ($conversationManager->get()->type != Conversation::TY_SYSTEM) { - echo '
'; - echo '' . $session->get('playerInfo')->get('pseudo') . ''; - echo '
'; - echo '
'; - echo '
'; - echo $parser->getToolbar(); - echo ''; - echo '
'; - - echo ''; - echo '
'; - echo '
'; - echo '
'; - } -} - -for ($i = 0; $i < $conversationMessageManager->size(); $i++) { - $m = $conversationMessageManager->get($i); - - $status = ColorResource::getInfo($m->playerColor, 'status'); - $status = $status[$m->playerStatus - 1]; - - if ($i != 0 AND $conversationMessageManager->get($i - 1)->dCreation > $dPlayerLastMessage AND $m->dCreation <= $dPlayerLastMessage) { - echo '
'; - echo 'Dernier message lu'; - echo '
'; - } - - if ($m->type == ConversationMessage::TY_STD) { - echo '
'; - echo '' . $m->playerName . ''; - echo '
'; - echo '

'; - echo $m->content; - echo '

'; - echo ''; - echo '
'; - echo '
'; - } else { - echo '
'; - echo $m->content; - echo '
'; - } -} - -if ($conversationMessageManager->size() == ConversationMessage::MESSAGE_BY_PAGE) { - echo ''; - echo 'Afficher les messages précédents'; - echo ''; -} - -if (!$message_listmode) { - echo '
'; - echo '
'; - echo '
'; -} diff --git a/system/views/components/conversation/new.php b/system/views/components/conversation/new.php deleted file mode 100644 index b919a99d3..000000000 --- a/system/views/components/conversation/new.php +++ /dev/null @@ -1,6 +0,0 @@ -
-
-
-
-
-
\ No newline at end of file diff --git a/system/views/components/default.php b/system/views/components/default.php deleted file mode 100755 index 4b2b3e710..000000000 --- a/system/views/components/default.php +++ /dev/null @@ -1,6 +0,0 @@ -
-
-
-
-
-
\ No newline at end of file diff --git a/system/views/components/embassy/diary/bases.php b/system/views/components/embassy/diary/bases.php deleted file mode 100644 index 3a2353f22..000000000 --- a/system/views/components/embassy/diary/bases.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); - -echo '
'; - echo '
'; - echo '

Liste des bases

'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < count($ob_diaryBases); $i++) { - $ob = $ob_diaryBases[$i]; - echo '
'; - echo '' . $ob->getName() . ''; - echo 'secteur ' . $ob->getSector() . ''; - - echo ''; - echo ''; - echo ''; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/diary/rolplay.php b/system/views/components/embassy/diary/rolplay.php deleted file mode 100644 index 8592661f1..000000000 --- a/system/views/components/embassy/diary/rolplay.php +++ /dev/null @@ -1,60 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '

Journal

'; - echo '
'; - echo '
'; - echo '
'; - $status = ColorResource::getInfo($player_diaryRoplay->getRColor(), 'status'); - - echo '
'; - echo '' . $status[$player_diaryRoplay->getStatus() - 1] . ' de ' . ColorResource::getInfo($player_diaryRoplay->getRColor(), 'popularName') . ''; - echo '' . $player_diaryRoplay->getName() . ''; - echo '
'; - - echo '
'; - echo 'Niveau'; - echo '' . $player_diaryRoplay->getLevel() . ''; - echo '
'; - - echo '
'; - echo 'expérience'; - echo '' . Format::numberFormat($player_diaryRoplay->getExperience()) . ''; - echo '
'; - - echo ''; - - echo '
'; - echo ''; - - echo '

'; - echo ''; - echo '

'; - echo '

'; - echo ''; - echo '

'; - echo '
'; - - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/diary/search.php b/system/views/components/embassy/diary/search.php deleted file mode 100644 index 8729cdb5f..000000000 --- a/system/views/components/embassy/diary/search.php +++ /dev/null @@ -1,48 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$status = ColorResource::getInfo($player_selected->rColor, 'status'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo 'avatar de ' . $player_selected->name . ''; - - echo '
'; - echo '

' . $player_selected->name . '

'; - echo '

' . $status[$player_selected->status - 1] . ' de ' . ColorResource::getInfo($player_selected->rColor, 'popularName') . '

'; - echo '

niveau ' . $player_selected->level . '

'; - - if ($player_selected->id != $session->get('playerId')) { - echo '
'; - echo '

Envoyer un message

'; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/faction/flag.php b/system/views/components/embassy/faction/flag.php deleted file mode 100644 index d59dc9125..000000000 --- a/system/views/components/embassy/faction/flag.php +++ /dev/null @@ -1,22 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '

A propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '' . ColorResource::getInfo($faction->id, 'officialName') . ''; - echo '' . ColorResource::getInfo($faction->id, 'devise') . ''; - echo '
'; - - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/faction/government.php b/system/views/components/embassy/faction/government.php deleted file mode 100644 index f2ccaf4d3..000000000 --- a/system/views/components/embassy/faction/government.php +++ /dev/null @@ -1,49 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$status = ColorResource::getInfo($faction->id, 'status'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Gouvernement

'; - foreach ($governmentMembers as $minister) { - echo '
'; - echo ''; - echo '' .  $minister->name . ''; - echo ''; - echo '' . $status[ $minister->status - 1] . ''; - echo '' . $minister->name . ''; - echo '
'; - } - - if (count($governmentMembers) === 0) { - echo '

Aucun gouvernement formé

'; - } - - echo '

Informations

'; - echo '
'; - echo 'Nombre de points de la faction'; - echo '' . Format::number($faction->points) . ''; - echo '
'; - echo '
'; - echo 'Richesse de la faction'; - echo '' . Format::number($faction->credits) . ' crédits'; - echo '
'; - echo '
'; - echo 'Nombre de points des territoires contrôlés'; - echo '' . Format::number($faction->sectors) . ''; - echo '
'; - echo '
'; - echo 'Nombre de joueurs actifs'; - echo '' . Format::number($faction->activePlayers) . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/faction/infos.php b/system/views/components/embassy/faction/infos.php deleted file mode 100644 index d25b4103e..000000000 --- a/system/views/components/embassy/faction/infos.php +++ /dev/null @@ -1,12 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $colorManager->getParsedDescription($faction) . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/embassy/faction/nav.php b/system/views/components/embassy/faction/nav.php deleted file mode 100644 index e2a5723d1..000000000 --- a/system/views/components/embassy/faction/nav.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/components/faction/data/diplomacy/about.php b/system/views/components/faction/data/diplomacy/about.php deleted file mode 100644 index 2521b4b6d..000000000 --- a/system/views/components/faction/data/diplomacy/about.php +++ /dev/null @@ -1,39 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$eraseColor = isset($eraseColor) - ? $eraseColor - : $session->get('playerInfo')->get('color'); - -$statements = [ - Color::ENEMY => 'En guerre', - Color::ALLY => 'Allié', - Color::PEACE => 'Pacte de non-agression', - Color::NEUTRAL => 'Neutre' -]; - -echo '
'; - echo '
'; - echo '

A propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

En guerre

'; - echo '

Lors de la déclaration de guerre, toutes les routes commerciales entre les deux factions belligérantes sont coupées. Durant toute la durée de la guerre, aucun lien commercial ne sera possible.

'; - - echo '

Allié

'; - echo '

Une alliance totale est un fort lien entre deux factions. Ce traité n\'est pas contraignant mais les attaques le violant sont notifiées dans les registres de guerre de la faction.

'; - echo '

Un seul pacte de ce type peut être rédigé par faction.

'; - - echo '

Pacte de non-agression

'; - echo '

Un pacte de non-agression n\'est pas contraignant mais garantit que les membres des deux factions ne s\'attaquent pas entre eux. Les attaques violant ce pacte sont notifiées dans les registres de guerre de la faction.

'; - echo '

Ce type de pacte est limité à deux par faction.

'; - - echo '

Neutre

'; - echo '

Une faction n\'a ni affinités ni problèmes avec une autre faction neutre. De petits problèmes territoriaux peuvent exister sans remettre en cause ce statut.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/diplomacy/main.php b/system/views/components/faction/data/diplomacy/main.php deleted file mode 100644 index c4326c29b..000000000 --- a/system/views/components/faction/data/diplomacy/main.php +++ /dev/null @@ -1,52 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$eraseColor = isset($eraseColor) - ? $eraseColor - : $session->get('playerInfo')->get('color'); - -$statements = [ - Color::ENEMY => 'En guerre', - Color::ALLY => 'Allié', - Color::PEACE => 'Pacte de non-agression', - Color::NEUTRAL => 'Neutre' -]; - -echo '
'; - echo '
'; - echo '

Statut diplomatique

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($statements as $statement => $label) { - echo '

' . $label . '

'; - - $nb = 0; - foreach ($faction->colorLink as $color => $st) { - if ($color != 0 && $color != $eraseColor && $st == $statement) { - echo '
'; - echo ''; - echo ''; - echo ''; - echo '' . ColorResource::getInfo($color, 'government') . ''; - echo '' . ColorResource::getInfo($color, 'officialName') . ''; - echo '
'; - - $nb++; - } - } - - if ($nb == 0) { - echo '

Aucune faction

'; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/financial/donations.php b/system/views/components/faction/data/financial/donations.php deleted file mode 100755 index 8a3629bee..000000000 --- a/system/views/components/faction/data/financial/donations.php +++ /dev/null @@ -1,83 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); - -# load -$S_CRT_1 = $creditTransactionManager->getCurrentSession(); -$creditTransactionManager->newSession(); -$creditTransactionManager->load( - ['rReceiver' => $faction->id, 'type' => CreditTransaction::TYP_FACTION], - ['dTransaction', 'DESC'], - [0, 20] -); - -echo '
'; - echo '
'; - echo '

Donations

'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $creditTransactionManager->size(); $i++) { - $transaction = $creditTransactionManager->get($i); - - echo '
'; - echo ''; - echo '' . $transaction->senderName . ''; - echo ''; - - $status = ColorResource::getInfo($transaction->senderColor, 'status'); - echo '' . $status[$transaction->senderStatus - 1] . ''; - echo '' . $transaction->senderName . ''; - echo '' . Format::number($transaction->amount) . ($transaction->amount == 1 ? ' crédit' : ' crédits') . ''; - echo '
'; - } - - if ($creditTransactionManager->size() == 0) { - echo '

Aucune donation n\'a encore été faite.

'; - } - echo '
'; - echo '
'; -echo '
'; - -$S_CRT_1 = $creditTransactionManager->getCurrentSession(); -$creditTransactionManager->newSession(); -$creditTransactionManager->load( - ['rSender' => $faction->id, 'type' => CreditTransaction::TYP_F_TO_P], - ['dTransaction', 'DESC'], - [0, 20] -); - -echo '
'; - echo '
'; - echo '

Transferts à des membres

'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $creditTransactionManager->size(); $i++) { - $transaction = $creditTransactionManager->get($i); - - echo '
'; - echo ''; - echo '' . $transaction->receiverName . ''; - echo ''; - - $status = ColorResource::getInfo($transaction->receiverColor, 'status'); - echo '' . $status[$transaction->receiverStatus - 1] . ''; - echo '' . $transaction->receiverName . ''; - echo '' . Format::number($transaction->amount) . ($transaction->amount == 1 ? ' crédit' : ' crédits') . ''; - echo '
'; - } - - if ($creditTransactionManager->size() == 0) { - echo '

Aucune transaction n\'a encore été effectuée.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/financial/sectors-tax.php b/system/views/components/faction/data/financial/sectors-tax.php deleted file mode 100755 index cd0d2be2b..000000000 --- a/system/views/components/faction/data/financial/sectors-tax.php +++ /dev/null @@ -1,24 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class)->getFactionSectors($faction->id); - -echo '
'; - echo '
'; - echo '

Imposition

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Impôts courants

'; - - echo '
    '; - foreach ($sectors as $sector) { - echo '
  • '; - echo '' . $sector->id . ''; - echo '' . $sector->name . ''; - echo '' . $sector->tax . ' %'; - echo '
  • '; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/financial/stats.php b/system/views/components/faction/data/financial/stats.php deleted file mode 100755 index 0416377aa..000000000 --- a/system/views/components/faction/data/financial/stats.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); - -$S_FRM1 = $factionRankingManager->getCurrentSession(); -$factionRankingManager->newSession(); -$factionRankingManager->loadByRequest( - 'WHERE rFaction = ? ORDER BY rRanking DESC LIMIT 0, 20', - array($faction->id) -); - -$creditBase = 0; -for ($i = 0; $i < $factionRankingManager->size(); $i++) { - if ($creditBase < $factionRankingManager->get($i)->wealth) { - $creditBase = $factionRankingManager->get($i)->wealth; - } -} -$creditBase += $creditBase * 12 / 100; - -echo '
'; - echo '
'; - echo '

Finance

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Richesse

'; - - echo '
'; - echo 'Fortune de la faction'; - echo ''; - echo Format::number($faction->credits); - echo ' crédits'; - echo ''; - echo '
'; - - - echo '
'; - echo '
Evolution de la puissance commerciale de la faction sur les 20 derniers segments.
'; - echo '
'; - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - echo ''; - echo ''; - echo Format::number($factionRankingManager->get($i)->wealth, -2); - echo ''; - echo ''; - } - echo '
'; - echo '
'; - - echo '
'; - echo '
'; -echo '
'; - -$factionRankingManager->changeSession($S_FRM1); diff --git a/system/views/components/faction/data/law/list.php b/system/views/components/faction/data/law/list.php deleted file mode 100755 index 8dedea60c..000000000 --- a/system/views/components/faction/data/law/list.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -# status list -$status = ColorResource::getInfo($faction->id, 'status'); - -echo '
'; - echo '
'; - if ($listlaw_status == Player::CHIEF) { - echo '

Lois

'; - } - echo '
'; - echo '
'; - echo '
'; - echo '

' . $status[$listlaw_status - 1] . '

'; - for ($i = 1; $i < LawResources::size() + 1; $i++) { - if (LawResources::getInfo($i, 'department') == $listlaw_status) { - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($i, 'name') . (!LawResources::getInfo($i, 'isImplemented') ? ' [?]' : NULL) . ''; - echo '
'; - - echo '

' . LawResources::getInfo($i, 'shortDescription') . '

'; - echo '
'; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/nav.php b/system/views/components/faction/data/nav.php deleted file mode 100755 index 85890ba29..000000000 --- a/system/views/components/faction/data/nav.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); - -echo ''; diff --git a/system/views/components/faction/data/tactical/map.php b/system/views/components/faction/data/tactical/map.php deleted file mode 100755 index 1e520f7d9..000000000 --- a/system/views/components/faction/data/tactical/map.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); - -$sectors = $sectorManager->getAll(); -$rate = 750 / $galaxyConfiguration->galaxy['size']; - -echo '
'; - echo '
'; - echo '

Carte tactique

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - foreach ($sectors as $sector) { - echo ''; - } - echo ''; - echo '
'; - foreach ($sectors as $sector) { - $i = $sector->getId() - 1; - echo ''; - echo $sector->getId(); - echo ''; - } - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/tactical/sectors.php b/system/views/components/faction/data/tactical/sectors.php deleted file mode 100755 index fed920d07..000000000 --- a/system/views/components/faction/data/tactical/sectors.php +++ /dev/null @@ -1,87 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$redisManager = $this->getContainer()->get('redis_manager'); - -$sectors = $sectorManager->getAll(); -$factions = $colorManager->getAll(); - -echo '
'; - echo '
'; - echo '

Territoires

'; - echo '
'; - echo '
'; - echo '
'; - foreach (['Secteurs conquis', 'Secteurs en balance'] as $type) { - $displayed = 0; - - echo '

' . $type . '

'; - echo '
    '; - - foreach ($sectors as $key => $sector) { - $treated = false; - $percents = ['color' . $faction->getId() => 0]; - $scores = unserialize($redisManager->getConnection()->get('sector:' . $sector->getId())); - - if (!isset($scores[$faction->getId()]) && $sector->getRColor() !== $faction->getId()) { - unset($sectors[$key]); - continue; - } - if ($type === 'Secteurs conquis' && $sector->getRColor() !== $faction->getId()) { - continue; - } - - foreach ($factions as $f) { - if ($f->id === 0 || !isset($scores[$f->id])) { - continue; - } - $percents['color' . $f->id] = round(Format::percent($scores[$f->id], array_sum($scores), false)); - } - - arsort($percents); - - if ($sector->getRColor() == $faction->getId() || ($scores[$faction->getId()] > 0)) { - echo '
  • '; - echo '' . $sector->getId() . ''; - echo '' . - $sector->getName() . - ' (' . $sector->getPoints() . ' point' . Format::plural($sector->getPoints()). ')' . - ''; - foreach ($scores as $factionId => $points) { - if ($points === 0) { - continue; - } - echo '' . - ColorResource::getInfo($factionId, 'popularName') . ' : ' . $points . ' point' . Format::plural($points) . ' de contrôle' . - ''; - } - echo '' . $percents['color' . $faction->getId()] . ' %'; - echo ''; - foreach ($percents as $color => $percent) { - echo ''; - } - echo ''; - echo '
  • '; - - $displayed++; - $treated = true; - } - // If the sector has been displayed, we remove it for the second loop round - if ($treated === true) { - unset($sectors[$key]); - } - } - - echo '
'; - - if ($displayed == 0) { - echo '

Aucun secteur

'; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/tactical/targets.php b/system/views/components/faction/data/tactical/targets.php deleted file mode 100755 index 7cbe067d9..000000000 --- a/system/views/components/faction/data/tactical/targets.php +++ /dev/null @@ -1,39 +0,0 @@ -getContainer()->getParameter('points_to_win'); -$mode = isset($targetMode) ? $targetMode : FALSE; - -echo '
'; - echo '
'; - echo '

Objectifs de victoires

'; - echo '
'; - echo '
'; - echo '
'; - if ($faction->isWinner == Color::NOT_WIN) { - - echo '

Conditions de victoire

'; - echo '

Pour gagner, votre faction doit collecter ' . Format::number($pointsToWin) . ' points au classement total de faction.

'; - echo '

Vous avez actuellement ' . $faction->rankingPoints . ' points.

'; - - $percent = Format::percent($faction->rankingPoints, $pointsToWin); - echo '
    '; - echo '
  • '; - echo 'avancement'; - echo '' . $percent . ' %'; - echo ''; - echo ''; - echo ''; - echo '
  • '; - echo '
'; - - } elseif ($faction->isWinner == Color::WIN) { - echo '

Vous avez gagné

'; - echo '

Vous avez atteint les ' . $pointsToWin . ', vous avez donc gagner la partie. Félicitations !

'; - } - - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/trade/rc-stats.php b/system/views/components/faction/data/trade/rc-stats.php deleted file mode 100755 index 175afe350..000000000 --- a/system/views/components/faction/data/trade/rc-stats.php +++ /dev/null @@ -1,88 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); - -$join = 'FROM commercialRoute AS cr -LEFT JOIN orbitalBase AS ob1 -ON cr.rOrbitalBase = ob1.rPlace - LEFT JOIN player AS pl1 - ON ob1.rPlayer = pl1.id -LEFT JOIN orbitalBase AS ob2 -ON cr.rOrbitalBaseLinked = ob2.rPlace - LEFT JOIN player AS pl2 - ON ob2.rPlayer = pl2.id'; - -$qr = $database->prepare('SELECT - COUNT(cr.id) AS nb, - SUM(cr.income) AS income - ' . $join . ' - WHERE (pl1.rColor = ? OR pl2.rColor = ?) - AND cr.statement = ? -'); -$qr->execute(array($faction->id, $faction->id, CommercialRoute::ACTIVE)); -$aw1 = $qr->fetch(); $qr->closeCursor(); - -$qr = $database->prepare('SELECT COUNT(cr.id) AS nb ' . $join . ' WHERE pl1.rColor = ? AND pl2.rColor = ? AND cr.statement = ?'); -$qr->execute(array($faction->id, $faction->id, CommercialRoute::ACTIVE)); -$aw2 = $qr->fetch(); $qr->closeCursor(); - -echo '
'; - echo '
'; - echo '

Commerce

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Routes commerciales

'; - - echo '
'; - echo 'routes commerciales actives'; - echo '' . Format::number($aw1['nb']) . ''; - echo '
'; - - echo '
'; - echo 'revenu total par relève'; - echo ''; - echo Format::number($aw1['income']); - echo ' crédits'; - echo ''; - echo '?'; - echo '
'; - - echo '
'; - echo 'part du commerce intérieur'; - echo '' . Format::percent($aw2['nb'], $aw1['nb']) . ' %'; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo '

Répartition du commerce extérieur

'; - - foreach ($faction->colorLink as $i => $k) { - if ($i != 0 && $i != $faction->id) { - $qr = $database->prepare('SELECT - COUNT(cr.id) AS nb ' . $join . ' - WHERE ((pl1.rColor = ? AND pl2.rColor = ?) OR (pl1.rColor = ? AND pl2.rColor = ?)) AND cr.statement = ?' - ); - $qr->execute(array($faction->id, ColorResource::getInfo($i, 'id'), ColorResource::getInfo($i, 'id'), $faction->id, CommercialRoute::ACTIVE)); - $aw3 = $qr->fetch(); $qr->closeCursor(); - - echo '
'; - echo 'routes commerciales avec ' . ColorResource::getInfo($i, 'popularName') . ''; - echo '' . Format::number($aw3['nb']) . ''; - echo ''; - echo ''; - echo ''; - echo '
'; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/trade/tax-in.php b/system/views/components/faction/data/trade/tax-in.php deleted file mode 100755 index fea1e0889..000000000 --- a/system/views/components/faction/data/trade/tax-in.php +++ /dev/null @@ -1,34 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commercialTaxManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); - -$S_CTM_T = $commercialTaxManager->getCurrentSession(); -$commercialTaxManager->newSession(); -$commercialTaxManager->load(array('faction' => $faction->id), array('importTax', 'ASC')); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Taxes à l\'achat

'; - for ($i = 0; $i < $commercialTaxManager->size(); $i++) { - $id = $commercialTaxManager->get($i)->relatedFaction; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo 'produits ' . ColorResource::getInfo($id, 'demonym') . ''; - echo '' . $commercialTaxManager->get($i)->importTax . ' %'; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; - -$commercialTaxManager->changeSession($S_CTM_T); diff --git a/system/views/components/faction/data/trade/tax-out.php b/system/views/components/faction/data/trade/tax-out.php deleted file mode 100755 index ad037b41e..000000000 --- a/system/views/components/faction/data/trade/tax-out.php +++ /dev/null @@ -1,34 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commercialTaxManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialTaxManager::class); - -$S_CTM_T = $commercialTaxManager->getCurrentSession(); -$commercialTaxManager->newSession(); -$commercialTaxManager->load(array('faction' => $faction->id), array('exportTax', 'ASC')); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Taxes à la vente

'; - for ($i = 0; $i < $commercialTaxManager->size(); $i++) { - $id = $commercialTaxManager->get($i)->relatedFaction; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo 'produits ' . ColorResource::getInfo($id, 'demonym') . ''; - echo '' . $commercialTaxManager->get($i)->exportTax . ' %'; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; - -$commercialTaxManager->changeSession($S_CTM_T); diff --git a/system/views/components/faction/data/war/incoming.php b/system/views/components/faction/data/war/incoming.php deleted file mode 100755 index 6f2ddc21f..000000000 --- a/system/views/components/faction/data/war/incoming.php +++ /dev/null @@ -1,40 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Database\Database::class); - -$qr = $db->prepare('SELECT - COUNT(c.id) AS nb - FROM commander AS c - LEFT JOIN player AS p - ON c.rPlayer = p.id - LEFT JOIN place AS o - ON c.rDestinationPlace = o.id - WHERE p.rColor = ? AND c.statement = ? AND o.rPlayer != 0 -'); -$qr->execute(array($faction->id, Commander::MOVING)); -$aw1 = $qr->fetch(); $qr->closeCursor(); - -echo '
'; - echo '
'; - echo '

Attaques entrantes

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Opérations en cours

'; - - echo '
'; - echo 'Attaques entrantes'; - echo '??'; - echo '?'; - echo '
'; - - echo '
'; - echo 'Attaques sortantes'; - echo '' . $aw1['nb'] . ''; - echo '?'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/war/levels.php b/system/views/components/faction/data/war/levels.php deleted file mode 100755 index 1ed3243c3..000000000 --- a/system/views/components/faction/data/war/levels.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$expLevel = Commander::CMDBASELVL; - -echo '
'; - echo '
'; - echo '

Liste des grades

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Officiers

'; - - echo '
    '; - for ($i = 1; $i < CommanderResources::size() + 1; $i++) { - if ($i == 9) { - echo '
'; - echo '

Officiers supérieurs

'; - echo '
    '; - } - - echo '
  • '; - echo ''; - echo Format::number($expLevel) . ' expérience'; - echo ' | '; - echo Format::number(($i * 100)) . ' points équivalents vaisseaux'; - echo ''; - echo '' . CommanderResources::getInfo($i, 'grade') . ''; - echo '
  • '; - - if ($i == 16) { - break; - } - - $expLevel *= 2; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/war/reports-attack.php b/system/views/components/faction/data/war/reports-attack.php deleted file mode 100755 index 81ca92093..000000000 --- a/system/views/components/faction/data/war/reports-attack.php +++ /dev/null @@ -1,38 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$reports = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\LiveReportManager::class)->getFactionAttackReports($session->get('playerInfo')->get('color')); - -# work -echo '
'; - echo '
'; - echo '

Derniers combats

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Attaques

'; - echo '
'; - foreach ($reports as $r) { - list($title, $img) = $r->getTypeOfReport($session->get('playerInfo')->get('color')); - - echo '
'; - echo '
'; - echo ''; - echo '
'; - - echo '
'; - echo '' . $title . ''; - echo 'par ' . $r->playerNameA . ''; - echo '
'; - - echo !$r->isLegal ? '!' : NULL; - echo '
'; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/war/reports-defend.php b/system/views/components/faction/data/war/reports-defend.php deleted file mode 100644 index cb2cf4533..000000000 --- a/system/views/components/faction/data/war/reports-defend.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$reports = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\LiveReportManager::class)->getFactionDefenseReports($session->get('playerInfo')->get('color')); - -# work -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Défenses

'; - echo '
'; - foreach ($reports as $r) { - list($title, $img) = $r->getTypeOfReport($session->get('playerInfo')->get('color')); - - echo '
'; - echo '
'; - echo ''; - echo '
'; - - echo '
'; - echo '' . $title . ''; - echo 'par ' . $r->playerNameA . ''; - echo '
'; - - echo !$r->isLegal ? '!' : NULL; - echo '
'; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/data/war/stats.php b/system/views/components/faction/data/war/stats.php deleted file mode 100755 index 2936d2be4..000000000 --- a/system/views/components/faction/data/war/stats.php +++ /dev/null @@ -1,102 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); - -$qr = $database->prepare('SELECT - COUNT(c.id) AS nb, - AVG(c.level) AS avgLevel - FROM commander AS c - LEFT JOIN player AS p - ON c.rPlayer = p.id - WHERE p.rColor = ? AND (c.statement = ? OR c.statement = ?) -'); -$qr->execute(array($faction->id, Commander::AFFECTED, Commander::MOVING)); -$aw1 = $qr->fetch(); $qr->closeCursor(); - -$qr = $database->prepare('SELECT - SUM(s.ship0) AS nbs0, - SUM(s.ship1) AS nbs1, - SUM(s.ship2) AS nbs2, - SUM(s.ship3) AS nbs3, - SUM(s.ship4) AS nbs4, - SUM(s.ship5) AS nbs5, - SUM(s.ship6) AS nbs6, - SUM(s.ship7) AS nbs7, - SUM(s.ship8) AS nbs8, - SUM(s.ship9) AS nbs9, - SUM(s.ship10) AS nbs10, - SUM(s.ship11) AS nbs11 - FROM squadron AS s - LEFT JOIN commander AS c - ON s.rCommander = c.id - LEFT JOIN player AS p - ON c.rPlayer = p.id - WHERE p.rColor = ? AND (c.statement = ? OR c.statement = ?) -'); -$qr->execute(array($faction->id, Commander::AFFECTED, Commander::MOVING)); -$aw2 = $qr->fetch(); $qr->closeCursor(); - -$totalPEV = 0; -for ($i = 0; $i < 12; $i++) { - $totalPEV += $aw2['nbs' . $i] * ShipResource::getInfo($i, 'pev'); -} - -echo '
'; - echo '
'; - echo '

Etat des armées

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Statistiques générales

'; - - echo '
'; - echo 'officiers actifs'; - echo '' . Format::number($aw1['nb']) . ''; - echo '?'; - echo '
'; - - echo '
'; - echo 'grade moyen des officiers actifs'; - echo '' . (isset($aw1['avgLevel']) ? CommanderResources::getInfo(Format::number($aw1['avgLevel']), 'grade') : 'Inconnu') . ''; - - echo '
'; - - echo '
'; - echo 'PEV totaux'; - echo ''; - echo Format::number($totalPEV); - echo ' pev'; - echo ''; - echo '?'; - echo '
'; - - echo '
'; - echo 'PEV moyens par officier'; - echo ''; - echo (isset($aw1['nb']) AND $aw1['nb'] != 0) - ? Format::number($totalPEV / $aw1['nb']) - : 0; - echo ' pev'; - echo ''; - echo '
'; - - echo '

Nombre d\'appareils par type

'; - echo '
    '; - for ($i = 0; $i < 12; $i++) { - echo '
  • '; - echo ''; - echo '' . ShipResource::getInfo($i, 'name') . ' «' . ShipResource::getInfo($i, 'codeName') . '»'; - echo '' . Format::number($aw2['nbs' . $i]) . ''; - echo '
  • '; - } - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/campaign.php b/system/views/components/faction/election/campaign.php deleted file mode 100755 index fb74b5ed2..000000000 --- a/system/views/components/faction/election/campaign.php +++ /dev/null @@ -1,23 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo '
'; - echo '
'; - echo '

Campagne

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'nombre de candidats'; - echo '' . $nbCandidate . ''; - echo '
'; - - echo '
'; - - echo '

' . ColorResource::getInfo($session->get('playerInfo')->get('color'), 'campaignDesc') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/candidate.php b/system/views/components/faction/election/candidate.php deleted file mode 100755 index 97657af9a..000000000 --- a/system/views/components/faction/election/candidate.php +++ /dev/null @@ -1,88 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -$status = ColorResource::getInfo($faction->id, 'status'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - if ($faction->electionStatement == Color::ELECTION) { - $hasVoted = FALSE; - if ($playerVote !== null) { - $hasVoted = TRUE; - } - - if ($faction->regime != Color::ROYALISTIC) { - echo '
'; - if ($hasVoted) { - if ($playerVote->rCandidate == $candidat->rPlayer) { - echo ''; - echo 'Vous avez voté pour lui'; - echo ''; - } else { - echo ''; - echo '---'; - echo ''; - } - } else { - echo ''; - echo 'Voter'; - echo ''; - } - echo '
'; - } else { - echo '
'; - if ($hasVoted) { - if ($playerVote->rCandidate == $candidat->rPlayer) { - echo ''; - echo 'Vous avez soutenu le coup d\'état'; - echo ''; - } else { - echo ''; - echo 'Vous n\'avez pas soutenu le coup d\'état'; - echo ''; - } - } else { - echo ''; - echo 'Soutenir le coup d\'état'; - echo ''; - echo ''; - echo 'Rejeter le coup d\'état'; - echo ''; - } - echo '
'; - } - } - - echo '
'; - echo ''; - echo $status[$candidat->status - 1]; - echo ''; - echo '' . $candidat->name . ''; - echo '
'; - - echo '
'; - echo '' . $candidat->name . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Son programme

'; - echo '

' . $parser->parse($candidat->program) .'

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/election.php b/system/views/components/faction/election/election.php deleted file mode 100755 index 1f1e239fe..000000000 --- a/system/views/components/faction/election/election.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$nbFactionPlayers = count($factionPlayers); - -echo '
'; - echo '
'; - echo '

Election

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'nombre de candidats'; - echo '' . $nbCandidate . ''; - echo '
'; - - echo '
'; - echo 'taux de participation'; - echo '' . Format::percent(count($votes), $nbFactionPlayers) . ' %'; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo '
'; - - echo '

' . ColorResource::getInfo($session->get('playerInfo')->get('color'), 'campaignDesc') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/list.php b/system/views/components/faction/election/list.php deleted file mode 100755 index ed44cad3d..000000000 --- a/system/views/components/faction/election/list.php +++ /dev/null @@ -1,67 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -$hasIPresented = FALSE; -foreach ($candidates as $candidate) { - if ($candidate->rPlayer == $session->get('playerId')) { - $hasIPresented = TRUE; - break; - } -} - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Candidat' . Format::plural($nbCandidate) . ' à l\'élection

'; - - echo '
'; - if ($faction->electionStatement == Color::CAMPAIGN && !$hasIPresented) { - echo ''; - echo '
'; - echo '+'; - echo '
'; - - echo '
'; - echo 'Proposer sa candidature'; - echo '
'; - echo '
'; - } - - if ($nbCandidate > 0) { - foreach ($candidates as $candidat) { - $status = ColorResource::getInfo($faction->id, 'status'); - - echo '
'; - echo '
'; - echo '' . $candidat->name . ''; - echo '
'; - - echo '
'; - echo '' . $candidat->name . ''; - echo $status[$candidat->status - 1]; - echo '
'; - - echo '
'; - echo ''; - echo '
'; - echo '
'; - } - - echo '
'; - } else { - echo '
'; - echo '

Il n\'y a aucun candidat pour l\'instant.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/postulate.php b/system/views/components/faction/election/postulate.php deleted file mode 100755 index 4049c51a4..000000000 --- a/system/views/components/faction/election/postulate.php +++ /dev/null @@ -1,42 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -$hasIPresented = FALSE; -foreach ($candidates as $candidate) { - if ($candidate->rPlayer == $session->get('playerId')) { - $hasIPresented = TRUE; - break; - } -} - -echo '
'; - echo '
'; - echo '

Présentez-vous

'; - echo '
'; - echo '
'; - echo '
'; - if ($session->get('playerInfo')->get('status') >= 2) { - echo '
'; - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - } else { - echo '
'; - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/election/putsch.php b/system/views/components/faction/election/putsch.php deleted file mode 100755 index dda23a465..000000000 --- a/system/views/components/faction/election/putsch.php +++ /dev/null @@ -1,50 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$follower = 0; -foreach ($votes as $vote) { - if ($vote->rCandidate == $candidat->rPlayer) { - $follower++; - } -} - -echo '
'; - echo '
'; - echo '

Coup d\'état

'; - echo '
'; - echo '
'; - echo '
'; - $startPutsch = $faction->dLastElection; - $endPutsch = Utils::addSecondsToDate($faction->dLastElection, Color::PUTSCHTIME); - $remainPutsch = Utils::interval(Utils::now(), $endPutsch, 's'); - - echo '
'; - echo 'La tentative de coup d\'état se termine dans'; - echo '' . Chronos::secondToFormat($remainPutsch, 'lite') . ''; - echo '
'; - - echo '
'; - echo 'Nombre de soutiens pour réussir'; - echo '' . $follower . ''; - echo ''; - echo ''; - echo ''; - echo 'soutiens nécessaires'; - echo ''; - echo ''; - echo '
'; - echo '
'; - - echo '
'; - - echo '

' . ColorResource::getInfo($session->get('playerInfo')->get('color'), 'campaignDesc') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/forum/createTopic.php b/system/views/components/faction/forum/createTopic.php deleted file mode 100755 index ceda03b80..000000000 --- a/system/views/components/faction/forum/createTopic.php +++ /dev/null @@ -1,41 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); -$sessionToken = $session->get('token'); -# require - -echo '
'; - echo '
'; - echo '

Création d\'un nouveau sujet

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '' . $session->get('playerInfo')->get('pseudo') . ''; - echo '
'; - echo '
'; - echo ''; - - echo '
'; - echo $parser->getToolbar(); - - echo ''; - echo '
'; - - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/forum/forum.php b/system/views/components/faction/forum/forum.php deleted file mode 100755 index e12e69ab0..000000000 --- a/system/views/components/faction/forum/forum.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -# require - -echo ''; diff --git a/system/views/components/faction/forum/manage-topic.php b/system/views/components/faction/forum/manage-topic.php deleted file mode 100755 index 02cea19a8..000000000 --- a/system/views/components/faction/forum/manage-topic.php +++ /dev/null @@ -1,46 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -# require - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Option de modération

'; - - echo ''; - echo $topic_topic->isUp ? 'Enlever la mention importante' : 'Marquer comme important'; - echo ''; - echo ''; - echo $topic_topic->isClosed ? 'Réouvrire' : 'Fermer'; - echo ''; - - echo ''; - echo $topic_topic->isArchived ? 'Désarchiver' : 'Archiver'; - echo ''; - - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/forum/topic.php b/system/views/components/faction/forum/topic.php deleted file mode 100755 index b78a19ad6..000000000 --- a/system/views/components/faction/forum/topic.php +++ /dev/null @@ -1,95 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -# require - # {topic} topic_topic - # [{message}] message_topic - # *bool election_topic - -echo '
'; - echo '
'; - echo isset($election_topic) AND $election_topic - ? NULL - : '

' . $topic_topic->title . '

'; - echo '
'; - echo '
'; - echo '
'; - if ($topic_topic->isClosed) { - echo '
'; - echo '' . $session->get('playerInfo')->get('pseudo') . ''; - echo '
'; - echo '
'; - echo ''; - echo '
'; - echo '
'; - echo '
'; - } else { - echo '
'; - echo '' . $session->get('playerInfo')->get('pseudo') . ''; - echo '
'; - echo '
'; - echo '
'; - $parser = $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class); - echo $parser->getToolbar(); - - echo ''; - echo '
'; - - echo ''; - echo '
'; - echo '
'; - echo '
'; - } - - foreach ($message_topic as $m) { - if ($m->playerColor > 0) { - $status = ColorResource::getInfo($m->playerColor, 'status'); - $status = $status[$m->playerStatus - 1]; - } else { - $status = 'Rebelle'; - } - - $canEdit = ($session->get('playerId') == $m->rPlayer || ($session->get('playerInfo')->get('status') > 2 && $topic_topic->rForum != 20)); - - echo '
'; - echo '' . $m->playerName . ''; - echo '
'; - echo '

'; - echo '≡ ' . $status . ' ' . $m->playerName . '

'; - echo $m->pContent; - echo '

'; - - if ($canEdit) { - echo ''; - } - - echo ''; - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/forum/topics.php b/system/views/components/faction/forum/topics.php deleted file mode 100755 index fec035aa0..000000000 --- a/system/views/components/faction/forum/topics.php +++ /dev/null @@ -1,100 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -# require - # int forum_topics - # [{topic}] topic_topics - # bool isStandard_topics - -echo ''; diff --git a/system/views/components/faction/government/credit.php b/system/views/components/faction/government/credit.php deleted file mode 100644 index 4e2d1b065..000000000 --- a/system/views/components/faction/government/credit.php +++ /dev/null @@ -1,73 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Envoi de crédits

'; - echo '

Seul le trésorier du gouvernement peut faire des versements à des membres.

'; - echo '
'; - echo '

'; - echo '

'; - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - - -$S_CRT_1 = $creditTransactionManager->getCurrentSession(); -$creditTransactionManager->newSession(); -$creditTransactionManager->load( - ['rSender' => $faction->id, 'type' => CreditTransaction::TYP_F_TO_P], - ['dTransaction', 'DESC'], - [0, 20] -); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Dernières transactions

'; - for ($i = 0; $i < $creditTransactionManager->size(); $i++) { - $transaction = $creditTransactionManager->get($i); - - echo '
'; - echo ''; - echo '' . $transaction->receiverName . ''; - echo ''; - - $status = ColorResource::getInfo($transaction->receiverColor, 'status'); - echo '' . $status[$transaction->receiverStatus - 1] . ''; - echo '' . $transaction->receiverName . ''; - echo '' . Format::number($transaction->amount) . ' crédits'; - echo '
'; - } - - if ($creditTransactionManager->size() == 0) { - echo '

Aucune transaction n\'a encore été effectuée.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/government/description.php b/system/views/components/faction/government/description.php deleted file mode 100644 index f021b29c7..000000000 --- a/system/views/components/faction/government/description.php +++ /dev/null @@ -1,30 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Editer la description

'; - - echo '

'; - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Aperçu

'; - echo '

' . $colorManager->getParsedDescription($faction) . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/government/law.php b/system/views/components/faction/government/law.php deleted file mode 100755 index 1d1e106f7..000000000 --- a/system/views/components/faction/government/law.php +++ /dev/null @@ -1,140 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($governmentLaw_id, 'name') . ''; - echo '
'; - - echo '

' . LawResources::getInfo($governmentLaw_id, 'shortDescription') . '

'; - - if (LawResources::getInfo($governmentLaw_id, 'bonusLaw')) { - echo '
'; - echo ''; - - echo ''; - echo '
'; - } else { - echo '
'; - if ($governmentLaw_id == Law::SECTORTAX) { - echo ''; - - echo ''; - - } elseif ($governmentLaw_id == Law::SECTORNAME) { - echo ''; - - echo ''; - - } elseif ($governmentLaw_id == Law::NEUTRALPACT) { - - echo ''; - } elseif ($governmentLaw_id == Law::PEACEPACT) { - - echo ''; - } elseif ($governmentLaw_id == Law::WARDECLARATION) { - - echo ''; - } elseif ($governmentLaw_id == Law::TOTALALLIANCE) { - - echo ''; - } elseif (in_array($governmentLaw_id, array(Law::COMTAXEXPORT, Law::COMTAXIMPORT))) { - echo ''; - echo ''; - } elseif ($governmentLaw_id == Law::PUNITION) { - echo ''; - - $factionPlayers = $playerManager->getFactionPlayersByName($session->get('playerInfo')->get('color')); - - echo ''; - } - - echo ''; - echo '
'; - } - echo '
'; - - echo '

' . LawResources::getInfo($governmentLaw_id, 'longDescription') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/government/manage/main.php b/system/views/components/faction/government/manage/main.php deleted file mode 100755 index 7d179f69a..000000000 --- a/system/views/components/faction/government/manage/main.php +++ /dev/null @@ -1,64 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -$status = ColorResource::getInfo($faction->id, 'status'); - -echo '
'; - echo '
'; - echo '

Nomination

'; - echo '
'; - echo '
'; - echo '
'; - $list = array(Player::MINISTER, Player::WARLORD, Player::TREASURER); - - foreach ($list as $type) { - echo '

' . $status[$type - 1] . '

'; - - $have = FALSE; - foreach ($governmentMembers as $minister) { - if ($minister->status == $type) { - echo '
'; - echo ''; - echo '' .  $minister->name . ''; - echo ''; - echo '' . $status[$minister->status - 1] . ''; - echo '' . $minister->name . ''; - echo '' . Format::number($minister->factionPoint) . ' de prestige'; - echo '
'; - - echo 'Démettre de ses fonctions'; - - $have = TRUE; - break; - } - } - if (!$have) { - if ($session->get('playerInfo')->get('status') == Player::CHIEF) { - echo '
'; - echo ''; - echo ''; - echo '
'; - } else { - echo '
'; - echo 'Aucun joueur à ce poste'; - echo '
'; - } - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/government/message.php b/system/views/components/faction/government/message.php deleted file mode 100755 index b9d497456..000000000 --- a/system/views/components/faction/government/message.php +++ /dev/null @@ -1,29 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Envoyer un message à la faction

'; - - echo '

'; - echo 'Votre message'; - echo '

'; - echo '

'; - echo ''; - echo $this->getContainer()->get(\Asylamba\Classes\Library\Parser::class)->getToolbar(); - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/government/nav.php b/system/views/components/faction/government/nav.php deleted file mode 100755 index e86ac6e92..000000000 --- a/system/views/components/faction/government/nav.php +++ /dev/null @@ -1,87 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -echo ''; diff --git a/system/views/components/faction/news/create.php b/system/views/components/faction/news/create.php deleted file mode 100644 index 457f4636a..000000000 --- a/system/views/components/faction/news/create.php +++ /dev/null @@ -1,24 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '

Créer une annonce

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Titre de l\'annonce

'; - echo '

'; - - echo '

Contenu de l\'annonce

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/news/edit.php b/system/views/components/faction/news/edit.php deleted file mode 100644 index fcd1e5752..000000000 --- a/system/views/components/faction/news/edit.php +++ /dev/null @@ -1,28 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$factionNewsManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class); -$request = $this->getContainer()->get('app.request'); - -$news = $factionNewsManager->get($request->query->get('news')); - -echo '
'; - echo '
'; - echo '

Edition d\'une annonce

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Titre de l\'annonce

'; - echo '

'; - - echo '

Contenu de l\'annonce

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/news/list.php b/system/views/components/faction/news/list.php deleted file mode 100644 index 88a32642b..000000000 --- a/system/views/components/faction/news/list.php +++ /dev/null @@ -1,27 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$request = $this->getContainer()->get('app.request'); - -echo '
'; - echo '
'; - echo '

Liste des annonces

'; - echo '
'; - echo '
'; - echo '
'; - foreach ($factionNews as $news) { - echo '
'; - echo '' . $news->title . ''; - echo ''; - echo '' . ($news->pinned ? '⛊' : '⛉') . ''; - echo '×'; - echo ''; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/overview/laws.php b/system/views/components/faction/overview/laws.php deleted file mode 100755 index 4ddf15169..000000000 --- a/system/views/components/faction/overview/laws.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Lois actives

'; - - foreach ($effectiveLaws as $law) { - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($law->type, 'name') . ''; - echo '
'; - echo '
'; - } - - if (count($effectiveLaws) === 0) { - echo '

Aucune loi active

'; - } - - echo '

Lois en cours de votation

'; - - foreach ($votingLaws as $law) { - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($law->type, 'name') . ''; - echo '
'; - echo '
'; - } - - if (count($votingLaws) === 0) { - echo '

Aucune loi en cours de votation

'; - } - - echo '

Bonus de faction

'; - - $bonus = $faction->bonusText; - foreach ($bonus as $b) { - echo '
'; - echo '
'; - echo ''; - echo '' . $b['title'] . ''; - echo '' . $b['desc'] . ''; - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/overview/news.php b/system/views/components/faction/overview/news.php deleted file mode 100755 index 8bc63cc62..000000000 --- a/system/views/components/faction/overview/news.php +++ /dev/null @@ -1,33 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); - -echo '
'; - echo '
'; - echo '

Faction

'; - echo '
'; - echo '
'; - echo '
'; - if ($mode === 'all') { - foreach ($factionNews as $news) { - echo '

' . $news->title . '

'; - echo '

' . $news->pContent . '

'; - } - echo 'Voir l\'annonce mise en avant'; - } else { - if ($factionNews !== null) { - echo '

' . $factionNews->title . '

'; - echo '

' . $factionNews->pContent . '

'; - } - echo 'Voir toutes les annonces'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/overview/stat.php b/system/views/components/faction/overview/stat.php deleted file mode 100755 index 557899b09..000000000 --- a/system/views/components/faction/overview/stat.php +++ /dev/null @@ -1,182 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -# status list -$status = ColorResource::getInfo($faction->id, 'status'); - -# ranking -$S_FRM1 = $factionRankingManager->getCurrentSession(); -$factionRankingManager->newSession(); -$factionRankingManager->loadLastContext(); - -if ($factionRankingManager->size() == 0) { - throw new ErrorException('L\'espace faction n\'est pas disponible pour le moment'); -} - -for ($i = 0; $i < $factionRankingManager->size(); $i++) { - if ($factionRankingManager->get($i)->rFaction == $faction->id) { - $factionRanking = $factionRankingManager->get($i)->generalPosition; - break; - } -} -$factionRankingManager->changeSession($S_FRM1); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Agenda politique

'; - - if (in_array($faction->regime, array(Color::DEMOCRATIC, Color::THEOCRATIC))) { - # time variables - $startCampaign = Utils::addSecondsToDate($faction->dLastElection, ColorResource::getInfo($faction->id, 'mandateDuration')); - $endCampaign = Utils::addSecondsToDate($faction->dLastElection, ColorResource::getInfo($faction->id, 'mandateDuration') + Color::CAMPAIGNTIME); - - $startElection = Utils::addSecondsToDate($faction->dLastElection, ColorResource::getInfo($faction->id, 'mandateDuration') + Color::CAMPAIGNTIME); - $endElection = Utils::addSecondsToDate($faction->dLastElection, ColorResource::getInfo($faction->id, 'mandateDuration') + Color::CAMPAIGNTIME + Color::ELECTIONTIME); - - $startMandate = $faction->dLastElection; - $endMandate = $faction->regime == Color::DEMOCRATIC - ? $endElection - : $endCampaign; - - # usefull variables - $totalMandate = Utils::interval($startMandate, $endMandate, 's'); - $remainMandate = Utils::interval(Utils::now(), $startMandate, 's'); - $totalBeforeCampaing = Utils::interval($startMandate, $startCampaign, 's'); - - $totalCampEl = Utils::interval($startCampaign, $endElection, 's'); - $totalCampaing = Utils::interval($startCampaign, $endCampaign, 's'); - $remainCampEl = Utils::interval(Utils::now(), $startCampaign, 's'); - - echo '
'; - echo '
'; - echo ''; - echo ''; - echo ''; - echo 'Début du mandat courant'; - echo ''; - echo ''; - echo 'Fin du mandat courant'; - echo ''; - echo ''; - echo '
'; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo 'Campagne'; - echo ''; - - if ($faction->regime == Color::DEMOCRATIC) { - echo ''; - echo 'Elections'; - echo ''; - echo ''; - echo 'Résultats'; - echo ''; - } else { - echo ''; - echo 'Décision divine'; - echo ''; - } - echo ''; - echo '
'; - echo '
'; - - if ($faction->electionStatement == Color::CAMPAIGN) { - echo $faction->regime == Color::DEMOCRATIC - ? 'Présentez-vous aux élections' - : 'Se proposer comme Guide'; - } elseif ($faction->electionStatement == Color::ELECTION) { - echo 'Votez dès maintenant pour votre candidat favori'; - } - } else { - echo '
'; - if ($faction->electionStatement == Color::ELECTION) { - # time variables - $startPutsch = $faction->dLastElection; - $endPutsch = Utils::addSecondsToDate($faction->dLastElection, Color::PUTSCHTIME); - - # usefull variables - $remainPutsch = Utils::interval(Utils::now(), $endPutsch, 's'); - - echo '
'; - echo 'La tentative de coup d\'état se termine dans'; - echo '' . Chronos::secondToFormat($remainPutsch, 'lite') . ''; - echo '
'; - echo 'Prendre position sur le coup d\'état'; - } else { - if (in_array($session->get('playerInfo')->get('status'), array(Player::WARLORD, Player::TREASURER, Player::MINISTER, Player::PARLIAMENT))) { - echo 'Tenter un coup d\'état'; - - echo ''; - } else { - echo 'Vous ne pouvez pas tenter un coup d\'état'; - } - } - echo '
'; - } - - echo '

Gouvernement actuel

'; - - foreach ($governmentMembers as $minister) { - echo '
'; - echo ''; - echo '' .  $minister->name . ''; - echo ''; - echo '' . $status[ $minister->status - 1] . ''; - echo '' . $minister->name . ''; - echo '' . Format::number( $minister->factionPoint) . ' points'; - echo '
'; - } - - echo '

Statistiques générales

'; - - echo '
'; - echo 'Classement général de la faction'; - echo '' . Format::rankingFormat($factionRanking) . ''; - echo '
'; - echo '
'; - echo 'Nombre de points de la faction'; - echo '' . Format::number($faction->points) . ''; - echo '
'; - echo '
'; - echo 'Richesse de la faction'; - echo '' . Format::number($faction->credits) . ' crédits'; - echo '
'; - echo '
'; - echo 'Nombre de points des territoires contrôlés'; - echo '' . Format::number($faction->sectors) . ''; - echo '
'; - echo '
'; - echo 'Nombre de joueurs actifs'; - echo '' . Format::number($faction->activePlayers) . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/player/listPlayer.php b/system/views/components/faction/player/listPlayer.php deleted file mode 100755 index 74f6ef40b..000000000 --- a/system/views/components/faction/player/listPlayer.php +++ /dev/null @@ -1,66 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$allyInactiveTime = $this->getContainer()->getParameter('zeus.player.ally_inactive_time'); -# listPlayer component -# in player.demeter package - -# affichage des joueurs de la faction - -# require - # [{player}] players_listPlayer - -$status = ColorResource::getInfo($faction->id, 'status'); - -$fplayers = array( - 'Gouvernement' => array(), - 'Sénat' => array(), - 'Peuple' => array() -); - -foreach ($players_listPlayer as $p) { - if ($p->status == 1) { - $fplayers['Peuple'][] = $p; - } elseif ($p->status == 2) { - $fplayers['Sénat'][] = $p; - } else { - $fplayers['Gouvernement'][] = $p; - } -} - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - foreach ($fplayers as $type => $players) { - echo '

' . $type . '

'; - - if (empty($players)) { - echo '

aucun joueur

'; - } - - foreach ($players as $p) { - echo '
'; - echo ''; - echo '' . $p->getName() . ''; - echo ''; - echo '' . $status[$p->getStatus() - 1] . ''; - echo '' . $p->getName() . ''; - echo '' . Format::numberFormat($p->factionPoint) . ' points'; - if (Utils::interval(Utils::now(), $p->getDLastActivity(), 's') < ($container->getParameter('time_event_update') * 2)) { - echo ''; - } elseif (Utils::interval(Utils::now(), $p->getDLastActivity()) > $allyInactiveTime) { - echo ''; - } - echo '
'; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/player/statPlayer.php b/system/views/components/faction/player/statPlayer.php deleted file mode 100755 index f724359fc..000000000 --- a/system/views/components/faction/player/statPlayer.php +++ /dev/null @@ -1,71 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -# statPlayer component -# in player.demeter package - -# affichage des stats joueurs de la faction - -# require - # int nbPlayer_statPlayer - # int nbOnlinePlayer_statPlayer - # int nbOfflinePlayer_statPlayer - # int avgVictoryPlayer_statPlayer - # int avgDefeatPlayer_statPlayer - # int avgPointsPlayer_statPlayer - -$status = ColorResource::getInfo($faction->id, 'status'); - -# work -echo '
'; - echo '
'; - echo '

Membres

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Joueurs actifs dans la faction'; - echo '' . $nbPlayer_statPlayer . ''; - echo '
'; - - echo '
'; - echo 'Joueurs en ligne actuellement'; - echo '' . $nbOnlinePlayer_statPlayer . ''; - echo '
'; - - echo '

Nouveaux membres

'; - - $lastFactionPlayers = $playerManager->getLastFactionPlayers($faction->id); - - foreach ($lastFactionPlayers as $p) { - if (Utils::interval($p->dInscription, Utils::now(), 's') > 259200) { - if ($i == 0) { - echo '

Aucun nouveau membre ces 3 derniers jours

'; - } - break; - } - - echo '
'; - echo ''; - echo '' . $p->name . ''; - echo ''; - echo '' . $status[$p->status - 1] . ''; - echo '' . $p->name . ''; - - if ($p->id != $session->get('playerId')) { - echo 'Souhaiter la bienvenue'; - } - echo '
'; - } - - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/senate/historic.php b/system/views/components/faction/senate/historic.php deleted file mode 100755 index be72b726f..000000000 --- a/system/views/components/faction/senate/historic.php +++ /dev/null @@ -1,50 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Historique des votations

'; - - foreach ($laws as $law) { - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($law->type, 'name') . ''; - echo '
'; - - echo '

'; - if (LawResources::getInfo($law->type, 'department') == 6) { - echo 'Statut : appliquée
'; - } else { - echo 'Statut : '; - switch ($law->statement) { - case Law::EFFECTIVE: echo 'application en cours'; break; - case Law::OBSOLETE: echo 'application terminée'; break; - case Law::REFUSED: echo 'refusée'; break; - default: echo 'inconnu'; break; - } - echo '
'; - echo 'Votes pour : ' . $law->forVote . '
'; - echo 'Votes contre : ' . $law->againstVote; - } - echo '

'; - echo '

'; - echo Chronos::transform($law->dCreation) . '
'; - echo '

'; - echo '
'; - } - - if (count($laws) === 0) { - echo '

Aucune loi n\'a été votée pour le moment.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/senate/law.php b/system/views/components/faction/senate/law.php deleted file mode 100755 index 530e3c42e..000000000 --- a/system/views/components/faction/senate/law.php +++ /dev/null @@ -1,89 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$voteLawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\VoteLawManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -# durée de la loi -$lawDuration = (strtotime($law->dEnd) - strtotime($law->dEndVotation)) / 3600; -$lawDuration = $lawDuration < 1 ? 1 : $lawDuration; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Object de la votation

'; - - echo '
'; - echo '
'; - echo ''; - echo '' . LawResources::getInfo($law->type, 'name') . ''; - echo '
'; - - echo '

' . LawResources::getInfo($law->type, 'shortDescription') . '

'; - - - if ($voteLawManager->hasVoted($session->get('playerId'), $law)) { - echo 'Vous avez déjà voté'; - echo ''; - } elseif ($session->get('playerInfo')->get('status') == Player::PARLIAMENT) { - echo ''; - echo 'Pour'; - echo ''; - - echo ''; - echo 'Contre'; - echo ''; - } else { - echo 'Seuls les sénateurs peuvent voter'; - echo ''; - } - echo '
'; - - echo '

Modalités d\'application

'; - - echo '
    '; - echo '
  • '; - echo 'Coût'; - echo ''; - echo LawResources::getInfo($law->type, 'bonusLaw') - ? Format::number(LawResources::getInfo($law->type, 'price') * $faction->activePlayers * $lawDuration) - : Format::number(LawResources::getInfo($law->type, 'price')); - echo 'crédits'; - echo '
  • '; - - if (LawResources::getInfo($law->type, 'bonusLaw')) { - echo '
  • '; - echo 'Durée d\'application'; - echo '' . Format::number($lawDuration) . ' relève' . Format::plural($lawDuration) . ''; - echo '
  • '; - } else { - if (isset($law->options['display'])) { - foreach ($law->options['display'] as $label => $value) { - echo '
  • '; - echo '' . $label . ''; - echo '' . $value . ''; - echo '
  • '; - } - } - } - echo '
'; - - echo '

Date application

'; - echo '

Mise en application ' . Chronos::transform($law->dEndVotation) . '

'; - echo ''; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/faction/senate/stats.php b/system/views/components/faction/senate/stats.php deleted file mode 100755 index 4ef1bb60b..000000000 --- a/system/views/components/faction/senate/stats.php +++ /dev/null @@ -1,21 +0,0 @@ -'; - echo '
'; - echo '

Sénat

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Lois en cours de votation'; - echo ''; - echo Format::number(count($laws)); - echo ''; - echo '
'; - - #echo '

Infos sur les lois

'; - echo '
'; - echo '
'; -echo '
'; \ No newline at end of file diff --git a/system/views/components/financial/fleetFeesFinancial.php b/system/views/components/financial/fleetFeesFinancial.php deleted file mode 100755 index f48162e35..000000000 --- a/system/views/components/financial/fleetFeesFinancial.php +++ /dev/null @@ -1,85 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$commanderByBase = array(); - -foreach ($commander_fleetFeesFinancial as $commander) { - if (!isset($commanderByBase[$commander->getRBase()])) { - $commanderByBase[$commander->getRBase()] = array(); - } - - $commanderByBase[$commander->getRBase()][] = $commander; -} - -# view part -echo '
'; - echo '
'; - echo 'commandants'; - echo '

Commandants

'; - echo 'Salaires des commandants'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($commanderByBase as $base => $commanders) { - $commanderFees = 0; - foreach ($commanders as $commander) { - $commanderFees += $commander->getLevel() * Commander::LVLINCOMECOMMANDER; - } - - echo '
  • '; - echo ''; - echo ''; - echo ''; - - foreach ($ob_fleetFeesFinancial as $ob) { - if ($base == $ob->getId()) { - echo '' . $ob->getName() . ' [' . count($commanders) . ' officier' . Format::addPlural($commanders) . ']'; - break; - } - } - - echo ''; - echo Format::numberFormat($commanderFees); - echo 'crédits'; - echo ''; - - echo '
      '; - foreach ($commanders as $commander) { - echo '
    • '; - echo '' . CommanderResources::getInfo($commander->getLevel(), 'grade') . ' ' . $commander->getName() . ''; - echo ''; - echo Format::numberFormat($commander->getLevel() * Commander::LVLINCOMECOMMANDER); - echo ''; - echo '
    • '; - } - echo '
    '; - echo '
  • '; - } - - echo '
  • '; - echo 'total des salaires'; - echo ''; - echo Format::numberFormat($financial_totalFleetFees); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

La rubrique commandant ne correspond pas à l’investissement fait dans l’école de commandement, mais au salaire de vos - commandants. Plus un commandant a un niveau élevé, plus son salaire sera important. Chaque niveau de commandant coûte ' . Commander::LVLINCOMECOMMANDER . ' crédits par relève.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/generalFinancial.php b/system/views/components/financial/generalFinancial.php deleted file mode 100755 index 0cb33016b..000000000 --- a/system/views/components/financial/generalFinancial.php +++ /dev/null @@ -1,173 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '

Finance

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

recettes

'; - echo '
    '; - echo '
  • '; - echo 'impôts'; - echo ''; - echo Format::numberFormat($financial_totalTaxIn); - if ($taxBonus > 0) { - echo '+' . Format::numberFormat($financial_totalTaxInBonus) . ''; - } - echo 'crédits'; - ''; - echo '
  • '; - echo '
  • '; - echo 'taxes commerciales'; - echo ''; - echo Format::numberFormat($financial_totalRouteIncome); - if ($rcBonus > 0) { - echo '+' . Format::numberFormat($financial_totalRouteIncomeBonus) . ''; - } - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo '
  • '; - echo '
  • '; - echo '
  • '; - echo 'total des recettes'; - echo ''; - echo Format::numberFormat($financial_totalIncome); - echo 'crédits'; - echo ''; - echo '
  • '; - if ($financial_benefice < 0) { - echo '
  • '; - echo 'perte'; - echo ''; - echo Format::numberFormat(abs($financial_benefice)); - echo 'crédits'; - echo ''; - echo '
  • '; - } - echo '
'; - - echo '
'; - - echo '

dépenses

'; - echo '
    '; - echo '
  • '; - echo 'investissements planétaires'; - echo ''; - echo Format::numberFormat($financial_totalInvest); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo ''; - echo ''; - echo ''; - echo 'investissements universitaires'; - echo ''; - echo Format::numberFormat($financial_totalInvestUni); - echo 'crédits'; - echo ''; - - echo '
    '; - echo '

    '; - echo ''; - echo ''; - echo '

    '; - echo '
    '; - echo '
  • '; - echo '
  • '; - echo 'salaire des commandants'; - echo ''; - echo Format::numberFormat($financial_totalFleetFees); - echo 'crédits'; - echo ''; - echo '
  • '; - # TODO - echo '
  • '; - echo 'entretien des vaisseaux'; - echo ''; - echo Format::numberFormat($financial_totalShipsFees); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo 'redevances aux factions'; - echo ''; - echo Format::numberFormat($financial_totalTaxOut); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo 'total des charges'; - echo ''; - echo Format::numberFormat($financial_totalFess); - echo 'crédits'; - echo ''; - echo '
  • '; - if ($financial_benefice >= 0) { - echo '
  • '; - echo 'bénéfice'; - echo ''; - echo Format::numberFormat(abs($financial_benefice)); - echo 'crédits'; - echo ''; - echo '
  • '; - } - echo '
'; - - echo '
'; - - echo '

évolution de finances

'; - echo '
    '; - echo '
  • '; - echo 'crédits en possession'; - echo ''; - echo Format::numberFormat($financial_credit); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo 'bénéfice'; - echo ''; - echo Format::numberFormat($financial_benefice); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
  • '; - echo 'prévision à la prochaine relève'; - echo ''; - echo Format::numberFormat($financial_remains); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '
'; - - echo '

Ces deux colonnes sont un résumé de vos recettes et de vos dépenses pendant la durée d’une relève. Dans la - colonne des recettes vous pouvez voir tous les éléments qui vous rapportent des crédits dans Asylamba. Dans la colonne des dépenses, - c’est l’inverse, vous voyez les éléments qui vous coûtent sur vos bases. La différence entre ces deux colonnes vous donne soit une - perte (sous la colonne des recettes) soit un bénéfice (sous la colonne des dépenses).

'; - - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/impositionFinancial.php b/system/views/components/financial/impositionFinancial.php deleted file mode 100755 index 48f4655dd..000000000 --- a/system/views/components/financial/impositionFinancial.php +++ /dev/null @@ -1,60 +0,0 @@ -getContainer(); -$taxCoeff = $this->getContainer()->getParameter('zeus.player.tax_coeff'); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo ''; - echo '

Impôts

'; - echo 'Imposition par planète'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($ob_impositionFinancial as $base) { - $baseImpot = Game::getTaxFromPopulation($base->getPlanetPopulation(), $base->typeOfBase, $taxCoeff); - - echo '
  • '; - echo '' . $base->getName() . ' [' . Format::numberFormat($base->getPlanetPopulation()) . ' Mio hab.]'; - echo ''; - echo Format::numberFormat($baseImpot); - if ($taxBonus > 0) { - echo '+' . Format::numberFormat($baseImpot * $taxBonus / 100) . ''; - } - echo 'crédits'; - echo ''; - echo '
  • '; - } - - echo '
  • '; - echo 'total de l\'imposition'; - echo ''; - echo Format::numberFormat($financial_totalTaxIn); - if ($taxBonus > 0) { - echo '+' . Format::numberFormat($financial_totalTaxInBonus) . ''; - } - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

Les impôts sont les crédits que vous récoltez auprès de la population de vos planètes. Plus vos planètes sont - grosses en terme de population, plus vous collecterez d’impôts. Ils peuvent être augmentés grâce à la technologie « Economie Sociale de - Marché », ce qui vous permettra d’améliorer vos recettes.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/investFinancial.php b/system/views/components/financial/investFinancial.php deleted file mode 100755 index 9e02e4741..000000000 --- a/system/views/components/financial/investFinancial.php +++ /dev/null @@ -1,91 +0,0 @@ -getContainer(); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo ''; - echo '

Investissements

'; - echo 'Investissements par planète'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($ob_investFinancial as $base) { - $baseInvest = $base->getISchool() + $base->getIAntiSpy(); - - echo '
  • '; - echo ''; - echo ''; - echo ''; - - echo '' . $base->getName() . ''; - - echo ''; - echo Format::numberFormat($baseInvest); - echo 'crédits'; - echo ''; - - echo '
      '; - echo '
    • '; - echo 'école de cmd.'; - - echo ''; - echo Format::numberFormat($base->getISchool()); - echo ' '; - echo ''; - - echo '
      '; - echo '

      '; - echo ''; - echo ''; - echo '

      '; - echo '
      '; - echo '
    • '; - echo '
    • '; - echo 'contre-espionnage'; - - echo ''; - echo Format::numberFormat($base->getIAntiSpy()); - echo ' '; - echo ''; - - echo '
      '; - echo '

      '; - echo ''; - echo ''; - echo '

      '; - echo '
      '; - echo '
    • '; - echo '
    '; - echo '
  • '; - } - - echo '
  • '; - echo 'total des investissements'; - echo ''; - echo Format::numberFormat($financial_totalInvest); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

Dans la rubrique « Investissements » sont répertoriés tous les investissements relatifs à l’école - de commandement et au contre-espionnage. Chacun de ces investissements peuvent être gérés dans leur bâtiment respectif. Faites attention - à ne pas avoir plus d’investissements que de recettes.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/last-receive-credit.php b/system/views/components/financial/last-receive-credit.php deleted file mode 100755 index 837d2d3aa..000000000 --- a/system/views/components/financial/last-receive-credit.php +++ /dev/null @@ -1,51 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -# load -$S_CRT_1 = $creditTransactionManager->getCurrentSession(); -$creditTransactionManager->newSession(); -$creditTransactionManager->load( - ['rReceiver' => $session->get('playerId'), 'type' => CreditTransaction::TYP_PLAYER], - ['dTransaction', 'DESC'], - [0, 20] -); - -# view part -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Derniers reçus

'; - - for ($i = 0; $i < $creditTransactionManager->size(); $i++) { - $transaction = $creditTransactionManager->get($i); - - echo '
'; - echo ''; - echo '' . $transaction->senderName . ''; - echo ''; - - $status = ColorResource::getInfo($transaction->senderColor, 'status'); - echo '' . $status[$transaction->senderStatus - 1] . ''; - echo '' . $transaction->senderName . ''; - echo '' . Format::number($transaction->amount) . ($transaction->amount == 1 ? ' crédit' : ' crédits') . ''; - echo '
'; - } - - if ($creditTransactionManager->size() == 0) { - echo '

Vous n\'avez encore reçu aucun crédit.

'; - } - echo '
'; - echo '
'; -echo '
'; - -$creditTransactionManager->changeSession($S_CRT_1); diff --git a/system/views/components/financial/last-send-credit.php b/system/views/components/financial/last-send-credit.php deleted file mode 100755 index 2dbb38688..000000000 --- a/system/views/components/financial/last-send-credit.php +++ /dev/null @@ -1,46 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$creditTransactionManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\CreditTransactionManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -# load -$S_CRT_1 = $creditTransactionManager->getCurrentSession(); -$creditTransactionManager->newSession(); -$creditTransactionManager->load( - ['rSender' => $session->get('playerId')], - ['dTransaction', 'DESC'], - [0, 20] -); - -# view part -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Derniers envois

'; - - for ($i = 0; $i < $creditTransactionManager->size(); $i++) { - $transaction = $creditTransactionManager->get($i); - - echo '
'; - echo ''; - echo '' . $transaction->getFormatedReceiverName() . ''; - echo ''; - - echo '' . $transaction->getFormatedReceiverStatus() . ''; - echo '' . $transaction->getFormatedReceiverName() . ''; - echo '' . Format::number($transaction->amount) . ($transaction->amount == 1 ? ' crédit' : ' crédits') . ''; - echo '
'; - } - - if ($creditTransactionManager->size() == 0) { - echo '

Vous n\'avez fait aucun envoi de crédit.

'; - } - echo '
'; - echo '
'; -echo '
'; - -$creditTransactionManager->changeSession($S_CRT_1); diff --git a/system/views/components/financial/msFeesFinancial.php b/system/views/components/financial/msFeesFinancial.php deleted file mode 100755 index 4c8afdd3c..000000000 --- a/system/views/components/financial/msFeesFinancial.php +++ /dev/null @@ -1,29 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo 'vaisseau mère'; - echo '

Vaisseaux-mère

'; - echo 'Frais de fonctionnement des vaisseaux-mère'; - echo '
'; - echo '
'; - echo '
'; - echo '

Rien pour le moment !

'; - $notif = new Notification(); - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/routeFinancial.php b/system/views/components/financial/routeFinancial.php deleted file mode 100755 index 8fd0ab63e..000000000 --- a/system/views/components/financial/routeFinancial.php +++ /dev/null @@ -1,85 +0,0 @@ -getContainer(); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo 'route commerciale'; - echo '

Commerce

'; - echo 'Revenus des routes commerciales par planète'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($ob_routeFinancial as $base) { - $nbRoute = $commercialRouteManager->countBaseActiveRoutes($base->getId()); - $routeIncome = $commercialRouteManager->getBaseIncome($base); - - echo '
  • '; - if ($nbRoute > 0) { - echo ''; - echo ''; - echo ''; - } - echo '' . $base->getName() . ' [' . $nbRoute . ' route' . Format::addPlural($nbRoute) . ']'; - echo ''; - echo Format::numberFormat($routeIncome); - if ($rcBonus > 0) { - echo '+' . Format::numberFormat($routeIncome * $rcBonus / 100) . ''; - } - echo 'crédits'; - echo ''; - - if ($nbRoute > 0) { - $routes = array_merge( - $commercialRouteManager->getByBase($base->getId()), - $commercialRouteManager->getByDistantBase($base->getId()) - ); - echo '
      '; - foreach ($routes as $route) { - if ($route->getStatement() == CommercialRoute::ACTIVE) { - echo '
    • '; - $rBaseName = ($route->getBaseName1() == $base->getName()) ? $route->getBaseName2(): $route->getBaseName1(); - echo '' . $rBaseName . ''; - echo '' . Format::numberFormat($route->getIncome()) . ''; - echo '
    • '; - } - } - $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class)->clear(CommercialRoute::class); - echo '
    '; - } - echo '
  • '; - } - - echo '
  • '; - echo 'total des routes commerciales'; - echo ''; - echo Format::numberFormat($financial_totalRouteIncome); - if ($rcBonus > 0) { - echo '+' . Format::numberFormat($financial_totalRouteIncomeBonus) . ''; - } - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

La colonne « Commerce » est un compte rendu de la totalité des revenus de vos routes commerciales. Pour gérer les - recettes de vos routes commerciales, il vous est nécessaire de vous rendre sur votre plateforme commerciale afin de créer ou supprimer - des routes.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/send-credit-faction.php b/system/views/components/financial/send-credit-faction.php deleted file mode 100755 index 7a2b52635..000000000 --- a/system/views/components/financial/send-credit-faction.php +++ /dev/null @@ -1,29 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

A votre faction

'; - echo '
'; - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/send-credit-player.php b/system/views/components/financial/send-credit-player.php deleted file mode 100755 index 0a8a5ad03..000000000 --- a/system/views/components/financial/send-credit-player.php +++ /dev/null @@ -1,40 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '

Envoi de crédit

'; - echo '
'; - echo '
'; - echo '
'; - echo '

A un joueur

'; - echo '
'; - echo '

'; - echo '

'; - echo ''; - echo ''; - echo '

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '

'; - - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/shipFeesFinancial.php b/system/views/components/financial/shipFeesFinancial.php deleted file mode 100644 index 47b734a21..000000000 --- a/system/views/components/financial/shipFeesFinancial.php +++ /dev/null @@ -1,95 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -$commanderByBase = []; -foreach ($commander_shipsFeesFinancial as $commander) { - if (!isset($commanderByBase[$commander->getRBase()])) { - $commanderByBase[$commander->getRBase()] = []; - } - - $commanderByBase[$commander->getRBase()][] = $commander; -} - -echo '
'; - echo '
'; - echo 'flottes'; - echo '

Entretien

'; - echo 'Entretien des vaisseaux'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($ob_impositionFinancial as $base) { - $totalBase = Game::getFleetCost($base->shipStorage, FALSE); - $cbb = isset($commanderByBase[$base->getId()]) - ? $commanderByBase[$base->getId()] : []; - - foreach ($cbb as $commander) { - $totalBase += Game::getFleetCost($commander->getNbrShipByType()); - } - - $baseTransaction = 0; - foreach ($transaction_shipsFeesFinancial as $t) { - if ($t->rPlace == $base->getId()) { - $baseTransaction += ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity; - } - } - - echo '
  • '; - echo ''; - echo ''; - echo ''; - - echo '' . $base->getName() . ''; - echo ''; - echo Format::numberFormat($totalBase); - echo 'crédits'; - echo ''; - - echo '
      '; - echo '
    • '; - echo 'Dans le hangar'; - echo ''; - echo Format::numberFormat(Game::getFleetCost($base->shipStorage, FALSE)); - echo ''; - echo '
    • '; - - echo '
    • '; - echo 'En vente'; - echo ''; - echo Format::numberFormat($baseTransaction); - echo ''; - echo '
    • '; - - foreach ($cbb as $commander) { - echo '
    • '; - echo '' . CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->name . ''; - echo ''; - echo Format::numberFormat(Game::getFleetCost($commander->getNbrShipByType())); - echo ''; - echo '
    • '; - } - echo '
    '; - echo '
  • '; - } - - echo '
  • '; - echo 'total des coûts'; - echo ''; - echo Format::numberFormat($financial_totalShipsFees); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

Les frais d\'entretien des vaisseaux sont nécessaires pour que les différents appareils continuent à voler sans risque. Ils représentent une part importante de vos finances et sont par nature très volatiles, pensez donc à garder un oeil dessus.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/financial/taxOutFinancial.php b/system/views/components/financial/taxOutFinancial.php deleted file mode 100755 index 0d0376d7a..000000000 --- a/system/views/components/financial/taxOutFinancial.php +++ /dev/null @@ -1,58 +0,0 @@ -getContainer(); -$taxCoeff = $this->getContainer()->getParameter('zeus.player.tax_coeff'); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo ''; - echo '

Redevances

'; - echo 'Redevances aux factions'; - echo '
'; - echo '
'; - echo '
'; - echo '
    '; - foreach ($ob_taxOutFinancial as $base) { - $baseTaxOut = - (Game::getTaxFromPopulation($base->getPlanetPopulation(), $base->typeOfBase, $taxCoeff) + - (Game::getTaxFromPopulation($base->getPlanetPopulation(), $base->typeOfBase, $taxCoeff) * $taxBonus / 100)) - * $base->getTax() / 100 - ; - - echo '
  • '; - echo '' . $base->getName() . ' [' . $base->getTax() . '% de taxe]'; - echo ''; - echo Format::numberFormat($baseTaxOut); - echo 'crédits'; - echo ''; - echo '
  • '; - } - - echo '
  • '; - echo 'total de la redevance'; - echo ''; - echo Format::numberFormat($financial_totalTaxOut); - echo 'crédits'; - echo ''; - echo '
  • '; - echo '
'; - - echo '

La redevance de faction est une taxe que vous devez payer. Cette taxe est versée à la faction qui a le contrôle - du secteur dans lequel vous vous situez. De ce fait, vous pouvez très bien verser un impôt à une faction ennemie. Cette taxe est - versée chaque relève.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/commanderDetail.php b/system/views/components/fleet/commanderDetail.php deleted file mode 100755 index 337b62b9b..000000000 --- a/system/views/components/fleet/commanderDetail.php +++ /dev/null @@ -1,123 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - if ($commander_commanderDetail->statement == Commander::AFFECTED) { - echo '
'; - echo 'Retirer tous les vaisseaux'; - echo '×'; - echo 'E'; - echo '
'; - } - - echo '
'; - echo 'État de l\'officier'; - if ($commander_commanderDetail->statement == Commander::INSCHOOL) { - echo 'À l\'école'; - } elseif ($commander_commanderDetail->statement == Commander::AFFECTED) { - echo 'À quai'; - } elseif ($commander_commanderDetail->statement == Commander::MOVING) { - echo 'En mission'; - } else { - echo 'Tombé au combat'; - } - echo '
'; - - if ($commander_commanderDetail->statement == Commander::MOVING) { - echo '
'; - echo 'Mission'; - switch ($commander_commanderDetail->getTravelType()) { - case Commander::MOVE: - echo 'Déplacement'; - echo '
'; - echo '
'; - echo 'Vers'; - echo '' . $commander_commanderDetail->destinationPlaceName . ''; - break; - case Commander::LOOT: - echo 'Pillage'; - echo '
'; - echo '
'; - echo 'Cible'; - echo '' . $commander_commanderDetail->destinationPlaceName . ''; - break; - case Commander::COLO: - echo 'Colonisation'; - echo '
'; - echo '
'; - echo 'Cible'; - echo '' . $commander_commanderDetail->destinationPlaceName . ''; - break; - case Commander::BACK: - echo 'Retour victorieux'; - echo '
'; - echo '
'; - echo 'Ressources transportées'; - echo '' . Format::numberFormat($commander_commanderDetail->getResources()) . ''; - break; - default: break; - } - echo '
'; - } - - echo '
'; - - echo '
'; - echo 'Nom'; - echo '' . $commander_commanderDetail->getName() . ''; - echo '
'; - echo '
'; - echo 'Victoire' . Format::addPlural($commander_commanderDetail->getPalmares()) . ''; - echo '' . $commander_commanderDetail->getPalmares() . ''; - echo '
'; - echo '
'; - echo 'Grade'; - echo '' . CommanderResources::getInfo($commander_commanderDetail->level, 'grade') . ''; - echo '
'; - - if (in_array($commander_commanderDetail->getStatement(), [Commander::AFFECTED, Commander::MOVING, Commander::INSCHOOL])) { - echo '
'; - echo 'Expérience'; - $expToLvlUp = $commanderManager->experienceToLevelUp($commander_commanderDetail); - $percent = Format::percent($commander_commanderDetail->getExperience() - ($expToLvlUp / 2), $expToLvlUp - ($expToLvlUp / 2)); - echo '' . Format::numberFormat($commander_commanderDetail->getExperience()) . ' / ' . Format::numberFormat($commanderManager->experienceToLevelUp($commander_commanderDetail)) . ''; - echo ''; - echo ''; - echo ''; - echo '
'; - } - - echo '
'; - - echo '
'; - echo 'Salaire de l\'officier'; - echo '' . Format::numberFormat($commander_commanderDetail->level * Commander::LVLINCOMECOMMANDER) . ' crédits'; - echo '
'; - - echo '
'; - echo 'Frais d\'entretien des vaisseaux'; - echo '' . Format::numberFormat(Game::getFleetCost($commander_commanderDetail->getNbrShipByType())) . ' crédits'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/commanderFleet.php b/system/views/components/fleet/commanderFleet.php deleted file mode 100755 index 00f84c61f..000000000 --- a/system/views/components/fleet/commanderFleet.php +++ /dev/null @@ -1,130 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$dockStorage = $ob_commanderFleet->getShipStorage(); -$lineCoord = $commander_commanderFleet->getFormatLineCoord(); - -echo '
'; - echo '
'; - echo '' . $commander_commanderDetail->getName() . ''; - echo '

' . $commander_commanderDetail->name . '

'; - echo '' . CommanderResources::getInfo($commander_commanderDetail->level, 'grade') . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo ''; - echo ''; - for ($i = 5; $i > 0; $i--) { - echo ''; - } - echo ''; - echo ''; - for ($i = 5; $i > 0; $i--) { - echo ''; - } - echo '
#' . $i . '
Ceci représente la composition de votre flotte. Chaque carré montre une escadrille. Vous pouvez remplir cette escadrille en cliquant dessus puis en cliquant sur un type de vaisseau dans les colonnes à droite.

La première colonne représente votre escadrille et la seconde votre hangar.

En pressant CTRL + clic (CMD + clic), vous pouvez transférer le maximum de vaisseaux possible.
'; - if (max($lineCoord) >= $i) { - $nbInColumn = 0; - - foreach ($lineCoord as $k => $v) { - if ($v == $i) { - $nbr = $k + 1; - $nbInColumn++; - - if ($nbr == count($lineCoord)) { - echo ''; - echo '' . $nbr . ''; - echo '---'; - echo ''; - } else { - if ($commander_commanderFleet->getSquadron($k)->getPev() == 0) { - $full = 'full0'; - } elseif ($commander_commanderFleet->getSquadron($k)->getPev() < 50) { - $full = 'full1'; - } elseif ($commander_commanderFleet->getSquadron($k)->getPev() < 99) { - $full = 'full2'; - } else { - $full = 'full3'; - } - - echo ''; - echo '' . $nbr . ''; - echo '' . $commander_commanderFleet->getSquadron($k)->getPev(). '/100'; - echo ''; - } - } - } - - for ($j = $nbInColumn; $j < 5; $j++) { - echo ''; - } - } else { - for ($j = 0; $j < 5; $j++) { - echo ''; - } - } - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -if ($commander_commanderFleet->getStatement() == Commander::AFFECTED) { - echo '
'; - echo '
'; - echo '/'; - echo '/'; - echo '
'; - echo '
'; - echo ''; - echo '
'; - echo '
'; -} diff --git a/system/views/components/fleet/list-report.php b/system/views/components/fleet/list-report.php deleted file mode 100644 index d69e01666..000000000 --- a/system/views/components/fleet/list-report.php +++ /dev/null @@ -1,76 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$sessionToken = $session->get('token'); - -echo '
'; - echo '
'; - if ($type_listReport == 1) { - echo '

Archives Militaires

'; - } - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . ($request->cookies->get('p' . Params::SHOW_ATTACK_REPORT, Params::$params[Params::SHOW_ATTACK_REPORT]) ? 'Rapports d\'attaque' : 'Rapports de défense') . ''; - echo ''; - echo ''; - echo 'R'; - echo ''; - echo ''; - echo '×'; - echo ''; - echo '
'; - - if (count($report_listReport) > 0) { - echo '
'; - foreach ($report_listReport as $r) { - list($title, $img) = $r->getTypeOfReport($session->get('playerInfo')->get('color')); - - echo '
'; - echo '
'; - echo ''; - echo '
'; - - echo '
'; - echo '' . $title . ''; - echo Chronos::transform($r->dFight); - echo '
'; - - echo '
'; - echo ''; - - - echo '
'; - echo '
'; - } - echo '
'; - } else { - echo '

Il n\'y a aucun rapport de combat dans vos archives militaires.

'; - } - - if ($request->query->get('mode') === 'archived') { - echo 'Voir tous les rapports'; - } else { - echo 'Voir les archives des rapports'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/listFleet.php b/system/views/components/fleet/listFleet.php deleted file mode 100755 index 00117ac7a..000000000 --- a/system/views/components/fleet/listFleet.php +++ /dev/null @@ -1,148 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); -$mediaPath = $container->getParameter('media'); -$appRoot = $container->getParameter('app_root'); - -echo '
'; - echo '
'; - echo '

Centre des opérations

'; - echo '
'; - echo '
'; - echo '
'; - echo '' . ($request->cookies->get('p' . Params::LIST_ALL_FLEET, Params::$params[Params::LIST_ALL_FLEET]) ? 'Afficher uniquement la base courante' : 'Afficher toutes les bases') . ''; - - foreach ($obsets as $base) { - echo '
'; - echo '' . $base['info']['name'] . ''; - - echo '

'; - echo PlaceResource::get($base['info']['type'], 'name') . ' '; - echo $base['info']['name']; - echo ' (affecter un officier)'; - echo '

'; - - foreach ($base['fleets'] as $commander) { - - $reversed = $commander->rPlayer != $session->get('playerId') || $commander->travelType == Commander::BACK; - - - echo '
'; - echo '
'; - if ($commander->rPlayer != $session->get('playerId')) { - echo ''; - } elseif ($commander->statement == Commander::AFFECTED) { - echo ''; - } elseif ($commander->statement == Commander::MOVING) { - switch ($commander->travelType) { - case Commander::MOVE: echo ''; break; - case Commander::LOOT: echo ''; break; - case Commander::COLO: echo ''; break; - case Commander::BACK: echo ''; break; - default: break; - } - } - echo ''; - echo CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->name . ', ' ; - - if ($commander->rPlayer != $session->get('playerId')) { - - switch ($commander->travelType) { - case Commander::LOOT: $type = 'tente de vous piller'; break; - case Commander::COLO: $type = 'tente de vous conquérir'; break; - default: $type = 'erreur'; break; - } - echo $type; - } elseif ($commander->statement == Commander::AFFECTED) { - echo 'à quai'; - } elseif ($commander->statement == Commander::MOVING) { - switch ($commander->travelType) { - case Commander::MOVE: echo 'se déplace'; break; - case Commander::LOOT: echo 'tente un pillage'; break; - case Commander::COLO: echo 'tente une colonisation'; break; - case Commander::BACK: echo 'revient avec ' . Format::number($commander->resources) . ' ressources'; break; - default: break; - } - } - - echo (($commander->rPlayer == $session->get('playerId')) ) - ? ' | ' . Format::number($commander->getPev()) . ' pev' - : ' '; - - if ($commander->rPlayer == $session->get('playerId') && $commander->statement == Commander::MOVING && $commander->travelType != Commander::BACK) { - echo ' annuler la mission'; - } - echo ''; - echo '
'; - - echo '
'; - if ($commander->statement == Commander::MOVING) { - $passeTime = $reversed - ? Utils::interval($commander->dArrival, Utils::now(), 's') - : Utils::interval($commander->dStart, Utils::now(), 's'); - $restTime = Utils::interval($commander->dArrival, Utils::now(), 's'); - $totalTime = Utils::interval($commander->dStart, $commander->dArrival, 's'); - - echo '
'; - echo '
'; - echo $reversed - ? '' - : ''; - echo '' . Chronos::secondToFormat($restTime, 'lite') . ''; - echo '
'; - echo '
'; - } else { - echo ''; - } - echo '
'; - - if ($commander->statement == Commander::MOVING) { - echo '
'; - echo $commander->travelType == Commander::BACK - ? '' - : ''; - echo ''; - echo $reversed - ? '' . $commander->startPlaceName . '' - : '' . $commander->destinationPlaceName . ''; - - if ($commander->rPlayer != $session->get('playerId')) { - echo ' (' . $commander->playerName . ')'; - } - echo ''; - echo '
'; - } - - if ($commander->rPlayer == $session->get('playerId')) { - echo ''; - } - echo '
'; - } - - if (count($base['fleets']) == 0) { - echo 'Aucun commandant affecté autour de cette planète'; - } - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/listSpy.php b/system/views/components/fleet/listSpy.php deleted file mode 100755 index 6537bb1c0..000000000 --- a/system/views/components/fleet/listSpy.php +++ /dev/null @@ -1,56 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -$i = 0; - -echo '
'; - echo '
'; - echo '

Archives d\'espionnage

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'tout supprimer'; - echo '
'; - if (count($spyreport_listSpy) > 0) { - echo '
'; - foreach ($spyreport_listSpy as $r) { - echo '
'; - echo '
'; - echo ''; - echo '
'; - - echo '
'; - echo '' . $r->placeName . ''; - echo Chronos::transform($r->dSpying); - echo '
'; - - echo '
'; - echo ''; - echo '
'; - echo '
'; - - $i++; - } - echo '
'; - } else { - echo '

Il n\'y a aucun rapport d\'espionnage dans vos archives.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/manage-report.php b/system/views/components/fleet/manage-report.php deleted file mode 100644 index 3d8f06962..000000000 --- a/system/views/components/fleet/manage-report.php +++ /dev/null @@ -1,20 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Supprimer le rapport'; - - echo 'Archiver le rapport'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/memorial.php b/system/views/components/fleet/memorial.php deleted file mode 100755 index d75780ba6..000000000 --- a/system/views/components/fleet/memorial.php +++ /dev/null @@ -1,18 +0,0 @@ -'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - var_dump($commander_memorial); - echo '
'; - echo '
'; -echo '
'; \ No newline at end of file diff --git a/system/views/components/fleet/memorialTxt.php b/system/views/components/fleet/memorialTxt.php deleted file mode 100755 index 7a0c1552d..000000000 --- a/system/views/components/fleet/memorialTxt.php +++ /dev/null @@ -1,22 +0,0 @@ -'; - echo '
'; - echo '

Mémorial

'; - echo '
'; - echo '
'; - echo '
'; - echo '
En l\'honneur de ceux qui ont servi notre faction.
'; - echo 'En l\'honneur de ceux qui sont morts dignement.
'; - echo 'En l\'honneur de ceux qui ont souffert pour nous libérer de l\'oppression.
'; - echo 'Nous leur devons le respect.
'; - echo '
'; - echo '
'; -echo '
'; \ No newline at end of file diff --git a/system/views/components/fleet/overview.php b/system/views/components/fleet/overview.php deleted file mode 100755 index 17fed8b6d..000000000 --- a/system/views/components/fleet/overview.php +++ /dev/null @@ -1,130 +0,0 @@ -getContainer(); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -$appRoot = $container->getParameter('app_root'); - -echo '
'; - echo '
'; - echo '

Aperçu des armées

'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - for ($i = 0; $i < 12; $i++) { - echo ''; - } - echo ''; - echo ''; - - $totalShips = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - - foreach ($obsets as $base) { - $totalShipsBase = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - - echo ''; - echo ''; - - echo ''; - $linePEV = 0; - - for ($i = 0; $i < count($totalShipsBase); $i++) { - echo ''; - - $linePEV += ShipResource::getInfo($i, 'pev') * $base['dock'][$i]; - $totalShips[$i] += $base['dock'][$i]; - $totalShipsBase[$i] += $base['dock'][$i]; - } - echo ''; - echo ''; - - foreach ($base['fleets'] as $commander) { - $commanderShips = $commander->getNbrShipByType(); - $linePEV = 0; - - echo ''; - echo ''; - for ($i = 0; $i < count($totalShipsBase); $i++) { - echo ''; - - $linePEV += ShipResource::getInfo($i, 'pev') * $commanderShips[$i]; - $totalShips[$i] += $commanderShips[$i]; - $totalShipsBase[$i] += $commanderShips[$i]; - } - echo ''; - echo ''; - } - - echo ''; - echo ''; - $linePEV = 0; - - for ($i = 0; $i < count($totalShipsBase); $i++) { - echo ''; - - $linePEV += ShipResource::getInfo($i, 'pev') * $totalShipsBase[$i]; - } - echo ''; - echo ''; - } - - echo ''; - echo ''; - echo ''; - $linePEV = 0; - - for ($i = 0; $i < count($totalShips); $i++) { - echo ''; - - $linePEV += ShipResource::getInfo($i, 'pev') * $totalShips[$i]; - } - echo ''; - echo ''; - echo '
' . ShipResource::getInfo($i, 'codeName') . 'PEV
'; - echo ''; - echo PlaceResource::get($base['info']['type'], 'name') . '
'; - echo '' . $base['info']['name'] . ''; - echo '
'; - echo '
'; - echo ''; - echo 'Vaisseaux dans les hangars'; - echo ''; - echo ''; - echo $base['dock'][$i] == 0 ? '' : ''; - echo $base['dock'][$i]; - echo ''; - echo '' . $linePEV . '
'; - echo ''; - echo CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->name . ''; - echo ''; - echo ''; - echo $commanderShips[$i] == 0 ? '' : ''; - echo $commanderShips[$i]; - echo ''; - echo '' . $linePEV . '
Total sur la planète'; - echo $totalShipsBase[$i] == 0 ? '' : ''; - echo $totalShipsBase[$i]; - echo ''; - echo '' . $linePEV . '
Total général'; - echo $totalShips[$i] == 0 ? '' : ''; - echo $totalShips[$i]; - echo ''; - echo '' . $linePEV . '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/report.php b/system/views/components/fleet/report.php deleted file mode 100755 index fac8a74f4..000000000 --- a/system/views/components/fleet/report.php +++ /dev/null @@ -1,248 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo '
'; - echo '
'; - echo '' . $attacker_report->name . ''; - echo '

Attaquant

'; - echo '' . $attacker_report->name . ''; - echo '
'; - echo '
'; - echo '
'; - if ($report->rPlayerAttacker == $report->rPlayerWinner) { - echo '
'; - echo 'Victoire'; - echo '
'; - echo '
'; - if ($report->rPlayerAttacker == $session->get('playerId')) { - echo '
'; - echo '' . $report->nameA . ''; - $level = $commanderManager->nbLevelUp($report->levelA, $report->experienceA + $report->expCom); - echo '' . CommanderResources::getInfo($report->levelA, 'grade') . ($level > 0 ? ' a passé ' . $level . ' grade' . Format::addPlural($level) . '' : NULL) . ''; - echo '' . $report->nameA . ''; - echo 'expérience : ' . Format::numberFormat($report->experienceA); - echo ' + ' . Format::numberFormat($report->expCom) . ''; - echo ''; - echo 'victoires : ' . $report->palmaresA . ' + 1'; - echo '' . Format::number($report->resources) . ' ressource' . Format::addPlural($report->resources) . ' gagnée' . Format::addPlural($report->resources) . ''; - echo '
'; - } else { - echo '
'; - echo '' . $report->nameA . ''; - echo '' . CommanderResources::getInfo($report->levelA, 'grade') . ''; - echo '' . $report->nameA . ''; - echo 'expérience : ---'; - echo 'victoire : ---'; - echo ''; - echo '
'; - } - } else { - echo '
'; - echo 'Défaite'; - echo '
'; - echo '
'; - echo '
'; - echo '' . $report->rPlayerDefender . ''; - echo '' . CommanderResources::getInfo($report->levelA, 'grade') . ''; - echo '' . $report->nameA . ''; - if ($report->rPlayerAttacker == $session->get('playerId')) { - echo 'expérience : ' . Format::numberFormat($report->experienceA) . ''; - echo 'victoire : ' . $report->palmaresA . ''; - echo ''; - } else { - echo 'expérience : ---'; - echo 'victoire : ---'; - echo ''; - } - echo '
'; - } - - $PEVBegin = 0; - $PEVDiference = 0; - $PEVEnd = 0; - - for ($i = 0; $i < 12; $i++) { - $PEVBegin += $report->totalInBeginA[$i] * ShipResource::getInfo($i, 'pev'); - $PEVDiference += $report->diferenceA[$i] * ShipResource::getInfo($i, 'pev'); - $PEVEnd += $report->totalAtEndA[$i] * ShipResource::getInfo($i, 'pev'); - } - - echo '
'; - echo ''; - for ($i = 0; $i < 1; $i++) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
Evolution des PEV' . (($PEVBegin == 0) ? '—' : $PEVBegin) . '' . (($PEVDiference == 0) ? '—' : $PEVDiference) . '' . (($PEVEnd == 0) ? '—' : $PEVEnd) . '
'; - echo '
'; - - echo '
'; - echo ''; - for ($i = 0; $i < 12; $i++) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
' . ShipResource::getInfo($i, 'name') . '' . (($report->totalInBeginA[$i] == 0) ? '—' : '' . $report->totalInBeginA[$i] . '') . '' . (($report->diferenceA[$i] == 0) ? '—' : '-' . $report->diferenceA[$i] . '') . '' . (($report->totalAtEndA[$i] == 0) ? '—' : '' . $report->totalAtEndA[$i] . '') . '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - if ($defender_report == FALSE) { - echo 'Rebelle'; - echo '

Défenseur

'; - echo 'Rebelle'; - } else { - echo '' . $defender_report->name . ''; - echo '

Défenseur

'; - echo '' . $defender_report->name . ''; - } - echo '
'; - echo '
'; - echo '
'; - if ($report->rPlayerDefender == $report->rPlayerWinner) { - echo '
'; - echo 'Victoire'; - echo '
'; - echo '
'; - if ($report->rPlayerDefender == $session->get('playerId')) { - echo '
'; - echo '' . $report->nameD . ''; - $level = $commanderManager->nbLevelUp($report->levelD, $report->experienceD + $report->expCom); - echo '' . CommanderResources::getInfo($report->levelD, 'grade') . ($level > 0 ? ' a passé ' . $level . ' grade' : NULL) . ''; - echo '' . $report->nameD . ''; - echo 'expérience : ' . Format::numberFormat($report->experienceD); - echo ' + ' . Format::numberFormat($report->expCom) . ''; - echo ''; - echo 'victoire : ' . $report->palmaresD . ' + 1'; - echo ''; - echo '
'; - } else { - echo '
'; - echo '' . CommanderResources::getInfo($report->levelD, 'grade') . ''; - if ($report->rPlayerDefender == 0) { - echo '' . $report->nameD . ''; - echo 'Rebelle'; - } else { - echo '' . $report->nameD . ''; - echo '' . $report->nameD . ''; - } - echo 'expérience : ---'; - echo 'victoire : ---'; - echo ''; - echo '
'; - } - } else { - echo '
'; - echo 'Défaite'; - echo '
'; - echo '
'; - if ($report->rPlayerDefender == $session->get('playerId')) { - echo '
'; - echo '' . $report->nameD . ''; - echo '' . CommanderResources::getInfo($report->levelD, 'grade') . ''; - echo '' . $report->nameD . ''; - echo 'expérience : ' . Format::numberFormat($report->experienceD) . ''; - echo 'victoire : ' . $report->palmaresD . ''; - echo ''; - echo '
'; - } else { - echo '
'; - echo '' . $report->nameD . ''; - echo '' . CommanderResources::getInfo($report->levelD, 'grade') . ''; - if ($report->rPlayerDefender == 0) { - echo 'Rebelle'; - } else { - echo '' . $report->nameD . ''; - } - echo 'expérience : ---'; - echo 'victoire : ---'; - echo ''; - echo '
'; - } - } - - /* if ($report->type == Commander::LOOT) { - echo '
'; - echo ''; - echo ''; - if ($report->rPlayerAttacker != $report->rPlayerWinner) { - if ($report->resources == 0) { - echo ''; - } else { - echo ''; - } - } else { - echo ''; - } - echo ''; - echo '
Aucune ressource perdue' . Format::number($report->resources) . ' ressources perdues
'; - echo '
'; - }*/ - - $PEVBegin = 0; - $PEVEnd = 0; - $PEVDiference = 0; - - for ($i = 0; $i < 12; $i++) { - $PEVBegin += $report->totalInBeginD[$i] * ShipResource::getInfo($i, 'pev'); - $PEVEnd += $report->diferenceD[$i] * ShipResource::getInfo($i, 'pev'); - $PEVDiference += $report->totalAtEndD[$i] * ShipResource::getInfo($i, 'pev'); - } - - echo '
'; - echo ''; - for ($i = 0; $i < 1; $i++) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
Evolution des PEV' . (($PEVBegin == 0) ? '—' : $PEVBegin) . '' . (($PEVEnd == 0) ? '—' : $PEVEnd) . '' . (($PEVDiference == 0) ? '—' : $PEVDiference) . '
'; - echo '
'; - - echo '
'; - echo ''; - for ($i = 0; $i < 12; $i++) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
' . ShipResource::getInfo($i, 'name') . '' . (($report->totalInBeginD[$i] == 0) ? '—' : '' . $report->totalInBeginD[$i] . '') . '' . (($report->diferenceD[$i] == 0) ? '—' : '-' . $report->diferenceD[$i] . '') . '' . (($report->totalAtEndD[$i] == 0) ? '—' : '' . $report->totalAtEndD[$i] . '') . '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/fleet/spyReport.php b/system/views/components/fleet/spyReport.php deleted file mode 100755 index 429807867..000000000 --- a/system/views/components/fleet/spyReport.php +++ /dev/null @@ -1,183 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo ($spyreport->rEnemy == 0) - ? '' . $spyreport->enemyName . '' - : '' . $spyreport->enemyName . ''; - echo '

' . $spyreport->placeName . '

'; - echo '' . $spyreport->enemyName . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Opération de ' . Format::number($spyreport->price) . ' crédits'; - echo ''; - switch ($spyreport->type) { - case SpyReport::TYP_NOT_CAUGHT: echo 'L\'ennemi ne sait rien'; break; - case SpyReport::TYP_ANONYMOUSLY_CAUGHT: echo 'L\'ennemi ne vous soupçonne pas'; break; - case SpyReport::TYP_CAUGHT: echo 'L\'ennemi vous a vu'; break; - default: break; - } - echo ''; - echo '' . $spyreport->success . ' % de réussite de l\'espionnage'; - echo '×'; - echo '
'; - - echo 'I'; - echo 'II'; - - $lLine = 0; $rLine = 0; - $llp = PlaceResource::get($spyreport->typeOfOrbitalBase, 'l-line-position'); - $rlp = PlaceResource::get($spyreport->typeOfOrbitalBase, 'r-line-position'); - $commanders = unserialize($spyreport->commanders); - - if ($spyreport->success > SpyReport::STEP_FLEET) { - foreach ($commanders as $commander) { - $data = 'data-army="'; - $data .= $spyreport->success > SpyReport::STEP_ARMY - ? json_encode($commander['army']) - : json_encode(array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)); - $data .= '"'; - - echo ''; - echo ($spyreport->success > SpyReport::STEP_MOVEMENT && $commander['statement'] != Commander::AFFECTED) - ? 'plein' - : 'plein'; - echo ''; - echo $spyreport->success > SpyReport::STEP_COMMANDER - ? CommanderResources::getInfo($commander['level'], 'grade') . ' ' . $commander['name'] . '
' - : 'Commandant inconnu
'; - echo $spyreport->success > SpyReport::STEP_PEV - ? $commander['pev'] . ' Pev' - : '??? Pev'; - echo ($spyreport->success > SpyReport::STEP_MOVEMENT && $commander['statement'] != Commander::AFFECTED) - ? '
→ déplacement' - : NULL; - echo '
'; - echo '
'; - - if ($commander['line'] == 1) { - $lLine++; - } else { - $rLine++; - } - } - } - - for ($lLine; $lLine < PlaceResource::get($spyreport->typeOfOrbitalBase, 'l-line'); $lLine++) { - echo ''; - echo $spyreport->success > SpyReport::STEP_FLEET - ? 'vide' - : 'vide'; - echo ''; - } - - for ($rLine; $rLine < PlaceResource::get($spyreport->typeOfOrbitalBase, 'r-line'); $rLine++) { - echo ''; - echo $spyreport->success > SpyReport::STEP_FLEET - ? 'vide' - : 'vide'; - echo ''; - } - - if ($spyreport->typeOfBase != Place::TYP_EMPTY) { - $data = 'data-army="'; - $data .= $spyreport->success > SpyReport::STEP_DOCK - ? json_encode(array_map('intval', unserialize($spyreport->shipsInStorage))) - : json_encode(array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)); - $data .= '"'; - - echo ''; - echo 'chantier'; - echo ''; - } - - echo '
'; - echo '
'; - echo PlaceResource::get($spyreport->typeOfOrbitalBase, 'name') . '
'; - echo '' . $spyreport->placeName . '
'; - echo $spyreport->success > SpyReport::STEP_POINT - ? Format::numberFormat($spyreport->points) - : '???'; - echo ' points'; - echo '
'; - echo ''; - echo 'planète'; - - $science = Game::getImprovementFromScientificCoef($place_spy->coefHistory); - echo '
'; - echo '' . Format::numberFormat($place_spy->population * 1000000) . ' habitants
'; - echo '' . $place_spy->coefResources . ' % coeff. ressource
'; - echo '' . $science . ' % de bonus scientifique'; - echo '
'; - echo '
'; - - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo 'Ressources dans les entrepôts'; - echo ''; - echo $spyreport->success > SpyReport::STEP_RESOURCES - ? Format::number($spyreport->resources) - : '???'; - echo ' ressources'; - echo ''; - echo '
'; - - echo '
'; - echo 'Investissement dans le contre-espionnage'; - echo ''; - echo $spyreport->success > SpyReport::STEP_ANITSPY - ? Format::number($spyreport->antiSpyInvest) - : '???'; - echo ' crédits'; - echo ''; - echo '
'; - - echo '
'; - echo 'Revenus des routes commerciales'; - echo ''; - echo $spyreport->success > SpyReport::STEP_RC - ? Format::number($spyreport->commercialRouteIncome) - : '???'; - echo ' crédits'; - echo ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/invisible.php b/system/views/components/invisible.php deleted file mode 100644 index 53c072f8b..000000000 --- a/system/views/components/invisible.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/system/views/components/notif/archived.php b/system/views/components/notif/archived.php deleted file mode 100755 index a79e53d8e..000000000 --- a/system/views/components/notif/archived.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Archive des notifications

'; - - foreach ($archivedNotifications as $n) { - $readed = ($n->getReaded()) ? '' : 'unreaded'; - echo '
'; - echo '

' . $n->getTitle() . '

'; - echo '
' . $n->getContent() . '
'; - echo ''; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/notif/last.php b/system/views/components/notif/last.php deleted file mode 100755 index 224ea4d93..000000000 --- a/system/views/components/notif/last.php +++ /dev/null @@ -1,51 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '

Notifications

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'tout marquer comme lu'; - echo '×'; - echo '?'; - echo '
'; - - echo ''; - - if (count($unarchivedNotifications) > 0) { - foreach ($unarchivedNotifications as $n) { - $readed = ($n->getReaded()) ? '' : 'unreaded'; - echo '
'; - echo '

' . $n->getTitle() . '

'; - echo '
' . $n->getContent() . '
'; - echo ''; - echo '
'; - } - } else { - echo '

Il n\'y a aucune notification dans votre boîte de réception.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/params/advertisement.php b/system/views/components/params/advertisement.php deleted file mode 100755 index 6a9016d86..000000000 --- a/system/views/components/params/advertisement.php +++ /dev/null @@ -1,22 +0,0 @@ -'; - echo '
'; - echo '

Paramètres des annonces

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Publicité

'; - echo '

Nous avons ajouté en encart publicitaire en bas à gauche de plusieurs page sur le jeu. Ce n\'est pas du tout définitif. Il s\'agit d\'un test de la part des développeurs du jeu.

'; - echo '

Vous avez ici la possibilité de masquer cet encart si vous le souhaitez. Cependant nous vous rappelons que le jeu est totalement gratuit et que tous les frais actuels sont à notre charge.

'; - echo '

Cela comprend les frais de nom de domaine, les frais d\'hébergement et les heures de travail bénévole.

'; - echo '

Nous vous encourageons donc à laisser ce paramètre activé et à désactiver les bloqueurs de publicités que vous pourriez avoir installé sur votre navigateur. Nous vous en sommes très reconnaissants !

'; - - echo ''; - echo (CTR::$data->get('playerInfo')->get('premium') ? 'Afficher des publicités' : 'Cacher les publicités'); - echo ''; - echo '
'; - echo '
'; -echo '
'; -*/ \ No newline at end of file diff --git a/system/views/components/params/chat.php b/system/views/components/params/chat.php deleted file mode 100644 index 0e950f32d..000000000 --- a/system/views/components/params/chat.php +++ /dev/null @@ -1,57 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo '
'; - echo '
'; - echo '

Paramètres du chat

'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo 'Ouvrir le chat directement'; - echo ''; - - echo '

Ce paramètre permet, si il est activé, de rediriger automatiquement l\'icône chat de la barre de navigation vers le serveur de chat externe.

'; - echo '

Dans le cas contraire, vous serez dirigé vers la page d\'explication du fonctionnement du chat (ici).

'; - - echo '
'; - - echo '

Accès

'; - echo '

Si vous avez déjà fait la manoeuvre, vous pouvez accéder à Discord en cliquant sur le bouton ci-dessous. Sinon, passez à l\'étape suivante.

'; - echo ''; - echo 'Accéder à Discord'; - echo ''; - - echo '
'; - - echo '

Activation du chat

'; - echo '

Premièrement, cliquez sur le lien suivant pour accéder au serveur Asylamba sur Discord :

'; - echo ''; - echo 'Accéder au serveur Asylamba sur Discord'; - echo ''; - - echo '

Vous pourrez y créer un compte. Une fois cette étape faite, vous vous trouvez sur le serveur. Vous n\'avez pas accès à tous les channels car vous n\'êtes pas un utilisateur vérifié. Pour cela, il faut que vous envoyiez un message privé à l\'utilisateur Chicken Bot.

'; - echo '

Une fois la discussion ouverte, écrivez "!me" à Chicken Bot. Il vous répondra alors avec un identifiant (longue suite de chiffres).

'; - echo '

Copiez cet identifiant dans le champ de texte ci-dessous et cliquez sur le bouton.

'; - - echo '
'; - echo '

'; - echo ''; - echo '

'; - echo '

'; - echo '
'; - echo '

Voilà, Chicken Bot vous a donné accès à tous les channels Asylamba ainsi qu\'aux channels privés à votre faction. Bon chat !

'; - - echo '

Un soucis ?

'; - echo '

Si vous n\'arrivez pas à y accéder, contactez un administrateur, ou demandez directement de l\'aide dans le channel "accueil".

'; - - echo '

C\'est quoi Discord ?

'; - echo '

Discord est un outil fait pour les joueurs de jeux vidéo coopératifs. Il permet de discuter avec vos collègues, tant manuscritement que vocalement.

'; - echo '

Cet outil est disponible via navigateur, mais vous pouvez aussi l\'installer sur votre Mac ou PC si vous le souhaitez. Une application Android et iOS est également disponible pour rester connecté en tout temps.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/params/display.php b/system/views/components/params/display.php deleted file mode 100755 index 78a8b254c..000000000 --- a/system/views/components/params/display.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer()->get('app.request'); -$sessionToken = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); - -echo ''; diff --git a/system/views/components/params/general.php b/system/views/components/params/general.php deleted file mode 100755 index c61e319c0..000000000 --- a/system/views/components/params/general.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('token'); -# void -echo '
'; - echo '
'; - echo '

Paramètres

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Abandonner la partie

'; - echo '

Pour abandonner la partie, cliquez sur le bouton ci-dessous. Attention, cette action est irréversible.

'; - echo '

Si vous souhaitez recommencer, vous pouvez abandonner la partie ici et recommencer dans cette partie depuis le portail principal.

'; - echo 'Abandonner la partie'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/player/playerRoleplayProfil.php b/system/views/components/player/playerRoleplayProfil.php deleted file mode 100755 index a0353e3b6..000000000 --- a/system/views/components/player/playerRoleplayProfil.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '

Votre profil

'; - echo '
'; - echo '
'; - echo '
'; - $status = ColorResource::getInfo($session->get('playerInfo')->get('color'), 'status'); - - echo '
'; - echo '' . $status[$player_playerRoleplayProfil->status - 1] . ' de ' . ColorResource::getInfo($session->get('playerInfo')->get('color'), 'popularName') . ''; - echo '' . $player_playerRoleplayProfil->name . ''; - echo '
'; - - echo '
'; - echo ''; - echo '' . $player_playerRoleplayProfil->level . ''; - echo '
'; - - $baseLevelPlayer = $this->getContainer()->getParameter('zeus.player.base_level'); - $exp = $player_playerRoleplayProfil->getExperience(); - $nlv = $baseLevelPlayer * (pow(2, ($player_playerRoleplayProfil->getLevel() - 1))); - $clv = $baseLevelPlayer * (pow(2, ($player_playerRoleplayProfil->getLevel() - 2))); - $prc = ((($exp - $clv) * 200) / $nlv); - - echo '
'; - echo 'expérience'; - echo '' . Format::numberFormat($exp) . ''; - echo '
'; - - echo '
'; - echo 'expérience nécessaire pour le prochain niveau'; - echo '' . Format::numberFormat($nlv) . ''; - echo ''; - echo ''; - echo ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/player/playerTechnicalProfil.php b/system/views/components/player/playerTechnicalProfil.php deleted file mode 100755 index 5b50bf648..000000000 --- a/system/views/components/player/playerTechnicalProfil.php +++ /dev/null @@ -1,59 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$playerBaseLevel = $this->getContainer()->getParameter('zeus.player.base_level'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'voir votre journal'; - echo '
'; - - echo '
'; - echo 'niveau'; - echo '' . $player_playerTechnicalProfil->getLevel() . ''; - echo '
'; - - $exp = $player_playerTechnicalProfil->getExperience(); - $nlv = $playerBaseLevel * (pow(2, ($player_playerTechnicalProfil->getLevel() - 1))); - $clv = $playerBaseLevel * (pow(2, ($player_playerTechnicalProfil->getLevel() - 2))); - $prc = ((($exp - $clv) * 200) / $nlv); - - echo '
'; - echo 'expérience'; - echo ''; - echo Format::numberFormat($exp) . ' / '; - echo Format::numberFormat($nlv); - echo ''; - echo ''; - echo ''; - echo ''; - echo '
'; - - echo '
'; - - echo '
'; - echo 'victoires'; - echo '' . $player_playerTechnicalProfil->getVictory() . ''; - echo '
'; - - echo '
'; - echo 'défaites'; - echo '' . $player_playerTechnicalProfil->getDefeat() . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/publicity.php b/system/views/components/publicity.php deleted file mode 100644 index 1072efcd0..000000000 --- a/system/views/components/publicity.php +++ /dev/null @@ -1,24 +0,0 @@ - -
- get('playerInfo')->get('premium') == 0) { ?> - Annonces (Les masquer ? paramètres)

'; ?> - - - - - -
-
*/ -?> - - \ No newline at end of file diff --git a/system/views/components/rank/faction/front.php b/system/views/components/rank/faction/front.php deleted file mode 100755 index 6b00c8d96..000000000 --- a/system/views/components/rank/faction/front.php +++ /dev/null @@ -1,43 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); - -$factionRankingManager->changeSession($FACTION_RANKING_FRONT); -$f = $factionRankingManager->get(0); - -# display -echo '
'; - echo '
'; - echo '

Faction

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Meilleure faction'; - echo '' . ColorResource::getInfo($f->rFaction, 'popularName') . ''; - echo '
'; - - echo '
'; - echo ''; - echo '
'; - - echo '
'; - echo '' . ColorResource::getInfo($f->rFaction, 'devise') . ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/faction/general.php b/system/views/components/rank/faction/general.php deleted file mode 100755 index 1ba192cf9..000000000 --- a/system/views/components/rank/faction/general.php +++ /dev/null @@ -1,31 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$factionRankingManager->changeSession($FACTION_RANKING_GENERAL); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Général

'; - echo 'Somme des points des joueurs de la faction'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - echo $factionRankingManager->get($i)->commonRender($session->get('playerInfo'), $mediaPath, 'general'); - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/faction/info-victory.php b/system/views/components/rank/faction/info-victory.php deleted file mode 100644 index 502fa30e4..000000000 --- a/system/views/components/rank/faction/info-victory.php +++ /dev/null @@ -1,70 +0,0 @@ -getContainer()->getParameter('points_to_win'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); - -$factionRankingManager->changeSession($FACTION_RANKING_POINTS); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Informations sur les conditions de victoire

'; - - echo '

Les différents classements (général, richesse et territorial) rapportent des points à la faction chaque jour en fonction de la position de cette dernière dans les classements. Ces points sont additionnés et font monter une jauge. Lorsqu\'un faction atteint le nombre de point requis, le serveur se termine et la victoire est revendiquée.'; - - echo '

'; - echo 'Points requis pour mettre fin au serveur'; - echo '' . Format::number($pointsToWin) . ''; - echo '
'; - - echo '

Les différents classements n\'ont pas tous le même poids. Les gain journaliers en fonction du classement et de la position dans ce dernier sont disponibles dans le tableau ci-dessous.'; - - echo '

'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
Position1er2ème3ème4ème5ème
Général+4+3+2+1+0
Richesse+16+12+8+4+0
Territorial+20+15+10+5+0
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/faction/points.php b/system/views/components/rank/faction/points.php deleted file mode 100644 index 02cbbc2e3..000000000 --- a/system/views/components/rank/faction/points.php +++ /dev/null @@ -1,42 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$pointsToWin = $container->getParameter('points_to_win'); -$serverStartTime = $container->getParameter('server_start_time'); -$hoursBeforeStartOfRanking = $container->getParameter('hours_before_start_of_ranking'); - -$factionRankingManager->changeSession($FACTION_RANKING_POINTS); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Classement de victoire

'; - echo 'Classement cumulatif. La victoire est remportée à ' . $pointsToWin . ' points.'; - echo '
'; - echo '
'; - echo '
'; - if (Utils::interval($serverStartTime, Utils::now(), 'h') > $hoursBeforeStartOfRanking) { - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - echo $factionRankingManager->get($i)->commonRender($session->get('playerInfo'), $mediaPath, 'points'); - } - } else { - echo '
'; - echo 'La classement de victoire n\'est pas encore activé. Il le sera à partir du '; - echo '' . date("d.m.Y à H:i:s", strtotime(Utils::addSecondsToDate($serverStartTime, $hoursBeforeStartOfRanking * 3600))) . ''; - echo '
'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/faction/territorial.php b/system/views/components/rank/faction/territorial.php deleted file mode 100755 index d95221ab0..000000000 --- a/system/views/components/rank/faction/territorial.php +++ /dev/null @@ -1,30 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$factionRankingManager->changeSession($FACTION_RANKING_TERRITORIAL); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Territorial

'; - echo 'Nombre de points des secteurs controlés'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - echo $factionRankingManager->get($i)->commonRender($session->get('playerInfo'), $mediaPath, 'territorial'); - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/faction/wealth.php b/system/views/components/rank/faction/wealth.php deleted file mode 100755 index b205180d9..000000000 --- a/system/views/components/rank/faction/wealth.php +++ /dev/null @@ -1,30 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$factionRankingManager->changeSession($FACTION_RANKING_WEALTH); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Richesse

'; - echo 'Revenu des routes commerciales de la faction'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $factionRankingManager->size(); $i++) { - echo $factionRankingManager->get($i)->commonRender($session->get('playerInfo'), $mediaPath, 'wealth'); - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/armies.php b/system/views/components/rank/player/armies.php deleted file mode 100755 index e5f983561..000000000 --- a/system/views/components/rank/player/armies.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_ARMIES); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Armée

'; - echo 'Total des PEV'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->armiesPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'armies', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/butcher.php b/system/views/components/rank/player/butcher.php deleted file mode 100755 index f9ea05726..000000000 --- a/system/views/components/rank/player/butcher.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_BUTCHER); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Boucher

'; - echo 'PEV détruits moins PEV perdus'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->butcherPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'butcher', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/fight.php b/system/views/components/rank/player/fight.php deleted file mode 100755 index 32ccefeb4..000000000 --- a/system/views/components/rank/player/fight.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_FIGHT); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Combattant

'; - echo 'Total des victoires moins les défaites'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->fightPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'fight', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/front.php b/system/views/components/rank/player/front.php deleted file mode 100755 index e738f4f4e..000000000 --- a/system/views/components/rank/player/front.php +++ /dev/null @@ -1,44 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); - -$container = $this->getContainer(); -$mediaPath = $container->getParameter('media'); -$playerRankingManager->changeSession($PLAYER_RANKING_FRONT); -$p = $playerRankingManager->get(0); -$status = ColorResource::getInfo($p->color, 'status'); - -# display -echo '
'; - echo '
'; - echo '

Joueur

'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'Meilleur joueur'; - echo '
'; - - echo '
'; - echo '' . $status[$p->status - 1] . ' de ' . ColorResource::getInfo($p->color, 'popularName') . ''; - echo '' . $p->name . ''; - echo '
'; - - echo '
'; - echo ''; - echo '
'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/general.php b/system/views/components/rank/player/general.php deleted file mode 100755 index d42deddf4..000000000 --- a/system/views/components/rank/player/general.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_GENERAL); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Général

'; - echo 'Total de vos possessions'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->generalPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'general', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/resources.php b/system/views/components/rank/player/resources.php deleted file mode 100755 index 0f94db9c1..000000000 --- a/system/views/components/rank/player/resources.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_RESOURCES); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Mineur

'; - echo 'Production totale par relève'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->resourcesPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'resources', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/stats.php b/system/views/components/rank/player/stats.php deleted file mode 100755 index 66e6babcf..000000000 --- a/system/views/components/rank/player/stats.php +++ /dev/null @@ -1,33 +0,0 @@ -getContainer()->getParameter('app_root'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

A propos

'; - - echo '
'; - echo 'Joueurs actifs'; - echo '' . Format::number($playerManager->countActivePlayers()) . ''; - echo '?'; - echo '
'; - - echo '
'; - echo 'Joueurs inscrits'; - echo '' . Format::number($playerManager->countAllPlayers()) . ''; - echo '
'; - - echo '

Le classement est mis à jour tous les jours à 3h (UTC+1) du matin.

'; - - echo '
'; - - echo 'Voir le haut du classement'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/trader.php b/system/views/components/rank/player/trader.php deleted file mode 100755 index 21c903347..000000000 --- a/system/views/components/rank/player/trader.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_TRADER); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Trader

'; - echo 'Revenu de toutes les routes commerciales par relève'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->traderPosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'trader', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/rank/player/xp.php b/system/views/components/rank/player/xp.php deleted file mode 100755 index 4e3515d2d..000000000 --- a/system/views/components/rank/player/xp.php +++ /dev/null @@ -1,45 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$playerRankingManager->changeSession($PLAYER_RANKING_XP); - -echo '
'; - echo '
'; - echo 'ressource'; - echo '

Expérience

'; - echo 'Total accumulé'; - echo '
'; - echo '
'; - echo '
'; - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - $p = $playerRankingManager->get($i); - - if ($i == 0 && $p->experiencePosition != 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - echo $p->commonRender($session->get('playerId'), 'xp', $appRoot, $mediaPath); - - if ($i == $playerRankingManager->size() - 1) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/sponsorship/infos.php b/system/views/components/sponsorship/infos.php deleted file mode 100644 index ff3f13604..000000000 --- a/system/views/components/sponsorship/infos.php +++ /dev/null @@ -1,24 +0,0 @@ -'; - echo '
'; - echo '

Parrainage

'; - echo '
'; - echo '
'; - echo '
'; - echo '

Parrainez vos amis !

'; - echo '

En parrainant vos amis vous leur faites découvrir un jeu incroyable tout en nous aidant à trouver de nouveaux joueurs. De plus, vous vous donnez un petit coup de pouce bienvenu. Alors qu\'attendez vous !

'; - - echo '

Avantages

'; - echo '

Pour chacun de vos amis qui crée un compte, vous recevrez 1 000 crédits. De plus, lorsqu\'il attendra le niveau 3, vous recevrez :

'; - echo '
1 000 000 crédits
'; - echo '

Et cela est valable pour toutes les personnes que vous parrainez. Propagez donc le jeu autour de vous, à vos amis, à vos familles, sur Facebook, etc.

'; - - echo '

Conditions

'; - echo '

Attention toutefois, ces gains pourraient vous donner envie de créer de faux comptes. Si nous remarquons que vous possédez plusieurs comptes, ils seront tous supprimés sans préavis. Soyez donc fair-play.

'; - - /*echo '

Concours

'; - echo '

De plus un concours est mis en place pour gagner de gros prix, à savoir des vaisseaux (Phenix et autre). Le x x 201x, nous compterons les points de parrainage de tout le monde. Un filleul niveau 1 rapporte 1 point, un filleul niveau 2 rapporte 2 points, etc. Les joueurs du top 3 se verront recevoir des prix.

';*/ - echo '
'; - echo '
'; -echo ''; \ No newline at end of file diff --git a/system/views/components/sponsorship/list-godson.php b/system/views/components/sponsorship/list-godson.php deleted file mode 100644 index dc61d6e2c..000000000 --- a/system/views/components/sponsorship/list-godson.php +++ /dev/null @@ -1,34 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$godSons = $playerManager->getGodSons($session->get('playerId')); - -# display -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Liste de vos filleuls

'; - - foreach ($godSons as $player) { - echo '
'; - echo ''; - echo '' . $player->name . ''; - echo ''; - echo '' . $player->name . ''; - echo '' . $player->name . ''; - echo 'niveau ' . $player->level . ''; - echo '
'; - } - - if (count($godSons) === 0) { - echo '

Vous n\'avez encore aucun filleul.

'; - } - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/sponsorship/send-mail.php b/system/views/components/sponsorship/send-mail.php deleted file mode 100644 index 4ffb08228..000000000 --- a/system/views/components/sponsorship/send-mail.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$sessionToken = $session->get('token'); - -# display -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

Propagez votre lien

'; - - echo '

Vous pouvez coller ce lien sur vos profils de vos réseaux sociaux ou les partager, toute personne qui s\'inscrira à Asylamba après avoir cliqué sur ce lien sera considérée comme votre filleul.

'; - - echo '

Copiez ce lien

'; - echo '

'; - echo ''; - echo '

'; - - - echo '

Envoyez un email

'; - - echo '
'; - echo '

Adresse e-mail du filleul

'; - echo '

'; - echo ''; - echo '

'; - echo '

'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - diff --git a/system/views/components/tech/infoTech.php b/system/views/components/tech/infoTech.php deleted file mode 100755 index d5941baeb..000000000 --- a/system/views/components/tech/infoTech.php +++ /dev/null @@ -1,53 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $name . '

'; - echo 'x'; - - echo '

' . $shortDescription . '

'; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
coût en ressource' . Format::numberFormat($resource) . ' ressource
coût en crédit' . Format::numberFormat($credit) . ' credit
temps' . Chronos::secondToFormat($time, 'lite') . ' relève
points' . Format::numberFormat($points) . '
'; - - # description - echo '

Prérequis pour le prochain niveau

'; - echo '

'; - echo 'Technosphère, niv. ' . $technosphere . '
'; - foreach ($researchList as $research) { - echo $research[0] . ', niv. ' . $research[1]; - echo $research[2] ? '' : NULL; - echo '
'; - } - echo '

'; - - # description - echo '

Description

'; - echo '

' . $description . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/components/tech/university.php b/system/views/components/tech/university.php deleted file mode 100755 index 064da6e1c..000000000 --- a/system/views/components/tech/university.php +++ /dev/null @@ -1,260 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$researchHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\ResearchHelper::class); - -echo '
'; - echo '
'; - echo ''; - echo '

Université

'; - echo 'recherche & développement'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'investissements alloués à l\'université'; - echo ''; - echo Format::numberFormat($player_university->iUniversity); - echo ' crédit'; - echo ''; - echo ''; - echo '
'; - - echo $session->get('playerBonus')->get(PlayerBonus::UNI_INVEST) == 0 - ? '
' - : '
'; - echo 'bonus d\'efficacité d\'investissement'; - echo ''; - echo $session->get('playerBonus')->get(PlayerBonus::UNI_INVEST) . ' %'; - echo ''; - echo '
'; - - echo '
'; - - echo '
'; - echo 'sciences naturelles'; - echo ''; - echo '' . $player_university->partNaturalSciences . ' %'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '-'; - echo '+'; - echo ''; - echo '
'; - echo '
'; - echo 'ingénierie informatique'; - echo ''; - echo '' . $player_university->partInformaticEngineering . ' %'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '-'; - echo '+'; - echo ''; - echo '
'; - echo '
'; - echo 'sciences politiques'; - echo ''; - echo '' . $player_university->partLifeSciences . ' %'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '-'; - echo '+'; - echo ''; - echo '
'; - echo '
'; - echo 'sciences économiques & sociales'; - echo ''; - echo '' . $player_university->partSocialPoliticalSciences . ' %'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '-'; - echo '+'; - echo ''; - echo '
'; - - $rest = 100 - $player_university->partLifeSciences - $player_university->partNaturalSciences - - $player_university->partInformaticEngineering - $player_university->partSocialPoliticalSciences; - $visibility = ($rest == 0) ? 'style="display: none;"' : ''; - echo '
'; - echo 'non attribué'; - echo ''; - echo '' . $rest . ' %'; - echo ''; - echo '
'; - - echo '

Augmente ou baisse tes investissements par 10% avec "CTRL + clic" ou "CMD + clic".

'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'part pour les sciences naturelles'; - echo ''; - echo '' . Format::numberFormat(round($player_university->iUniversity * $player_university->partNaturalSciences / 100)) . ''; - echo ' crédit'; - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::MATH, 'name') . ''; - echo 'niveau ' . $research_university->mathLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::CHEM, 'name') . ''; - echo 'niveau ' . $research_university->chemLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::PHYS, 'name') . ''; - echo 'niveau ' . $research_university->physLevel . ''; - echo '
'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'part pour les sciences politiques'; - echo ''; - echo '' . Format::numberFormat(round($player_university->iUniversity * $player_university->partLifeSciences / 100)) . ''; - echo ' crédit'; - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::LAW, 'name') . ''; - echo 'niveau ' . $research_university->bioLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::COMM, 'name') . ''; - echo 'niveau ' . $research_university->mediLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo 'part pour l\'ingénierie informatique'; - echo ''; - echo '' . Format::numberFormat(round($player_university->iUniversity * $player_university->partInformaticEngineering / 100)) . ''; - echo ' crédit'; - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::NETWORK, 'name') . ''; - echo 'niveau ' . $research_university->networkLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::ALGO, 'name') . ''; - echo 'niveau ' . $research_university->algoLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo '' . $researchHelper->getInfo(Research::STAT, 'name') . ''; - echo 'niveau ' . $research_university->statLevel . ''; - echo '
'; - echo '
'; - - echo '
'; - - echo '
'; - echo 'part pour les sciences économiques & sociales'; - echo ''; - echo '' . Format::numberFormat(round($player_university->iUniversity * $player_university->partSocialPoliticalSciences / 100)) . ''; - echo ' crédit'; - echo ''; - echo '
'; - - echo '
'; - echo '
'; - echo ''; - echo 'Economie'; - echo 'niveau ' . $research_university->econoLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo ''; - echo 'Psychologie'; - echo 'niveau ' . $research_university->psychoLevel . ''; - echo '
'; - echo '
'; - echo '
'; - echo '
'; -echo '
'; - -echo '
'; - echo '
'; - echo '

À propos

'; - echo '
'; - echo '
'; - echo '
'; - echo '

L’Université est une résidence qui assemble en son sein la recherche, la conservation et la transmission - de différents domaines de la connaissance. Ce bâtiment vous permettra d’attribuer des crédits dans différents domaines de recherche. - Ces différents domaines de recherche évolueront en fonction du nombre de crédits investis dans ceux-ci.

- Cette résidence est la plus importante de votre planète, car en investissant des crédits elle permettra de débloquer, de donner des - bonus non seulement aux bâtiments de votre planète, mais également à ceux de votre base orbitale et à chacun de vos vaisseaux.

- Chaque fois qu’un type de technologie est découvert dans votre université, une nouvelle technologie sera alors disponible dans la Technosphère.

- Pensez à toujours allouer des crédits dans votre université pour optimiser au maximum vos flottes et vos infrastructures.

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/pages/ajax/buildingPanel.php b/system/views/pages/ajax/buildingPanel.php deleted file mode 100755 index 4fd7183f0..000000000 --- a/system/views/pages/ajax/buildingPanel.php +++ /dev/null @@ -1,161 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); - -$building = $request->query->get('building'); -$currentLevel = $request->query->get('lvl'); - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . $orbitalBaseHelper->getBuildingInfo($building, 'frenchName') . '

'; - echo 'x'; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - switch ($building) { - case OrbitalBaseResource::GENERATOR: - echo ''; - break; - case OrbitalBaseResource::REFINERY: - echo ''; - break; - case OrbitalBaseResource::STORAGE: - echo ''; - break; - case OrbitalBaseResource::DOCK1: - echo ''; - echo ''; - break; - case OrbitalBaseResource::DOCK2: - echo ''; - echo ''; - break; - case OrbitalBaseResource::TECHNOSPHERE: - echo ''; - break; - case OrbitalBaseResource::COMMERCIAL_PLATEFORME: - echo ''; - break; - case OrbitalBaseResource::RECYCLING: - echo ''; - break; - case OrbitalBaseResource::SPATIOPORT: - echo ''; - break; - default: - break; - } - echo ''; - echo ''; - - $max = $orbitalBaseHelper->getBuildingInfo($building, 'maxLevel', OrbitalBase::TYP_CAPITAL); - - $noteQuantity = 0; - $footnoteArray = array(); - for ($i = 0; $i < $max; $i++) { - $level = $i + 1; - - $state = NULL; - if ($currentLevel !== FALSE) { - if ($currentLevel > $level) { - $state = 'class="small-grey"'; - } elseif ($currentLevel == $level) { - $state = 'class="active"'; - } else { - $state = NULL; - } - } - echo ''; - # generate the exponents for the footnotes - $alreadyANote = FALSE; - $note = ''; - for ($j = 0; $j < 4; $j++) { - if ($i == $orbitalBaseHelper->getInfo($building, 'maxLevel', $j) - 1) { - if (!$alreadyANote) { - $alreadyANote = TRUE; - $noteQuantity++; - $note .= '' . $noteQuantity . ''; - } - $footnoteArray[$j] = $noteQuantity; - } - } - echo ''; - echo ''; - echo ''; - switch ($building) { - case OrbitalBaseResource::GENERATOR: - echo ''; - break; - case OrbitalBaseResource::REFINERY: - echo ''; - break; - case OrbitalBaseResource::STORAGE: - echo ''; - break; - case OrbitalBaseResource::DOCK1: - echo ''; - echo ''; - break; - case OrbitalBaseResource::DOCK2: - echo ''; - echo ''; - break; - case OrbitalBaseResource::TECHNOSPHERE: - echo ''; - break; - case OrbitalBaseResource::COMMERCIAL_PLATEFORME: - echo ''; - break; - case OrbitalBaseResource::RECYCLING: - echo ''; - break; - case OrbitalBaseResource::SPATIOPORT: - echo ''; - break; - default: - break; - } - echo ''; - echo ''; - } - echo '
niv.prixtempsqueuesprod.stockagequeuesstockagequeuesstockagequeuesvaisseauxcollecteursroutespoints
' . $level . $note . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'resourcePrice')) . ' ressources' . Chronos::secondToFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'time'), 'lite') . ' relève' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbQueues')) . '' . Format::numberFormat(Game::resourceProduction($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'refiningCoefficient'), 50)) . ' ressources' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'storageSpace')) . ' ressources' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbQueues')) . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'storageSpace')) . ' pev' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbQueues')) . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'storageSpace')) . ' pev' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbQueues')) . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbCommercialShip')) . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbRecyclers')) . '' . Format::numberFormat($orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'nbRoutesMax')) . '' . $orbitalBaseHelper->getBuildingInfo($building, 'level', $level, 'points') . '
'; - - # generate the footnotes - $quantityArray = array_count_values($footnoteArray); - echo '

'; - foreach ($quantityArray as $footnote => $quantity) { - echo '' . $footnote . ' Niveau maximal pour une base orbitale de type '; - $qty = 0; - foreach ($footnoteArray as $type => $footnoteId) { - if ($footnoteId == $footnote) { - $qty++; - if ($qty > 1) { - echo ($qty == $quantity) ? ' et ' : ', '; - } - echo PlaceResource::get($type, 'name'); - } - } - echo '.
'; - } - echo '

'; - - echo '

A propos

'; - echo '

' . $orbitalBaseHelper->getBuildingInfo($building, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/pages/ajax/conversation/conversation.php b/system/views/pages/ajax/conversation/conversation.php deleted file mode 100644 index 61149295d..000000000 --- a/system/views/pages/ajax/conversation/conversation.php +++ /dev/null @@ -1,31 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); - -# liste des conv's -$display = - ($request->query->get('mode') === ConversationUser::CS_ARCHIVED) - ? ConversationUser::CS_ARCHIVED - : ConversationUser::CS_DISPLAY -; - -$page = $request->query->has('page') - ? $request->query->get('page') - : 1; - -# chargement de toutes les conversations -$conversationManager->newSession(); -$conversationManager->load( - ['cu.rPlayer' => $session->get('playerId'), 'cu.convStatement' => $display], - ['c.dLastMessage', 'DESC'], - [($page - 1) * Conversation::CONVERSATION_BY_PAGE, Conversation::CONVERSATION_BY_PAGE] -); - -$conversation_listmode = TRUE; - -include COMPONENT . 'conversation/list.php'; diff --git a/system/views/pages/ajax/conversation/message.php b/system/views/pages/ajax/conversation/message.php deleted file mode 100644 index d04bc4d10..000000000 --- a/system/views/pages/ajax/conversation/message.php +++ /dev/null @@ -1,50 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationMessageManager = $container->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); -$conversationUserManager = $container->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); - -$page = $request->query->has('page') - ? $request->query->get('page') - : 1; - -# chargement d'une conversation -$conversationManager->newSession(); -$conversationManager->load( - ['c.id' => $request->query->get('conversation'), 'cu.rPlayer' => $session->get('playerId')] -); - -if ($conversationManager->size() == 1) { - # chargement des infos d'une conversation - $conversationUserManager->newSession(); - $conversationUserManager->load(['c.rConversation' => $request->query->get('conversation')]); - - # mis à jour de l'heure de la dernière vue - for ($i = 0; $i < $conversationUserManager->size(); $i++) { - if ($conversationUserManager->get($i)->rPlayer == $session->get('playerId')) { - $dPlayerLastMessage = $conversationUserManager->get($i)->dLastView; - $currentUser = $conversationUserManager->get($i); - - $conversationUserManager->get($i)->dLastView = Utils::now(); - } - } - - # chargement des messages - $conversationMessageManager->newSession(); - $conversationMessageManager->load( - ['c.rConversation' => $request->query->get('conversation')], - ['c.dCreation', 'DESC'], - [($page - 1) * ConversationMessage::MESSAGE_BY_PAGE, ConversationMessage::MESSAGE_BY_PAGE] - ); - - $message_listmode = TRUE; - - include $componentPath . 'conversation/messages.php'; -} diff --git a/system/views/pages/ajax/loadSystem.php b/system/views/pages/ajax/loadSystem.php deleted file mode 100755 index 1b41d9907..000000000 --- a/system/views/pages/ajax/loadSystem.php +++ /dev/null @@ -1,24 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$systemManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SystemManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); - -if ($request->query->has('systemid')) { - $systemId = $request->query->get('systemid'); -} else if ($request->request->has('systemid')) { - $systemId = $request->request->get('systemid'); -} else { - $systemId = FALSE; -} - -if (($system = $systemManager->get($systemId)) !== null) { - # objet place - $places = $placeManager->getSystemPlaces($system); - - # inclusion du "composant" - include $container->getParameter('pages') . 'desktop/mapElement/actionbox.php'; -} else { - return FALSE; -} diff --git a/system/views/pages/ajax/morerank.php b/system/views/pages/ajax/morerank.php deleted file mode 100755 index 18f12fce7..000000000 --- a/system/views/pages/ajax/morerank.php +++ /dev/null @@ -1,55 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); - -$direction = $request->query->get('dir'); -$current = $request->query->get('current'); -$type = $request->query->get('type'); - -if ($direction !== FALSE && $current !== FALSE && $type !== FALSE) { - if (in_array($direction, array('next', 'prev'))) { - if (in_array($type, array('general', 'resources', 'xp', 'fight', 'armies', 'butcher', 'trader'))) { - # var - $fty = ($type == 'xp') - ? 'experience' - : $type; - - $bot = ($direction == 'next') - ? (($current - PlayerRanking::PAGE > 1) ? $current - PlayerRanking::PAGE : 1) - : $current + 1; - - $size = ($bot == 1) - ? $current - 1 - : PlayerRanking::PAGE; - - $S_PRM1 = $playerRankingManager->getCurrentSession(); - $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array($fty . 'Position', 'ASC'), array($bot - 1, $size)); - - if ($direction == 'next' && $bot > 1) { - echo ''; - echo 'afficher les joueurs précédents'; - echo ''; - } - - for ($i = 0; $i < $playerRankingManager->size(); $i++) { - echo $playerRankingManager->get($i)->commonRender($session->get('playerId'), $type, $appRoot, $mediaPath); - } - - if ($direction == 'prev' && $playerRankingManager->size() == PlayerRanking::PAGE) { - echo ''; - echo 'afficher les joueurs suivants'; - echo ''; - } - - $playerRankingManager->changeSession($S_PRM1); - } - } -} diff --git a/system/views/pages/ajax/shipPanel.php b/system/views/pages/ajax/shipPanel.php deleted file mode 100755 index 68b2dc27d..000000000 --- a/system/views/pages/ajax/shipPanel.php +++ /dev/null @@ -1,141 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -$ship = $request->query->get('ship'); - -switch(ShipResource::getInfo($ship, 'class')) { - case 0: - $bonusSPE = $session->get('playerBonus')->get(PlayerBonus::FIGHTER_SPEED); - $bonusATT = $session->get('playerBonus')->get(PlayerBonus::FIGHTER_ATTACK); - $bonusDEF = $session->get('playerBonus')->get(PlayerBonus::FIGHTER_DEFENSE); break; - case 1: - $bonusSPE = $session->get('playerBonus')->get(PlayerBonus::CORVETTE_SPEED); - $bonusATT = $session->get('playerBonus')->get(PlayerBonus::CORVETTE_ATTACK); - $bonusDEF = $session->get('playerBonus')->get(PlayerBonus::CORVETTE_DEFENSE); break; - case 2: - $bonusSPE = $session->get('playerBonus')->get(PlayerBonus::FRIGATE_SPEED); - $bonusATT = $session->get('playerBonus')->get(PlayerBonus::FRIGATE_ATTACK); - $bonusDEF = $session->get('playerBonus')->get(PlayerBonus::FRIGATE_DEFENSE); break; - case 3: - $bonusSPE = $session->get('playerBonus')->get(PlayerBonus::DESTROYER_SPEED); - $bonusATT = $session->get('playerBonus')->get(PlayerBonus::DESTROYER_ATTACK); - $bonusDEF = $session->get('playerBonus')->get(PlayerBonus::DESTROYER_DEFENSE); break; - default: - $bonusSPE = 0; - $bonusATT = 0; - $bonusDEF = 0; break; -} - -echo '
'; - echo '
'; - echo '
'; - echo '
'; - echo '

' . ShipResource::getInfo($ship, 'name') . '

'; - echo 'x'; - - echo '
'; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
coût' . Format::numberFormat(ShipResource::getInfo($ship, 'resourcePrice')) . ' ressource
temps' . Chronos::secondToFormat(ShipResource::getInfo($ship, 'time'), 'lite') . ' relève
pev' . ShipResource::getInfo($ship, 'pev') . ' pev
soute' . Format::numberFormat(ShipResource::getInfo($ship, 'pev') * 250) . ' ressource
entretien en affectation' . Format::numberFormat(ShipResource::getInfo($ship, 'cost')) . ' ressource / relève
entretien à quai' . Format::numberFormat(ceil(ShipResource::getInfo($ship, 'cost') * ShipResource::COST_REDUCTION)) . ' ressource / relève
'; - - echo '

Caractéristiques

'; - - # MAXIMA - $life = ($ship > 5) ? 1600 : 135; - $defense = ($ship > 5) ? 200 : 25; - $speeda = ($ship > 5) ? 25 : 100; - $speedb = ($ship > 5) ? 250 : 150; - $attack = ($ship > 5) ? 700 : 90; - - echo '
'; - $attacks = ShipResource::getInfo($ship, 'attack'); - $eachValues = array_unique($attacks); - $nbr = array_count_values($attacks); - $value = ''; - - foreach ($nbr as $k => $v) { - $bonus = round($k * $bonusATT / 100); - $bonus = $bonus == 0 - ? NULL - : '' . ($bonus > 0 ? '+' : NULL) . $bonus . ''; - $value .= ($v != 1) - ? $v . '×' . $k . $bonus . ' + ' - : $k . $bonus . ' + '; - } - - echo 'attaque'; - echo ' ' . substr($value, 0, -3) . ''; - echo ''; - for ($j = 0; $j < count($attacks); $j++) { - $theme = (($j % 2) == 0) ? 1 : 3; - echo ''; - } - echo ''; - echo '
'; - - $bonus = round(ShipResource::getInfo($ship, 'defense') * $bonusDEF / 100); - $bonus = $bonus == 0 - ? NULL - : '' . ($bonus > 0 ? '+' : NULL) . $bonus . ''; - echo '
'; - echo 'défense'; - echo ' ' . ShipResource::getInfo($ship, 'defense') . $bonus . ''; - echo ''; - echo '
'; - - $bonus = round(ShipResource::getInfo($ship, 'speed') * $bonusSPE / 100); - $bonus = $bonus == 0 - ? NULL - : '' . ($bonus > 0 ? '+' : NULL) . $bonus . ''; - echo '
'; - echo 'maniabilité'; - echo ' ' . ShipResource::getInfo($ship, 'speed') . $bonus . ''; - echo ''; - echo '
'; - - echo '
'; - echo 'coque'; - echo ' ' . ShipResource::getInfo($ship, 'life') . ''; - echo ''; - echo '
'; - - # description - echo '

Description

'; - - echo '

' . ShipResource::getInfo($ship, 'description') . '

'; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/pages/ajax/technoPanel.php b/system/views/pages/ajax/technoPanel.php deleted file mode 100755 index 95f09bb97..000000000 --- a/system/views/pages/ajax/technoPanel.php +++ /dev/null @@ -1,56 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$researchHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\ResearchHelper::class); -$researchManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\ResearchManager::class); -$researchQuantity = $this->getContainer()->getParameter('promethee.research.quantity'); - -$tech = $request->query->get('techno'); -if ($technologyHelper->isATechnology($tech) AND !$technologyHelper->isATechnologyNotDisplayed($tech)) { - - $technos = $technologyManager->getPlayerTechnology($session->get('playerId')); - $S_RSM1 = $researchManager->getCurrentSession(); - $researchManager->newSession(); - $researchManager->load(array('rPlayer' => $session->get('playerId'))); - $research = $researchManager->get(); - $researchManager->changeSession($S_RSM1); - - # toutes les infos sur la technologie : - $name = $technologyHelper->getInfo($tech, 'name'); - $level = $technos->getTechnology($tech); - $image = $technologyHelper->getInfo($tech, 'imageLink'); - - $time = $technologyHelper->getInfo($tech, 'time', $level + 1); - $resource = $technologyHelper->getInfo($tech, 'resource', $level + 1); - $credit = $technologyHelper->getInfo($tech, 'credit', $level + 1); - $points = $technologyHelper->getInfo($tech, 'points', $level + 1); - - $shortDescription = $technologyHelper->getInfo($tech, 'shortDescription'); - $improvementPercentage = $technologyHelper->getImprovementPercentage($tech, $level + 1); - $shortDescription = str_replace('{x}', $improvementPercentage, $shortDescription); - - $description = $technologyHelper->getInfo($tech, 'description'); - - $technosphere = $technologyHelper->getInfo($tech, 'requiredTechnosphere'); - - $requiredResearch = $technologyHelper->getInfo($tech, 'requiredResearch'); - - $researchList = array(); - for ($i = 0; $i < $researchQuantity; $i++) { - if ($requiredResearch[$i] > 0) { - $check = TRUE; - if ($researchManager->getResearchList($research)->get($i) < ($requiredResearch[$i] + $level)) { - $check = FALSE; - } - $researchList[] = array($researchHelper->getInfo($i, 'name'), $requiredResearch[$i] + $level, $check); - } - } - - # component - include $componentPath . 'tech/infoTech.php'; -} diff --git a/system/views/pages/ajax/wsw/place.php b/system/views/pages/ajax/wsw/place.php deleted file mode 100755 index 5d04ecabb..000000000 --- a/system/views/pages/ajax/wsw/place.php +++ /dev/null @@ -1,15 +0,0 @@ -'; - echo '
'; - echo '

Insérer une base

'; - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
'; - - echo '
'; - echo ''; - echo ''; - echo '
'; -echo '
'; diff --git a/system/views/pages/ajax/wsw/player.php b/system/views/pages/ajax/wsw/player.php deleted file mode 100755 index cd0f15624..000000000 --- a/system/views/pages/ajax/wsw/player.php +++ /dev/null @@ -1,13 +0,0 @@ -'; - echo '
'; - echo '

Insérer un joueur

'; - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
'; - - echo ''; - echo ''; -echo ''; diff --git a/system/views/pages/desktop/admin.php b/system/views/pages/desktop/admin.php deleted file mode 100755 index 04977b3de..000000000 --- a/system/views/pages/desktop/admin.php +++ /dev/null @@ -1,38 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$componentPath = $container->getParameter('component'); -# bases loading -if ($session->get('playerInfo')->get('admin') == FALSE) { - $session->addFlashbag('Accès non-autorisé', Flashbag::TYPE_BUG_ERROR); - $response->redirect('profil'); - return; -} - -# background paralax -echo '
'; - -# inclusion des elements -include 'adminElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - # admin component - if (!$request->query->has('view') OR $request->query->get('view') == 'message') { - # main message - include $componentPath . 'admin/message/newOfficialMessage.php'; - include $componentPath . 'default.php'; - } elseif ($request->query->get('view') == 'roadmap') { - # main roadmap - include $componentPath . 'admin/roadmap/addEntry.php'; - include $componentPath . 'default.php'; - } else { - $this->getContainer()->get('app.response')->redirect('404'); - } -echo '
'; diff --git a/system/views/pages/desktop/adminElement/subnav.php b/system/views/pages/desktop/adminElement/subnav.php deleted file mode 100755 index 64c9c42e5..000000000 --- a/system/views/pages/desktop/adminElement/subnav.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/bases.php b/system/views/pages/desktop/bases.php deleted file mode 100755 index 4e7457d07..000000000 --- a/system/views/pages/desktop/bases.php +++ /dev/null @@ -1,87 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); -$recyclingLogManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingLogManager::class); -$componentPath = $container->getParameter('component'); - -# choix de la base -$base = $orbitalBaseManager->get($session->get('playerParams')->get('base')); - -# background paralax -echo '
'; - -# inclusion des elements -include 'basesElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - # obNav component - if (!$request->query->has('view') || $request->query->get('view') === 'main') { - $ob_obSituation = $base; - - $commanders_obSituation = $commanderManager->getBaseCommanders($base->getId(), [Commander::AFFECTED, Commander::MOVING]); - - $ob_index = 0; - $ob_fastView = $base; - $fastView_profil = FALSE; - include $componentPath . 'bases/fastView.php'; - - include $componentPath . 'bases/ob/situation.php'; - include $componentPath . 'bases/ob/base-type.php'; - - if ($session->get('playerBase')->get('ob')->size() > 1) { - include $componentPath . 'bases/ob/leavebase.php'; - } - } elseif ($request->query->get('view') == 'generator' && $base->levelGenerator > 0) { - $ob_generator = $base; - include $componentPath . 'bases/ob/generator.php'; - } elseif ($request->query->get('view') == 'refinery' && $base->levelRefinery > 0) { - $ob_refinery = $base; - include $componentPath . 'bases/ob/refinery.php'; - } elseif ($request->query->get('view') == 'dock1' && $base->levelDock1 > 0) { - $ob_dock1 = $base; - include $componentPath . 'bases/ob/dock1.php'; - } elseif ($request->query->get('view') == 'dock2' && $base->levelDock2 > 0) { - $ob_dock2 = $base; - include $componentPath . 'bases/ob/dock2.php'; - } elseif ($request->query->get('view') == 'technosphere' && $base->levelTechnosphere > 0) { - $ob_tech = $base; - include $componentPath . 'bases/ob/technosphere.php'; - } elseif ($request->query->get('view') == 'commercialplateforme' && $base->levelCommercialPlateforme > 0) { - $ob_compPlat = $base; - include $componentPath . 'bases/ob/comPlat.php'; - } elseif ($request->query->get('view') == 'storage' && $base->levelStorage > 0) { - $ob_storage = $base; - include $componentPath . 'bases/ob/storage.php'; - } elseif ($request->query->get('view') == 'recycling' && $base->levelRecycling > 0) { - $ob_recycling = $base; - - # load recycling missions - $baseMissions = $recyclingMissionManager->getBaseActiveMissions($ob_recycling->rPlace); - $missionsLogs = $recyclingLogManager->getBaseActiveMissionsLogs($ob_recycling->rPlace); - $missionQuantity = count($baseMissions); - - include $componentPath . 'bases/ob/recycling.php'; - if ($missionQuantity === 0) { - include $componentPath . 'default.php'; - } - } elseif ($request->query->get('view') == 'spatioport' && $base->levelSpatioport > 0) { - $ob_spatioport = $base; - include $componentPath . 'bases/ob/spatioport.php'; - } elseif ($request->query->get('view') == 'school') { - $ob_school = $base; - include $componentPath . 'bases/ob/school.php'; - } else { - $this->getContainer()->get('app.response')->redirect('bases'); - } -echo '
'; diff --git a/system/views/pages/desktop/basesElement/subnav.php b/system/views/pages/desktop/basesElement/subnav.php deleted file mode 100755 index 83f74cbf9..000000000 --- a/system/views/pages/desktop/basesElement/subnav.php +++ /dev/null @@ -1,152 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/defaultElement/movers.php b/system/views/pages/desktop/defaultElement/movers.php deleted file mode 100755 index 13dd484f5..000000000 --- a/system/views/pages/desktop/defaultElement/movers.php +++ /dev/null @@ -1,5 +0,0 @@ -'; - echo ''; - echo ''; -echo ''; diff --git a/system/views/pages/desktop/defaultElement/subnav.php b/system/views/pages/desktop/defaultElement/subnav.php deleted file mode 100755 index fba5b5ac8..000000000 --- a/system/views/pages/desktop/defaultElement/subnav.php +++ /dev/null @@ -1,5 +0,0 @@ -'; - echo '
'; - echo '
'; -echo ''; diff --git a/system/views/pages/desktop/diary.php b/system/views/pages/desktop/diary.php deleted file mode 100755 index e817e9784..000000000 --- a/system/views/pages/desktop/diary.php +++ /dev/null @@ -1,9 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); - -$player = $request->query->has('player') - ? $request->query->get('player') - : $session->get('playerId'); -$this->getContainer()->get('app.response')->redirect('embassy/player-' . $player); diff --git a/system/views/pages/desktop/embassy.php b/system/views/pages/desktop/embassy.php deleted file mode 100755 index 8f180f0f3..000000000 --- a/system/views/pages/desktop/embassy.php +++ /dev/null @@ -1,72 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); - -# background paralax -echo '
'; - -# inclusion des elements -include 'embassyElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - if ($request->query->has('player')) { - $player = $request->query->has('player') - ? $request->query->get('player') - : $session->get('playerId'); - $ishim = $request->query->has('player') || $request->query->get('player') !== $session->get('playerId') - ? FALSE - : TRUE; - - $playerBases = $orbitalBaseManager->getPlayerBases($player); - - if (($player_selected = $playerManager->get($player)) && in_array($player_selected->getStatement(), [Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY, Player::BANNED])) { - $player_ishim = $ishim; - $ob_selected = $playerBases; - include $componentPath . 'embassy/diary/search.php'; - - # diaryBases component - $ob_diaryBases = $playerBases; - include $componentPath . 'embassy/diary/bases.php'; - } else { - // @TODO - throw new ErrorException('Le joueur a supprimé son compte ou a été défait.'); - //$response->redirect('profil'); - } - - include $componentPath . 'default.php'; - - } else { - $color = $request->query->has('faction') - ? $request->query->get('faction') - : $session->get('playerInfo')->get('color'); - - if (($faction = $colorManager->get($color)) !== null && $faction->isInGame === true) { - $governmentMembers = $playerManager->getGovernmentMembers($faction->id); - $factions = $colorManager->getInGameFactions(); - # include component - include $componentPath . 'embassy/faction/nav.php'; - - include $componentPath . 'embassy/faction/flag.php'; - include $componentPath . 'embassy/faction/infos.php'; - include $componentPath . 'embassy/faction/government.php'; - - $eraseColor = $faction->id; - include $componentPath . 'faction/data/diplomacy/main.php'; - } else { - $this->getContainer()->get('app.response')->redirect('embassy'); - } - } -echo '
'; diff --git a/system/views/pages/desktop/embassyElement/subnav.php b/system/views/pages/desktop/embassyElement/subnav.php deleted file mode 100644 index 3b2f6c514..000000000 --- a/system/views/pages/desktop/embassyElement/subnav.php +++ /dev/null @@ -1,34 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $container->get('app.request'); -$session = $container->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo ''; diff --git a/system/views/pages/desktop/faction.php b/system/views/pages/desktop/faction.php deleted file mode 100755 index 4404efb6f..000000000 --- a/system/views/pages/desktop/faction.php +++ /dev/null @@ -1,477 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$colorManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\ColorManager::class); -$factionNewsManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\FactionNewsManager::class); -$forumMessageManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumMessageManager::class); -$lawManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Law\LawManager::class); -$voteManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\VoteManager::class); -$electionManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\ElectionManager::class); -$candidateManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Election\CandidateManager::class); -$forumTopicManager = $this->getContainer()->get(\Asylamba\Modules\Demeter\Manager\Forum\ForumTopicManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); - -if (($faction = $colorManager->get($session->get('playerInfo')->get('color'))) === null) { - $response->redirect('profil'); -} - -# background paralax -echo '
'; - -# inclusion des elements -include 'factionElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - if (!$request->query->has('view') OR $request->query->get('view') == 'overview') { - if ($request->query->get('news') === 'list') { - $factionNews = $factionNewsManager->getFactionBasicNews($faction->id); - $mode = 'all'; - } else { - $factionNews = $factionNewsManager->getFactionPinnedNew($faction->id); - $mode = 'pin'; - } - - include $componentPath . 'faction/overview/news.php'; - - $governmentMembers = $playerManager->getGovernmentMembers($session->get('playerInfo')->get('color')); - - include $componentPath . 'faction/overview/stat.php'; - - $effectiveLaws = $lawManager->getByFactionAndStatements($faction->id, [Law::EFFECTIVE]); - $votingLaws = $lawManager->getByFactionAndStatements($faction->id, [Law::VOTATION]); - - include $componentPath . 'faction/overview/laws.php'; - } elseif ($request->query->get('view') == 'forum') { - if (!$request->query->has('forum')) { - # page d'accueil des forums - # charge les x premiers sujets de chaque forum - - $S_TOM1 = $forumTopicManager->getCurrentSession(); - - $archivedMode = FALSE; - - for ($i = 1; $i <= ForumResources::size(); $i++) { - $forum_topics = ForumResources::getInfo($i, 'id'); - - if ($forum_topics < 10 || ($forum_topics >= 10 && $forum_topics < 20 && $session->get('playerInfo')->get('status') > 2) || ($forum_topics >= 20 && $forum_topics < 30 && $session->get('playerInfo')->get('status') == Player::CHIEF)) { - - $where = [ - 'rForum' => $forum_topics, - 'isArchived' => $archivedMode - ]; - - if ($forum_topics < 20) { - $where['rColor'] = $session->get('playerInfo')->get('color'); - } - - $forumTopicManager->newSession(); - $forumTopicManager->load( - $where, - ['isUp', 'DESC', 'dLastMessage', 'DESC'], - [0, 10], - $session->get('playerId') - ); - - $topic_topics = []; - - for ($j = 0; $j < $forumTopicManager->size(); $j++) { - $topic_topics[$j] = $forumTopicManager->get($j); - } - - $isStandard_topics = FALSE; - $idColum_topics = $i; - - include $componentPath . 'faction/forum/topics.php'; - } - } - - $forumTopicManager->changeSession($S_TOM1); - } else { - $forumId = !$request->query->has('forum') ? 1 : $request->query->get('forum'); - $archivedMode = $request->query->get('mode') === 'archived' && in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER]) - ? TRUE : FALSE; - - if ($forumId < 10 || ($forumId >= 10 && $forumId < 20 && $session->get('playerInfo')->get('status') > 2) || ($forumId >= 20 && $forumId < 30 && $session->get('playerInfo')->get('status') == Player::CHIEF)) { - # forum component - include $componentPath . 'faction/forum/forum.php'; - - $where = [ - 'rForum' => $forumId, - 'isArchived' => $archivedMode - ]; - - if ($forumId < 20) { - $where['rColor'] = $session->get('playerInfo')->get('color'); - } - - $S_TOM1 = $forumTopicManager->getCurrentSession(); - $forumTopicManager->newSession(); - $forumTopicManager->load( - $where, - ['isUp', 'DESC', 'dLastMessage', 'DESC'], - [0, 10], - $session->get('playerId') - ); - - $topic_topics = array(); - for ($i = 0; $i < $forumTopicManager->size(); $i++) { - $topic_topics[$i] = $forumTopicManager->get($i); - } - - $isStandard_topics = TRUE; - $forum_topics = $forumId; - - include $componentPath . 'faction/forum/topics.php'; - - $forumTopicManager->changeSession($S_TOM1); - } else { - $response->redirect('faction/view-forum'); - } - - if ($request->query->has('topic')) { - # topic component - $S_TOM2 = $forumTopicManager->getCurrentSession(); - $forumTopicManager->newSession(); - - if ($forumId < 10 || ($forumId >= 10 && $forumId < 20 && $session->get('playerInfo')->get('status') > 2)) { - $forumTopicManager->load( - ['id' => $request->query->get('topic'), 'rColor' => $session->get('playerInfo')->get('color'), 'rForum' => $forumId], - [], [], - $session->get('playerId') - ); - } else if ($forumId >= 20 && $forumId < 30 && $session->get('playerInfo')->get('status') == Player::CHIEF) { - $forumTopicManager->load( - ['id' => $request->query->get('topic'), 'rForum' => $forumId], - [], [], - $session->get('playerId') - ); - } - - if ($forumTopicManager->size() == 0) { - throw new ErrorException('Les données sont illisibles, les messages doivent sûrement être cryptés !'); - } else { - $topic_topic = $forumTopicManager->get(0); - $forumTopicManager->updateLastView($topic_topic, $session->get('playerId')); - - $S_FMM1 = $forumMessageManager->getCurrentSession(); - $forumMessageManager->newSession(); - $forumMessageManager->load(array('rTopic' => $topic_topic->id), array('dCreation', 'DESC', 'id', 'DESC')); - - $message_topic = array(); - for ($i = 0; $i < $forumMessageManager->size(); $i++) { - $message_topic[$i] = $forumMessageManager->get($i); - } - - include $componentPath . 'faction/forum/topic.php'; - - if (in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER])) { - include $componentPath . 'faction/forum/manage-topic.php'; - } - $forumMessageManager->changeSession($S_FMM1); - } - $forumTopicManager->changeSession($S_TOM2); - } elseif ($request->query->has('mode') && $request->query->get('mode') == 'create') { - # créer un topic - include $componentPath . 'faction/forum/createTopic.php'; - } else { - include $componentPath . 'default.php'; - } - } - } elseif ($request->query->get('view') == 'data') { - include $componentPath . 'faction/data/nav.php'; - - if (!$request->query->has('mode') OR $request->query->get('mode') == 'financial') { - include $componentPath . 'faction/data/financial/stats.php'; - include $componentPath . 'faction/data/financial/sectors-tax.php'; - include $componentPath . 'faction/data/financial/donations.php'; - } elseif ($request->query->get('mode') == 'trade') { - include $componentPath . 'faction/data/trade/rc-stats.php'; - include $componentPath . 'faction/data/trade/tax-out.php'; - include $componentPath . 'faction/data/trade/tax-in.php'; - } elseif ($request->query->get('mode') == 'war') { - include $componentPath . 'faction/data/war/stats.php'; - include $componentPath . 'faction/data/war/reports-attack.php'; - include $componentPath . 'faction/data/war/reports-defend.php'; - include $componentPath . 'faction/data/war/levels.php'; - } elseif ($request->query->get('mode') == 'tactical') { - include $componentPath . 'faction/data/tactical/map.php'; - include $componentPath . 'faction/data/tactical/sectors.php'; - include $componentPath . 'faction/data/tactical/targets.php'; - } elseif ($request->query->get('mode') == 'diplomacy') { - include $componentPath . 'faction/data/diplomacy/main.php'; - include $componentPath . 'faction/data/diplomacy/about.php'; - include $componentPath . 'default.php'; - } elseif ($request->query->get('mode') == 'law') { - $listlaw_status = 6; - include $componentPath . 'faction/data/law/list.php'; - $listlaw_status = 3; - include $componentPath . 'faction/data/law/list.php'; - $listlaw_status = 4; - include $componentPath . 'faction/data/law/list.php'; - $listlaw_status = 5; - include $componentPath . 'faction/data/law/list.php'; - } - } elseif ($request->query->get('view') == 'government') { - if (in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER])) { - $senators = $playerManager->getParliamentMembers($faction->id); - - include $componentPath . 'faction/government/nav.php'; - - if (!$request->query->has('mode') OR $request->query->get('mode') == 'law') { - $factionSectors = $sectorManager->getFactionSectors($faction->id); - - $nbLaws = 0; - $nbPlayer = $playerManager->countByFactionAndStatements($faction->id, [Player::ACTIVE]); - - for ($i = 1; $i <= LawResources::size(); $i++) { - if (LawResources::getInfo($i, 'department') == $session->get('playerInfo')->get('status') AND LawResources::getInfo($i, 'isImplemented')) { - $governmentLaw_id = $i; - $nbLaws++; - include $componentPath . 'faction/government/law.php'; - } - } - - if (2 - $nbLaws > 0) { - for ($i = 0; $i < 2 - $nbLaws; $i++) { - include $componentPath . 'default.php'; - } - } - } elseif ($request->query->get('mode') == 'news') { - $factionNews = $factionNewsManager->getFactionNews($faction->id); - - include $componentPath . 'faction/news/list.php'; - - if ($request->query->has('news')) { - if ($factionNewsManager->get($request->query->get('news')) !== null) { - include $componentPath . 'faction/news/edit.php'; - } else { - $response->redirect('faction/view-government/mode-news'); - } - } else { - include $componentPath . 'faction/news/create.php'; - } - } elseif ($request->query->get('mode') == 'message') { - include $componentPath . 'faction/government/message.php'; - } elseif ($request->query->get('mode') == 'description') { - include $componentPath . 'faction/government/description.php'; - } elseif ($request->query->get('mode') == 'credit') { - include $componentPath . 'faction/government/credit.php'; - } elseif ($request->query->get('mode') == 'manage') { - $governmentMembers = $playerManager->getGovernmentMembers($faction->id); - - include $componentPath . 'faction/government/manage/main.php'; - include $componentPath . 'default.php'; - - } else { - $response->redirect('faction'); - } - } else { - $response->redirect('faction'); - } - } elseif ($request->query->get('view') == 'senate') { - if (in_array($session->get('playerInfo')->get('status'), [Player::CHIEF, Player::WARLORD, Player::TREASURER, Player::MINISTER, Player::PARLIAMENT])) { - $laws = $lawManager->getByFactionAndStatements($faction->id, [Law::VOTATION]); - include $componentPath . 'faction/senate/stats.php'; - - foreach ($laws as $law) { - include $componentPath . 'faction/senate/law.php'; - } - if (count($laws) < 1) { - include $componentPath . 'default.php'; - } - - $laws = $lawManager->getByFactionAndStatements($faction->id, [Law::EFFECTIVE, Law::OBSOLETE, Law::REFUSED]); - - include $componentPath . 'faction/senate/historic.php'; - } else { - $response->redirect('faction'); - } - } elseif ($request->query->get('view') == 'election' && in_array($faction->electionStatement, array(Color::CAMPAIGN, Color::ELECTION))) { - if ($faction->electionStatement == Color::CAMPAIGN) { - if (($election = $electionManager->getFactionLastElection($faction->id)) !== null) { - $candidates = $candidateManager->getByElection($election); - $nbCandidate = count($candidates); - include $componentPath . 'faction/election/campaign.php'; - include $componentPath . 'faction/election/list.php'; - - if ($request->query->get('candidate') === 'create') { - include $componentPath . 'faction/election/postulate.php'; - } elseif ($request->query->has('candidate') AND ($candidat = $candidateManager->get($request->query->get('candidate'))) !== null) { - include $componentPath . 'faction/election/candidate.php'; - - $forumTopicManager->load( - array( - 'rForum' => 30, - 'rPlayer' => $candidat->rPlayer - ), - array('id', 'DESC'), - array(0, 1), - $session->get('playerId') - ); - - if ($forumTopicManager->size() == 1) { - $topic_topic = $forumTopicManager->get(0); - $forumTopicManager->updateLastView($topic_topic, $session->get('playerId')); - - $S_FMM1 = $forumMessageManager->getCurrentSession(); - $forumMessageManager->newSession(); - $forumMessageManager->load(array('rTopic' => $topic_topic->id), array('dCreation', 'DESC', 'id', 'DESC')); - - $message_topic = array(); - for ($i = 0; $i < $forumMessageManager->size(); $i++) { - $message_topic[$i] = $forumMessageManager->get($i); - } - - include $componentPath . 'faction/forum/topic.php'; - - $forumMessageManager->changeSession($S_FMM1); - } - } else { - include $componentPath . 'default.php'; - } - } else { - $response->redirect('faction'); - } - } elseif ($faction->electionStatement == Color::ELECTION) { - $election = $electionManager->getFactionLastElection($faction->id); - - $candidates = $candidateManager->getByElection($election); - - $playerVote = $voteManager->getPlayerVote($playerManager->get($session->get('playerId')), $election); - - $votes = $voteManager->getElectionVotes($election); - - $factionPlayers = $playerManager->getFactionPlayers($session->get('playerInfo')->get('color')); - - if ($faction->regime == Color::DEMOCRATIC) { - $nbCandidate = count($candidates); - include $componentPath . 'faction/election/election.php'; - - $rElection = $election->id; - include $componentPath . 'faction/election/list.php'; - - if ($request->query->has('candidate') AND ($candidat = $candidateManager->get($request->query->get('candidate'))) !== null) { - include $componentPath . 'faction/election/candidate.php'; - - $forumTopicManager->load( - array( - 'rForum' => 30, - 'rPlayer' => $candidat->rPlayer - ), - array('id', 'DESC'), - array(0, 1), - $session->get('playerId') - ); - - if ($forumTopicManager->size() == 1) { - $topic_topic = $forumTopicManager->get(0); - $forumTopicManager->updateLastView($topic_topic, $session->get('playerId')); - - $S_FMM1 = $forumMessageManager->getCurrentSession(); - $forumMessageManager->newSession(); - $forumMessageManager->load(array('rTopic' => $topic_topic->id), array('dCreation', 'DESC', 'id', 'DESC')); - - $message_topic = array(); - for ($i = 0; $i < $forumMessageManager->size(); $i++) { - $message_topic[$i] = $forumMessageManager->get($i); - } - - $election_topic = TRUE; - include $componentPath . 'faction/forum/topic.php'; - - $forumMessageManager->changeSession($S_FMM1); - } - } else { - include $componentPath . 'default.php'; - } - } elseif ($faction->regime == Color::ROYALISTIC) { - $candidat = $candidates[0]; - $rElection = $election->id; - - include $componentPath . 'faction/election/putsch.php'; - include $componentPath . 'faction/election/candidate.php'; - - $forumTopicManager->load( - array( - 'rForum' => 30, - 'rPlayer' => $candidat->rPlayer - ), - array('id', 'DESC'), - array(0, 1), - $session->get('playerId') - ); - - if ($forumTopicManager->size() == 1) { - $topic_topic = $forumTopicManager->get(0); - $forumTopicManager->updateLastView($topic_topic, $session->get('playerId')); - - $S_FMM1 = $forumMessageManager->getCurrentSession(); - $forumMessageManager->newSession(); - $forumMessageManager->load(array('rTopic' => $topic_topic->id), array('dCreation', 'DESC', 'id', 'DESC')); - - $message_topic = array(); - for ($i = 0; $i < $forumMessageManager->size(); $i++) { - $message_topic[$i] = $forumMessageManager->get($i); - } - $election_topic = TRUE; - include $componentPath . 'faction/forum/topic.php'; - - $forumMessageManager->changeSession($S_FMM1); - } - } else { - include $componentPath . 'default.php'; - } - } - } elseif ($request->query->get('view') == 'player') { - - # statPlayer component - $nbPlayer_statPlayer = $faction->activePlayers; - - $nbOnlinePlayer_statPlayer = 0; - $nbOfflinePlayer_statPlayer = 0; - - $avgVictoryPlayer_statPlayer = 0; - $avgDefeatPlayer_statPlayer = 0; - $avgPointsPlayer_statPlayer = 0; - - # listPlayer component - $players_listPlayer = array(); - - $factionPlayers = $playerManager->getFactionPlayersByRanking($session->get('playerInfo')->get('color')); - # worker - foreach ($factionPlayers as $factionPlayer) { - if (Utils::interval(Utils::now(), $factionPlayer->getDLastActivity(), 's') < 600) { - $nbOnlinePlayer_statPlayer++; - } else { - $nbOfflinePlayer_statPlayer++; - } - - $avgVictoryPlayer_statPlayer += $factionPlayer->getVictory(); - $avgDefeatPlayer_statPlayer += $factionPlayer->getDefeat(); - $avgPointsPlayer_statPlayer += $factionPlayer->getExperience(); - - $players_listPlayer[] = $factionPlayer; - } - - include $componentPath . 'faction/player/statPlayer.php'; - include $componentPath . 'faction/player/listPlayer.php'; - } else { - $response->redirect('faction'); - } -echo '
'; diff --git a/system/views/pages/desktop/factionElement/subnav.php b/system/views/pages/desktop/factionElement/subnav.php deleted file mode 100755 index 8439366e5..000000000 --- a/system/views/pages/desktop/factionElement/subnav.php +++ /dev/null @@ -1,92 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo ''; diff --git a/system/views/pages/desktop/financial.php b/system/views/pages/desktop/financial.php deleted file mode 100755 index e5845b5a9..000000000 --- a/system/views/pages/desktop/financial.php +++ /dev/null @@ -1,152 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$transactionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\TransactionManager::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$taxCoeff = $this->getContainer()->getParameter('zeus.player.tax_coeff'); -$entityManager = $this->getContainer()->get(\Asylamba\Classes\Entity\EntityManager::class); -$componentPath = $container->getParameter('component'); - -# background paralax -echo '
'; - -# inclusion des elements -include 'financialElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - if (!$request->query->has('view') OR $request->query->get('view') == 'invest') { - $player = $playerManager->get($session->get('playerId')); - - $playerBases = $orbitalBaseManager->getPlayerBases($session->get('playerId')); - - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::AFFECTED, Commander::MOVING], ['c.rBase' => 'ASC']); - - $transactions = $transactionManager->getPlayerPropositions($session->get('playerId'), Transaction::TYP_SHIP); - - # global variable - $taxBonus = $session->get('playerBonus')->get(PlayerBonus::POPULATION_TAX); - $rcBonus = $session->get('playerBonus')->get(PlayerBonus::COMMERCIAL_INCOME); - - $financial_credit = $session->get('playerInfo')->get('credit'); - - $financial_totalTaxIn = 0; - $financial_totalTaxInBonus = 0; - $financial_totalRouteIncome = 0; - $financial_totalRouteIncomeBonus = 0; - - $financial_totalInvest = 0; - $financial_totalInvestUni = 0; - $financial_totalFleetFees = 0; - $financial_totalShipsFees = 0; - $financial_totalTaxOut = 0; - $financial_totalMSFees = 0; - - # bonus - $financial_totalInvestUni += $player->iUniversity; - - # general array - $ob_generalFinancial = array(); - $commander_generalFinancial = array(); - - foreach ($playerBases as $orbitalBase) { - $ob_generalFinancial[] = $orbitalBase; - - $thisTaxIn = Game::getTaxFromPopulation($orbitalBase->getPlanetPopulation(), $orbitalBase->typeOfBase, $taxCoeff); - $thisTaxInBonus = $thisTaxIn * $taxBonus / 100; - $financial_totalTaxIn += $thisTaxIn; - $financial_totalTaxInBonus += $thisTaxInBonus; - - $financial_totalTaxOut += ($thisTaxIn + $thisTaxInBonus) * $orbitalBase->getTax() / 100; - - $financial_totalInvest += $orbitalBase->getISchool(); - $financial_totalInvest += $orbitalBase->getIAntiSpy(); - - $financial_totalShipsFees += Game::getFleetCost($orbitalBase->shipStorage, FALSE); - - # TODO cout des trucs en vente - - $routes = array_merge( - $commercialRouteManager->getByBase($orbitalBase->getId()), - $commercialRouteManager->getByDistantBase($orbitalBase->getId()) - ); - foreach ($routes as $route) { - if ($route->getStatement() == CommercialRoute::ACTIVE) { - $financial_totalRouteIncome += $route->getIncome(); - $financial_totalRouteIncomeBonus += $route->getIncome() * $rcBonus / 100; - } - } - $entityManager->clear(CommercialRoute::class); - } - - $commander_generalFinancial = []; - foreach ($commanders as $commander) { - $commander_generalFinancial[] = $commander; - $financial_totalFleetFees += $commander->getLevel() * Commander::LVLINCOMECOMMANDER; - $financial_totalShipsFees += Game::getFleetCost($commander->getNbrShipByType()); - } - - $transaction_generalFinancial = []; - foreach ($transactions as $transaction) { - $transaction_generalFinancial[] = $transaction; - $financial_totalShipsFees += ShipResource::getInfo($transaction->identifier, 'cost') * ShipResource::COST_REDUCTION * $transaction->quantity; - } - - $financial_totalIncome = $financial_totalTaxIn + $financial_totalTaxInBonus + $financial_totalRouteIncome + $financial_totalRouteIncomeBonus; - $financial_totalFess = $financial_totalInvest + $financial_totalInvestUni + $financial_totalTaxOut + $financial_totalMSFees + $financial_totalFleetFees + $financial_totalShipsFees; - - $financial_benefice = $financial_totalIncome - $financial_totalFess; - $financial_remains = round($financial_credit) + round($financial_benefice); - - # generalFinancial component - include $componentPath . 'financial/generalFinancial.php'; - - # impositionFinancial component - $ob_impositionFinancial = $ob_generalFinancial; - include $componentPath . 'financial/impositionFinancial.php'; - - # routeFinancial component - $ob_routeFinancial = $ob_generalFinancial; - include $componentPath . 'financial/routeFinancial.php'; - - # investFinancial component - $ob_investFinancial = $ob_generalFinancial; - $player_investFinancial = $player; - include $componentPath . 'financial/investFinancial.php'; - - # taxOutFinancial component - $ob_taxOutFinancial = $ob_generalFinancial; - include $componentPath . 'financial/taxOutFinancial.php'; - - # shipsFeesFinancial component - $commander_shipsFeesFinancial = $commander_generalFinancial; - $transaction_shipsFeesFinancial = $transaction_generalFinancial; - $ob_shipsFeesFinancial = $ob_generalFinancial; - include $componentPath . 'financial/shipFeesFinancial.php'; - - # fleetFeesFinancial component - $commander_fleetFeesFinancial = $commander_generalFinancial; - $ob_fleetFeesFinancial = $ob_generalFinancial; - include $componentPath . 'financial/fleetFeesFinancial.php'; - } elseif ($request->query->get('view') == 'send') { - include $componentPath . 'financial/send-credit-player.php'; - include $componentPath . 'financial/send-credit-faction.php'; - include $componentPath . 'financial/last-send-credit.php'; - include $componentPath . 'financial/last-receive-credit.php'; - } -echo '
'; diff --git a/system/views/pages/desktop/financialElement/subnav.php b/system/views/pages/desktop/financialElement/subnav.php deleted file mode 100755 index 698b7791b..000000000 --- a/system/views/pages/desktop/financialElement/subnav.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/fleet.php b/system/views/pages/desktop/fleet.php deleted file mode 100755 index e0bd6d2c8..000000000 --- a/system/views/pages/desktop/fleet.php +++ /dev/null @@ -1,238 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$reportManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\ReportManager::class); -$liveReportManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\LiveReportManager::class); -$spyReportManager = $this->getContainer()->get(\Asylamba\Modules\Artemis\Manager\SpyReportManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$componentPath = $container->getParameter('component'); - -# background paralax -echo '
'; - -# inclusion des elements -include 'fleetElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - if (!$request->query->has('view') OR $request->query->get('view') == 'movement' OR $request->query->get('view') == 'main') { - # set d'orbitale base - $obsets = array(); $j = 0; - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - if ($request->cookies->get('p' . Params::LIST_ALL_FLEET, Params::$params[Params::LIST_ALL_FLEET]) || $session->get('playerBase')->get('ob')->get($i)->get('id') == $session->get('playerParams')->get('base')) { - $obsets[$j] = array(); - - $obsets[$j]['info'] = array(); - $obsets[$j]['fleets'] = array(); - - $obsets[$j]['info']['id'] = $session->get('playerBase')->get('ob')->get($i)->get('id'); - $obsets[$j]['info']['name'] = $session->get('playerBase')->get('ob')->get($i)->get('name'); - $obsets[$j]['info']['type'] = $session->get('playerBase')->get('ob')->get($i)->get('type'); - $obsets[$j]['info']['img'] = $session->get('playerBase')->get('ob')->get($i)->get('img'); - - $j++; - } - } - - # commander manager : incoming attack - $commandersId = array(0); - for ($i = 0; $i < $session->get('playerEvent')->size(); $i++) { - if ($session->get('playerEvent')->get($i)->get('eventType') == $container->getParameter('event_incoming_attack')) { - if ($session->get('playerEvent')->get($i)->get('eventInfo')->size() > 0) { - $commandersId[] = $session->get('playerEvent')->get($i)->get('eventId'); - } - } - } - - $attackingCommanders = $commanderManager->getVisibleIncomingAttacks($session->get('playerId')); - for ($i = 0; $i < count($obsets); $i++) { - foreach ($attackingCommanders as $commander) { - if ($commander->rDestinationPlace == $obsets[$i]['info']['id']) { - $obsets[$i]['fleets'][] = $commander; - } - } - } - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::AFFECTED, Commander::MOVING], ['c.rBase' => 'DESC']); - - for ($i = 0; $i < count($obsets); $i++) { - foreach ($commanders as $commander) { - if ($commander->rBase == $obsets[$i]['info']['id']) { - $obsets[$i]['fleets'][] = $commander; - } - } - } - - include $componentPath . 'fleet/listFleet.php'; - - # commander id - if ($request->query->has('commander')) { - if (($commander = $commanderManager->get($request->query->get('commander'))) !== null && $commander->rPlayer === $session->get('playerId') && in_array($commander->getStatement(), [Commander::AFFECTED, Commander::MOVING])) { - $base = $orbitalBaseManager->get($commander->getRBase()); - - # commanderDetail component - $commander_commanderDetail = $commander; - $commander_commanderFleet = $commander; - $ob_commanderFleet = $base; - - # commanderFleet component - include $componentPath . 'fleet/commanderFleet.php'; - include $componentPath . 'fleet/commanderDetail.php'; - } else { - throw new ErrorException('Cet officier ne vous appartient pas ou n\'existe pas'); - //CTR::redirect('fleet'); - } - } - } elseif ($request->query->get('view') == 'overview') { - # set d'orbitale base - $obsets = []; - for ($i = 0; $i < $session->get('playerBase')->get('ob')->size(); $i++) { - $obsets[$i] = array(); - - $obsets[$i]['info'] = []; - $obsets[$i]['fleets'] = []; - $obsets[$i]['dock'] = []; - - $obsets[$i]['info']['id'] = $session->get('playerBase')->get('ob')->get($i)->get('id'); - $obsets[$i]['info']['name'] = $session->get('playerBase')->get('ob')->get($i)->get('name'); - $obsets[$i]['info']['type'] = $session->get('playerBase')->get('ob')->get($i)->get('type'); - } - - # commander manager : yours - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::AFFECTED, Commander::MOVING], ['c.rBase' => 'DESC']); - - for ($i = 0; $i < count($obsets); $i++) { - foreach ($commanders as $commander) { - if ($commander->rBase == $obsets[$i]['info']['id']) { - $obsets[$i]['fleets'][] = $commander; - } - } - } - # ship in dock - $playerBases = $orbitalBaseManager->getPlayerBases($session->get('playerId')); - - for ($i = 0; $i < count($obsets); $i++) { - foreach ($playerBases as $orbitalBase) { - if ($orbitalBase->rPlace == $obsets[$i]['info']['id']) { - $obsets[$i]['dock'] = $orbitalBase->shipStorage; - } - } - } - include $componentPath . 'fleet/overview.php'; - } elseif ($request->query->get('view') == 'spyreport') { - # loading des objets - $S_SRM1 = $spyReportManager->getCurrentSession(); - $spyReportManager->newSession(); - $spyReportManager->load(array('rPlayer' => $session->get('playerId')), array('dSpying', 'DESC'), array(0, 40)); - - # listReport component - $spyreport_listSpy = array(); - for ($i = 0; $i < $spyReportManager->size(); $i++) { - $spyreport_listSpy[$i] = $spyReportManager->get($i); - } - include $componentPath . 'fleet/listSpy.php'; - - # report component - $spyReportManager->newSession(); - - if ($request->query->has('report')) { - $spyReportManager->load(array('id' => $request->query->get('report'), 'rPlayer' => $session->get('playerId'))); - } else { - $spyReportManager->load(array('rPlayer' => $session->get('playerId')), array('dSpying', 'DESC'), array(0, 1)); - } - - if ($spyReportManager->size() == 1) { - $spyreport = $spyReportManager->get(0); - - $place_spy = $placeManager->get($spyreport->rPlace); - - include $componentPath . 'fleet/spyReport.php'; - } else { - if ($request->query->has('report')) { - throw new ErrorException('Ce rapport ne vous appartient pas ou n\'existe pas'); - //CTR::redirect('fleet/view-spyreport'); - } else { - include $componentPath . 'default.php'; - include $componentPath . 'default.php'; - } - } - - $spyReportManager->changeSession($S_SRM1); - } elseif ($request->query->get('view') == 'archive') { - # loading des objets - if ($request->query->get('mode') === 'archived') { - $archived = Report::ARCHIVED; - } else { - $archived = Report::STANDARD; - } - - $rebels = (bool) $request->cookies->get('p'. Params::SHOW_REBEL_REPORT, Params::$params[Params::SHOW_REBEL_REPORT]); - - $report_listReport = - ($request->cookies->get('p'. Params::SHOW_ATTACK_REPORT, Params::$params[Params::SHOW_ATTACK_REPORT])) - ? $liveReportManager->getAttackReportsByMode($session->get('playerId'), $rebels, $archived) - : $liveReportManager->getDefenseReportsByMode($session->get('playerId'), $rebels, $archived) - ; - $type_listReport = 1; - include $componentPath . 'fleet/list-report.php'; - - # report component - if ($request->query->has('report')) { - $report = $reportManager->get($request->query->get('report')); - - if (($report->rPlayerAttacker == $session->get('playerId') || $report->rPlayerDefender == $session->get('playerId'))) { - $attacker_report = $playerManager->get($report->rPlayerAttacker); - $defender_report = $playerManager->get($report->rPlayerDefender); - - include $componentPath . 'fleet/report.php'; - include $componentPath . 'fleet/manage-report.php'; - } else { - throw new ErrorException('Ce rapport ne vous appartient pas ou n\'existe pas'); - } - } else { - include $componentPath . 'default.php'; - include $componentPath . 'default.php'; - } - } elseif ($request->query->get('view') == 'memorial') { - # loading des objets - $commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::DEAD], ['c.palmares' => 'DESC']); - - # memorialTxt component - include $componentPath . 'fleet/memorialTxt.php'; - - foreach ($commanders as $commander) { - if ($i < 6) { - $commander_commanderDetail = $commander; - include $componentPath . 'fleet/commanderDetail.php'; - } else { - $commander_shortMemorial = $commander; - include $componentPath . 'default.php'; - } - } - - if (isset($commander_commanderDetail) && count($commander_commanderDetail) > 0) { - } else { - include $componentPath . 'default.php'; - include $componentPath . 'default.php'; - } - - if (isset($commander_shortMemorial) && count($commander_shortMemorial) > 0) { - } - } else { - $response->redirect('404'); - } - -echo '
'; diff --git a/system/views/pages/desktop/fleetElement/subnav.php b/system/views/pages/desktop/fleetElement/subnav.php deleted file mode 100755 index c6d3367c9..000000000 --- a/system/views/pages/desktop/fleetElement/subnav.php +++ /dev/null @@ -1,62 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/map.php b/system/views/pages/desktop/map.php deleted file mode 100755 index febfc9b54..000000000 --- a/system/views/pages/desktop/map.php +++ /dev/null @@ -1,84 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$request = $this->getContainer()->get('app.request'); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); -$systemManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SystemManager::class); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); -$sectors = $sectorManager->getAll(); - -$playerBases = $orbitalBaseManager->getPlayerBases($session->get('playerId')); -$defaultBase = $orbitalBaseManager->get($session->get('playerParams')->get('base')); - -# map default position -$x = $defaultBase->getXSystem(); -$y = $defaultBase->getYSystem(); -$systemId = 0; - -# other default location -# par place -if ($request->query->has('place')) { - if (($place = $placeManager->get($request->query->get('place'))) !== null) { - $x = $place->getXSystem(); - $y = $place->getYSystem(); - $systemId = $place->getRSystem(); - $system = $systemManager->get($systemId); - } -# par system -} elseif ($request->query->has('systemid')) { - if (($system = $systemManager->get($request->query->get('systemid'))) !== null) { - $x = $system->xPosition; - $y = $system->yPosition; - $systemId = $request->query->get('systemid'); - } -# par coordonnée -} elseif ($request->query->has('x') && $request->query->has('y')) { - $x = $request->query->get('x'); - $y = $request->query->get('y'); -} - -# control include -include 'mapElement/option.php'; -include 'mapElement/content.php'; -include 'mapElement/commanders.php'; -include 'mapElement/coordbox.php'; - -if (!empty($system)) { - # objet place - $places = $placeManager->getSystemPlaces($system); - - $noAJAX = TRUE; - - # inclusion du "composant" - echo '
'; - include $container->getParameter('pages') . 'desktop/mapElement/actionbox.php'; - echo '
'; -} else { - echo '
'; -} - -# map sytems -echo '
'; - include 'mapElement/layer/background.php'; - - include 'mapElement/layer/sectors.php'; - - include 'mapElement/layer/spying.php'; - include 'mapElement/layer/ownbase.php'; - include 'mapElement/layer/commercialroutes.php'; - include 'mapElement/layer/fleetmovements.php'; - include 'mapElement/layer/attacks.php'; - - include 'mapElement/layer/systems.php'; - include 'mapElement/layer/map-info.php'; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/actionbox.php b/system/views/pages/desktop/mapElement/actionbox.php deleted file mode 100755 index 02ba9acdf..000000000 --- a/system/views/pages/desktop/mapElement/actionbox.php +++ /dev/null @@ -1,251 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$pagesPath = $container->getParameter('pages'); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$spyReportManager = $this->getContainer()->get(\Asylamba\Modules\Artemis\Manager\SpyReportManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); -$technologyManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\TechnologyManager::class); - -if ($request->query->has('relatedplace')) { - if (($defaultBase = $orbitalBaseManager->get($request->query->get('relatedplace'))) === null) { - $response->redirect('404'); - } -} - -if (isset($defaultBase)) { - # load the commanders of the default base in a session - $localCommanders = $commanderManager->getBaseCommanders($defaultBase->getRPlace(), [Commander::AFFECTED, Commander::MOVING]); - # load all the commanders moving in a session - $movingCommanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::MOVING]); - - # load last report - $placesId = array(); - foreach ($places as $place) { - $placesId[] = $place->id; - } - - $S_SRM_MAP = $spyReportManager->getCurrentSession(); - $spyReportManager->newSession(); - $spyReportManager->load(array('rPlayer' => $session->get('playerId'), 'rPlace' => $placesId), array('dSpying', 'DESC'), array(0, 30)); - - # load the technologies - $technologies = $technologyManager->getPlayerTechnology($session->get('playerId')); - - # load recycling missions - $baseMissions = $recyclingMissionManager->getBaseActiveMissions($defaultBase->rPlace); - - # header part - echo '
'; - echo '
    '; - echo '
  • Système #' . $system->id . '
  • '; - echo '
  • Cordonnées ' . Game::formatCoord($system->xPosition, $system->yPosition) . '
  • '; - echo '
  • '; - echo $system->rColor == 0 - ? 'Non revendiqué' - : ' Revendiqué par ' . ColorResource::getInfo($system->rColor, 'popularName'); - echo '
  • '; - echo '
  • ' . SystemResource::getInfo($system->typeOfSystem, 'frenchName') . '
  • '; - echo '
'; - echo '×'; - echo '
'; - - # body part - echo '
'; - echo ''; - echo ''; - echo '
'; - echo '
    '; - echo '
  • '; - - foreach ($places as $place) { - $position = $place->position - 1; - echo '
  • '; - echo ''; - echo '' . $position . ''; - if ($place->typeOfPlace == 1) { - echo ''; - } else { - if ($place->resources > 10000000) { - $size = 3; - } elseif ($place->resources > 5000000) { - $size = 2; - } else { - $size = 1; - } - - echo ''; - } - if ($place->rPlayer != 0) { - echo ''; - } - echo ''; - echo '
  • '; - - // noAJAX - echo '
  • query->get('place') === $place->id ? 'style="width: 565px;"' : NULL) . '>'; - echo '
    '; - echo '
    '; - for ($j = 0; $j < $spyReportManager->size(); $j++) { - if ($spyReportManager->get($j)->rPlace == $place->id) { - echo ''; - break; - } - } - - if ($place->typeOfPlace == 1) { - if ($place->typeOfBase != 0) { - echo '

    ' . $place->baseName . '

    '; - - echo '

    propriété du

    '; - echo '

    '; - if ($place->playerColor != 0) { - $status = ColorResource::getInfo($place->playerColor, 'status'); - echo $status[$place->playerStatus - 1] . ' '; - echo ''; - echo '' . $place->playerName . ''; - echo ''; - } else { - echo 'rebelle ' . $place->playerName . ''; - } - echo '

    '; - } else { - echo '

    Planète rebelle

    '; - - echo '
    '; - - echo '

    '; - echo 'Défense'; - echo ''; - $danger = [ - 0 => 'défense pratiquement inexistante', - Place::DNG_CASUAL => 'défense faible', - Place::DNG_EASY => 'défense moyenne', - Place::DNG_MEDIUM => 'défense forte', - Place::DNG_HARD => 'défense extrêmement forte' - ]; - foreach ($danger as $value => $label) { - if ($place->maxDanger >= $value) { - echo ''; - } - } - echo ''; - echo '

    '; - } - - echo '
    '; - - echo '

    '; - echo 'Population'; - echo ''; - $population = [ - 0 => '', - 50 => '', - 100 => '', - 150 => '', - 200 => '' - ]; - foreach ($population as $value => $label) { - if ($place->population >= $value) { - echo ''; - } - } - echo ''; - echo '

    '; - echo '

    '; - echo 'Ressource'; - echo ''; - $resources = [ - 0 => '', - 20 => '', - 40 => '', - 60 => '', - 80 => '' - ]; - foreach ($resources as $value => $label) { - if ($place->coefResources >= $value) { - echo ''; - } - } - echo ''; - echo '

    '; - echo '

    '; - echo 'Science'; - echo ''; - $coefHistory = Game::getImprovementFromScientificCoef($place->coefHistory); - $science = [ - 0 => '', - 8 => '', - 16 => '', - 24 => '', - 32 => '' - ]; - foreach ($science as $value => $label) { - if ($coefHistory >= $value) { - echo ''; - } - } - echo ''; - echo '

    '; - } else { - echo '

    ' . ucfirst(Game::convertPlaceType($place->typeOfPlace)) . '

    '; - - echo '
    '; - - echo '

    '; - echo 'Ressources'; - echo '' .Format::numberFormat($place->resources * $place->coefResources / 100) . ''; - echo '

    '; - echo '

    '; - echo 'Débris'; - echo '' . Format::numberFormat($place->resources * $place->coefHistory / 100) . ''; - echo '

    '; - echo '

    '; - echo 'Gaz noble'; - echo '' . Format::numberFormat($place->resources * $place->population / 100) . ''; - echo '

    '; - } - - echo '

    '; - echo 'Distance'; - echo '' . Format::numberFormat(Game::getDistance($defaultBase->xSystem, $place->xSystem, $defaultBase->ySystem, $place->ySystem)) . ' Al.'; - echo '

    '; - - if ($place->typeOfPlace == 1) { - $reports = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\LiveReportManager::class)->getAttackReportsByPlaces($session->get('playerId'), $placesId); - - foreach ($reports as $report) { - if ($report->rPlace == $place->id) { - echo '
    '; - echo '

    Dernier pillage ' . Chronos::transform($report->dFight) . '.

    '; - break; - } - } - } - - echo '
    '; - - include $pagesPath . 'desktop/mapElement/component/actBull.php'; - echo '
    '; - echo '
  • '; - } - echo '
'; - echo '
'; - echo '
'; -} - -$spyReportManager->changeSession($S_SRM_MAP); diff --git a/system/views/pages/desktop/mapElement/commanders.php b/system/views/pages/desktop/mapElement/commanders.php deleted file mode 100755 index 032e0d339..000000000 --- a/system/views/pages/desktop/mapElement/commanders.php +++ /dev/null @@ -1,64 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$commanders = $this - ->getContainer() - ->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class) - ->getBaseCommanders( - $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class)->get('playerParams')->get('base'), - [Commander::AFFECTED, Commander::MOVING], - ['c.line' => 'DESC'] - ) -; -$break = FALSE; - -echo ''; diff --git a/system/views/pages/desktop/mapElement/component/actBull.php b/system/views/pages/desktop/mapElement/component/actBull.php deleted file mode 100755 index 970fa426e..000000000 --- a/system/views/pages/desktop/mapElement/component/actBull.php +++ /dev/null @@ -1,329 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commercialRouteManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\CommercialRouteManager::class); -$recyclingMissionManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\RecyclingMissionManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$sessionToken = $session->get('token'); -$colonizationCost = $this->getContainer()->getParameter('ares.coeff.colonization_cost'); -$conquestCost = $this->getContainer()->getParameter('ares.coeff.conquest_cost'); -$routeColorBonus = $this->getContainer()->getParameter('athena.trade.route.color_bonus'); -$routeSectorBonus = $this->getContainer()->getParameter('athena.trade.route.sector_bonus'); - -# display part -echo '
'; - echo '
'; - if ($place->typeOfPlace == 1) { - $available = (($place->rPlayer != 0 && $place->playerColor != $session->get('playerInfo')->get('color')) || ($place->rPlayer == 0 && $place->typeOfPlace == 1)) ? NULL : 'grey'; - echo ''; - echo ''; - - $available = (($place->rPlayer == $session->get('playerId') && $place->getId() != $defaultBase->getId()) || ($place->playerColor == $session->get('playerInfo')->get('color'))) ? NULL : 'grey'; - echo ''; - - $available = ($place->rPlayer != 0 && $place->getId() != $defaultBase->getId()) ? NULL : 'grey'; - echo ''; - - $available = (($place->rPlayer != 0 && $place->playerColor != $session->get('playerInfo')->get('color')) || ($place->rPlayer == 0 && $place->typeOfPlace == 1)) ? NULL : 'grey'; - echo ''; - } else { - $available = ($place->sectorColor == $session->get('playerInfo')->get('color') || $place->sectorColor == ColorResource::NO_FACTION) ? NULL : 'grey'; - echo ''; - } - echo '
'; - - echo '
'; - if ($place->typeOfPlace == 1) { - echo '
'; - echo '

Lancer un pillage

'; - echo '
'; - if ($place->rPlayer == 0 && $place->typeOfPlace != 1) { - echo 'Vous ne pouvez pas attaquer une planète non-habitable'; - } elseif ($place->typeOfPlace == 1 && $place->playerColor == $session->get('playerInfo')->get('color')) { - echo 'Vous ne pouvez pas attaquer un joueur de votre faction'; - } elseif ($place->typeOfPlace == 1 && $place->playerLevel == 1 && !$place->playerColor == 0) { - echo 'Ce joueur est sous protection débutant'; - } else { - echo '
'; - echo '
'; - echo 'Aucun commandant selectionné. Sélectionnez-en un sur la barre latérale gauche.

Si aucun commandant n\'est visible, vous pouvez en affecter un depuis l\'école de commandement.'; - echo '
'; - echo '
'; - echo 'Ce commandant est trop éloigné pour piller cette planète.'; - echo '
'; - echo '
'; - echo '
'; - echo 'Temps de l\'attaque : ' . Chronos::secondToFormat(Game::getTimeTravel($defaultBase->system, $defaultBase->position, $defaultBase->xSystem, $defaultBase->ySystem, $place->rSystem, $place->position, $place->xSystem, $place->ySystem, $session->get('playerBonus')), 'lite') . '
'; - echo 'Capacité de la soute :
'; - echo 'Lancer l\'attaque'; - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; - - $maxBasesQuantity = $technologies->getTechnology(Technology::BASE_QUANTITY) + 1; - $obQuantity = $session->get('playerBase')->get('ob')->size(); - $msQuantity = $session->get('playerBase')->get('ms')->size(); - $coloQuantity = 0; - - foreach ($movingCommanders as $commander) { - if ($commander->getTravelType() == Commander::COLO) { - $coloQuantity++; - } - } - - $totalBases = $obQuantity + $msQuantity + $coloQuantity; - - echo '
'; - echo '

Lancer une ' . ($place->rPlayer == 0 ? 'colonisation' : 'conquête') . '

'; - echo '
'; - if ($place->rPlayer == 0 && $place->typeOfPlace != 1) { - echo 'Vous ne pouvez pas coloniser une planète non-habitable.'; - } elseif ($place->typeOfPlace == 1 && $place->playerColor == $session->get('playerInfo')->get('color')) { - echo 'Vous ne pouvez pas conquérir un joueur de votre faction.'; - } elseif ($place->typeOfPlace == 1 && $place->playerLevel <= 3 && $place->playerLevel != 0 && !$place->playerColor == 0) { - echo 'Vous ne pouvez pas conquérir un joueur de niveau 3 ou inférieur.'; - } elseif ($place->rPlayer == 0 && $technologies->getTechnology(Technology::COLONIZATION) == 0) { - echo 'Vous devez développer la technologie colonisation.'; - } elseif ($place->rPlayer != 0 && $technologies->getTechnology(Technology::CONQUEST) == 0) { - echo 'Vous devez développer la technologie conquête.'; - } elseif ($totalBases >= $maxBasesQuantity) { - echo 'Vous devez améliorer le niveau de la technologie administration étendue pour disposer de planète supplémentaire.'; - } else { - echo '
'; - echo '
'; - echo 'Aucun commandant selectionné. Sélectionnez-en un sur la barre latérale gauche.

Si aucun commandant n\'est visible, vous pouvez en affecter un depuis l\'école de commandement.'; - echo '
'; - echo '
'; - echo 'Ce commandant est trop éloigné pour coloniser cette planète.'; - echo '
'; - echo '
'; - echo '
'; - echo 'Temps de l\'attaque : ' . Chronos::secondToFormat(Game::getTimeTravel($defaultBase->system, $defaultBase->position, $defaultBase->xSystem, $defaultBase->ySystem, $place->rSystem, $place->position, $place->xSystem, $place->ySystem, $session->get('playerBonus')), 'lite') . '
'; - - if ($place->rPlayer == 0) { - $price = $totalBases * $colonizationCost; - if ($session->get('playerInfo')->get('color') == ColorResource::CARDAN) { - # bonus if the player is from Cardan - $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); - } - echo 'Coût : ' . Format::numberFormat($price) . '
'; - echo 'Lancer la colonisation'; - } else { - $price = $totalBases * $conquestCost; - if ($session->get('playerInfo')->get('color') == ColorResource::CARDAN) { - # bonus if the player is from Cardan - $price -= round($price * ColorResource::BONUS_CARDAN_COLO / 100); - } - echo 'Coût : ' . Format::numberFormat($price) . '
'; - echo 'Lancer la conquête'; - } - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; - - echo '
'; - echo $place->rPlayer == $defaultBase->rPlayer - ? '

Déplacer une flotte

' - : '

Donner votre flotte

'; - - echo '
'; - if ($place->getId() == $defaultBase->getId()) { - echo 'Vous ne pouvez pas déplacer une flotte sur votre planète de départ'; - } elseif ($place->playerColor != $session->get('playerInfo')->get('color')) { - echo 'Vous ne pouvez donner une de vos flotte qu\'a un membre de votre faction'; - } else { - echo '
'; - echo '
'; - echo 'Aucun commandant selectionné. Sélectionnez-en un sur la barre latérale gauche.

Si aucun commandant n\'est visible, vous pouvez en affecter un depuis l\'école de commandement.'; - echo '
'; - echo '
'; - echo 'Ce commandant est trop éloigné pour se déplacer jusqu\'ici.'; - echo '
'; - echo '
'; - echo '
'; - echo 'Temps du déplacement : ' . Chronos::secondToFormat(Game::getTimeTravel($defaultBase->system, $defaultBase->position, $defaultBase->xSystem, $defaultBase->ySystem, $place->rSystem, $place->position, $place->xSystem, $place->ySystem, $session->get('playerBonus')), 'lite') . '
'; - if ($place->rPlayer != $defaultBase->rPlayer) { - echo 'Attention, vous perdrez votre flotte !
'; - } - echo 'Lancer la mission'; - echo '
'; - echo '
'; - } - echo '
'; - echo '
'; - - echo '
'; - echo '

Proposer une route commerciale

'; - echo '
'; - if ($place->rPlayer == 0) { - echo 'Vous ne pouvez proposer une route commerciale qu\'à des joueurs.'; - } elseif ($place->getId() == $defaultBase->getId()) { - echo 'Vous ne pouvez pas proposer une route commerciale sur votre propre base.'; - } elseif ($defaultBase->levelSpatioport == 0) { - echo 'Il vous faut un spatioport pour proposer une route commerciale.'; - } elseif ($place->levelSpatioport == 0) { - echo 'Le joueur ne dispose pas d\'un spatioport.'; - } else { - $proposed = FALSE; - $notAccepted = FALSE; - $standby = FALSE; - - $routes = array_merge( - $commercialRouteManager->getByBase($defaultBase->getId()), - $commercialRouteManager->getByDistantBase($defaultBase->getId()) - ); - foreach ($routes as $route) { - if ($place->getId() !== $route->getROrbitalBase() && $place->getId() !== $route->getROrbitalBaseLinked()) { - continue; - } - switch($route->getStatement()) { - case CommercialRoute::PROPOSED: - if ($defaultBase->getId() === $route->getROrbitalBase()) { - $proposed = true; - } else { - $notAccepted = true; - } - break; - case CommercialRoute::ACTIVE: $sendResources = TRUE; break; - case CommercialRoute::STANDBY: $standby = TRUE; break; - } - } - - $distance = Game::getDistance($defaultBase->xSystem, $place->xSystem, $defaultBase->ySystem, $place->ySystem); - - $bonusA = ($defaultBase->sector != $place->rSector) ? $routeSectorBonus : 1; - $bonusB = ($session->get('playerInfo')->get('color')) != $place->playerColor ? $routeColorBonus : 1; - - $price = Game::getRCPrice($distance); - $income = Game::getRCIncome($distance, $bonusA, $bonusB); - - echo '
'; - echo ''; - - echo ''; - echo 'Revenu par relève'; - echo '' . Format::numberFormat($income) . ' '; - echo ''; - - if ($session->get('playerInfo')->get('color') == ColorResource::NEGORA) { - # bonus if the player is from Negore - $price -= round($price * ColorResource::BONUS_NEGORA_ROUTE / 100); - } - echo ''; - echo 'Coût de construction'; - echo '' . Format::numberFormat($price) . ' '; - echo ''; - - if ($proposed) { - echo 'Annuler la proposition'; - } elseif ($notAccepted) { - echo 'Accepter la proposition'; - } elseif ($standby) { - echo 'C\'est la guerre.'; - } else { - $ur = count($routes); - foreach ($routes as $route) { - if ($route->getROrbitalBaseLinked() == $defaultBase->rPlace && $route->statement == CommercialRoute::PROPOSED) { - $ur--; - } - } - - if ($price > $session->get('playerInfo')->get('credit')) { - echo 'Vous n\'avez pas assez de crédits.'; - } elseif ($ur < $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::SPATIOPORT, 'level', $defaultBase->levelSpatioport, 'nbRoutesMax')) { - echo 'Proposer une route commerciale'; - } else { - echo 'Pas assez de slots.'; - } - } - echo '
'; - } - echo '
'; - echo '
'; - - echo '
'; - echo '

Lancer un espionnage

'; - echo '
'; - if ($place->rPlayer != 0 && $place->playerColor == $session->get('playerInfo')->get('color')) { - echo 'Vous ne pouvez pas espionner un joueur de votre faction'; - } elseif ($place->rPlayer == 0 && $place->typeOfPlace != 1) { - echo 'Vous ne pouvez pas espionner une planète non-habitable'; - } else { - $prices = array( - 'Impact faible' => 1000, - 'Impact moyen' => 2500, - 'Grand impact' => 5000 - ); - - foreach ($prices as $label => $price) { - echo ''; - echo '' . $label . ''; - echo '' . Format::numberFormat($price) . ' '; - echo ''; - } - - echo '
'; - echo ''; - echo ''; - echo '
'; - } - echo '
'; - echo '
'; - } else { - echo '
'; - echo '

Envoyer des recycleurs

'; - echo '
'; - if (!($place->sectorColor == $session->get('playerInfo')->get('color') || $place->sectorColor == ColorResource::NO_FACTION)) { - echo 'Vous ne pouvez envoyer des recycleurs que dans des secteurs non-revendiqués ou contrôlés par votre faction.'; - } elseif ($place->typeOfPlace == Place::EMPTYZONE) { - echo 'Cette endroit regorgait autrefois de ressources ou de gaz mais de nombreux recycleurs sont déjà passés par là et n\'ont laissé que le vide de l\'espace.'; - } elseif ($defaultBase->getLevelRecycling() == 0) { - echo 'Vous devez disposer d\'un centre de recyclage.'; - } else { - $totalShip = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::RECYCLING, 'level', $defaultBase->levelRecycling, 'nbRecyclers'); - $activeShip = 0; - $travelTime = Game::getTimeTravel($defaultBase->system, $defaultBase->position, $defaultBase->xSystem, $defaultBase->ySystem, $place->rSystem, $place->position, $place->xSystem, $place->ySystem, $session->get('playerBonus')); - - foreach ($baseMissions as $mission) { - $activeShip += $mission->recyclerQuantity; - $activeShip += $mission->addToNextMission; - } - - echo ''; - echo 'Recycleurs libres'; - echo '' . Format::number($totalShip - $activeShip) . ''; - echo ''; - - echo ''; - echo 'Temps de cycle'; - echo '' . Chronos::secondToFormat((2 * $travelTime) + RecyclingMission::RECYCLING_TIME, 'lite') . ''; - echo ''; - - echo '
'; - echo ''; - echo ''; - echo '
'; - } - echo '
'; - echo '
'; - } - echo '
'; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/content.php b/system/views/pages/desktop/mapElement/content.php deleted file mode 100755 index fd79ad66d..000000000 --- a/system/views/pages/desktop/mapElement/content.php +++ /dev/null @@ -1,35 +0,0 @@ -getContainer()->get('app.request'); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -$rate = 400 / $galaxyConfiguration->galaxy['size']; -echo '
cookies->get('p' . Params::SHOW_MAP_MINIMAP, Params::$params[Params::SHOW_MAP_MINIMAP]) ? NULL : 'style="display:none;"') . '>'; - echo '
'; - echo ''; - foreach ($sectors as $sector) { - echo ''; - } - echo ''; - echo '
'; - foreach ($sectors as $sector) { - $i = $sector->getId() - 1; - echo ''; - echo $sector->getId(); - echo ''; - } - echo '
'; - echo ''; - foreach ($playerBases as $base) { - echo ''; - } - echo ''; - echo '
'; - echo '
'; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/coordbox.php b/system/views/pages/desktop/mapElement/coordbox.php deleted file mode 100755 index cf4c5a482..000000000 --- a/system/views/pages/desktop/mapElement/coordbox.php +++ /dev/null @@ -1,2 +0,0 @@ -'; diff --git a/system/views/pages/desktop/mapElement/layer/attacks.php b/system/views/pages/desktop/mapElement/layer/attacks.php deleted file mode 100755 index f3c333303..000000000 --- a/system/views/pages/desktop/mapElement/layer/attacks.php +++ /dev/null @@ -1,41 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -# chargement des commandants attaquants -$attackingCommanders = array_merge( - $commanderManager->getVisibleIncomingAttacks($session->get('playerId')), - $commanderManager->getOutcomingAttacks($session->get('playerId')) -); - -echo '
cookies->get('p' . Params::SHOW_MAP_FLEETIN, Params::$params[Params::SHOW_MAP_FLEETIN]) ? NULL : 'style="display:none;"') . '>'; - echo ''; - foreach ($attackingCommanders as $commander) { - - if ($commander->travelType != Commander::BACK) { - $startPlace = $placeManager->get($commander->rStartPlace); - $destinationPlace = $placeManager->get($commander->rDestinationPlace); - $x1 = $startPlace->getXSystem() * $galaxyConfiguration->scale; - $x2 = $destinationPlace->getXSystem() * $galaxyConfiguration->scale; - $y1 = $startPlace->getYSystem() * $galaxyConfiguration->scale; - $y2 = $destinationPlace->getYSystem() * $galaxyConfiguration->scale; - list($x3, $y3) = $commanderManager->getPosition($commander, $x1, $y1, $x2, $y2); - $rt = Utils::interval($commander->dArrival, Utils::now(), 's'); - - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/background.php b/system/views/pages/desktop/mapElement/layer/background.php deleted file mode 100755 index c2b8fcf21..000000000 --- a/system/views/pages/desktop/mapElement/layer/background.php +++ /dev/null @@ -1,2 +0,0 @@ -'; diff --git a/system/views/pages/desktop/mapElement/layer/commercialroutes.php b/system/views/pages/desktop/mapElement/layer/commercialroutes.php deleted file mode 100755 index fcf8455f5..000000000 --- a/system/views/pages/desktop/mapElement/layer/commercialroutes.php +++ /dev/null @@ -1,40 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -$qr = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class)->query('SELECT - sy1.xPosition AS sy1x, - sy1.yPosition AS sy1y, - sy2.xPosition AS sy2x, - sy2.yPosition AS sy2y, - cr.statement AS statement - FROM commercialRoute AS cr - LEFT JOIN place AS pl1 - ON cr.rOrbitalBase = pl1.id - LEFT JOIN system AS sy1 - ON pl1.rSystem = sy1.id - LEFT JOIN orbitalBase AS ob1 - ON cr.rOrbitalBase = ob1.rPlace - LEFT JOIN place AS pl2 - ON cr.rOrbitalBaseLinked = pl2.id - LEFT JOIN system AS sy2 - ON pl2.rSystem = sy2.id - LEFT JOIN orbitalBase AS ob2 - ON cr.rOrbitalBaseLinked = ob2.rPlace - WHERE - ob1.rPlayer = ' . $session->get('playerId') . ' OR - ob2.rPlayer = ' . $session->get('playerId')); -$aw = $qr->fetchAll(); - -echo '
cookies->get('p' . Params::SHOW_MAP_RC, Params::$params[Params::SHOW_MAP_RC]) ? NULL : 'style="display:none;"') . '>'; - echo ''; - foreach ($aw as $route) { - $class = ($route['statement'] == CommercialRoute::ACTIVE) ? 'active' : 'standBy'; - echo ''; - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/fleetmovements.php b/system/views/pages/desktop/mapElement/layer/fleetmovements.php deleted file mode 100755 index 4ae2c1cb4..000000000 --- a/system/views/pages/desktop/mapElement/layer/fleetmovements.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$commanderManager = $this->getContainer()->get(\Asylamba\Modules\Ares\Manager\CommanderManager::class); -$placeManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -$commanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::MOVING]); - -echo '
cookies->get('p' . Params::SHOW_MAP_FLEETOUT, Params::$params[Params::SHOW_MAP_FLEETOUT]) ? NULL : 'style="display:none;"') . '>'; - echo ''; - foreach ($commanders as $commander) { - if ($commander->rDestinationPlace !== NULL) { - $startPlace = $placeManager->get($commander->rStartPlace); - $destinationPlace = $placeManager->get($commander->rDestinationPlace); - $x1 = $startPlace->getXSystem() * $galaxyConfiguration->scale; - $x2 = $destinationPlace->getXSystem() * $galaxyConfiguration->scale; - $y1 = $startPlace->getYSystem() * $galaxyConfiguration->scale; - $y2 = $destinationPlace->getYSystem() * $galaxyConfiguration->scale; - list($x3, $y3) = $commanderManager->getPosition($commander, $x1, $y1, $x2, $y2); - $rt = Utils::interval($commander->dArrival, Utils::now(), 's'); - - echo 'travelType == Commander::BACK ? 'class="back"' : NULL) . ' x1="' . $x1 . '" x2="' . $x2 . '" y1="' . $y1 . '" y2="' . $y2 . '" />'; - echo ''; - echo ''; - echo ''; - echo ''; - } - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/map-info.php b/system/views/pages/desktop/mapElement/layer/map-info.php deleted file mode 100755 index 55a6a630f..000000000 --- a/system/views/pages/desktop/mapElement/layer/map-info.php +++ /dev/null @@ -1,29 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); - -echo '
'; - echo '

Légende

'; - - echo '

Type de système

'; - echo '
    '; - echo '
  • Cimetière Spatial
  • '; - echo '
  • Nébuleuse
  • '; - echo '
  • Géante Bleue
  • '; - echo '
  • Naine Jaune
  • '; - echo '
  • Naine Rouge
  • '; - echo '
'; - - echo '

Revendication

'; - echo '
    '; - echo '
  • Non revendiquée
  • '; - - //foreach ([4, 8, 10, 11, 12] as $faction) { - foreach ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] as $faction) { - echo '
  • ' . ColorResource::getInfo($faction, 'officialName') . '
  • '; - } - echo '
'; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/ownbase.php b/system/views/pages/desktop/mapElement/layer/ownbase.php deleted file mode 100755 index ffa663d70..000000000 --- a/system/views/pages/desktop/mapElement/layer/ownbase.php +++ /dev/null @@ -1,25 +0,0 @@ -getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -echo '
'; - echo ''; - foreach ($playerBases as $base) { - echo ''; - - if ($base->getId() == $defaultBase->getId()) { - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - } else { - echo ''; - } - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/sectors.php b/system/views/pages/desktop/mapElement/layer/sectors.php deleted file mode 100755 index aa5f995e2..000000000 --- a/system/views/pages/desktop/mapElement/layer/sectors.php +++ /dev/null @@ -1,17 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); -$sectorManager = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SectorManager::class); - -echo '
'; - echo ''; - foreach ($sectors as $sector) { - echo ''; - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/spying.php b/system/views/pages/desktop/mapElement/layer/spying.php deleted file mode 100755 index 2200b6963..000000000 --- a/system/views/pages/desktop/mapElement/layer/spying.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -echo '
cookies->get('p' . Params::SHOW_MAP_ANTISPY, Params::$params[Params::SHOW_MAP_ANTISPY]) ? NULL : 'style="display:none;"') . '>'; - echo ''; - foreach ($playerBases as $base) { - $bigRadius = Game::getAntiSpyRadius($base->getAntiSpyAverage()); - - echo ''; - echo ''; - echo ''; - } - echo ''; -echo '
'; diff --git a/system/views/pages/desktop/mapElement/layer/systems.php b/system/views/pages/desktop/mapElement/layer/systems.php deleted file mode 100755 index d33699bdc..000000000 --- a/system/views/pages/desktop/mapElement/layer/systems.php +++ /dev/null @@ -1,51 +0,0 @@ -getContainer(); -$mediaPath = $container->getParameter('media'); -$galaxyConfiguration = $this->getContainer()->get(\Asylamba\Modules\Gaia\Galaxy\GalaxyConfiguration::class); - -echo '
'; - $systems = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\SystemManager::class)->getAll(); - - # own bases - $basesId = array(); - foreach ($playerBases as $base) { - $basesId[] = $base->getSystem(); - } - - foreach ($systems as $system) { - $owner = (in_array($system->getId(), $basesId)) ? 'class="own"' : ''; - echo ''; - echo ''; - echo ''; - } - - foreach ($sectors as $sector) { - echo ''; - echo $sector->getId(); - echo ''; - - echo '
'; - echo '

' . $sector->getName() . '

'; - echo '

+ '; - if ($sector->getRColor() != 0) { - echo 'Revendiqué par ' . ColorResource::getInfo($sector->getRColor(), 'popularName') . ' | ' . $sector->getTax() . '% de taxe' . ' | rapporte ' . $sector->points . Format::addPlural($sector->points, ' points', ' point'); - } else { - echo 'Non revendiqué | Aucune taxe' . ' | rapporte ' . $sector->points . Format::addPlural($sector->points, ' points', ' point') . '

'; - } - echo '

'; - echo '
'; - } - -echo '
'; diff --git a/system/views/pages/desktop/mapElement/movers.php b/system/views/pages/desktop/mapElement/movers.php deleted file mode 100755 index df552bb91..000000000 --- a/system/views/pages/desktop/mapElement/movers.php +++ /dev/null @@ -1,5 +0,0 @@ -'; -echo ''; -echo ''; -echo ''; diff --git a/system/views/pages/desktop/mapElement/option.php b/system/views/pages/desktop/mapElement/option.php deleted file mode 100755 index 9295db0f6..000000000 --- a/system/views/pages/desktop/mapElement/option.php +++ /dev/null @@ -1,76 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/message.php b/system/views/pages/desktop/message.php deleted file mode 100755 index fec21133e..000000000 --- a/system/views/pages/desktop/message.php +++ /dev/null @@ -1,97 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$conversationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationManager::class); -$conversationUserManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationUserManager::class); -$conversationMessageManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\ConversationMessageManager::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); - -# background paralax -echo '
'; - -# inclusion des elements -include 'defaultElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - # liste des conv's - $display = - ((int) $request->query->get('mode') === ConversationUser::CS_ARCHIVED) - ? ConversationUser::CS_ARCHIVED - : ConversationUser::CS_DISPLAY - ; - # chargement de toutes les conversations - $conversationManager->newSession(); - $conversationManager->load( - ['cu.rPlayer' => $session->get('playerId'), 'cu.convStatement' => $display], - ['c.dLastMessage', 'DESC'], - [0, Conversation::CONVERSATION_BY_PAGE] - ); - - $conversation_listmode = FALSE; - - include $componentPath . 'conversation/list.php'; - - if ($request->query->has('conversation')) { - if ($request->query->get('conversation') === 'new') { - include $componentPath . 'conversation/create.php'; - } else { - # chargement d'une conversation - $conversationManager->newSession(); - $conversationManager->load( - ['c.id' => $request->query->get('conversation'), 'cu.rPlayer' => $session->get('playerId')] - ); - - if ($conversationManager->size() == 1) { - # chargement des infos d'une conversation - $conversationUserManager->newSession(); - $conversationUserManager->load(['c.rConversation' => $request->query->get('conversation')]); - - # mis à jour de l'heure de la dernière vue - for ($i = 0; $i < $conversationUserManager->size(); $i++) { - if ($conversationUserManager->get($i)->rPlayer == $session->get('playerId')) { - $dPlayerLastMessage = $conversationUserManager->get($i)->dLastView; - $currentUser = $conversationUserManager->get($i); - - $conversationUserManager->get($i)->dLastView = Utils::now(); - } - } - - # chargement des messages - $conversationMessageManager->newSession(); - $conversationMessageManager->load( - ['c.rConversation' => $request->query->get('conversation')], - ['c.dCreation', 'DESC'], - [0, ConversationMessage::MESSAGE_BY_PAGE] - ); - - $message_listmode = FALSE; - - include $componentPath . 'conversation/messages.php'; - include $componentPath . 'conversation/manage.php'; - } else { - $this->getContainer()->get('app.response')->redirect('message'); - } - } - } else { - include $componentPath . 'conversation/new.php'; - } - - $unarchivedNotifications = $notificationManager->getPlayerNotificationsByArchive($session->get('playerId'), 0); - include $componentPath . 'notif/last.php'; - - $archivedNotifications = $notificationManager->getPlayerNotificationsByArchive($session->get('playerId'), 1); - if (count($archivedNotifications) > 0) { - include $componentPath . 'notif/archived.php'; - } -echo '
'; diff --git a/system/views/pages/desktop/params.php b/system/views/pages/desktop/params.php deleted file mode 100755 index 10874b0f2..000000000 --- a/system/views/pages/desktop/params.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -# background paralax -echo '
'; - -# inclusion des elements -include 'defaultElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - include $componentPath . 'params/general.php'; - include $componentPath . 'params/display.php'; - include $componentPath . 'params/chat.php'; -# include $componentPath . 'params/advertisement.php'; -echo '
'; diff --git a/system/views/pages/desktop/profil.php b/system/views/pages/desktop/profil.php deleted file mode 100755 index ee1f04415..000000000 --- a/system/views/pages/desktop/profil.php +++ /dev/null @@ -1,48 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$mediaPath = $container->getParameter('media'); -$componentPath = $container->getParameter('component'); - -if ($request->query->get('mode') === 'splash') { - echo '
'; - echo ''; - echo '
'; -} - -# background paralax -echo '
'; - -# inclusion des elements -include 'profilElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - $playerBases = $orbitalBaseManager->getPlayerBases($session->get('playerId')); - - # playerRoleplayProfil component - $player_playerRoleplayProfil = $playerManager->get($session->get('playerId')); - include $componentPath . 'player/playerRoleplayProfil.php'; - - # obFastView component - foreach ($playerBases as $ob_fastView) { - $ob_index = ($i + 1); - $fastView_profil = TRUE; - include $componentPath . 'bases/fastView.php'; - } - - if (count($playerBases) === 1) { - include $componentPath . 'default.php'; - } -echo '
'; diff --git a/system/views/pages/desktop/profilElement/subnav.php b/system/views/pages/desktop/profilElement/subnav.php deleted file mode 100755 index 716f2714d..000000000 --- a/system/views/pages/desktop/profilElement/subnav.php +++ /dev/null @@ -1,21 +0,0 @@ -getContainer(); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/rank.php b/system/views/pages/desktop/rank.php deleted file mode 100755 index 87f794bb2..000000000 --- a/system/views/pages/desktop/rank.php +++ /dev/null @@ -1,112 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$playerRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\PlayerRankingManager::class); -$factionRankingManager = $this->getContainer()->get(\Asylamba\Modules\Atlas\Manager\FactionRankingManager::class); - -# background paralax -echo '
'; - -# inclusion des elements -include 'rankElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - - if (!$request->query->has('view') OR $request->query->get('view') == 'player') { - $S_PRM1 = $playerRankingManager->getCurrentSession(); - - # load current player - $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array('rPlayer' => $session->get('playerId'))); - $p = $playerRankingManager->get(); - - $generalPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->generalPosition - PlayerRanking::PREV < 0) ? 0 : $p->generalPosition - PlayerRanking::PREV; - $resourcesPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->resourcesPosition - PlayerRanking::PREV < 0) ? 0 : $p->resourcesPosition - PlayerRanking::PREV; - $experiencePosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->experiencePosition - PlayerRanking::PREV < 0) ? 0 : $p->experiencePosition - PlayerRanking::PREV; - $fightPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->fightPosition - PlayerRanking::PREV < 0) ? 0 : $p->fightPosition - PlayerRanking::PREV; - $armiesPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->armiesPosition - PlayerRanking::PREV < 0) ? 0 : $p->armiesPosition - PlayerRanking::PREV; - $butcherPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->butcherPosition - PlayerRanking::PREV < 0) ? 0 : $p->butcherPosition - PlayerRanking::PREV; - $traderPosition = ($p === FALSE || $request->query->get('mode') === 'top' || $p->traderPosition - PlayerRanking::PREV < 0) ? 0 : $p->traderPosition - PlayerRanking::PREV; - - # include part - $PLAYER_RANKING_FRONT = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('generalPosition', 'ASC'), array(0, 1)); - include $componentPath . 'rank/player/front.php'; - - $PLAYER_RANKING_GENERAL = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('generalPosition', 'ASC'), array($generalPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/general.php'; - - $PLAYER_RANKING_XP = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('experiencePosition', 'ASC'), array($experiencePosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/xp.php'; - - $PLAYER_RANKING_FIGHT = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('fightPosition', 'ASC'), array($fightPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/fight.php'; - - $PLAYER_RANKING_RESOURCES = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('resourcesPosition', 'ASC'), array($resourcesPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/resources.php'; - - $PLAYER_RANKING_ARMIES = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('armiesPosition', 'ASC'), array($armiesPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/armies.php'; - - $PLAYER_RANKING_BUTCHER = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('butcherPosition', 'ASC'), array($butcherPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/butcher.php'; - - $PLAYER_RANKING_TRADER = $playerRankingManager->newSession(); - $playerRankingManager->loadLastContext(array(), array('traderPosition', 'ASC'), array($traderPosition, PlayerRanking::STEP)); - include $componentPath . 'rank/player/trader.php'; - - include $componentPath . 'rank/player/stats.php'; - - $playerRankingManager->changeSession($S_PRM1); - } elseif ($request->query->get('view') == 'faction') { - $S_FRM1 = $factionRankingManager->getCurrentSession(); - - # include part - $FACTION_RANKING_FRONT = $factionRankingManager->newSession(); - - if (Utils::interval($container->getParameter('server_start_time'), Utils::now(), 'h') > $container->getParameter('hours_before_start_of_ranking')) { - $factionRankingManager->loadLastContext([], ['pointsPosition', 'ASC'], [0, 1]); - } else { - $factionRankingManager->loadLastContext([], ['generalPosition', 'ASC'], [0, 1]); - } - - include $componentPath . 'rank/faction/front.php'; - - $FACTION_RANKING_POINTS = $factionRankingManager->newSession(); - $factionRankingManager->loadLastContext([], ['pointsPosition', 'ASC']); - include $componentPath . 'rank/faction/points.php'; - - $FACTION_RANKING_GENERAL = $factionRankingManager->newSession(); - $factionRankingManager->loadLastContext([], ['generalPosition', 'ASC']); - include $componentPath . 'rank/faction/general.php'; - - $FACTION_RANKING_WEALTH = $factionRankingManager->newSession(); - $factionRankingManager->loadLastContext([], ['wealthPosition', 'ASC']); - include $componentPath . 'rank/faction/wealth.php'; - - $FACTION_RANKING_TERRITORIAL = $factionRankingManager->newSession(); - $factionRankingManager->loadLastContext([], ['territorialPosition', 'ASC']); - include $componentPath . 'rank/faction/territorial.php'; - - include $componentPath . 'rank/faction/info-victory.php'; - - $factionRankingManager->changeSession($S_FRM1); - } else { - $this->getContainer()->get('app.response')->redirect('404'); - } -echo '
'; diff --git a/system/views/pages/desktop/rankElement/subnav.php b/system/views/pages/desktop/rankElement/subnav.php deleted file mode 100755 index a59cb62e4..000000000 --- a/system/views/pages/desktop/rankElement/subnav.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/pages/desktop/sponsorship.php b/system/views/pages/desktop/sponsorship.php deleted file mode 100644 index 16ad828d2..000000000 --- a/system/views/pages/desktop/sponsorship.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -# background paralax -echo '
'; - -# inclusion des elements -include 'defaultElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - include $componentPath . 'sponsorship/infos.php'; - include $componentPath . 'sponsorship/send-mail.php'; - include $componentPath . 'sponsorship/list-godson.php'; -echo '
'; diff --git a/system/views/pages/desktop/technology.php b/system/views/pages/desktop/technology.php deleted file mode 100755 index a5e81deed..000000000 --- a/system/views/pages/desktop/technology.php +++ /dev/null @@ -1,36 +0,0 @@ -getContainer(); -$componentPath = $container->getParameter('component'); -$playerManager = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class); -$researchManager = $this->getContainer()->get(\Asylamba\Modules\Promethee\Manager\ResearchManager::class); -$request = $this->getContainer()->get('app.request'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -# background paralax -echo '
'; - -# inclusion des elements -# include 'technologyElement/subnav.php'; -include 'defaultElement/subnav.php'; -include 'defaultElement/movers.php'; - -# contenu spécifique -echo '
'; - include $componentPath . 'publicity.php'; - $S_RSM_TECH = $researchManager->getCurrentSession(); - $researchManager->newSession(); - $researchManager->load(array('rPlayer' => $session->get('playerId'))); - - if (!$request->query->has('view') OR $request->query->get('view') == 'university') { - $player_university = $playerManager->get($session->get('playerId')); - $research_university = $researchManager->get(0); - include $componentPath . 'tech/university.php'; - } elseif ($request->query->get('view') == 'technos') { - include $componentPath . 'tech/infoTech.php'; - } else { - $this->getContainer()->redirect('404'); - } - - $researchManager->changeSession($S_RSM_TECH); -echo '
'; diff --git a/system/views/pages/desktop/technologyElement/subnav.php b/system/views/pages/desktop/technologyElement/subnav.php deleted file mode 100755 index bb036c77b..000000000 --- a/system/views/pages/desktop/technologyElement/subnav.php +++ /dev/null @@ -1,32 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -echo ''; diff --git a/system/views/templates/desktop/alert.php b/system/views/templates/desktop/alert.php deleted file mode 100755 index 60fecc693..000000000 --- a/system/views/templates/desktop/alert.php +++ /dev/null @@ -1,18 +0,0 @@ -getContainer()->get('app.response')->getRedirect() !== null) { - return; -} - -echo '
    '; - -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); - -echo '
      '; -foreach ($session->getFlashbags() as $flashbag) { - echo "
    • {$flashbag->getMessage()}
    • "; -} -echo '
    '; - -$session->flushFlashbags(); diff --git a/system/views/templates/desktop/btmbar.php b/system/views/templates/desktop/btmbar.php deleted file mode 100755 index 07898d58f..000000000 --- a/system/views/templates/desktop/btmbar.php +++ /dev/null @@ -1,3 +0,0 @@ -'; -echo ''; diff --git a/system/views/templates/desktop/close.php b/system/views/templates/desktop/close.php deleted file mode 100755 index 33b91573c..000000000 --- a/system/views/templates/desktop/close.php +++ /dev/null @@ -1,47 +0,0 @@ -getContainer(); -$jsPath = $container->getParameter('js'); - -$getJsHost = function () use ($container) { - $serverHost = $container->getParameter('server_host'); - - return ($container->hasParameter('server_port') && 80 !== ($serverPort = $container->getParameter('server_port'))) - ? \sprintf('%s:%s', $serverHost, $serverPort) - : $serverHost; -}; - -$shipsName = []; -for ($i = 0; $i < 12; $i++) { - $shipsName[] = "'" . ShipResource::getInfo($i, 'codeName') . "'"; -} -$shipsName = implode(', ', $shipsName); - -$shipsPev = []; -for ($i = 0; $i < 12; $i++) { - $shipsPev[] = ShipResource::getInfo($i, 'pev'); -} -$shipsPev = implode(', ', $shipsPev); - - if ($this->getContainer()->getParameter('environment') === 'dev') { - echo ''; - } else { - echo ''; - } - - echo ''; - echo ''; - echo ''; - echo ''; -echo ''; -echo ''; diff --git a/system/views/templates/desktop/navbar.php b/system/views/templates/desktop/navbar.php deleted file mode 100755 index 01b64083e..000000000 --- a/system/views/templates/desktop/navbar.php +++ /dev/null @@ -1,268 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$notificationManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\NotificationManager::class); -$roadmapManager = $this->getContainer()->get(\Asylamba\Modules\Hermes\Manager\RoadMapManager::class); -$database = $this->getContainer()->get(\Asylamba\Classes\Database\Database::class); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$sessionToken = $session->get('token'); -$appRoot = $container->getParameter('app_root'); -$mediaPath = $container->getParameter('media'); - -$notifications = $notificationManager->getUnreadNotifications($session->get('playerId')); -$nbNotifications = count($notifications); -# load message -$qr = $database->prepare('SELECT COUNT(c.id) AS count - FROM `conversation` AS c - LEFT JOIN `conversationUser` AS u - ON u.rConversation = c.id - WHERE u.rPlayer = ? - AND u.dLastView < c.dLastMessage' -); -$qr->execute(array($session->get('playerId'))); -$message = $qr->fetch(); -$message = $message['count']; -$qr->closeCursor(); - -# DISPLAY NAV BAR -################# -echo ''; - -# open general container -echo '
    '; diff --git a/system/views/templates/desktop/open.php b/system/views/templates/desktop/open.php deleted file mode 100755 index ca7b5f5d6..000000000 --- a/system/views/templates/desktop/open.php +++ /dev/null @@ -1,76 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); -$response = $this->getContainer()->get('app.response'); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$cssPath = $container->getParameter('css'); -$mediaPath = $container->getParameter('media'); - -if ($response->getPage() == 'inscription' && ($request->query->get('step') == 1 || !$request->query->has('step'))) { - $color = 'color0'; -} elseif ($response->getPage() == 'inscription' && $session->exist('inscription')) { - $color = 'color' . $session->get('inscription')->get('ally'); -} else { - $color = 'color' . $session->get('playerInfo')->get('color'); -} - -echo ''; -echo ''; - -echo ''; - echo ''; - echo ($response->getPage() == 'inscription') - ? $response->getTitle() - : $response->getTitle() . ' — ' . $session->get('playerInfo')->get('name'); - echo ' — ' . $container->getParameter('app_subname'); - echo ' — ' . $container->getParameter('app_name'); - echo ''; - - echo ''; - echo ''; - - echo ''; - - if ($container->getParameter('color_style')) { - echo ($response->getPage() == 'inscription' && !$request->query->has('step') || ($request->query->get('step') == 1)) - ? '' - : ''; - } else { - echo ''; - } - - echo ''; -echo ''; - -if ($container->getParameter('analytics')) { -?> - -getPage() == 'inscription') ? ' inscription' : ''; - echo '" '; - if ($session->exist('sftr')) { - echo 'data-init-sftr="' . $session->get('sftr') . '"'; - $session->remove('sftr'); - } elseif ($request->query->has('sftr')) { - echo 'data-init-sftr="' . $request->query->get('sftr') . '"'; - } else { - echo 'data-init-sftr="2"'; - } - -echo '>'; diff --git a/system/views/templates/desktop/stepbar.php b/system/views/templates/desktop/stepbar.php deleted file mode 100755 index 5cafd5388..000000000 --- a/system/views/templates/desktop/stepbar.php +++ /dev/null @@ -1,31 +0,0 @@ -getContainer(); -$request = $this->getContainer()->get('app.request'); - -echo ''; - -echo '
    '; diff --git a/system/views/templates/desktop/toolbar.php b/system/views/templates/desktop/toolbar.php deleted file mode 100755 index 487c117cb..000000000 --- a/system/views/templates/desktop/toolbar.php +++ /dev/null @@ -1,322 +0,0 @@ -getContainer(); -$session = $this->getContainer()->get(\Asylamba\Classes\Library\Session\SessionWrapper::class); -$orbitalBaseManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\OrbitalBaseManager::class); -$buildingQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\BuildingQueueManager::class); -$shipQueueManager = $this->getContainer()->get(\Asylamba\Modules\Athena\Manager\ShipQueueManager::class); -$orbitalBaseHelper = $this->getContainer()->get(\Asylamba\Modules\Athena\Helper\OrbitalBaseHelper::class); -$technologyHelper = $this->getContainer()->get(\Asylamba\Modules\Promethee\Helper\TechnologyHelper::class); -$place = $this->getContainer()->get(\Asylamba\Modules\Gaia\Manager\PlaceManager::class); -$player = $this->getContainer()->get(\Asylamba\Modules\Zeus\Manager\PlayerManager::class)->get($session->get('playerId')); -$mediaPath = $container->getParameter('media'); -$appRoot = $container->getParameter('app_root'); - -$currentBase = $orbitalBaseManager->get($session->get('playerParams')->get('base')); - -$incomingCommanders = $commanderManager->getVisibleIncomingAttacks($session->get('playerId'));; -$nbIncomingCommanders = count($incomingCommanders); - -$outcomingCommanders = $commanderManager->getPlayerCommanders($session->get('playerId'), [Commander::MOVING]); -$nbOutcomingCommanders = count($outcomingCommanders); -echo '
    '; - -echo '
    '; - # left - echo '
    '; - echo ''; - echo Chronos::getTimer('i') . ':' . Chronos::getTimer('s'); - echo ''; - echo '
    '; - - echo '
    '; - echo ''; - echo Format::numberFormat($currentBase->getResourcesStorage()); - echo ' ressources'; - echo ''; - - $nbBuildingQueues = count($currentBase->buildingQueues); - echo ''; - echo ($nbBuildingQueues !== 0) ? '' . $nbBuildingQueues . '' : NULL; - echo ''; - - $nbTechnos = count($currentBase->technoQueues); - echo ''; - echo ($nbTechnos > 0) ? '' . $nbTechnos . '' : NULL; - echo ''; - - $dock1ShipQueues = $shipQueueManager->getByBaseAndDockType($currentBase->rPlace, 1); - $nbDock1ShipQueues = count($dock1ShipQueues); - echo ''; - echo ($nbDock1ShipQueues > 0) ? '' . $nbDock1ShipQueues . '' : NULL; - echo ''; - - $dock2ShipQueues = $shipQueueManager->getByBaseAndDockType($currentBase->rPlace, 2); - $nbDock2ShipQueues = count($dock2ShipQueues); - echo ''; - echo ($nbDock2ShipQueues > 0) ? '' . $nbDock2ShipQueues . '' : NULL; - echo ''; - echo '
    '; - - # right - echo '
    '; - echo ''; - echo ($nbIncomingCommanders > 0) ? '' . $nbIncomingCommanders . '' : NULL; - echo ''; - - echo ''; - echo ($nbOutcomingCommanders > 0) ? '' . $nbOutcomingCommanders . '' : NULL; - echo ''; - - echo ''; - echo Format::numberFormat($player->getCredit()); - echo ' crédits'; - echo ''; - echo '
    '; - - # overboxes - echo '
    '; - echo '

    '; - echo 'SEG' . Chronos::getDate('seg') . ' REL' . Chronos::getDate('rel') . ', '; - echo Format::ordinalNumber(Chronos::getDate('str')) . ' strate'; - echo '

    '; - echo '
    '; - - echo '
    '; - echo '

    Raffinerie

    '; - echo '
    '; - echo '
    '; - echo 'production par relève'; - echo ''; - $production = Game::resourceProduction($orbitalBaseHelper->getBuildingInfo(1, 'level', $currentBase->getLevelRefinery(), 'refiningCoefficient'), $currentBase->getPlanetResources()); - echo Format::numberFormat($production); - $refiningBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_REFINING); - if ($refiningBonus > 0) { - echo '+' . Format::numberFormat(($production * $refiningBonus / 100)) . ''; - } - echo ' ressources'; - echo ''; - echo '
    '; - - echo '
    '; - echo 'ressources en stock'; - echo ''; - echo Format::numberFormat($currentBase->getResourcesStorage()); - echo ' ressources'; - echo ''; - $storageSpace = $orbitalBaseHelper->getBuildingInfo(OrbitalBaseResource::STORAGE, 'level', $currentBase->getLevelStorage(), 'storageSpace'); - $storageBonus = $session->get('playerBonus')->get(PlayerBonus::REFINERY_STORAGE); - if ($storageBonus > 0) { - $storageSpace += ($storageSpace * $storageBonus / 100); - } - $percent = Format::numberFormat($currentBase->getResourcesStorage() / $storageSpace * 100); - echo ''; - echo ''; - echo ''; - echo '
    '; - - echo 'vers la raffinerie'; - echo '
    '; - echo '
    '; - - echo '
    '; - echo '

    Générateur

    '; - echo '
    '; - if ($nbBuildingQueues > 0) { - $qe = $currentBase->buildingQueues[0]; - echo '
    '; - echo '
    '; - echo ''; - echo ''; - echo $orbitalBaseHelper->getBuildingInfo($qe->buildingNumber, 'frenchName'); - echo ' niv. ' . $qe->targetLevel . ''; - echo ''; - - echo '' . Chronos::secondToFormat(Utils::interval(Utils::now(), $qe->dEnd, 's'), 'lite') . ''; - - echo ''; - echo ''; - echo''; - echo ''; - echo '
    '; - echo '
    '; - } else { - echo '

    Aucun bâtiment en construction pour le moment.

    '; - } - - echo 'vers le générateur'; - echo '
    '; - echo '
    '; - - echo '
    '; - echo '

    Chantier Alpha

    '; - echo '
    '; - if ($nbDock1ShipQueues > 0) { - $qe = $dock1ShipQueues[0]; - echo '
    '; - echo '
    '; - echo ''; - echo ''; - echo $qe->quantity . ' ' . ShipResource::getInfo($qe->shipNumber, 'codeName') . Format::addPlural($qe->quantity); - echo ''; - - echo '' . Chronos::secondToFormat(Utils::interval(Utils::now(), $qe->dEnd, 's'), 'lite') . ''; - - echo ''; - echo ''; - echo''; - echo ''; - echo '
    '; - echo '
    '; - } else { - echo '

    Aucun vaisseau en construction pour le moment.

    '; - } - - echo 'vers le chantier alpha'; - echo '
    '; - echo '
    '; - - echo '
    '; - echo '

    Chantier de ligne

    '; - echo '
    '; - if ($nbDock2ShipQueues > 0) { - $qe = $dock2ShipQueues[0]; - echo '
    '; - echo '
    '; - echo ''; - echo ''; - echo $qe->quantity . ' ' . ShipResource::getInfo($qe->shipNumber, 'codeName') . Format::addPlural($qe->quantity); - echo ''; - - echo '' . Chronos::secondToFormat(Utils::interval(Utils::now(), $qe->dEnd, 's'), 'lite') . ''; - - echo ''; - echo ''; - echo''; - echo ''; - echo '
    '; - echo '
    '; - } else { - echo '

    Aucun vaisseau en construction pour le moment.

    '; - } - - echo 'vers le chantier de ligne'; - echo '
    '; - echo '
    '; - - echo '
    '; - echo '

    Technosphère

    '; - echo '
    '; - if ($nbTechnos > 0) { - $qe = $currentBase->technoQueues[0]; - echo '
    '; - echo '
    '; - echo ''; - echo '' . $technologyHelper->getInfo($qe->technology, 'name'); - if (!$technologyHelper->isAnUnblockingTechnology($qe->technology)) { - echo ' niv. ' . $qe->targetLevel . ''; - } - echo ''; - - echo '' . Chronos::secondToFormat(Utils::interval(Utils::now(), $qe->dEnd, 's'), 'lite') . ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
    '; - echo '
    '; - } else { - echo '

    Aucune recherche en cours pour le moment.

    '; - } - - echo 'vers la technosphère'; - echo '
    '; - echo '
    '; - - echo '
    '; - echo '

    Attaques entrantes

    '; - echo '
    '; - if (count($incomingCommanders) > 0) { - echo '
    '; - - foreach ($incomingCommanders as $commander) { - echo '
    '; - echo ''; - echo '' . CommanderResources::getInfo($commander->level, 'grade') . ' ' . $commander->name . ''; - echo ''; - switch ($commander->travelType) { - case Commander::MOVE: echo 'déplacement vers ' . $commander->destinationPlaceName; break; - case Commander::LOOT: echo 'pillage de ' . $commander->destinationPlaceName;; break; - case Commander::COLO: echo 'colonisation de ' . $commander->destinationPlaceName;; break; - case Commander::BACK: echo 'retour vers ' . $commander->destinationPlaceName;; break; - default: echo 'autre'; break; - } - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
    '; - } - - echo '
    '; - } else { - echo '

    Aucune attaques entrantes.

    '; - } - echo '
    '; - echo 'vers l\'amirauté'; - echo '
    '; - - echo '
    '; - echo '

    Déplacement de vos flottes

    '; - echo '
    '; - if ($nbOutcomingCommanders > 0) { - echo '
    '; - - foreach ($outcomingCommanders as $commander) { - echo '
    '; - echo ''; - echo '' . CommanderResources::getInfo($commander->getLevel(), 'grade') . ' ' . $commander->getName() . ''; - echo ''; - switch ($commander->getTravelType()) { - case Commander::MOVE: echo 'déplacement vers ' . $commander->getDestinationPlaceName(); break; - case Commander::LOOT: echo 'pillage de ' . $commander->getDestinationPlaceName(); break; - case Commander::COLO: echo 'colonisation de ' . $commander->getDestinationPlaceName(); break; - case Commander::BACK: echo 'retour vers ' . $commander->getDestinationPlaceName(); break; - default: echo 'autre'; break; - } - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo '
    '; - } - - echo '
    '; - } else { - echo '

    Aucune flotte en route.

    '; - } - echo '
    '; - echo 'vers l\'amirauté'; - echo '
    '; -echo '
    '; diff --git a/system/views/templates/fatal.php b/system/views/templates/fatal.php deleted file mode 100644 index c7043604e..000000000 --- a/system/views/templates/fatal.php +++ /dev/null @@ -1,28 +0,0 @@ -getContainer(); - -echo ''; -echo ''; - -echo ''; - echo '500 — Expansion'; - - echo ''; - echo ''; - echo ''; -echo ''; - -echo ''; - echo '
    '; - echo '

    500. Erreur interne.

    '; - echo '

    Une terrible erreur s\'est produite, condamnant les asylambiens à errer dans le cosmos.
    '; - echo 'Nous réparons au plus vite le réacteur principal pour que tout redémarre correctement.

    '; - echo '
    '; - - echo ''; -echo ''; diff --git a/system/views/templates/notfound.php b/system/views/templates/notfound.php deleted file mode 100755 index 612d0d3a2..000000000 --- a/system/views/templates/notfound.php +++ /dev/null @@ -1,28 +0,0 @@ -getContainer(); - -echo ''; -echo ''; - -echo ''; - echo '404 — Expansion'; - - echo ''; - echo ''; - echo ''; -echo ''; - -echo ''; - echo '
    '; - echo '

    404. Not Found.

    '; - echo '

    Une page se perd dans l\'infini de l\'espace et c\'est le drame.
    '; - echo 'Après on fait avec.

    '; - echo '
    '; - - echo ''; -echo ''; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 000000000..25cbcef03 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,62 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./assets/**/*.js", + "./templates/**/*.html.twig", + ], + theme: { + extend: { + colors: { + light: "var(--color-light)", + medium: "var(--color-medium)", + dark: "var(--color-dark)", + light0: "var(--color-light-0)", + medium0: "var(--color-medium-0)", + dark0: "var(--color-dark-0)", + light1: "var(--color-light-1)", + medium1: "var(--color-medium-1)", + dark1: "var(--color-dark-1)", + light2: "var(--color-light-2)", + medium2: "var(--color-medium-2)", + dark2: "var(--color-dark-2)", + light3: "var(--color-light-3)", + medium3: "var(--color-medium-3)", + dark3: "var(--color-dark-3)", + light4: "var(--color-light-4)", + medium4: "var(--color-medium-4)", + dark4: "var(--color-dark-4)", + light5: "var(--color-light-5)", + medium5: "var(--color-medium-5)", + dark5: "var(--color-dark-5)", + light6: "var(--color-light-6)", + medium6: "var(--color-medium-6)", + dark6: "var(--color-dark-6)", + light7: "var(--color-light-7)", + medium7: "var(--color-medium-7)", + dark7: "var(--color-dark-7)", + light8: "var(--color-light-8)", + medium8: "var(--color-medium-8)", + dark8: "var(--color-dark-8)", + light9: "var(--color-light-9)", + medium9: "var(--color-medium-9)", + dark9: "var(--color-dark-9)", + light10: "var(--color-light-10)", + medium10: "var(--color-medium-10)", + dark10: "var(--color-dark-10)", + light11: "var(--color-light-11)", + medium11: "var(--color-medium-11)", + dark11: "var(--color-dark-11)", + light12: "var(--color-light-12)", + medium12: "var(--color-medium-12)", + dark12: "var(--color-dark-12)", + }, + }, + }, + plugins: [], + safelist: [ + { + pattern: /(bg|fill|stroke|text|border|outline)-(light|medium|dark)+/, + variants: ['hover', 'peer-checked', 'focus-within', 'focus', 'data', 'group-odd', 'group-even'], + }, + ] +} diff --git a/templates/atoms/header/badge.html.twig b/templates/atoms/header/badge.html.twig new file mode 100644 index 000000000..ec7a154fb --- /dev/null +++ b/templates/atoms/header/badge.html.twig @@ -0,0 +1,3 @@ + + {{ count }} + diff --git a/templates/atoms/map/minimap/filter.html.twig b/templates/atoms/map/minimap/filter.html.twig new file mode 100644 index 000000000..422d6dda5 --- /dev/null +++ b/templates/atoms/map/minimap/filter.html.twig @@ -0,0 +1,9 @@ + + minimap + diff --git a/templates/atoms/rankings/bottom_mover.html.twig b/templates/atoms/rankings/bottom_mover.html.twig new file mode 100644 index 000000000..97486fca7 --- /dev/null +++ b/templates/atoms/rankings/bottom_mover.html.twig @@ -0,0 +1,7 @@ +{% if loop.last %} + + + afficher les joueurs suivants + + +{% endif %} diff --git a/templates/atoms/rankings/faction_position.html.twig b/templates/atoms/rankings/faction_position.html.twig new file mode 100644 index 000000000..312750323 --- /dev/null +++ b/templates/atoms/rankings/faction_position.html.twig @@ -0,0 +1,3 @@ + + {{ variation }} + diff --git a/templates/atoms/rankings/top_mover.html.twig b/templates/atoms/rankings/top_mover.html.twig new file mode 100644 index 000000000..3307314eb --- /dev/null +++ b/templates/atoms/rankings/top_mover.html.twig @@ -0,0 +1,5 @@ +{% if loop.first and current_position != 1 %} + + afficher les joueurs précédents + +{% endif %} diff --git a/templates/atoms/rankings/variation.html.twig b/templates/atoms/rankings/variation.html.twig new file mode 100644 index 000000000..8e7f6deba --- /dev/null +++ b/templates/atoms/rankings/variation.html.twig @@ -0,0 +1,6 @@ +{% if variation != 0 %} +
    + {{ variation > 0 ? '+' : '-' }} + {{ variation|abs }} +
    +{% endif %} diff --git a/templates/blocks/athena/autocomplete_base.html.twig b/templates/blocks/athena/autocomplete_base.html.twig new file mode 100644 index 000000000..7c12f5cd0 --- /dev/null +++ b/templates/blocks/athena/autocomplete_base.html.twig @@ -0,0 +1,7 @@ +{% apply spaceless %} + {% for place in places %} + {{ place.player.avatar }} + {{ place.player.name }} + {{ place.base.name }} (secteur {{ place.system.sector.identifier }}) + {% endfor %} +{% endapply %} diff --git a/templates/blocks/athena/building_panel.html.twig b/templates/blocks/athena/building_panel.html.twig new file mode 100644 index 000000000..4dc3345ee --- /dev/null +++ b/templates/blocks/athena/building_panel.html.twig @@ -0,0 +1,91 @@ +
    +
    +
    +
    +

    {{ get_building_info(building_number, 'frenchName') }}

    + x + +
    + + + + + + {% if building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::GENERATOR') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::REFINERY') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::STORAGE') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::DOCK1') %} + + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::DOCK2') %} + + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::TECHNOSPHERE') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::COMMERCIAL_PLATEFORME') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::RECYCLING') %} + + {% elseif building_number == constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::SPATIOPORT') %} + + {% endif %} + + + + {% for i in 0..(max_level - 1) %} + {% set level = i + 1 %} + {% set level_data = data[i] %} + level %}class="small-grey"{% elseif current_level == level %}class="active"{% endif %}> + + + + {% for stat_data in level_data.stats %} + + {% endfor %} + + + {% endfor %} +
    niv.prixtempsqueuesprod.stockagequeuesstockagequeuesstockagequeuesvaisseauxcollecteursroutespoints
    {{ level_data.note|raw }} + {{ level_data.resourcePrice }} + ressources + + {{ level_data.time }} + relève + + {{ stat_data.stat }} + {% if stat_data.image is defined %} + {{ stat_data.alt }} + {% endif %} + {{ data[i].points }}
    +
    + +

    + {% for footnote in quantity_array|keys %} + {% set quantity = quantity_array[footnote] %} + {{ footnote }} Niveau maximal pour une base orbitale de type + + {% set qty = 0 %} + {% for type in footnote_array|keys %} + {% set footnote_id = footnote_array[type] %} + + {% if footnote_id == footnote %} + {% set qty = qty + 1 %} + + {% if qty > 1 %} + {{ qty == quantity ? ' et ' : ',' }} + {% endif %} + {{ type|scalar_base_type }} + {% endif %} + {% endfor %} + .
    + {% endfor %} +

    + +

    A propos

    +

    {{ get_building_info(building_number, 'description')|raw }}

    +
    +
    +
    diff --git a/templates/blocks/athena/ship_panel.html.twig b/templates/blocks/athena/ship_panel.html.twig new file mode 100644 index 000000000..9fffdd3fc --- /dev/null +++ b/templates/blocks/athena/ship_panel.html.twig @@ -0,0 +1,134 @@ +{% apply spaceless %} +
    +
    +
    +
    +

    {{ get_ship_info(ship_number, 'name') }}

    + x + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    coût + {{ get_ship_info(ship_number, 'resourcePrice')|number }} + ressource +
    temps + {{ get_ship_info(ship_number, 'time')|lite_seconds }} + relève +
    pev + {{ get_ship_info(ship_number, 'pev') }} + pev +
    soute + {{ (get_ship_info(ship_number, 'pev') * 250)|number }} + ressource +
    entretien en affectation + {{ get_ship_info(ship_number, 'cost')|number }} + ressource + / + relève +
    entretien à quai + {{ (get_ship_info(ship_number, 'cost') * constant('App\\Modules\\Athena\\Resource\\ShipResource::COST_REDUCTION'))|number }} + ressource + / + relève +
    + +

    Caractéristiques

    + +
    + {% set values = [] %} + + {% for k in nb_shots|keys %} + {% set v = nb_shots[k] %} + {% set bonus = (k * bonus_att / 100) %} + {% set bonus_label = '' %} + {% if bonus > 0 %} + {% set bonus_label %}+{{ bonus }}{% endset %} + {% endif %} + {% if v != 1 %} + {% set values = values|merge([v ~ '*' ~ k ~ bonus_label]) %} + {% else %} + {% set values = values|merge([k ~ bonus_label]) %} + {% endif %} + {% endfor %} + + attaque + + + {{ values|join(' + ') }} + + + {% for j in range(0, attacks|length - 1) %} + + {% endfor %} + +
    + + {% set bonus = (get_ship_info(ship_number, 'defense') * bonus_def) / 100 %} + {% if bonus > 0 %} + {% if bonus > 0 %}+{% endif %} {{ bonus }} +
    + défense + + + {{ get_ship_info(ship_number, 'defense') }} + {{ bonus }} + + +
    + {% endif %} + + {% set bonus = (get_ship_info(ship_number, 'speed') * bonus_spe) / 100 %} + {% if bonus > 0 %} + {% if bonus > 0 %}+{% endif %} {{ bonus }} +
    + maniabilité + + + {{ get_ship_info(ship_number, 'speed') }} + {{ bonus }} + + + + +
    + {% endif %} + +
    + coque + + + {{ get_ship_info(ship_number, 'life') }} + + +
    + +

    Description

    + +

    {{ get_ship_info(ship_number, 'description')|raw }}

    +
    +
    +
    +{% endapply %} diff --git a/templates/blocks/promethee/technology_panel.html.twig b/templates/blocks/promethee/technology_panel.html.twig new file mode 100644 index 000000000..ae4144706 --- /dev/null +++ b/templates/blocks/promethee/technology_panel.html.twig @@ -0,0 +1,47 @@ +
    +
    +
    +
    +

    {{ name }}

    + x + +

    {{ short_description }}

    + +
    + + + + + + + + + + + + + + + + + +
    coût en ressource{{ resource|number }} ressource
    coût en crédit{{ credit|number }} credit
    temps{{ time|lite_seconds }} relève
    points{{ points|number }}
    +
    + +

    Prérequis pour le prochain niveau

    +

    + Technosphère, niv. {{ technosphere }}
    + {% for research in research_list %} + {{ research[0] }}, niv. {{ research[1] }} + {% if research[2] %} + + {% endif %} +
    + {% endfor %} +

    + +

    Description

    +

    {{ description }}

    +
    +
    +
    diff --git a/templates/blocks/zeus/autocomplete_player.html.twig b/templates/blocks/zeus/autocomplete_player.html.twig new file mode 100644 index 000000000..c9d027709 --- /dev/null +++ b/templates/blocks/zeus/autocomplete_player.html.twig @@ -0,0 +1,11 @@ +{% apply spaceless %} + {% for player in players %} + {# @TODO check the use of this statement #} + {# if (in_array($player->getStatement(), array(Player::ACTIVE, Player::INACTIVE, Player::HOLIDAY, Player::BANNED))) { #} + {% set status = player.faction.identifier > 0 ? get_faction_info(player.faction.identifier, 'status')[player.status - 1] : 'Rebelle' %} + + {{ player.name }} + {{ status }} + {{ player.name }} + {% endfor %} +{% endapply %} diff --git a/templates/components/Atoms/Button.html.twig b/templates/components/Atoms/Button.html.twig new file mode 100644 index 000000000..d4d4cafbe --- /dev/null +++ b/templates/components/Atoms/Button.html.twig @@ -0,0 +1,11 @@ +{% if faction is not null %} + {% set extra_classes = 'border-dark' ~ faction.identifier ~ ' bg-medium' ~ faction.identifier %} +{% endif %} + + diff --git a/templates/components/Atoms/Fleet/CommanderAvatar.html.twig b/templates/components/Atoms/Fleet/CommanderAvatar.html.twig new file mode 100644 index 000000000..c0bb3da5e --- /dev/null +++ b/templates/components/Atoms/Fleet/CommanderAvatar.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/components/Atoms/Form/Input.html.twig b/templates/components/Atoms/Form/Input.html.twig new file mode 100644 index 000000000..0daf571a3 --- /dev/null +++ b/templates/components/Atoms/Form/Input.html.twig @@ -0,0 +1,4 @@ + diff --git a/templates/components/Atoms/Form/Textarea.html.twig b/templates/components/Atoms/Form/Textarea.html.twig new file mode 100644 index 000000000..b7b2754b3 --- /dev/null +++ b/templates/components/Atoms/Form/Textarea.html.twig @@ -0,0 +1,3 @@ + diff --git a/templates/components/Atoms/InsetLabelInput.html.twig b/templates/components/Atoms/InsetLabelInput.html.twig new file mode 100644 index 000000000..abb9ac367 --- /dev/null +++ b/templates/components/Atoms/InsetLabelInput.html.twig @@ -0,0 +1,5 @@ +
    + + +
    diff --git a/templates/components/Atoms/Layout/Title/H1.html.twig b/templates/components/Atoms/Layout/Title/H1.html.twig new file mode 100644 index 000000000..756747270 --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H1.html.twig @@ -0,0 +1,3 @@ +

    + {% block content %}{% endblock content %} +

    diff --git a/templates/components/Atoms/Layout/Title/H2.html.twig b/templates/components/Atoms/Layout/Title/H2.html.twig new file mode 100644 index 000000000..e2eede20b --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H2.html.twig @@ -0,0 +1,5 @@ +

    + {% block content %}{% endblock content %} +

    diff --git a/templates/components/Atoms/Layout/Title/H3.html.twig b/templates/components/Atoms/Layout/Title/H3.html.twig new file mode 100644 index 000000000..28de4709f --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H3.html.twig @@ -0,0 +1,5 @@ +

    + {% block content %}{% endblock content %} +

    diff --git a/templates/components/Atoms/Layout/Title/H4.html.twig b/templates/components/Atoms/Layout/Title/H4.html.twig new file mode 100644 index 000000000..c814c6795 --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H4.html.twig @@ -0,0 +1,5 @@ +

    + {% block content %}{% endblock content %} +

    diff --git a/templates/components/Atoms/Layout/Title/H5.html.twig b/templates/components/Atoms/Layout/Title/H5.html.twig new file mode 100644 index 000000000..c4376732d --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H5.html.twig @@ -0,0 +1,3 @@ +
    + {% block content %}{% endblock content %} +
    diff --git a/templates/components/Atoms/Layout/Title/H6.html.twig b/templates/components/Atoms/Layout/Title/H6.html.twig new file mode 100644 index 000000000..383a5e281 --- /dev/null +++ b/templates/components/Atoms/Layout/Title/H6.html.twig @@ -0,0 +1 @@ +
    {% block content %}{% endblock content %}
    diff --git a/templates/components/Atoms/Map/CommanderAlert.html.twig b/templates/components/Atoms/Map/CommanderAlert.html.twig new file mode 100644 index 000000000..a2f8e1456 --- /dev/null +++ b/templates/components/Atoms/Map/CommanderAlert.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/components/Atoms/Map/PlaceName.html.twig b/templates/components/Atoms/Map/PlaceName.html.twig new file mode 100644 index 000000000..a8558af27 --- /dev/null +++ b/templates/components/Atoms/Map/PlaceName.html.twig @@ -0,0 +1,11 @@ +
    + {% if place.typeOfPlace == 1 %} + {% if place.base is not null %} + {{ place.base.name }} + {% else %} + Planète rebelle + {% endif %} + {% else %} + {{ get_place_type(place.typeOfPlace) }} + {% endif %} +
    diff --git a/templates/components/Atoms/Map/TravelDetail.html.twig b/templates/components/Atoms/Map/TravelDetail.html.twig new file mode 100644 index 000000000..1a8f855c0 --- /dev/null +++ b/templates/components/Atoms/Map/TravelDetail.html.twig @@ -0,0 +1,4 @@ +
    + {{ label }} + {{ value }} +
    diff --git a/templates/components/Atoms/NumberBox.html.twig b/templates/components/Atoms/NumberBox.html.twig new file mode 100644 index 000000000..d321d4b88 --- /dev/null +++ b/templates/components/Atoms/NumberBox.html.twig @@ -0,0 +1,26 @@ +
    +
    + + {% if bonus is not null and bonus != 0 %} +
    + {{ bonus > 0 ? '+' : '-' }} + {{ bonus|round|number }} +
    + {% endif %} +
    + {% block content %}{% endblock content %} +
    +
    + + {% if percent is not null %} + + {% endif %} + + {% if block('upper_links') is not empty %} +
    + {% block upper_links %}{% endblock upper_links %} +
    + {% endif %} +
    diff --git a/templates/components/Atoms/Player/Avatar.html.twig b/templates/components/Atoms/Player/Avatar.html.twig new file mode 100644 index 000000000..167be6e0b --- /dev/null +++ b/templates/components/Atoms/Player/Avatar.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/components/Atoms/ProgressBar.html.twig b/templates/components/Atoms/ProgressBar.html.twig new file mode 100644 index 000000000..bb61315d3 --- /dev/null +++ b/templates/components/Atoms/ProgressBar.html.twig @@ -0,0 +1,7 @@ +
    +
    +
    +
    diff --git a/templates/components/Faction/Atoms/Banner.html.twig b/templates/components/Faction/Atoms/Banner.html.twig new file mode 100644 index 000000000..08163f318 --- /dev/null +++ b/templates/components/Faction/Atoms/Banner.html.twig @@ -0,0 +1,4 @@ + diff --git a/templates/components/Faction/Atoms/Motto.html.twig b/templates/components/Faction/Atoms/Motto.html.twig new file mode 100644 index 000000000..abaf14fc0 --- /dev/null +++ b/templates/components/Faction/Atoms/Motto.html.twig @@ -0,0 +1,11 @@ +
    +
    + +
    +

    {{ get_faction_info(faction.identifier, 'devise')|raw }}

    +
    +
    +
    diff --git a/templates/components/Faction/Molecules/FactionChoice.html.twig b/templates/components/Faction/Molecules/FactionChoice.html.twig new file mode 100644 index 000000000..9bcb1aa5c --- /dev/null +++ b/templates/components/Faction/Molecules/FactionChoice.html.twig @@ -0,0 +1,55 @@ +
    +
    + +

    {{ get_faction_info(faction.identifier, 'officialName') }}

    + {{ get_faction_info(faction.identifier, 'government') }} +
    +
    + +
    +
    +
    +

    A propos

    +

    {{ get_faction_info(faction.identifier, 'desc1') }}

    +

    Moeurs & autres

    +

    {{ get_faction_info(faction.identifier, 'desc2') }}

    +

    Guerre

    +

    {{ get_faction_info(faction.identifier, 'desc3') }}

    +

    Culture

    +

    {{ get_faction_info(faction.identifier, 'desc4') }}

    +
    +
    +
    + {% if not faction.isClosed %} + + + Choisir cette faction
    + {% if index == 0 %} + recommandée pour les joueurs débutants + {% else %} + et passer à l'étape suivante + {% endif %} +
    +
    + {% else %} + + Cette faction est actuellement fermée + De manière à équilibrer le jeu + + {% endif %} + +

    Bonus & Malus de faction

    + {% for bonus_identifier in get_faction_bonuses(faction.identifier) %} + {% set bonus = get_bonus_text(bonus_identifier) %} +
    +
    + {# #} + {{ bonus.title }} + {{ bonus.desc }} +
    +
    + {% endfor %} +
    +
    diff --git a/templates/components/Faction/data/diplomacy/about.html.twig b/templates/components/Faction/data/diplomacy/about.html.twig new file mode 100644 index 000000000..f136be3a0 --- /dev/null +++ b/templates/components/Faction/data/diplomacy/about.html.twig @@ -0,0 +1,20 @@ +
    +
    + A propos +
    +
    + En guerre +

    Lors de la déclaration de guerre, toutes les routes commerciales entre les deux factions belligérantes sont coupées. Durant toute la durée de la guerre, aucun lien commercial ne sera possible.

    + + Allié +

    Une alliance totale est un fort lien entre deux factions. Ce traité n'est pas contraignant mais les attaques le violant sont notifiées dans les registres de guerre de la faction.

    +

    Un seul pacte de ce type peut être rédigé par faction.

    + + Pacte de non-agression +

    Un pacte de non-agression n'est pas contraignant mais garantit que les membres des deux factions ne s'attaquent pas entre eux. Les attaques violant ce pacte sont notifiées dans les registres de guerre de la faction.

    +

    Ce type de pacte est limité à deux par faction.

    + + Neutre +

    Une faction n'a ni affinités ni problèmes avec une autre faction neutre. De petits problèmes territoriaux peuvent exister sans remettre en cause ce statut.

    +
    +
    diff --git a/templates/components/Faction/data/diplomacy/relations.html.twig b/templates/components/Faction/data/diplomacy/relations.html.twig new file mode 100644 index 000000000..61d2e6c2f --- /dev/null +++ b/templates/components/Faction/data/diplomacy/relations.html.twig @@ -0,0 +1,27 @@ + +
    + Statut diplomatique +
    +
    + {% for statement in diplomacy_statements|keys %} + {% set faction_identifiers = faction.relations|filter((v, k) => k != 0 and k != faction.identifier and v == statement) %} + {{ diplomacy_statements[statement] }} + + {% for faction_identifier in faction_identifiers|keys %} +
    + + + +
    +
    {{ get_faction_info(faction_identifier, 'government') }}
    +
    {{ get_faction_info(faction_identifier, 'officialName') }}
    +
    +
    + {% endfor %} + + {% if faction_identifiers|length == 0 %} +

    Aucune faction

    + {% endif %} + {% endfor %} +
    +
    diff --git a/templates/components/Faction/data/financial/donations.html.twig b/templates/components/Faction/data/financial/donations.html.twig new file mode 100644 index 000000000..8ac94ae3d --- /dev/null +++ b/templates/components/Faction/data/financial/donations.html.twig @@ -0,0 +1,49 @@ +
    +
    + Donations +
    +
    + {% for transaction in members_donations %} +
    + + {{ transaction.sender.name }} + + + {% set statuses = get_faction_info(transaction.sender.faction.identifier, 'status') %} + {{ statuses[transaction.sender.status - 1] }} + {{ transaction.sender.name }} + {{ transaction.amount|number }} crédit{{ transaction.amount|plural }} +
    + {% endfor %} + + {% if members_donations == [] %} +

    Aucune donation n'a encore été faite.

    + {% endif %} +
    +
    + + +
    +
    + Transferts à des membres +
    + +
    + {% for transaction in faction_donations %} +
    + + {{ transaction.playerReceiver.name }} + + + {% set statuses = get_faction_info(transaction.playerReceiver.faction.identifier, 'status') %} + {{ statuses[transaction.playerReceiver.status - 1] }} + {{ transaction.playerReceiver.name }} + {{ transaction.amount|number }} crédit{{ transaction.amount|plural }} +
    + {% endfor %} + + {% if faction_donations == [] %} +

    Aucune transaction n'a encore été effectuée.

    + {% endif %} +
    +
    diff --git a/templates/components/Faction/data/financial/sector_taxes.html.twig b/templates/components/Faction/data/financial/sector_taxes.html.twig new file mode 100644 index 000000000..36b4223f1 --- /dev/null +++ b/templates/components/Faction/data/financial/sector_taxes.html.twig @@ -0,0 +1,21 @@ +
    +
    + Imposition +
    +
    + Impôts courants + +
      + {% for sector in faction_sectors %} +
    • + {{ sector.identifier }} + +
      + {{ sector.name }}
      + {{ sector.tax }} % +
      +
    • + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/data/financial/stats.html.twig b/templates/components/Faction/data/financial/stats.html.twig new file mode 100644 index 000000000..1f76f8cdc --- /dev/null +++ b/templates/components/Faction/data/financial/stats.html.twig @@ -0,0 +1,25 @@ +
    + Finance + + Richesse + + + {{ faction.credits|number }} + + +
    + + Evolution de la puissance commerciale de la faction sur les 20 derniers segments + + {# @TODO fix that class name #} +
    + {% for ranking in faction_rankings %} +
    +
    + {{ ranking.wealth|number(-2) }} +
    +
    + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/data/law/list.html.twig b/templates/components/Faction/data/law/list.html.twig new file mode 100644 index 000000000..c9c43d6d9 --- /dev/null +++ b/templates/components/Faction/data/law/list.html.twig @@ -0,0 +1,27 @@ +{% set statuses = get_faction_info(faction.identifier, 'status') %} + +
    +
    + {% if law_status == constant('App\\Modules\\Zeus\\Model\\Player::CHIEF') %} + Lois + {% endif %} +
    +
    + {{ statuses[law_status - 1] }} + {% for i in 1..laws_count %} + {% if get_law_info(i, 'department') == law_status %} +
    + + + {{ get_law_info(i, 'name') }} + {% if not get_law_info(i, 'isImplemented') %} + [?] + {% endif %} + + +

    {{ get_law_info(i, 'shortDescription')|raw }}

    +
    + {% endif %} + {% endfor %} +
    +
    diff --git a/templates/components/Faction/data/nav.html.twig b/templates/components/Faction/data/nav.html.twig new file mode 100644 index 000000000..8028f75b1 --- /dev/null +++ b/templates/components/Faction/data/nav.html.twig @@ -0,0 +1,49 @@ + + + +
    + Finance
    + Richesse, imposition et donations +
    +
    + + + +
    + Commerce
    + Routes commerciales et taxes sur le commerce +
    +
    + + + +
    + Guerre
    + Armées, mouvements de flottes et rapports de combat +
    +
    + + + +
    + Tactique
    + Territoires et objectifs de victoire +
    +
    + + + +
    + Diplomatie
    + Accords et traités +
    +
    + + + +
    + Lois
    + Table des Lois +
    +
    +
    diff --git a/templates/components/Faction/data/tactical/map.html.twig b/templates/components/Faction/data/tactical/map.html.twig new file mode 100644 index 000000000..0df6b18d6 --- /dev/null +++ b/templates/components/Faction/data/tactical/map.html.twig @@ -0,0 +1,25 @@ +
    +
    + Carte tactique +
    +
    +
    + + {% for sector in sectors %} + + {% endfor %} + +
    + {% for sector in sectors %} + {% set i = sector.identifier - 1 %} + + {{ sector.identifier }} + + {% endfor %} +
    +
    +
    +
    diff --git a/templates/components/Faction/data/tactical/sectors.html.twig b/templates/components/Faction/data/tactical/sectors.html.twig new file mode 100644 index 000000000..dea05751f --- /dev/null +++ b/templates/components/Faction/data/tactical/sectors.html.twig @@ -0,0 +1,49 @@ +{% set displayed = 0 %} + +
    +
    + Territoires +
    +
    + {% for type in map_data_types|keys %} + {% set sectors = map_data_types[type] %} + + {{ type }} +
      + {% for sector in sectors %} +
    • + {{ sector.identifier }} + +
      + + {{ sector.name }} + ({{ sector.points }} point{{ sector.points|plural }}) +
      + {% for faction_id in map_data_scores|filter((v, k) => v > 0)|keys %} + {% set points = map_data_scores[faction_id] %} + + {{ get_faction_info(faction_id, 'popularName') }} : {{ points }} point{{ points|plural }} de contrôle + + {% endfor %} +
      + +
      + {{ map_data_percents['color' ~ faction.identifier] }} % + + {% for faction_id in map_data_percents|keys %} + {% set percent = map_data_percents[faction_id] %} + + {% endfor %} + +
      +
    • + {% set displayed = displayed + 1 %} + {% endfor %} +
    + {% endfor %} + + {% if displayed == 0 %} +

    Aucun secteur

    + {% endif %} +
    +
    diff --git a/templates/components/Faction/data/tactical/targets.html.twig b/templates/components/Faction/data/tactical/targets.html.twig new file mode 100644 index 000000000..a903a3077 --- /dev/null +++ b/templates/components/Faction/data/tactical/targets.html.twig @@ -0,0 +1,25 @@ +
    +
    + Objectifs de victoires +
    + +
    + {% if not faction.isWinner %} + Conditions de victoire +

    Pour gagner, votre faction doit collecter {{ points_to_win|number }} points au classement total de faction.

    +

    Vous avez actuellement {{ faction.rankingPoints }} points.

    + + {% set percent = faction.rankingPoints|percent(points_to_win) %} +
      +
    • + avancement + {{ percent}} % + +
    • +
    + {% else %} +

    Vous avez gagné

    +

    Vous avez atteint les {{ points_to_win|number }} points, vous avez donc gagné la partie. Félicitations !

    + {% endif %} +
    +
    diff --git a/templates/components/Faction/data/trade/rc_stats.html.twig b/templates/components/Faction/data/trade/rc_stats.html.twig new file mode 100644 index 000000000..d43fd81b1 --- /dev/null +++ b/templates/components/Faction/data/trade/rc_stats.html.twig @@ -0,0 +1,37 @@ +
    +
    + Commerce +
    + +
    + Routes commerciales + + + {{ rc_data.nb|number }} + + + + {{ rc_data.income|number }} + + + ? + + + + + {{ faction_internal_commercial_routes_data.nb|percent(rc_data.nb) }} % + + + Répartition du commerce extérieur + + {% set total_routes_count = rc_data.nb + faction_internal_commercial_routes_data.nb %} + + {% for faction_id in rc_diplomatic_data|keys %} + {% set routes_count = rc_diplomatic_data[faction_id] %} + + + {{ routes_count|number }} + + {% endfor %} +
    +
    diff --git a/templates/components/Faction/data/trade/taxes.html.twig b/templates/components/Faction/data/trade/taxes.html.twig new file mode 100644 index 000000000..6e52be69e --- /dev/null +++ b/templates/components/Faction/data/trade/taxes.html.twig @@ -0,0 +1,20 @@ +
    +
    + {{ label }} +
    +
    + {% for tax in taxes %} + {% set faction_id = tax.relatedFaction.identifier %} +
    + + + + +
    + produits {{ get_faction_info(faction_id, 'demonym') }}
    + {{ tax.importTax }} % +
    +
    + {% endfor %} +
    +
    diff --git a/templates/components/Faction/data/war/levels.html.twig b/templates/components/Faction/data/war/levels.html.twig new file mode 100644 index 000000000..db623c0fd --- /dev/null +++ b/templates/components/Faction/data/war/levels.html.twig @@ -0,0 +1,34 @@ +{% set experience_level = base_commander_level %} + +
    +
    + Liste des grades +
    + +
    + Officiers + +
      + {% for i in 1..min(commanders_ranks_count, 16) %} + {% if i == 9 %} +
    + Officiers supérieurs +
      + {% endif %} + +
    • + + {{ experience_level|number }} xp + +  |  + {{ (i * 100)|number }} pev + +
      + {{ get_commander_rank(i) }} +
    • + + {% set experience_level = experience_level * 2 %} + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/data/war/reports.html.twig b/templates/components/Faction/data/war/reports.html.twig new file mode 100644 index 000000000..09e8574ee --- /dev/null +++ b/templates/components/Faction/data/war/reports.html.twig @@ -0,0 +1,35 @@ +
    +
    + {% if is_attack %} + Derniers combats + {% else %} +
    + {% endif %} + {{ is_attack ? 'Attaques' : 'Défenses' }} +
    + +
    +
    + {% for report in reports %} + {% set report_data = report.typeOfReport(faction.id) %} + {% set title = report_data[0] %} + {% set img = report_data[1] %} + +
    +
    + +
    + +
    + {{ title }} + par {{ report.playerNameA }} +
    + + {% if not report.is_legal %} + ! + {% endif %} +
    + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/data/war/stats.html.twig b/templates/components/Faction/data/war/stats.html.twig new file mode 100644 index 000000000..9ff30970a --- /dev/null +++ b/templates/components/Faction/data/war/stats.html.twig @@ -0,0 +1,50 @@ +
    +
    + Etat des armées +
    +
    + Statistiques générales + + + {{ commander_stats.nb|number }} + + + ? + + + + + {{ commander_stats.avgLevel is defined and commander_stats.avgLevel is not null ? get_commander_rank(commander_stats.avgLevel|round) : 'Inconnu' }} + + + + {{ total_pev|number }} + + + ? + + + + + {{ commander_stats.nb is defined and commander_stats.nb != 0 ? (total_pev/commander_stats.nb)|number : 0 }} + + + + Nombre d'appareils par type + + +
      + {# @TODO loop through ship models more properly #} + {% for i in 0..11 %} +
    • + + +
      + {{ get_ship_info(i, 'name') }} «{{ get_ship_info(i, 'codeName') }}»
      + {{ (fleet_stats['nbs' ~ i] ?? 0)|number }} +
      +
    • + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/election/campaign.html.twig b/templates/components/Faction/election/campaign.html.twig new file mode 100644 index 000000000..94aa6223e --- /dev/null +++ b/templates/components/Faction/election/campaign.html.twig @@ -0,0 +1,9 @@ +
    + + {{ candidates|length }} + + +

    + {{ get_faction_info(current_player.faction.identifier, 'campaignDesc')|raw }} +

    +
    diff --git a/templates/components/Faction/election/candidate.html.twig b/templates/components/Faction/election/candidate.html.twig new file mode 100644 index 000000000..995a37a60 --- /dev/null +++ b/templates/components/Faction/election/candidate.html.twig @@ -0,0 +1,72 @@ +{% set statuses = get_faction_info(current_player.faction.identifier, 'status') %} + +
    +
    +
    +
    + {% if faction.isInElection %} + {% if faction.isDemocratic %} +
    + {% if player_vote is not null %} + {% if player_vote.candidate.player.id == candidate.player.id %} + + Vous avez voté pour lui + + {% else %} + + --- + + {% endif %} + {% else %} + + Voter + + {% endif %} +
    + {% else %} +
    + {% if player_vote is not null %} + {% if player_vote.hasApproved %} + + Vous avez soutenu le coup d'état + + {% else %} + + Vous n'avez pas soutenu le coup d'état + + {% endif %} + {% else %} + + Soutenir le coup d'état + + + Rejeter le coup d'état + + {% endif %} +
    + {% endif %} + {% endif %} + +
    + + {{ statuses[candidate.player.status - 1] }} + + {{ candidate.player.name }} +
    + +
    + {{ candidate.player.name }} +
    +
    +
    +
    + +
    +
    +
    +
    +

    Son programme

    +

    {{ candidate.program|parse }}

    +
    +
    +
    diff --git a/templates/components/Faction/election/election.html.twig b/templates/components/Faction/election/election.html.twig new file mode 100644 index 000000000..616ab0902 --- /dev/null +++ b/templates/components/Faction/election/election.html.twig @@ -0,0 +1,25 @@ +
    +
    +

    Election

    +
    +
    +
    +
    + nombre de candidats + {{ candidates|length }} +
    + +
    + taux de participation + {{ votes|length|percent(faction_members_count) }} % + + + +
    + +
    + +

    {{ get_faction_info(current_player.faction.identifier, 'campaignDesc') }}

    +
    +
    +
    diff --git a/templates/components/Faction/election/list.html.twig b/templates/components/Faction/election/list.html.twig new file mode 100644 index 000000000..c7ebf99a9 --- /dev/null +++ b/templates/components/Faction/election/list.html.twig @@ -0,0 +1,45 @@ +{% set statuses = get_faction_info(current_player.faction.identifier, 'status') %} + +
    +
    + + Candidat{{ candidates|length|plural }} à l'élection + +
    +
    +
    + + {% for candidate in candidates %} +
    +
    + {{ candidate.player.name }} +
    + +
    + {{ candidate.player.name }} + {{ statuses[candidate.player.status - 1] }} +
    + +
    + +
    +
    + {% endfor %} + +
    + {% if candidates == [] %} +

    Il n'y a aucun candidat pour l'instant.

    + {% endif %} +
    + + +
    diff --git a/templates/components/Faction/election/postulate.html.twig b/templates/components/Faction/election/postulate.html.twig new file mode 100644 index 000000000..78ca1b7d4 --- /dev/null +++ b/templates/components/Faction/election/postulate.html.twig @@ -0,0 +1,36 @@ +
    +
    + Présentez-vous +
    +
    +
    +

    + +
    + +
    + + {% if current_player.isParliamentMember == false %} +
    +
    +
    + +
    +
    +

    Candidature impossible

    +
    +

    Vous ne pouvez pas vous présenter, vous n'avez pas assez de prestige.

    +
    +
    +
    +
    + {% endif %} + +
    + Se présenter +
    +
    +
    +
    diff --git a/templates/components/Faction/election/putsch.html.twig b/templates/components/Faction/election/putsch.html.twig new file mode 100644 index 000000000..9a3ae499a --- /dev/null +++ b/templates/components/Faction/election/putsch.html.twig @@ -0,0 +1,29 @@ +
    +
    +

    Coup d'état

    +
    +
    +
    +
    + La tentative de coup d'état se termine dans + {{ remaining_putsch_time|lite_seconds }} +
    + +
    + Nombre de soutiens pour réussir + {{ putsch_supporters_count }} + + + + soutiens nécessaires + + +
    +
    + +
    + +

    {{ get_faction_info(current_player.faction.identifier, 'campaignDesc')|raw }}

    +
    +
    +
    diff --git a/templates/components/Faction/forum/navbar.html.twig b/templates/components/Faction/forum/navbar.html.twig new file mode 100644 index 000000000..deedf3a98 --- /dev/null +++ b/templates/components/Faction/forum/navbar.html.twig @@ -0,0 +1,17 @@ + +
    + Revenir aux forums + +
    + {% for forumId in forum_ids %} + {% set activeClass = (not app.request.attributes.has('forumId') and 1 == forumId) or forumId == app.request.attributes.get('forumId') ? 'bg-gray-900' : '' %} + + + {{ get_forum_info(forumId, 'name') }}
    + {{ get_forum_info(forumId, 'shortDescription') }} +
    + {% endfor %} +
    + +
    +
    diff --git a/templates/components/Faction/forum/new_topic.html.twig b/templates/components/Faction/forum/new_topic.html.twig new file mode 100644 index 000000000..a09ffc686 --- /dev/null +++ b/templates/components/Faction/forum/new_topic.html.twig @@ -0,0 +1,24 @@ + +
    + Création d'un nouveau sujet +
    +
    +
    + + +
    +
    + + +
    + + + {{ get_parser_toolbar()|raw }} +
    + + Créer le sujet + +
    +
    +
    +
    diff --git a/templates/components/Faction/forum/topics.html.twig b/templates/components/Faction/forum/topics.html.twig new file mode 100644 index 000000000..cdbfe83ed --- /dev/null +++ b/templates/components/Faction/forum/topics.html.twig @@ -0,0 +1,80 @@ + +
    + +
    + + {{- get_forum_info(forumId, 'name') -}} + + + {{- get_forum_info(forumId, 'shortDescription') -}} + +
    +
    +
    + {% if display_standard_topics is same as(false) %} + + + + {% endif %} + + {% if is_archived is same as (true) %} + Revenir aux sujets + {% endif %} + +
    + {% for topic_with_last_view in topics_with_last_views %} + {% set topic = topic_with_last_view.topic %} + {% set last_view = topic_with_last_view.last_view %} + + {% if topic.id.equals(app.request.attributes.get('topicId')) %} + {% set is_new = '' %} + {% elseif last_view is null or last_view.viewedAt < topic.lastContributedAt %} + {% set is_new = 'round-color' ~ current_player.faction.identifier %} + {% else %} + {% set is_new = '' %} + {% endif %} + +
    +
    + {{ topic.messagesCount }} +
    + +
    + {% if topic.isClosed %} + 🔒 + {% elseif topic.isUp %} + ★ + {% endif %} + {{ topic.title }} +
    + +
    + + > + +
    +
    + {% endfor %} +
    + + {% if topics_with_last_views|length == 0 %} +

    Aucun sujet n'a encore été créé dans cette section du forum.

    + {% endif %} + + {# + {% if display_standard_topics is same as(true) and is_archived is same as (false) and current_player.isGovernmentMember is same as(true) %} + Voir les messages archivés + {% endif %} #} +
    + + +
    diff --git a/templates/components/Faction/government/credit.html.twig b/templates/components/Faction/government/credit.html.twig new file mode 100644 index 000000000..45dd729d7 --- /dev/null +++ b/templates/components/Faction/government/credit.html.twig @@ -0,0 +1,51 @@ +
    +
    +
    +
    +

    Envoi de crédits

    + {% if not current_player.isTreasurer %} +

    Seul le trésorier du gouvernement peut faire des versements à des membres.

    + {% else %} +
    +

    +

    + + +

    + +

    +

    + +

    +

    + +

    +
    + {% endif %} +
    +
    +
    + +
    +
    +
    +
    +

    Dernières transactions

    + {% for transaction in credit_transactions %} +
    + + {{ transaction.receiverName }} + + + {{ transaction.receiverStatus }} + {{ transaction.receiverName }} + {{ transaction.amount|number }} crédits +
    + {% endfor %} + + {% if credit_transactions == [] %} +

    Aucune transaction n'a encore été effectuée.

    + {% endif %} +
    +
    +
    diff --git a/templates/components/Faction/government/description.html.twig b/templates/components/Faction/government/description.html.twig new file mode 100644 index 000000000..2016ab600 --- /dev/null +++ b/templates/components/Faction/government/description.html.twig @@ -0,0 +1,27 @@ +
    +
    +
    +
    +
    +

    Editer la description

    + +

    +

    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Aperçu

    +

    + {% if faction.description %} + {{ faction.description|parse }} + {% endif %} +

    +
    +
    +
    diff --git a/templates/components/Faction/government/manage/main.html.twig b/templates/components/Faction/government/manage/main.html.twig new file mode 100644 index 000000000..32f18d8b2 --- /dev/null +++ b/templates/components/Faction/government/manage/main.html.twig @@ -0,0 +1,49 @@ +{% set statuses = get_faction_info(faction.identifier, 'status') %} + +
    +
    +

    Nomination

    +
    +
    +
    + {% set list = [ + constant('App\\Modules\\Zeus\\Model\\Player::MINISTER'), + constant('App\\Modules\\Zeus\\Model\\Player::WARLORD'), + constant('App\\Modules\\Zeus\\Model\\Player::TREASURER'), + ] %} + + {% for type in list %} +

    {{ statuses[type - 1] }}

    + + {% set department_minister = government_members|filter(minister => minister.status == type)|first %} + {% if department_minister is not same as(false) %} +
    + + {{ department_minister.name }} + + {{ statuses[department_minister.status - 1] }} + {{ department_minister.name }} + {{ department_minister.factionPoint|number }} de prestige +
    + + Démettre de ses fonctions + + {% elseif current_player.isRuler %} +
    + + +
    + {% else %} +
    + Aucun joueur à ce poste +
    + {% endif %} + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/government/message.html.twig b/templates/components/Faction/government/message.html.twig new file mode 100644 index 000000000..0d8b709ba --- /dev/null +++ b/templates/components/Faction/government/message.html.twig @@ -0,0 +1,22 @@ +
    +
    +
    +
    +
    +

    Envoyer un message à la faction

    + +

    + Votre message +

    +

    + + {{ get_parser_toolbar()|raw }} + + +

    + +

    +
    +
    +
    +
    diff --git a/templates/components/Faction/government/nav.html.twig b/templates/components/Faction/government/nav.html.twig new file mode 100644 index 000000000..2037d66a9 --- /dev/null +++ b/templates/components/Faction/government/nav.html.twig @@ -0,0 +1,65 @@ +{% set mode = app.request.query.get('mode', 'law') %} +{% set statuses = get_faction_info(faction.identifier, 'status') %} + + + + + Lois
    + Promulger de nouvelles lois +
    + + + + Annonces
    + Gestion des annonces +
    + + + + Messages groupés
    + Envoi de messages aux membres de la faction +
    + + + + Description
    + Edition de la description publique +
    + + + + Gestion des finances
    + Envoi de crédits aux membres de la faction +
    + + {% if current_player.isRuler %} + + + Gouvernement
    + Gestion de votre gouvernement +
    + {% endif %} + +
    +

    Abandonner ses fonctions

    + + {% if current_player.isRuler %} + {% if faction.isDemocratic %} + + Organiser des élections anticipées + + {% else %} +
    + + +
    + {% endif %} + {% else %} + Démissioner du gouvernement + {% endif %} +
    diff --git a/templates/components/Faction/laws.html.twig b/templates/components/Faction/laws.html.twig new file mode 100644 index 000000000..842ba6659 --- /dev/null +++ b/templates/components/Faction/laws.html.twig @@ -0,0 +1,49 @@ + +
    + Lois actives +
    + +
    + {% for law in effective_laws %} +
    +
    + + {{ get_law_info(law.type, 'name') }} +
    +
    + {% endfor %} + + {% if effective_laws|length == 0 %} +

    Aucune loi active

    + {% endif %} + + Lois en cours de votation + + {% for law in voting_laws %} +
    +
    + + {{ get_law_info(law.type, 'name') }} +
    +
    + {% endfor %} + + {% if voting_laws|length == 0 %} +

    Aucune loi en cours de votation

    + {% endif %} + + Bonus de faction + + {# @TODO factorize with faction_choices #} + {% for bonus_identifier in get_faction_bonuses(faction.identifier) %} + {% set bonus = get_bonus_text(bonus_identifier) %} +
    +
    + + {{ bonus.title }}
    + {{ bonus.desc|raw }} +
    +
    + {% endfor %} +
    +
    diff --git a/templates/components/Faction/members/list.html.twig b/templates/components/Faction/members/list.html.twig new file mode 100644 index 000000000..e46ad4f62 --- /dev/null +++ b/templates/components/Faction/members/list.html.twig @@ -0,0 +1,36 @@ +{% set statuses = get_faction_info(faction.identifier, 'status') %} + +
    + {% for type in players_by_type|keys %} + {% set players = players_by_type[type] %} +
    + {{ type }} + + {% if players|length == 0 %} +

    aucun joueur

    + {% endif %} + +
    + {% for player in players %} +
    + + + + +
    + {{ statuses[player.status - 1] }}
    + {{ player.name }}
    + {{ player.factionPoint|number }} points +
    + + {% if is_player_online(player) %} +
    + {% elseif is_player_inactive(player) %} +
    + {% endif %} +
    + {% endfor %} +
    +
    + {% endfor %} +
    diff --git a/templates/components/Faction/members/stats.html.twig b/templates/components/Faction/members/stats.html.twig new file mode 100644 index 000000000..a35f59972 --- /dev/null +++ b/templates/components/Faction/members/stats.html.twig @@ -0,0 +1,30 @@ +{% set statuses = get_faction_info(faction.identifier, 'status') %} + + + + {{ players_count }} + + + {{ online_players_count }} + + + Nouveaux membres + + {% for player in last_faction_players %} +
    + + {{ player.name }} + + {{ statuses[player.status - 1] }} + {{ player.name }} + + {% if player.id != current_player.id %} + Souhaiter la bienvenue + {% endif %} +
    + {% endfor %} + + {% if last_faction_players|length == 0 %} +

    Aucun nouveau membre ces 3 derniers jours

    + {% endif %} +
    diff --git a/public/css/src/desktop-src/map/common-v3/revolutionCarnadienne b/templates/components/Faction/news.html.twig similarity index 100% rename from public/css/src/desktop-src/map/common-v3/revolutionCarnadienne rename to templates/components/Faction/news.html.twig diff --git a/templates/components/Faction/news/create.html.twig b/templates/components/Faction/news/create.html.twig new file mode 100644 index 000000000..c391d5c8e --- /dev/null +++ b/templates/components/Faction/news/create.html.twig @@ -0,0 +1,18 @@ +
    +
    +

    Créer une annonce

    +
    +
    +
    +
    +

    Titre de l'annonce

    +

    + +

    Contenu de l'annonce

    +

    + +

    +
    +
    +
    +
    diff --git a/templates/components/Faction/news/edit.html.twig b/templates/components/Faction/news/edit.html.twig new file mode 100644 index 000000000..6529bc8d8 --- /dev/null +++ b/templates/components/Faction/news/edit.html.twig @@ -0,0 +1,18 @@ +
    +
    +

    Edition d'une annonce

    +
    +
    +
    +
    +

    Titre de l'annonce

    +

    + +

    Contenu de l'annonce

    +

    + +

    +
    +
    +
    +
    diff --git a/templates/components/Faction/news/list.html.twig b/templates/components/Faction/news/list.html.twig new file mode 100644 index 000000000..5e5e3af7b --- /dev/null +++ b/templates/components/Faction/news/list.html.twig @@ -0,0 +1,18 @@ +
    +
    +

    Liste des annonces

    +
    +
    +
    + {% for news in faction_news %} + + {% endfor %} +
    +
    +
    diff --git a/templates/components/Faction/senate/historic.html.twig b/templates/components/Faction/senate/historic.html.twig new file mode 100644 index 000000000..608e14785 --- /dev/null +++ b/templates/components/Faction/senate/historic.html.twig @@ -0,0 +1,44 @@ + +
    + + Historique des votations + +
    +
    + {% for law in voted_laws %} +
    +
    + + {{ get_law_info(law.type, 'name') }} +
    + +

    + {% if get_law_info(law.type, 'department') == 6 %} + Statut : appliquée
    + {% else %} + Statut : + {% if law.isEffective %} + application en cours + {% elseif law.isObsolete %} + application terminée + {% elseif law.isRefused %} + refusée + {% else %} + inconnu + {% endif %} +
    + Votes pour : {{ law.forVote }}
    + Votes contre : {{ law.againstVote }} + {% endif %} +

    +

    + {{ law.createdAt|game_date|raw }}
    +

    +
    + {% endfor %} + + {% if voted_laws|length == 0 %} +

    Aucune loi n'a été votée pour le moment.

    + {% endif %} +
    +
    diff --git a/templates/components/Faction/senate/stats.html.twig b/templates/components/Faction/senate/stats.html.twig new file mode 100644 index 000000000..ba63927a6 --- /dev/null +++ b/templates/components/Faction/senate/stats.html.twig @@ -0,0 +1,11 @@ + +
    + Lois en cours de votation +
    +
    + + {{ voting_laws|length|number }} + + {#

    Infos sur les lois

    #} +
    +
    diff --git a/templates/components/Faction/stat.html.twig b/templates/components/Faction/stat.html.twig new file mode 100644 index 000000000..399667098 --- /dev/null +++ b/templates/components/Faction/stat.html.twig @@ -0,0 +1,134 @@ + +
    + + Agenda politique + +
    +
    + {% if faction.hasElections %} +
    +
    +
    + + + Début du mandat courant + + + Fin du mandat courant + +
    +
    + +
    + + + + Campagne + + + {% if faction.isDemocratic %} + + Elections + + + Résultats + + {% else %} + + Décision divine + + {% endif %} + +
    +
    + + {% if faction.isInCampaign %} + + + {{ faction.isDemocratic ? 'Présentez-vous aux élections' : 'Se proposer comme Guide' }} + + + {% elseif faction.isInElection %} + + + Votez dès maintenant pour votre candidat favori + + + {% endif %} + {% else %} +
    + {% if faction.isInElection %} +
    + La tentative de coup d'état se termine dans + {{ remaining_coup_time|lite_seconds }} +
    + Prendre position sur le coup d'état + {% else %} + {% if current_player.isParliamentMember %} + + + Tenter un coup d'état + + + + + {% else %} + Vous ne pouvez pas tenter un coup d'état + {% endif %} + {% endif %} +
    + {% endif %} + + + Gouvernement actuel + + + {% set statuses = get_faction_info(faction.identifier, 'status') %} + + {% for minister in government_members %} +
    + + {{ minister.name }} + + {{ statuses[minister.status - 1] }} + {{ minister.name }} + {{ minister.factionPoint|number }} points +
    + {% endfor %} + + + Statistiques générales + + +
    + + {{ faction_ranking is not null ? faction_ranking|ranking : 'n/a' }} + + + + {{ faction.points|number }} + + + + {{ faction.credits|number }} + + + + {{ sectors_count }} + + + + {{ active_players_count }} + +
    +
    +
    diff --git a/templates/components/Molecules/Base/BaseTypeChoice.html.twig b/templates/components/Molecules/Base/BaseTypeChoice.html.twig new file mode 100644 index 000000000..a4c592474 --- /dev/null +++ b/templates/components/Molecules/Base/BaseTypeChoice.html.twig @@ -0,0 +1,22 @@ +{% set name = this.name %} + +
    + + + {{ name }} + + + +
    +

    + Flottes + {{ this.fleetQuantity }} +

    +

    + Impôt + {{ this.taxToll }}% +

    + + {% block content %}{% endblock content %} +
    +
    diff --git a/templates/components/Molecules/Base/BuildingCard.html.twig b/templates/components/Molecules/Base/BuildingCard.html.twig new file mode 100644 index 000000000..f8a5cea81 --- /dev/null +++ b/templates/components/Molecules/Base/BuildingCard.html.twig @@ -0,0 +1,45 @@ +{% extends 'components/common/card.html.twig' %} + +{% block title %} +
    +
    {{ this.name }}
    + niv. {{ this.level }} +
    +{% endblock %} + +{% block picto %} + Building +{% endblock picto %} + +{% block footer %} + {% set nextLevel = this.nextLevel %} + {% set cost %} + + {{ this.resourceCost|number(-1) }} Res + | + {{ this.timeCost|lite_seconds }} + + {% endset %} + + {% if 0 < requirements|length %} + + + construction impossible
    + + {% if nextLevel <= this.maxLevel %} + {{ cost }} + {% endif %} +
    +
    + {% else %} + + +

    + augmenter vers le niveau {{ nextLevel }} +

    + {{ cost }} +
    +
    + {% endif %} +{% endblock footer %} + diff --git a/templates/components/Molecules/Base/ShipCard.html.twig b/templates/components/Molecules/Base/ShipCard.html.twig new file mode 100644 index 000000000..9cabcb528 --- /dev/null +++ b/templates/components/Molecules/Base/ShipCard.html.twig @@ -0,0 +1,72 @@ +{% extends 'components/common/card.html.twig' %} + +{% block title %} +
    +
    {{ get_ship_info(shipIdentifier, 'codeName') }}
    + {{ get_ship_info(shipIdentifier, 'name') }} +
    +{% endblock %} + +{% block picto %} + Building +{% endblock picto %} + +{% block footer %} + {% set cost %} + + {{ this.resourceCost|number(-1) }} Res + et + {{ this.timeCost|lite_seconds }} + + {% endset %} + + {# @TODO replace this and the JS management of the links update with a proper form #} + {% if not hasShipQueueRequirements %} + + file de construction pleine
    + {{ cost }} +
    + {% elseif hasTechnologyRequirements is not same as(true) %} + + {{ missingTechnology }} + + {% elseif hasShipTreeRequirements is not same as(true) %} + + il vous faut augmenter votre chantier {% if isHeavyShipyard %}de ligne{% else %}alpha{% endif %} au niveau {{ dockNeededLevel }} + + {% elseif maxShips < 1 %} + + {# TODO Differentiate these two cases #} + pas assez de ressources / hangar plein
    + {{ cost }} +
    + {% else %} + + {% endif %} +{% endblock footer %} diff --git a/templates/components/Molecules/Base/Trade/CommercialShippingAvailableShipsCount.html.twig b/templates/components/Molecules/Base/Trade/CommercialShippingAvailableShipsCount.html.twig new file mode 100644 index 000000000..021109455 --- /dev/null +++ b/templates/components/Molecules/Base/Trade/CommercialShippingAvailableShipsCount.html.twig @@ -0,0 +1,6 @@ + + {{ (maxShips - usedShips)|number }} + {#vaisseaux#} / + {{ maxShips|number }} + {#vaisseaux#} + diff --git a/templates/components/Molecules/Fleet/CommanderSquadron.html.twig b/templates/components/Molecules/Fleet/CommanderSquadron.html.twig new file mode 100644 index 000000000..db3978450 --- /dev/null +++ b/templates/components/Molecules/Fleet/CommanderSquadron.html.twig @@ -0,0 +1,42 @@ +{% set nbr = key + 1 %} + +{% set squadron = commander.getSquadron(key) %} +{% set pev = squadron is not null ? squadron.pev : 0 %} +{% if pev == 0 %} + {% set full = 'full0' %} +{% elseif pev < 50 %} + {% set full = 'full1' %} +{% elseif pev < 99 %} + {% set full = 'full2' %} +{% else %} + {% set full = 'full3' %} +{% endif %} + +{% if nbr == lineCoord|length %} + {% set content = '---' %} + {% set title = 'prochaine escadrille disponible' %} + {% set available = false %} +{% else %} + {% set content = pev ~ '/100' %} + {% set title = '' %} + {% set available = true %} +{% endif %} + +
    +
    + {{ nbr }} +
    + +
    + {{ content }} +
    +
    + diff --git a/templates/components/Molecules/Fleet/ShipTransferTile.html.twig b/templates/components/Molecules/Fleet/ShipTransferTile.html.twig new file mode 100644 index 000000000..f30ee99f1 --- /dev/null +++ b/templates/components/Molecules/Fleet/ShipTransferTile.html.twig @@ -0,0 +1,12 @@ +
    + +
    + {{ quantity }} + {{ get_ship_info(identifier, 'codeName') }} +
    +
    diff --git a/templates/components/Molecules/Form/Alert.html.twig b/templates/components/Molecules/Form/Alert.html.twig new file mode 100644 index 000000000..13db9f60f --- /dev/null +++ b/templates/components/Molecules/Form/Alert.html.twig @@ -0,0 +1,17 @@ +
    +
    +
    + +
    +
    +

    {{ title }}

    +
    +

    + {% block content %}{% endblock content %} +

    +
    +
    +
    +
    diff --git a/templates/components/Molecules/Form/Step.html.twig b/templates/components/Molecules/Form/Step.html.twig new file mode 100644 index 000000000..ee5c800ad --- /dev/null +++ b/templates/components/Molecules/Form/Step.html.twig @@ -0,0 +1,26 @@ +
  • + + + + {% if status == 'done' %} + + {% elseif status == 'current' %} + {{ number }} + {% else %} + {{ number }} + {% endif %} + + {{ label }} + + + + {% if not isLast %} + + {% endif %} +
  • diff --git a/templates/components/Molecules/Headline.html.twig b/templates/components/Molecules/Headline.html.twig new file mode 100644 index 000000000..c78a6db40 --- /dev/null +++ b/templates/components/Molecules/Headline.html.twig @@ -0,0 +1,15 @@ +
    +
    +

    + {{ title }} +

    + {% if subTitle is not null %} + + {{ subTitle }} + + {% endif %} +
    + +
    diff --git a/templates/components/Molecules/Layout/PageTitle.html.twig b/templates/components/Molecules/Layout/PageTitle.html.twig new file mode 100644 index 000000000..543551a37 --- /dev/null +++ b/templates/components/Molecules/Layout/PageTitle.html.twig @@ -0,0 +1,9 @@ +
    +
    + + + {{ block(outerBlocks.content) }} + + +
    +
    diff --git a/templates/components/Molecules/Layout/ReportListItem.html.twig b/templates/components/Molecules/Layout/ReportListItem.html.twig new file mode 100644 index 000000000..cf2c33e2a --- /dev/null +++ b/templates/components/Molecules/Layout/ReportListItem.html.twig @@ -0,0 +1,23 @@ + +
    + +
    + +
    +
    + + {{ placeName }} + +
    +
    + +
    +
    + +
    + See +
    +
    diff --git a/templates/components/Molecules/Layout/SidebarItem.html.twig b/templates/components/Molecules/Layout/SidebarItem.html.twig new file mode 100644 index 000000000..2dd26f724 --- /dev/null +++ b/templates/components/Molecules/Layout/SidebarItem.html.twig @@ -0,0 +1,15 @@ + + + {% if picto is not null %} + + {% endif %} + + + {{ label }} + {% if badgeNumber is not null %} +
    + {{ badgeNumber }} +
    + {% endif %} +
    +
    diff --git a/templates/components/Molecules/LayoutBox.html.twig b/templates/components/Molecules/LayoutBox.html.twig new file mode 100644 index 000000000..29b7a60bb --- /dev/null +++ b/templates/components/Molecules/LayoutBox.html.twig @@ -0,0 +1,5 @@ +
    + {% block content %}{% endblock content %} +
    diff --git a/templates/components/Molecules/Map/CoeffIndicator.html.twig b/templates/components/Molecules/Map/CoeffIndicator.html.twig new file mode 100644 index 000000000..6f1497acf --- /dev/null +++ b/templates/components/Molecules/Map/CoeffIndicator.html.twig @@ -0,0 +1,10 @@ +
    + {{ label }} +
    + {% set icons_number = values|filter(v => coeff >= v)|length %} + {% for i in range(1, icons_number) %} + I + {# #} + {% endfor %} +
    +
    diff --git a/templates/components/Molecules/Map/CommanderTile.html.twig b/templates/components/Molecules/Map/CommanderTile.html.twig new file mode 100644 index 000000000..54acd365d --- /dev/null +++ b/templates/components/Molecules/Map/CommanderTile.html.twig @@ -0,0 +1,32 @@ +
    +
    + {% block alerts %} + + Aucun commandant selectionné. + {# + + Sélectionnez-en un sur la barre latérale gauche.
    + Si aucun commandant n'est visible, vous pouvez en affecter un depuis l'école de commandement. +
    + #} +
    + + + Ce commandant est trop éloigné pour piller cette planète. + + {% endblock alerts %} + + +
    + +
    + + Lancer l'attaque + +
    +
    diff --git a/templates/components/Molecules/Map/PlaceAction.html.twig b/templates/components/Molecules/Map/PlaceAction.html.twig new file mode 100644 index 000000000..2f7eb2175 --- /dev/null +++ b/templates/components/Molecules/Map/PlaceAction.html.twig @@ -0,0 +1,6 @@ + diff --git a/templates/components/Molecules/Queue.html.twig b/templates/components/Molecules/Queue.html.twig new file mode 100644 index 000000000..91850c83f --- /dev/null +++ b/templates/components/Molecules/Queue.html.twig @@ -0,0 +1,33 @@ +
    + {% if queue is not null %} +
    + + +
    + + + + × +
    + + + +
    + +
    + {% else %} + + {% endif %} +
    diff --git a/templates/components/Molecules/Ranking/RankingCard.html.twig b/templates/components/Molecules/Ranking/RankingCard.html.twig new file mode 100644 index 000000000..f20fc98fa --- /dev/null +++ b/templates/components/Molecules/Ranking/RankingCard.html.twig @@ -0,0 +1,19 @@ +
    + {% block picture %}{% endblock picture %} + +
    + {% block name %}{% endblock name %} + +
    + {% block value %}{% endblock value %} +
    +
    + +
    +
    + {{ position }} +
    + + {{ include('atoms/rankings/variation.html.twig', { variation }) }} +
    +
    diff --git a/templates/components/Molecules/Technology/UniversityResearchItem.html.twig b/templates/components/Molecules/Technology/UniversityResearchItem.html.twig new file mode 100644 index 000000000..e0716fe62 --- /dev/null +++ b/templates/components/Molecules/Technology/UniversityResearchItem.html.twig @@ -0,0 +1,8 @@ +
    + + +
    + {{ get_research_info(constant('App\\Modules\\Promethee\\Model\\Research::' ~ type), 'name') }}
    + niveau {{ level }} +
    +
    diff --git a/templates/components/Molecules/Tooltip.html.twig b/templates/components/Molecules/Tooltip.html.twig new file mode 100644 index 000000000..ef125e7ab --- /dev/null +++ b/templates/components/Molecules/Tooltip.html.twig @@ -0,0 +1,8 @@ +
    + + {% block content %}{% endblock content %} + +
    + ? +
    +
    diff --git a/templates/components/Organisms/Base/FastView.html.twig b/templates/components/Organisms/Base/FastView.html.twig new file mode 100644 index 000000000..511fb6a09 --- /dev/null +++ b/templates/components/Organisms/Base/FastView.html.twig @@ -0,0 +1,216 @@ + +
    + {% if isProfileView %} + + planet + +
    + {{ orbitalBase.name }} + + {{ orbitalBase|base_type }} — {{ orbitalBase.points}} points + +
    + {% else %} + Vue de situation + {% endif %} +
    +
    + {# pending commercial routes display #} + {% if orbitalBase.levelSpatioport > 0 and commercialRoutesData.waiting_for_me is defined and commercialRoutesData.waiting_for_me != 0 %} + + {% set plural = commercialRoutesData.waiting_for_me|plural %} + Vous avez {{ commercialRoutesData.waiting_for_me }} proposition{{ plural }} commerciale{{ plural }} + + {% endif %} + + + {{ orbitalBase.resourcesStorage|number }} + + + + + + + Générateur + + {% set nextTime = 0 %} + {% set nextTotalTime = 0 %} + {% set realSizeQueue = 0 %} + +
    + {% for building_queue in buildingQueues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set nextTime = building_queue|queue_duration %} + {% set nextTotalTime = nextTotalTime + building_queue|building_queue_time %} + +
    + × + + + {{ building_queue|queue_name }} + niv. {{ building_queue.targetLevel }} + + + {{ nextTime|lite_seconds }} + + {% if realSizeQueue > 1 %} + + {% else %} + + + + {% endif %} +
    + {% endfor %} + {% if orbitalBase|base_max_building_queues > buildingQueues|length %} + + Construire un bâtiment + + {% endif %} +
    + + {% if orbitalBase.levelDock1 > 0 %} + Chantier Alpha + + {% set realSizeQueue = 0 %} + +
    + {% for ship_queue in dock1ShipQueues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeShips = ship_queue|ship_queue_time %} + {% set remainingTime = ship_queue|queue_duration %} + + {% if realSizeQueue > 1 %} +
    + {% else %} +
    + {% endif %} + + + {{ ship_queue.quantity }} {{ ship_queue|ship_queue_name }}{{ ship_queue.quantity|plural }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + {{ remainingTime|lite_seconds }} + + + + + + {% endif %} +
    + {% endfor %} + + {% if orbitalBase|base_max_dock1_ship_queues > dock1ShipQueues|length %} + + Lancer la production + + {% endif %} +
    + {% endif %} + + {% if orbitalBase.levelDock2 > 0 %} + Chantier de Ligne + + {% set realSizeQueue = 0 %} + +
    + {% for ship_queue in dock2ShipQueues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeShips = ship_queue|ship_queue_time %} + {% set remainingTime = ship_queue|queue_duration %} + + {% if realSizeQueue > 1 %} +
    + {% else %} +
    + {% endif %} + + + + {{ ship_queue.quantity }} {{ ship_queue|ship_queue_name }}{{ ship_queue.quantity|plural }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + {{ remainingTime|lite_seconds }} + + + + + + {% endif %} +
    + {% endfor %} + {% if orbitalBase|base_max_dock2_ship_queues > dock2ShipQueues|length %} + + Lancer la production + + {% endif %} +
    + {% endif %} + + {% if orbitalBase.levelTechnosphere > 0 %} + Technosphère + + {% set realSizeQueue = 0 %} + {% set remainingTotalTime = 0 %} + {% set totalTimeTechno = 0 %} + +
    + {% for technology_queue in technologyQueues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeTechno = totalTimeTechno + technology_queue|technology_queue_time %} + {% set remainingTotalTime = technology_queue|queue_duration %} + +
    + {##} + + {{ get_technology_info(technology_queue.technology, 'name') }} + {% if technology_queue|is_unblocking_technology %} + niv. {{ technology_queue.targetLevel }} + {% endif %} + + + + + {{ remainingTotalTime|lite_seconds }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + + + + {% endif %} +
    + {% endfor %} + {% if orbitalBase|base_max_technology_queues > technologyQueues|length %} + + Développer une technologie + + {% endif %} +
    + {% endif %} + + {% if orbitalBase.levelSpatioport > 0 %} + {% set percent = commercialRoutesData.total|percent(commercialRoutesData.max) %} + Spatioport + + + {{ commercialRoutesData.total }} / {{ commercialRoutesData.max }} + + + + + + {% endif %} +
    +
    diff --git a/templates/components/Organisms/Fleet/CommanderSquadrons.html.twig b/templates/components/Organisms/Fleet/CommanderSquadrons.html.twig new file mode 100644 index 000000000..5161c82bd --- /dev/null +++ b/templates/components/Organisms/Fleet/CommanderSquadrons.html.twig @@ -0,0 +1,29 @@ +{% set line_coord = commander.formatLineCoord %} + +
    +
    + {% for i in range(5, 1) %} +
    #{{ i }}
    + {% endfor %} +
    + +
    + {% for i in range(5, 1) %} +
    + {% if max(line_coord) >= i %} + {% set nb_in_column = 0 %} + + {% for k in line_coord|keys %} + {% set v = line_coord[k] %} + + {% if v == i %} + {% set nb_in_column = nb_in_column + 1 %} + + + {% endif %} + {% endfor %} + {% endif %} +
    + {% endfor %} +
    +
    diff --git a/templates/components/Organisms/Fleet/FleetSpyReport.html.twig b/templates/components/Organisms/Fleet/FleetSpyReport.html.twig new file mode 100644 index 000000000..185ef0660 --- /dev/null +++ b/templates/components/Organisms/Fleet/FleetSpyReport.html.twig @@ -0,0 +1,55 @@ +{% set affected = constant('App\\Modules\\Ares\\Model\\Commander::AFFECTED') %} + +
    + +
    + {% if commander is not null %} +

    + + {% if spyReport.hasSpottedCommanders %} + {{ get_commander_rank(commander.level) }} {{ commander.name }} + {% else %} + Commandant inconnu + {% endif %} +

    +
    + {% if commander.line == 1 %} + 1ère + {% else %} + 2nde + {% endif %} + ligne + - + {% if spyReport.hasSpottedPevs %} + {{ commander.pev }} Pev + {% else %} + ??? Pev + {% endif %} +
    + + {% if spyReport.hasSpottedMovements and commander.statement != affected %} +
    → déplacement + {% endif %} +
    + {% else %} +

    Au hangar

    + {% endif %} +
    + +
    + deploy +
    +
    + +
    + {% dump(army) %} + + {% for quantity in army %} + {% set ship_identifier = loop.index0 %} + +
    + {{ quantity }} {{ get_ship_info(ship_identifier, 'codeName') }} +
    + {% endfor %} +
    +
    diff --git a/templates/components/Organisms/Fleet/ShipTransfer.html.twig b/templates/components/Organisms/Fleet/ShipTransfer.html.twig new file mode 100644 index 000000000..9a82b4b53 --- /dev/null +++ b/templates/components/Organisms/Fleet/ShipTransfer.html.twig @@ -0,0 +1,20 @@ +
    +
    + {% for i in range(0, 11) %} + + {% endfor %} +
    +
    + {% for i in range(0, 11) %} + + {% endfor %} +
    +
    diff --git a/templates/components/Organisms/Layout/BaseSelector.html.twig b/templates/components/Organisms/Layout/BaseSelector.html.twig new file mode 100644 index 000000000..1f8745b41 --- /dev/null +++ b/templates/components/Organisms/Layout/BaseSelector.html.twig @@ -0,0 +1,32 @@ +
    + + + + + {{ current_base.name }} + + + + > + + + +
    +
    + Changer de base + +
    +
    +
    diff --git a/templates/components/Organisms/Layout/ContentContainer.html.twig b/templates/components/Organisms/Layout/ContentContainer.html.twig new file mode 100644 index 000000000..e0e66fb78 --- /dev/null +++ b/templates/components/Organisms/Layout/ContentContainer.html.twig @@ -0,0 +1,6 @@ +
    + {% block content %}{% endblock content %} +
    diff --git a/templates/components/Organisms/Layout/ResourceStorage.html.twig b/templates/components/Organisms/Layout/ResourceStorage.html.twig new file mode 100644 index 000000000..2a4ba2317 --- /dev/null +++ b/templates/components/Organisms/Layout/ResourceStorage.html.twig @@ -0,0 +1,31 @@ +
    + + {{ current_base.resourcesStorage|number }} + + + + +
    + Raffinerie +
    + + {% set production = get_base_production(current_base) %} + {% set refining_bonus = get_player_bonus(constant('App\\Modules\\Zeus\\Model\\PlayerBonusId::REFINERY_REFINING')) %} + + {{ production|number }} + + + {{ include('molecules/base/production/storage_gauge.html.twig', { + 'stored_resources': current_base.resourcesStorage, + 'percent': current_base|base_storage_percent, + 'faction_color': false, + }) }} + + + + vers la raffinerie + + +
    +
    +
    diff --git a/templates/components/Organisms/Layout/Sidebar.html.twig b/templates/components/Organisms/Layout/Sidebar.html.twig new file mode 100644 index 000000000..10abe4f28 --- /dev/null +++ b/templates/components/Organisms/Layout/Sidebar.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/components/Organisms/Map/Loader.html.twig b/templates/components/Organisms/Map/Loader.html.twig new file mode 100644 index 000000000..022e5eacf --- /dev/null +++ b/templates/components/Organisms/Map/Loader.html.twig @@ -0,0 +1,38 @@ +
    + +
    +
    diff --git a/templates/components/Organisms/Map/PlaceActionPanel.html.twig b/templates/components/Organisms/Map/PlaceActionPanel.html.twig new file mode 100644 index 000000000..5ae03c3a8 --- /dev/null +++ b/templates/components/Organisms/Map/PlaceActionPanel.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/components/Organisms/Map/PlaceSummary.html.twig b/templates/components/Organisms/Map/PlaceSummary.html.twig new file mode 100644 index 000000000..42489e7d0 --- /dev/null +++ b/templates/components/Organisms/Map/PlaceSummary.html.twig @@ -0,0 +1,109 @@ +{% set playerFactionIdentifier = place.player.faction.identifier ?? 0 %} + +
    + {% set reports = spyReports|filter(r => r.place.id.equals(place.id)) %} + {% if reports|length > 0 %} + {% set report = reports|first %} + + Voir le dernier rapport d'espionnage + + {% endif %} + +
    + +
    + + {% if place.typeOfPlace == 1 %} + {% if place.base is not null %} +
    + Propriété du + + {% if playerFactionIdentifier != 0 %} + {% set player_status = get_faction_info(playerFactionIdentifier, 'status')[place.player.status - 1] %} + {{ player_status }} + + + {{ place.player.name }} + + + {% else %} + rebelle {{ place.player.name }} + {% endif %} + +
    + {% else %} +
    + +
    + {% endif %} + +
    + + + + + +
    + {% else %} +
    +

    + Ressources + + {{ ((place.resources * place.coefResources)/100)|number }} + +

    +

    + Débris + + {{ ((place.resources * place.coefHistory)/100)|number }} + +

    +

    + Gaz noble + + {{ ((place.resources * place.population)/100)|number }} + +

    +
    + {% endif %} + +
    + Distance + + {{ get_place_distance(current_base, place)|number }} Al. + +
    + + {% if place.typeOfPlace == 1 %} + {% set reports = combatReports|filter(r => r.place.id.equals(place.id)) %} + {% if reports|length > 0 %} + {% set report = reports|first %} +
    + + Dernier pillage {{ report.foughtAt|game_date|raw }}. + +
    + {% endif %} + {% endif %} +
    diff --git a/templates/components/Organisms/Player/Character.html.twig b/templates/components/Organisms/Player/Character.html.twig new file mode 100644 index 000000000..7813b6a15 --- /dev/null +++ b/templates/components/Organisms/Player/Character.html.twig @@ -0,0 +1,28 @@ +
    +

    Votre profil

    + +
    + + {{ get_faction_statuses(current_player_faction_id)[player.status - 1] }} + de + {{ get_faction_name(current_player_faction_id) }} + + {{ player.name }} +
    + +
    + + Niveau {{ player.level }} +
    + + + {{ player.experience|number }} + + + + {{ playerMissingExperience|number }} + + + +
    + diff --git a/templates/components/Organisms/Portal/Header.html.twig b/templates/components/Organisms/Portal/Header.html.twig new file mode 100644 index 000000000..3395c7b39 --- /dev/null +++ b/templates/components/Organisms/Portal/Header.html.twig @@ -0,0 +1,69 @@ +
    + + + +
    diff --git a/templates/components/Organisms/Queues.html.twig b/templates/components/Organisms/Queues.html.twig new file mode 100644 index 000000000..a3b16c53f --- /dev/null +++ b/templates/components/Organisms/Queues.html.twig @@ -0,0 +1,25 @@ + +
    +

    + File de construction +

    + + + {{ speedBonus|number }} % + +
    + +
    + {% for queue in queues %} + {{ component(queueComponent, { queue, refund }) }} + {% endfor %} + + {% if queuesCount < availableQueuesCount %} + {% for i in range(queuesCount, availableQueuesCount - 1) %} + {{ component(queueComponent, { + class: 'bg-gray-900', + }) }} + {% endfor %} + {% endif %} +
    +
    diff --git a/templates/components/Organisms/Trade/CommanderSalesForm.html.twig b/templates/components/Organisms/Trade/CommanderSalesForm.html.twig new file mode 100644 index 000000000..7082325b3 --- /dev/null +++ b/templates/components/Organisms/Trade/CommanderSalesForm.html.twig @@ -0,0 +1,60 @@ +
    +
    + {#commandants#} + Commandants + mettre en vente +
    + +
    + {% for commander in this.commanders %} + {% set min_price = get_min_price( + constant('App\\Modules\\Athena\\Model\\Transaction::TYP_COMMANDER'), + commander.experience + ) %} +
    +
    + + {##} + {{ commander|commander_rank }} {{ commander.name }}
    + {{ commander.experience|number }} points d'expérience +
    + +
    +
    + Prix minimum + + {{ min_price }} + + {#crédits#} +
    + +
    + + + {#crédits#} +
    + +
    + Vaisseaux + 1 + {#vaisseaux transports#} +
    + +
    + + + + + Vendre + +
    +
    +
    + {% endfor %} + + {% if this.commanders|length == 0 %} + Vous n\'avez aucun commandant dans l\'école. + {% endif %} +
    +
    diff --git a/templates/components/Organisms/Trade/ResourceSalesForm.html.twig b/templates/components/Organisms/Trade/ResourceSalesForm.html.twig new file mode 100644 index 000000000..b30dd0ed7 --- /dev/null +++ b/templates/components/Organisms/Trade/ResourceSalesForm.html.twig @@ -0,0 +1,61 @@ +
    +
    + {#ressource#} + Ressources + mettre en vente +
    + +
    +
    +
    + Ressources + {{ current_base.resourcesStorage|number }} + {#ressources#} +
    + +
    +
    + + {#ressources#} +
    + +
    + +
    + Prix minimum + {{ this.minPrice }} + {#crédits#} +
    + +
    +
    + + {#crédits#} +
    + +
    + +
    + Vaisseaux + {{ this.requiredShipsCount }} + {#vaisseaux transports#} +
    + +
    + + {% if previousSuccess %} +
    +

    + Votre offre a été créée avec succès ! +

    +
    + {% endif %} + + + Vendre + +
    +
    +
    diff --git a/templates/components/Organisms/Trade/ShipsSalesForm.html.twig b/templates/components/Organisms/Trade/ShipsSalesForm.html.twig new file mode 100644 index 000000000..65fb1012f --- /dev/null +++ b/templates/components/Organisms/Trade/ShipsSalesForm.html.twig @@ -0,0 +1,59 @@ +
    +
    + + {{ get_ship_info(shipIdentifier, 'name') }}
    + {{ get_ship_info(shipIdentifier, 'pev') }} pev +
    + +
    +
    + Quantité max. + {{ shipQuantity }} +
    + +
    +
    + +
    + +
    + + {% set min_price = this.getMinPrice(get_min_price( + constant('App\\Modules\\Athena\\Model\\Transaction::TYP_SHIP'), + 1, + shipIdentifier + )) %} + +
    + Prix minimum +
    + {{ min_price }} + crédits +
    +
    + +
    + + +
    + +
    + +
    + Vaisseaux + {{ this.getRequiredShipsCount(get_ship_info(shipIdentifier, 'pev') * 1000) }} + {#vaisseaux transports#} +
    + +
    + + + Vendre + +
    +
    +
    diff --git a/templates/components/base/fast_view.html.twig b/templates/components/base/fast_view.html.twig new file mode 100644 index 000000000..ee9870045 --- /dev/null +++ b/templates/components/base/fast_view.html.twig @@ -0,0 +1,231 @@ +
    + {% if fast_view_profile %} +
    +  {{ orbital_base.name }} +

    {{ orbital_base.name }}

    + + {{ orbital_base|base_type }} — {{ orbital_base.points}} points + +
    + {% else %} +
    +

    Vue de situation

    +
    + {% endif %} +
    +
    + {# pending commercial routes display #} + {% if orbital_base.levelSpatioport > 0 and commercial_routes_data.waiting_for_me is defined and commercial_routes_data.waiting_for_me != 0 %} + + {% set plural = commercial_routes_data.waiting_for_me|plural %} + Vous avez {{ commercial_routes_data.waiting_for_me }} proposition{{ plural }} commerciale{{ plural }} + + {% endif %} + + {# resources display #} +
    + Ressources en stock + + {{ orbital_base.resourcesStorage|number }} + ressources + + + + + + + + +
    + +

    Générateur

    + + {% set nextTime = 0 %} + {% set nextTotalTime = 0 %} + {% set realSizeQueue = 0 %} + +
    + {% for building_queue in building_queues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set nextTime = building_queue|queue_duration %} + {% set nextTotalTime = nextTotalTime + building_queue|building_queue_time %} + +
    + × + + + {{ building_queue|queue_name }} + niv. {{ building_queue.targetLevel }} + + + {{ nextTime|lite_seconds }} + + {% if realSizeQueue > 1 %} + + {% else %} + + + + {% endif %} +
    + {% endfor %} + {% if orbital_base|base_max_building_queues > building_queues|length %} + + Construire un bâtiment + + {% endif %} +
    + + {% if orbital_base.levelDock1 > 0 %} +

    Chantier Alpha

    + + {% set realSizeQueue = 0 %} + +
    + {% for ship_queue in dock1_ship_queues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeShips = ship_queue|ship_queue_time %} + {% set remainingTime = ship_queue|queue_duration %} + + {% if realSizeQueue > 1 %} +
    + {% else %} +
    + {% endif %} + + + + {{ ship_queue.quantity }} {{ ship_queue|ship_queue_name }}{{ ship_queue.quantity|plural }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + {{ remainingTime|lite_seconds }} + + + + + + {% endif %} +
    + {% endfor %} + {% if orbital_base|base_max_dock1_ship_queues > dock1_ship_queues|length %} + + Lancer la production + + {% endif %} +
    + {% endif %} + + {% if orbital_base.levelDock2 > 0 %} +

    Chantier de Ligne

    + + {% set realSizeQueue = 0 %} + +
    + {% for ship_queue in dock2_ship_queues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeShips = ship_queue|ship_queue_time %} + {% set remainingTime = ship_queue|queue_duration %} + + {% if realSizeQueue > 1 %} +
    + {% else %} +
    + {% endif %} + + + + {{ ship_queue.quantity }} {{ ship_queue|ship_queue_name }}{{ ship_queue.quantity|plural }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + {{ remainingTime|lite_seconds }} + + + + + + {% endif %} +
    + {% endfor %} + {% if orbital_base|base_max_dock2_ship_queues > dock2_ship_queues|length %} + + Lancer la production + + {% endif %} +
    + {% endif %} + + {% if orbital_base.levelTechnosphere > 0 %} +

    Technosphère

    + + {% set realSizeQueue = 0 %} + {% set remainingTotalTime = 0 %} + {% set totalTimeTechno = 0 %} + +
    + {% for technology_queue in technology_queues %} + {% set realSizeQueue = realSizeQueue + 1 %} + {% set totalTimeTechno = totalTimeTechno + technology_queue|technology_queue_time %} + {% set remainingTotalTime = technology_queue|queue_duration %} + +
    + + + {{ get_technology_info(technology_queue.technology, 'name') }} + {% if technology_queue|is_unblocking_technology %} + niv. {{ technology_queue.targetLevel }} + {% endif %} + + + + + {{ remainingTotalTime|lite_seconds }} + + + {% if realSizeQueue > 1 %} + + {% else %} + + + + + {% endif %} +
    + {% endfor %} + {% if orbital_base|base_max_technology_queues > technology_queues|length %} + + Développer une technologie + + {% endif %} +
    + {% endif %} + + {% if orbital_base.levelSpatioport > 0 %} +

    Spatioport

    + +
    + Routes commerciales + + {{ commercial_routes_data.total }} / {{ commercial_routes_data.max }} + + + {% set percent = commercial_routes_data.total|percent(commercial_routes_data.max) %} + + + + + + + +
    + {% endif %} +
    +
    +
    diff --git a/templates/components/base/leave_base.html.twig b/templates/components/base/leave_base.html.twig new file mode 100644 index 000000000..3d2182088 --- /dev/null +++ b/templates/components/base/leave_base.html.twig @@ -0,0 +1,28 @@ +{% set are_commanders_in_mission = commanders|reduce((carry, c) => carry or c.isMoving, false) %} +{% set cooldown = get_cooldown_before_leaving_base() %} + + +
    + + Abandonner cette planète + +
    + +
    +

    Pour abandonner une planète, aucun de vos commandants ne doit être en mission. De plus, vous devez posséder cette planète depuis plus de {{ cooldown }} relèves.

    +

    Une planète abandonnée peut être conquise par n\'importe qui. Les commandants en orbite autour de celle-ci continuent à la défendre. Les vaisseaux dans le hangar sont conservés. Cependant, les routes commerciales ainsi que les offres de ventes sont supprimées. De plus, toutes les constructions programmées sont annulées.

    + +
    + + {% if are_commanders_in_mission %} + Action impossible +

    Certains de vos commandants sont en mission.

    + {% elseif not can_leave_orbital_base(current_base) %} + Action impossible +

    Vous possédez la planète depuis moins de {{ cooldown }} relèves.

    +

    Il reste {{ get_time_until_cooldown_end(current_base)|large_seconds }} avant que vous puissiez abandonner la planète.

    + {% else %} + Abandonner la planète + {% endif %} +
    +
    diff --git a/templates/components/base/situation.html.twig b/templates/components/base/situation.html.twig new file mode 100644 index 000000000..5115b4336 --- /dev/null +++ b/templates/components/base/situation.html.twig @@ -0,0 +1,96 @@ +
    +
    +
    +
    + + +
    +
    + {{ current_base|base_type }}
    + {{ current_base.name }}
    + {{ current_base.points|number}} points +
    +
    + coordonnées
    + {{ current_base|base_coords }} +
    + planète + +
    + {{ (current_base.place.population * 1000000)|number }} habitants
    + {{ current_base.place.coefResources }} % coeff. ressource
    + {{ science_coeff }} % de bonus scientifique +
    +
    + + + I + + + II + + + {% set current_vanguard_position = 0 %} + {% set current_rear_position = 0 %} + + {% for commander in commanders %} + + + {% if commander.line == 1 %} + {% set current_vanguard_position = current_vanguard_position + 1 %} + {% else %} + {% set current_rear_position = current_rear_position + 1 %} + {% endif %} + {% endfor %} + + {% if current_vanguard_position < vanguard_positions_count %} + {% for position in range(current_vanguard_position, vanguard_positions_count - 1) %} + + {#vide#} + + Affecter un officier + + + {% endfor %} + {% endif %} + + {% if current_rear_position < rear_positions_count %} + {% for position in range(current_rear_position, rear_positions_count - 1) %} + + {#vide#} + + Affecter un officier + + + {% endfor %} + {% endif %} +
    +
    +
    +
    diff --git a/templates/components/base/trade/commercial_shippings.html.twig b/templates/components/base/trade/commercial_shippings.html.twig new file mode 100644 index 000000000..1308efc99 --- /dev/null +++ b/templates/components/base/trade/commercial_shippings.html.twig @@ -0,0 +1,38 @@ + +
    + Transactions +
    + +
    + + + Convoi en route + +
    + {% for commercial_shipping in commercial_shippings['outgoing'][constant('App\\Modules\\Athena\\Model\\CommercialShipping::ST_GOING')] %} + {{ include('molecules/base/trade/commercial_shipping.html.twig', { commercial_shipping }) }} + {% endfor %} +
    + +
    + + Retour de convoi + +
    + {% for commercial_shipping in commercial_shippings['outgoing'][constant('App\\Modules\\Athena\\Model\\CommercialShipping::ST_MOVING_BACK')] %} + {{ include('molecules/base/trade/commercial_shipping.html.twig', { commercial_shipping }) }} + {% endfor %} +
    + +
    + + Convoi à quai + +
    + {% for commercial_shipping in commercial_shippings['outgoing'][constant('App\\Modules\\Athena\\Model\\CommercialShipping::ST_WAITING')] %} + {{ include('molecules/base/trade/commercial_shipping.html.twig', { commercial_shipping }) }} + {% endfor %} +
    + +
    +
    diff --git a/templates/components/base/trade/market.html.twig b/templates/components/base/trade/market.html.twig new file mode 100644 index 000000000..20957accd --- /dev/null +++ b/templates/components/base/trade/market.html.twig @@ -0,0 +1,100 @@ +{% set has_incoming = commercial_shippings['incoming'][constant('App\\Modules\\Athena\\Model\\CommercialShipping::ST_GOING')]|length > 0 %} + +
    + {% if has_incoming %} +
    +
    + Aperçu des achats +
    + +
    + Convoi en approche + {% for commercial_shipping in commercial_shippings['incoming'][constant('App\\Modules\\Athena\\Model\\CommercialShipping::ST_GOING')] %} + {{ include('molecules/base/trade/commercial_shipping.html.twig', { commercial_shipping }) }} + {% endfor %} +
    +
    + {% endif %} + +
    +
    + {#ressource#} + Ressources + cours actuel | 1:{{ resources_current_rate|number(3) }} +
    + +
    + {#
    + trier par + ressources + crédit + temps + cours +
    #} + +
    + {% for transaction in resource_transactions %} + {% if current_player.id != transaction.player.id %} + {{ include('components/base/trade/transaction.html.twig', { transaction, 'current_rate': resources_current_rate }) }} + {% endif %} + {% endfor %} +
    +
    +
    + + +
    +
    + {#commandants#} + Commandants + cours actuel | 1:{{ commander_current_rate|number(3) }} +
    + +
    + {#
    + trier par + experience + crédit + temps + cours +
    #} + +
    + {% for transaction in commander_transactions %} + {% if current_player.id != transaction.player.id %} + {{ include('components/base/trade/transaction.html.twig', { transaction, 'current_rate': commander_current_rate }) }} + {% endif %} + {% endfor %} +
    +
    +
    + + +
    +
    + {#vaisseaux#} + Vaisseaux + cours actuel | 1:{{ ship_current_rate|number(3) }} +
    + +
    +
    + {#
    + trier par + pev + crédit + temps + cours +
    #} + +
    + {% for transaction in ship_transactions %} + {% if current_player.id != transaction.player.id %} + {{ include('components/base/trade/transaction.html.twig', { transaction, 'current_rate': ship_current_rate }) }} + {% endif %} + {% endfor %} +
    +
    +
    +
    +
    diff --git a/templates/components/base/trade/resource.html.twig b/templates/components/base/trade/resource.html.twig new file mode 100644 index 000000000..02b82024b --- /dev/null +++ b/templates/components/base/trade/resource.html.twig @@ -0,0 +1,117 @@ +
    +
    +
    + {#ressource#} + Envoi de ressources + à une autre base +
    + +
    +
    +

    + +

    + +
    +
    + Ressources + {{ current_base.resourcesStorage|number }} + {#ressources#} +
    + +
    + + + {#ressources#} +
    + +
    + +
    + Vaisseaux + + {#vaisseaux transports#} +
    + +
    + + + Envoyer + +
    +
    +
    +
    + +
    +
    + {#vaisseaux#} + Envoi de vaisseaux + à une autre base +
    + +
    +
    +

    + +

    + +

    + + {% for ship_number in current_base.shipStorage|keys %} + {% set ship_quantity = current_base.shipStorage[ship_number] %} + {% if ship_quantity > 0 %} +
    +
    + {##} + {{ get_ship_info(ship_number, 'codeName') }} + {{ get_ship_info(ship_number, 'name') }} + {{ get_ship_info(ship_number, 'pev') }} pev +
    +
    + + + {% endif %} + {% endfor %} +
    +
    +
    +
    diff --git a/templates/components/base/trade/sell.html.twig b/templates/components/base/trade/sell.html.twig new file mode 100644 index 000000000..de449132b --- /dev/null +++ b/templates/components/base/trade/sell.html.twig @@ -0,0 +1,22 @@ +
    + + + + +
    +
    + {#vaisseaux#} + Vaisseaux + mettre en vente +
    + +
    + {% for ship_number in current_base.shipStorage|keys %} + {% set ship_quantity = current_base.shipStorage[ship_number] %} + {% if ship_quantity > 0 %} + + {% endif %} + {% endfor %} +
    +
    +
    diff --git a/templates/components/base/trade/transaction.html.twig b/templates/components/base/trade/transaction.html.twig new file mode 100644 index 000000000..672f57399 --- /dev/null +++ b/templates/components/base/trade/transaction.html.twig @@ -0,0 +1,110 @@ +{% set transaction_data = get_transaction_data(transaction, current_base, current_rate) %} + +
    +
    +
    +
    + {% if transaction.hasResources %} +
    + {{ transaction.quantity|number }} + +
    + {% elseif transaction.hasCommander %} +
    + {{ get_commander_rank(transaction.commander.level) }} {{ transaction.commander.name }}
    + {{ transaction.commander.experience }} xp | {{ transaction.commander.palmares }} victoire{{ transaction.commander.palmares|plural }} +
    + {% elseif transaction.hasShips %} +
    + {{ transaction.quantity }} {{ get_ship_info(transaction.identifier, 'codeName') ~ transaction.quantity|plural }} + {{ get_ship_info(transaction.identifier, 'name') }} / {{ get_ship_info(transaction.identifier, 'pev') }} pev +
    + {% endif %} +
    + pour +
    +
    + {{ transaction_data.total_price|number }} + +
    +
    + +
    + {{ transaction_data.rate > 100 ? '+' : '-' }} + {{ (100 - transaction_data.rate)|abs }} % + (par rapport au cours actuel) +
    +
    + + +
    + +
    +

    + vendu par + + {{ transaction.player.name }} + +

    +

    + depuis + + {{ transaction.base.name }} + + + [secteur {{ transaction.base.place.system.sector.identifier }}] + +

    +
    + +
    +
    + Voir le détail du prix + +
    +

    + {{ transaction.price|number }} + crédit +

    +

    + + + taxe ({{ transaction_data.export_tax }}%) + {{ transaction_data.export_price|number }} + crédit +

    +

    + + + taxe ({{ transaction_data.import_tax }}%) + {{ transaction_data.import_price|number }} + crédit

    +
    +

    + {{ transaction_data.total_price|number }} + crédit +

    +
    +
    +
    + + +
    diff --git a/templates/components/base/trade/turbo/broadcast/new_transaction.stream.html.twig b/templates/components/base/trade/turbo/broadcast/new_transaction.stream.html.twig new file mode 100644 index 000000000..42c12d4be --- /dev/null +++ b/templates/components/base/trade/turbo/broadcast/new_transaction.stream.html.twig @@ -0,0 +1,5 @@ + + + diff --git a/templates/components/base/trade/turbo/broadcast/remove_transaction.stream.html.twig b/templates/components/base/trade/turbo/broadcast/remove_transaction.stream.html.twig new file mode 100644 index 000000000..5a8ad28ac --- /dev/null +++ b/templates/components/base/trade/turbo/broadcast/remove_transaction.stream.html.twig @@ -0,0 +1,4 @@ + + + diff --git a/templates/components/base/trade/turbo/new_transaction.stream.html.twig b/templates/components/base/trade/turbo/new_transaction.stream.html.twig new file mode 100644 index 000000000..fe6561ed5 --- /dev/null +++ b/templates/components/base/trade/turbo/new_transaction.stream.html.twig @@ -0,0 +1,30 @@ +{% set transaction = commercial_shipping.transaction %} + +{% if transaction.hasResources %} + + + +{% elseif transaction.hasCommander %} + + +{% elseif transaction.hasShips %} + + + +{% endif %} + + + + + + + + diff --git a/templates/components/base/trade/turbo/remove_transaction.stream.html.twig b/templates/components/base/trade/turbo/remove_transaction.stream.html.twig new file mode 100644 index 000000000..c3d966c4e --- /dev/null +++ b/templates/components/base/trade/turbo/remove_transaction.stream.html.twig @@ -0,0 +1,10 @@ + + + + + + + diff --git a/templates/components/base/type.html.twig b/templates/components/base/type.html.twig new file mode 100644 index 000000000..5fb15cc59 --- /dev/null +++ b/templates/components/base/type.html.twig @@ -0,0 +1,160 @@ +{% set type_neutral = constant('App\\Modules\\Athena\\Model\\OrbitalBase::TYP_NEUTRAL') %} +{% set type_commercial = constant('App\\Modules\\Athena\\Model\\OrbitalBase::TYP_COMMERCIAL') %} +{% set type_military = constant('App\\Modules\\Athena\\Model\\OrbitalBase::TYP_MILITARY') %} +{% set type_capital = constant('App\\Modules\\Athena\\Model\\OrbitalBase::TYP_CAPITAL') %} + +{# @TODO FACTORIZE THIIIIIS #} + + +
    + + {#{{ current_base|base_type }}#} + {{ current_base.name }}
    + {{ current_base|base_type }} +
    +
    +
    +

    {{ get_base_type_info(current_base.typeOfBase, 'desc') }}

    + +
    + + + + {# @TODO move that logic to a Specification class #} + {% if current_base.typeOfBase == type_neutral and current_player.credit >= get_base_type_info(type_commercial, 'price') and current_base.levelGenerator >= minimal_change_level %} + + + Evoluer en {{ get_base_type_info(type_commercial, 'name') }}
    + {{ get_base_type_info(type_commercial, 'price')|number }} + {#crédits#} +
    +
    + {% elseif current_base.typeOfBase == type_military and current_player.credit >= get_base_type_info(type_commercial, 'price') %} + + + Transformer en {{ get_base_type_info(type_commercial, 'name') }}
    + {{ get_base_type_info(type_commercial, 'price')|number }} + {#crédits#} +
    +
    + {% elseif current_base.typeOfBase == type_commercial or current_base.typeOfBase == type_capital %} + {# do nothing #} + {% else %} + + Evoluer en {{ get_base_type_info(type_commercial, 'name') }}
    + {{ get_base_type_info(type_commercial, 'price')|number }} + {#crédits#} +
    + {% endif %} + + Avantages & Inconvénients + +

    + Technologies + Orienté commerce et production +

    +

    + Bâtiments + Plateforme Commerciale et Spatioport au niveau maximum +

    +
    +

    + Nécessite + Générateur niveau {{ minimal_change_level }} +

    +
    + + + {% if current_base.typeOfBase == type_neutral and current_player.credit >= get_base_type_info(type_military, 'price') and current_base.levelGenerator >= minimal_change_level %} + + + Evoluer en {{ get_base_type_info(type_military, 'name') }}
    + {{- get_base_type_info(type_military, 'price')|number -}} + {#crédits#} +
    +
    + {% elseif current_base.typeOfBase == type_commercial and current_player.credit >= get_base_type_info(type_military, 'price') %} + + + Evoluer en {{ get_base_type_info(type_military, 'name') }}
    + {{- get_base_type_info(type_military, 'price')|number -}} + {#crédits#} +
    +
    + {% elseif current_base.typeOfBase == type_military or current_base.typeOfBase == type_capital %} + {# do nothing #} + {% else %} + + Evoluer en {{ get_base_type_info(type_military, 'name') }}
    + {{- get_base_type_info(type_military, 'price')|number -}} + {#crédits#} +
    + {% endif %} + Avantages & Inconvénients +

    + Technologies + Orienté militaire +

    +

    + Bâtiments + Centre de Recyclage et Chantier de Ligne au niveau maximum +

    +
    +

    + Nécessite + Générateur niveau {{ minimal_change_level }} +

    +
    + + + {% set total_price = get_base_type_info(type_capital, 'price') %} + {% if current_base.typeOfBase in [type_commercial, type_military] and current_player.credit >= total_price and current_base.levelGenerator >= capital_change_level %} + {% if capitals_count == 0 %} + + + Evoluer en {{ get_base_type_info(type_capital, 'name') }}
    + {{- total_price|number -}} + {#crédits#} +
    +
    + {% else %} + + Vous avez déjà une {{ get_base_type_info(type_capital, 'name') }} + + {% endif %} + {% elseif current_base.typeOfBase == type_capital %} + {# do nothing #} + {% else %} + {% if capitals_count == 0 %} + + Evoluer en {{ get_base_type_info(type_capital, 'name') }}
    + {{- total_price|number -}} + {#crédits#} +
    + {% else %} + + Vous avez déjà une {{ get_base_type_info(type_capital, 'name') }} + + {% endif %} + {% endif %} + + Avantages & Inconvénients + +

    Vous ne pouvez avoir qu'une capitale

    +

    + Technologies + Toutes disponibles +

    +

    + Bâtiments + Tous au niveau maximum +

    +
    +

    + Nécessite + Générateur niveau {{ capital_change_level }} +

    +
    +
    +
    +
    diff --git a/templates/components/common/alerts.html.twig b/templates/components/common/alerts.html.twig new file mode 100644 index 000000000..310af8e96 --- /dev/null +++ b/templates/components/common/alerts.html.twig @@ -0,0 +1,22 @@ +
    + {% set flashMessages = app.session.flashBag.all() %} + {% for type in flashMessages|keys %} + {% for message in flashMessages[type] %} +
    + + ! + + +
    + {{ type }} + +
    + +

    + {{ message }} +

    +
    +
    + {% endfor %} + {% endfor %} +
    diff --git a/templates/components/common/card.html.twig b/templates/components/common/card.html.twig new file mode 100644 index 000000000..f51fdced3 --- /dev/null +++ b/templates/components/common/card.html.twig @@ -0,0 +1,21 @@ +
    +
    + {% block picto %}{% endblock %} +
    + +
    + {% block title %}{% endblock title %} + {% block content %}{% endblock content %} + {% block footer %}{% endblock footer %} +
    +
    + diff --git a/templates/components/common/navbar.html.twig b/templates/components/common/navbar.html.twig new file mode 100644 index 000000000..88140b6d0 --- /dev/null +++ b/templates/components/common/navbar.html.twig @@ -0,0 +1,534 @@ +{% set building_queues_count = current_building_queues|length %} +{% set technology_queues_count = current_technology_queues|length %} +{% set tutorial_step = current_player.stepTutorial %} + +{% apply spaceless %} +
    +
    + +
    + + + +
    + + + +
    +
    + +{% endapply %} + diff --git a/templates/components/common/toolbar.html.twig b/templates/components/common/toolbar.html.twig new file mode 100644 index 000000000..492c3c9e2 --- /dev/null +++ b/templates/components/common/toolbar.html.twig @@ -0,0 +1,331 @@ +{% set building_queues_count = current_building_queues|length %} +{% set technology_queues_count = current_technology_queues|length %} + +{% apply spaceless %} +
    + + + + +
    + {{ current_player.credit|number }} + + +
    + +
    + + {% if building_queues_count > 0 %} + {{ include('atoms/header/badge.html.twig', { count: building_queues_count, faction: current_player.faction}) }} + {% endif %} + + + + + +
    + Générateur + {% if building_queues_count > 0 %} + {% set queue = current_building_queues[0] %} + {% set queue_time = queue|building_queue_time %} + {% set queue_duration = queue|queue_duration %} +
    +
    + + {{ queue|queue_name }} + niv. {{ queue.targetLevel }} + + + + {{ queue_duration|lite_seconds }} + + + + + + +
    +
    + {% else %} +

    Aucun bâtiment en construction pour le moment.

    + {% endif %} + + + + vers le générateur + + +
    +
    + +
    + + {% if technology_queues_count > 0 %} + {{ include('atoms/header/badge.html.twig', { count: technology_queues_count, faction: current_player.faction }) }} + {% endif %} + + + + + + +
    + Technosphère + {% if technology_queues_count > 0 %} + {% set queue = current_technology_queues[0] %} +
    +
    + + {{ queue|queue_name }} + {% if queue|is_unblocking_technology %} + niv. {{ queue.targetLevel }} + {% endif %} + + + {{ queue|queue_duration|lite_seconds }} + + + + +
    +
    + {% else %} +

    Aucune recherche en cours pour le moment.

    + {% endif %} + + + + vers la technosphère + + +
    +
    + +
    + + {% if current_dock1_ship_queues|length > 0 %} + {{ include('atoms/header/badge.html.twig', { count: current_dock1_ship_queues|length, faction: current_player.faction}) }} + {% endif %} + + + + + + +
    + Chantier Alpha + + {% if current_dock1_ship_queues|length > 0 %} + {% set queue = current_dock1_ship_queues[0] %} +
    +
    + + {{ queue.quantity }} {{ queue|ship_queue_name ~ queue.quantity|plural }} + + + {{ queue|queue_duration|lite_seconds }} + + + + + +
    +
    + {% else %} +

    Aucun vaisseau en construction pour le moment.

    + {% endif %} + + + + vers le chantier alpha + + +
    +
    + +
    + + {% if current_dock2_ship_queues|length > 0 %} + {{ include('atoms/header/badge.html.twig', { count: current_dock2_ship_queues|length, faction: current_player.faction}) }} + {% endif %} + + + + + + +
    + Chantier de ligne + + {% if current_dock2_ship_queues|length > 0 %} + {% set queue = current_dock2_ship_queues[0] %} +
    +
    + + {{ queue.quantity }} {{ queue|ship_queue_name ~ queue.quantity|plural }} + + + {{ queue|queue_duration|lite_seconds }} + + + + + +
    +
    + {% else %} +

    Aucun vaisseau en construction pour le moment.

    + {% endif %} + + + + vers le chantier de ligne + + +
    +
    + + {% if current_player.hasCompletedTutorial %} + + + + + + {% else %} + {% set tutorial_step = current_player.stepTutorial %} +
    + + + + + + {{ include('atoms/header/badge.html.twig', { count: current_player.stepTutorial, faction: current_player.faction}) }} + + +
    +
    + + + {{ tutorial_step }} - + + {{ tutorial_info(tutorial_step, 'title') }} + + +

    + {{ tutorial_info(tutorial_step, 'description')|raw }} +

    + +
    +
    +

    Récompense :

    + {% set credit_reward = tutorial_info(tutorial_step, 'creditReward') %} + {% set resource_reward = tutorial_info(tutorial_step, 'resourceReward') %} + {% set ship_reward = tutorial_info(tutorial_step, 'shipReward') %} +
      + {% if credit_reward > 0 %} +
    • - {{ credit_reward }} crédits
    • + {% endif %} + + {% if resource_reward > 0 %} +
    • - {{ resource_reward }} ressources
    • + {% endif %} + + {% for key in ship_reward|keys %} + {% set value = ship_reward[key] %} + {% if value > 0 %} +
    • - {{ value }} {{ ship_name(key) }}{{ value|plural }}
    • + {% endif %} + {% endfor %} +
    +
    +
    + +
    + {% if current_player.stepDone is same as(true) %} + + valider l'étape {{ tutorial_step }} + + {% else %} + + étape en cours + + {% endif %} +
    +
    +
    + {% endif %} +
    + + + + + + + {% if current_player_notifications_count > 0 %} + {{ include('atoms/header/badge.html.twig', { count: current_player_notifications_count, faction: current_player.faction }) }} + {% endif %} + + +
    + Notifications + {% if current_player_notifications_count > 1 %} + tout marquer comme lu + {% endif %} + +
    + {% if current_player_notifications_count > 0 %} + {% for notification in current_player_notifications %} +
    + + + {{ notification.title }} + + + +
    +
    {{ notification.content|raw }}
    +
    + archiver ou + supprimer
    + — {{ notification.sentAt|game_date|raw }} +
    +
    +
    + {% endfor %} + {% else %} +

    Aucune nouvelle notification.

    + {% endif %} +
    + + + toutes vos notifications + + +
    +
    +
    +{% endapply %} diff --git a/templates/components/data_collector/applied_bonuses.html.twig b/templates/components/data_collector/applied_bonuses.html.twig new file mode 100644 index 000000000..097beed80 --- /dev/null +++ b/templates/components/data_collector/applied_bonuses.html.twig @@ -0,0 +1,191 @@ +{# templates/data_collector/template.html.twig #} +{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% apply spaceless %} + {% set icon %} + {# this is the content displayed as a panel in the toolbar #} + {{ include('components/data_collector/modifiers.svg') }} + {{ collector.appliedBonuses|length }} + {% endset %} + + {% set text %} + {# this is the content displayed when hovering the mouse over + the toolbar panel #} + {% for modifier in collector.appliedBonuses %} + {% set is_positive = modifier.modified_value > 0 %} +
    + {{ ('app.modifier.' ~ modifier.modifier_id)|trans }} + + + {{ modifier.initial_value }} + + + {{ is_positive ? '+' : '-' }} {{ modifier.modified_value|abs }} + + +
    + {% endfor %} + + {% if collector.appliedBonuses == [] %} +
    + No modifier applied +
    + {% endif %} + {% endset %} + + {# the 'link' value set to 'false' means that this panel doesn't + show a section in the web profiler #} + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig') }} + {% endapply %} +{% endblock %} + +{% block menu %} + {# This left-hand menu appears when using the full-screen profiler. #} + + {{ include('components/data_collector/modifiers.svg') }} + Modifiers + +{% endblock %} + +{% block panel %} +
    +
    +

    Applied Modifiers

    + +
    +

    Modifier Metrics

    + +
    +
    + + {{ collector.appliedBonuses|length }} + + + Total Applied Modifiers + +
    +
    + + {{ collector.appliedBonuses|filter(m => m.modified_value != 0)|length }} + + + Effective Modifiers + +
    +
    + +

    Applied Modifiers

    + {% if collector.appliedBonuses == [] %} +
    +

    No modifier applied

    +
    + {% else %} + + + + + + + + + + {% for modifier in collector.appliedBonuses %} + {% set is_positive = modifier.modified_value > 0 %} + + + + + + + + {% endfor %} + +
    + ID + + Label + + Coeff + + Initial Value + + Bonus/Malus +
    {{ modifier.modifier_id }}{{ ('app.modifier.' ~ modifier.modifier_id)|trans }} + {% if modifier.modified_value > 0 %} + + +{{ modifier.modifier_value|abs }}% + + {% elseif modifier.modifier_value == 0 %} + 0% + {% else %} + + -{{ modifier.modifier_value|abs }}% + + {% endif %} + {{ modifier.initial_value }} + {% if modifier.modified_value > 0 %} + + +{{ modifier.modified_value|abs }} + + {% elseif modifier.modified_value == 0 %} + 0 + {% else %} + + -{{ modifier.modified_value|abs }} + + {% endif %} +
    + {% endif %} +
    +
    + +
    +

    Player Bonuses

    + +
    +

    Player Bonuses

    + + + + + + + + {% for bonus_id in collector.playerBonuses|keys %} + {% set value = collector.playerBonuses[bonus_id] %} + {% set status_class -%} + {%- if value > 0 -%} + status-success + {%- elseif value < 0 -%} + status-error + {%- endif -%} + {%- endset %} + + + + + + {% endfor %} + +
    + Bonus + + Value +
    + {{ ('app.modifier.' ~ bonus_id)|trans }} + + + {{ value }}% + +
    +
    +
    +
    + + {% if collector.appliedBonuses == [] %} +
    +

    No modifier has been applied

    +
    + {% endif %} +{% endblock %} diff --git a/templates/components/data_collector/modifiers.svg b/templates/components/data_collector/modifiers.svg new file mode 100644 index 000000000..a536ff623 --- /dev/null +++ b/templates/components/data_collector/modifiers.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/components/financial/reporting/base_investments.html.twig b/templates/components/financial/reporting/base_investments.html.twig new file mode 100644 index 000000000..3ae27a919 --- /dev/null +++ b/templates/components/financial/reporting/base_investments.html.twig @@ -0,0 +1,79 @@ +{% apply spaceless %} + +
    +
    + Investissements + Investissements par planète +
    + + + Dans la rubrique « Investissements » sont répertoriés tous les investissements relatifs à l’école + de commandement et au contre-espionnage. Chacun de ces investissements peuvent être gérés dans leur bâtiment respectif. Faites attention + à ne pas avoir plus d’investissements que de recettes. + +
    + +
    +
      + {% for base in player_bases %} + {% set base_invest = base.iSchool + base.iAntiSpy %} + +
    • +
      + + + + {{ base.name }}
      +
      + + {{- base_invest|number -}} +
      + +
      +
        +
      • + + +
        + + + ok + + +
      • +
      • + + +
        + + + ok + + +
      • +
      +
      +
      +
    • + {% endfor %} + +
    • + total des investissements + + {{- investments_data.totalInvest|number -}} + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/commander_fees.html.twig b/templates/components/financial/reporting/commander_fees.html.twig new file mode 100644 index 000000000..d19e72a32 --- /dev/null +++ b/templates/components/financial/reporting/commander_fees.html.twig @@ -0,0 +1,63 @@ +{% apply spaceless %} + +
    +
    + Commandants + Salaires des commandants +
    + + + La rubrique commandant ne correspond pas à l’investissement fait dans l’école de commandement, mais au salaire de vos + commandants. Plus un commandant a un niveau élevé, plus son salaire sera important. + Chaque niveau de commandant coûte {{ constant('App\\Modules\\Ares\\Model\\Commander::LVLINCOMECOMMANDER') }} crédits par relève. + +
    + +
    +
      + {% for base_id in commanders_by_base|keys %} + {% set commanders = commanders_by_base[base_id] %} + {% set commander_fees = commanders|reduce( + (carry, c) => carry + (c.level * constant('App\\Modules\\Ares\\Model\\Commander::LVLINCOMECOMMANDER')) + ) %} + +
    • +
      + + {% for base in player_bases|filter(b => b.id == base_id) %} + + {{ base.name }} + [{{ commanders|length }} officier{{ commanders|length|plural }}] + + {% endfor %} + + {{ commander_fees|number }} + + + +
      +
        + {% for commander in commanders %} +
      • + {{ commander|commander_rank }} {{ commander.name }} + + {{- (commander.level * constant('App\\Modules\\Ares\\Model\\Commander::LVLINCOMECOMMANDER')) -}} + +
      • + {% endfor %} +
      +
      +
      +
    • + {% endfor %} + +
    • + total des salaires + + {{- investments_data.totalFleetFees -}} + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/commercial_routes.html.twig b/templates/components/financial/reporting/commercial_routes.html.twig new file mode 100644 index 000000000..43b04345d --- /dev/null +++ b/templates/components/financial/reporting/commercial_routes.html.twig @@ -0,0 +1,81 @@ +{% apply spaceless %} + +
    +
    + Commerce + Revenus des routes commerciales par planète +
    + + + La colonne « Commerce » est un compte rendu de la totalité des revenus de vos routes commerciales. Pour gérer les + recettes de vos routes commerciales, il vous est nécessaire de vous rendre sur votre plateforme commerciale afin de créer ou supprimer + des routes. + +
    + +
    +
      + {% for base in player_bases %} + {% set base_data = bases_data[base.id.toRfc4122()] %} + +
    • +
      + + {% if base_data['routes_count'] > 0 %} + + + + {% endif %} + + {{ base.name }} + + [{{ base_data['routes_count'] }} + route{{ base_data['routes_count']|plural }}] + +
      + + {{ base_data['routes_income'] }} + {% if base_data['routes_income_bonus'] > 0 %} + +{{ base_data['routes_income_bonus']|number }} + {% endif %} + crédits + +
      + +
      + {% if base_data['routes_count'] > 0 %} +
        + {% for route in base_data['routes'] %} + {% if route.isActive %} +
      • + + {{- route.originBase.name == base.name ? route.destinationBase.name : route.originBase.name -}} + + + {{- route.income|number -}} + +
      • + {% endif %} + {% endfor %} +
      + {% endif %} +
      +
      + +
    • + {% endfor %} + +
    • + total des routes commerciales + + {{- investments_data.totalRouteIncome|number -}} + {% if investments_data.totalRouteIncomeBonus > 0 %} + +{{- investments_data.totalRouteIncomeBonus|number -}} + {% endif %} + crédits + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/general.html.twig b/templates/components/financial/reporting/general.html.twig new file mode 100644 index 000000000..2f4a447f0 --- /dev/null +++ b/templates/components/financial/reporting/general.html.twig @@ -0,0 +1,93 @@ +{% apply spaceless %} + +
    +
    + recettes + +
    + + {{- investments_data.totalTaxIn|number -}} + + + + {{- investments_data.totalRouteIncome|number -}} + + + + {{- investments_data.total_income|number -}} + + + {% if investments_data.gains < 0 %} + + {{- investments_data.gains|abs|number -}} + + {% endif %} +
    +
    + +
    + dépenses +
    + + {{- investments_data.totalInvest|number -}} + + + +
    + + ↓ {{ investments_data.totalInvestUni|number }} + + +
    + + + ok + + +
    +
    + + + {{- investments_data.totalFleetFees|number -}} + + + {{- investments_data.totalShipsFees|number -}} + + + {{- investments_data.totalTaxOut|number -}} + + + {{- investments_data.total_expenses|number -}} + + {% if investments_data.gains >= 0 %} + + {{- investments_data.gains|number -}} + + {% endif %} +
    +
    + + + Ces deux colonnes sont un résumé de vos recettes et de vos dépenses pendant la durée d’une relève. Dans la + colonne des recettes vous pouvez voir tous les éléments qui vous rapportent des crédits dans Asylamba. Dans la colonne des dépenses, + c’est l’inverse, vous voyez les éléments qui vous coûtent sur vos bases. La différence entre ces deux colonnes vous donne soit une + perte (sous la colonne des recettes) soit un bénéfice (sous la colonne des dépenses). + +
    + +
    + évolution des finances +
    + + {{- current_player.credit|number -}} + + + {{- investments_data.gains|number -}} + + + {{- investments_data.remains|number -}} + +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/imposition.html.twig b/templates/components/financial/reporting/imposition.html.twig new file mode 100644 index 000000000..0a0dfa35a --- /dev/null +++ b/templates/components/financial/reporting/imposition.html.twig @@ -0,0 +1,50 @@ +{% apply spaceless %} + +
    +
    + Impôts + Imposition par planète +
    + + + Les impôts sont les crédits que vous récoltez auprès de la population de vos planètes. Plus vos planètes sont + grosses en terme de population, plus vous collecterez d’impôts. Ils peuvent être augmentés grâce à la technologie « Economie Sociale de + Marché », ce qui vous permettra d’améliorer vos recettes. + +
    + +
    +
      + {% for base in player_bases %} + {% set base_data = bases_data[base.id.toRfc4122()] %} + {% set base_tax_income = base_data.tax_income %} + {% set base_tax_income_bonus = base_data.tax_income_bonus %} +
    • + + {{ base.name }} + [{{ base.place.population|number }} Mio hab.] +
      + + {{- base_tax_income|number -}} + {% if base_tax_income_bonus > 0 %} + +{{ base_tax_income_bonus|number }} + {% endif %} + crédits + +
    • + {% endfor %} + +
    • + total de l'imposition + + {{- investments_data.totalTaxIn|number -}} + {% if investments_data.totalTaxInBonus > 0 %} + +{{ investments_data.totalTaxInBonus|number }} + {% endif %} + crédits + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/ship_fees.html.twig b/templates/components/financial/reporting/ship_fees.html.twig new file mode 100644 index 000000000..bf3cf9fa8 --- /dev/null +++ b/templates/components/financial/reporting/ship_fees.html.twig @@ -0,0 +1,76 @@ +{% apply spaceless %} + +
    +
    + Entretien + Entretien des vaisseaux +
    + + + Les frais d'entretien des vaisseaux sont nécessaires pour que les différents appareils continuent à voler sans risque. + Ils représentent une part importante de vos finances et sont par nature très volatiles, pensez donc à garder un oeil dessus. + +
    + +
    +
      + {% for base in player_bases %} + {% set base_fleet_cost = get_base_fleet_cost(base) %} + {% set base_commanders = commanders_by_base[base.id.toRfc4122()] is defined ? commanders_by_base[base.id.toRfc4122()] : [] %} + {% set base_transaction = transactions|filter(t => t.base.id == base.id)|reduce((carry, t) => carry + get_ship_transaction_cost(t))|default(0) %} + + {% set total_base = base_fleet_cost + base_transaction + base_commanders|reduce( + (carry, commander) => carry + get_fleet_cost(commander) + ) %} +
    • +
      + + + + {{ base.name }} + + + {{- total_base|number -}} + crédits + + + +
        +
      • + Dans le hangar + + {{- base_fleet_cost|number -}} + +
      • + +
      • + En vente + + {{- base_transaction|number -}} + +
      • + + {% for commander in base_commanders %} +
      • + {{ commander|commander_rank }} {{ commander.name }} + + {{- get_fleet_cost(commander)|number -}} + +
      • + {% endfor %} +
      +
      +
    • + {% endfor %} + +
    • + total des coûts + + {{- investments_data.totalShipsFees|number -}} + crédits + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/reporting/taxes.html.twig b/templates/components/financial/reporting/taxes.html.twig new file mode 100644 index 000000000..683173930 --- /dev/null +++ b/templates/components/financial/reporting/taxes.html.twig @@ -0,0 +1,45 @@ +{% apply spaceless %} + +
    +
    + Redevances + Redevances aux factions +
    + + + La redevance de faction est une taxe que vous devez payer. Cette taxe est versée à la faction qui a le contrôle + du secteur dans lequel vous vous situez. De ce fait, vous pouvez très bien verser un impôt à une faction ennemie. Cette taxe est + versée chaque relève. + +
    + +
    +
      + {% for base in player_bases %} + {% set base_tax = get_base_tax(base, tax_coeff) %} + {# @TODO move that logic somewhere legit #} + {% set base_tax_out = base_tax.total * base.place.system.sector.tax / 100 %} + +
    • + + {{ base.name }} + [{{ base.place.system.sector.tax }}% de taxe] +
      + + {{- base_tax_out|number -}} + crédits + +
    • + {% endfor %} + +
    • + total de la redevance + + {{- investments_data.totalTaxOut|number -}} + crédits + +
    • +
    +
    +
    +{% endapply %} diff --git a/templates/components/financial/transfers/faction_sending.html.twig b/templates/components/financial/transfers/faction_sending.html.twig new file mode 100644 index 000000000..760a518a9 --- /dev/null +++ b/templates/components/financial/transfers/faction_sending.html.twig @@ -0,0 +1,23 @@ + +
    + + Envoyer à votre faction + +
    + +
    +
    +
    + +
    + +
    + +
    + + + Envoyer + +
    +
    +
    diff --git a/templates/components/financial/transfers/player_sending.html.twig b/templates/components/financial/transfers/player_sending.html.twig new file mode 100644 index 000000000..9d5bce74d --- /dev/null +++ b/templates/components/financial/transfers/player_sending.html.twig @@ -0,0 +1,25 @@ + +
    + Envoyer à un joueur +
    + +
    +
    +

    +

    + + +

    + +

    +

    + +

    +

    + + + Envoyer + +
    +
    +
    diff --git a/templates/components/financial/transfers/receivings_history.html.twig b/templates/components/financial/transfers/receivings_history.html.twig new file mode 100644 index 000000000..28c9db86e --- /dev/null +++ b/templates/components/financial/transfers/receivings_history.html.twig @@ -0,0 +1,24 @@ + +
    + + Derniers reçus + +
    +
    + {% for transaction in receivings %} +
    + + {{ transaction.senderName }} + + + {{ transaction.senderStatus }} + {{ transaction.senderName }} + {{ transaction.amount|number }} crédit{{ transaction.amount|plural }} +
    + {% endfor %} + + {% if receivings|length == 0 %} +

    Vous n'avez encore reçu aucun crédit.

    + {% endif %} +
    +
    diff --git a/templates/components/financial/transfers/sendings_history.html.twig b/templates/components/financial/transfers/sendings_history.html.twig new file mode 100644 index 000000000..cc9ebc095 --- /dev/null +++ b/templates/components/financial/transfers/sendings_history.html.twig @@ -0,0 +1,24 @@ + +
    + + Derniers envois + +
    +
    + {% for transaction in sendings %} +
    + + {{ transaction.receiverName }} + + + {{ transaction.receiverStatus }} + {{ transaction.receiverName }} + {{ transaction.amount|number }} crédit{{ transaction.amount|plural }} +
    + {% endfor %} + + {% if sendings|length == 0 %} +

    Vous n'avez fait aucun envoi de crédit.

    + {% endif %} +
    +
    diff --git a/templates/components/fleet/combat_report.html.twig b/templates/components/fleet/combat_report.html.twig new file mode 100644 index 000000000..2d8e430fc --- /dev/null +++ b/templates/components/fleet/combat_report.html.twig @@ -0,0 +1,183 @@ +
    +
    + {{ report_attacker.name }} +

    Attaquant

    + {{ report_attacker.name }} +
    +
    +
    + {% if report.attacker.id == (report.winner.id ?? null) %} +
    + Victoire +
    +
    + {% if report.attacker.id == current_player.id %} +
    + + {{ report.attackerCommander.name }} + + {% set level = get_commander_level_up_from_report(report.attackerLevel, report.attackerCommanderExperience + report.earnedExperience) %} + + {{ get_commander_rank(report.attackerLevel) }} + {% if level > 0 %} + a passé {{ level }} grade{{ level|plural }} + {% endif %} + + {{ report.attacker.name }} + expérience : {{ report.attackerCommanderExperience|number }} + + {{ report.earnedExperience|number }} + + victoires : {{ report.attackerPalmares }} + 1 + + {{- report.resources|number -}} + ressource{{ report.resources|plural }} gagnée{{ report.resources|plural }} + +
    + {% else %} +
    + {{ report.attackerCommander.name }} + {{ get_commander_rank(report.attackerLevel) }} + {{ report.attackerCommander.name }} + expérience : --- + victoire : --- + +
    + {% endif %} + {% else %} +
    + Défaite +
    +
    +
    + {{ report.defenderCommander.name ?? 'Rebelle' }} + {{ get_commander_rank(report.attackerLevel) }} + {{ report.attackerCommander.name }} + {% if report.attacker.id == current_player.id %} + expérience : {{ report.attackerCommanderExperience|number }} + victoire : {{ report.attackerPalmares }} + + {% else %} + expérience : --- + victoire : --- + + {% endif %} +
    + {% endif %} + + {{ include('molecules/fleet/combat_report_table.html.twig', { + 'total_in_begin': report.attackerTotalInBegin, + 'difference': report.attackerDifference, + 'total_at_end': report.attackerTotalAtEnd, + }) }} +
    +
    +
    + +
    +
    + {% if report_defender is null %} + Rebelle +

    Défenseur

    + Rebelle + {% else %} + {{ report_defender.name }} +

    Défenseur

    + {{ report_defender.name }} + {% endif %} +
    +
    +
    + {% if defender_report.defender.id ?? null == report.winner.id ?? null %} +
    + Victoire +
    +
    + {% if report.defender.id ?? null == current_player.id %} +
    + {{ report.defenderCommander.name ?? 'Rebelle' }} + {% set level = get_commander_level_up_from_report(report.defenderLevel, report.defenderCommanderExperience + report.earnedExperience) %} + {{ get_commander_rank(report.defenderLevel) }} + {% if level > 0 %} + a passé {{ level }} grade + {% endif %} + + {{ report.defenderCommander.name ?? 'Rebelle' }} + + expérience : {{- report.defenderCommanderExperience|number -}} + + {{ report.earnedExperience|number }} + + victoire : {{ report.defenderPalmares }} + 1 + +
    + {% else %} +
    + {{ get_commander_rank(report.defenderLevel) }} + {% if report.defender is null %} + Rebelle + Rebelle + {% else %} + {{ report.defenderCommander.name }} + {{ report.defenderCommander.name }} + {% endif %} + expérience : --- + victoire : --- + +
    + {% endif %} + {% else %} +
    + Défaite +
    +
    + {% if report.defender.id ?? null == current_player.id %} +
    + {{ report.defenderCommander.name }} + {{ get_commander_rank(report.defenderLevel) }} + {{ report.defenderCommander.name }} + expérience : {{ report.defenderCommanderExperience|number }} + victoire : {{ report.defenderPalmares }} + +
    + {% else %} +
    + {{ report.defenderCommander.name ?? 'Rebelle' }} + {{ get_commander_rank(report.defenderLevel) }} + {% if report.defender is null %} + Rebelle + {% else %} + {{ report.defenderCommander.name }} + {% endif %} + expérience : --- + victoire : --- + +
    + {% endif %} + {% endif %} + + {# @TODO check if this block is useful #} + {# if ($report->type == Commander::LOOT) { +
    + + + {% if report.rPlayerAttacker != report.rPlayerWinner %} + {% if report.resources == 0 %} + + {% else %} + + {% endif %} + {% else %} + + {% endif %} + +
    Aucune ressource perdue{{ report.resources|number }} ressources perdues
    +
    + }#} + + {{ include('molecules/fleet/combat_report_table.html.twig', { + 'total_in_begin': report.defenderTotalInBegin, + 'difference': report.defenderDifference, + 'total_at_end': report.defenderTotalAtEnd, + }) }} +
    +
    +
    diff --git a/templates/components/fleet/combat_reports.html.twig b/templates/components/fleet/combat_reports.html.twig new file mode 100644 index 000000000..f9fb3d0de --- /dev/null +++ b/templates/components/fleet/combat_reports.html.twig @@ -0,0 +1,55 @@ + +
    +

    Archives Militaires

    +
    +
    +
    +
    + + + {{- (app.request.cookies.get('p' ~ constant('App\\Classes\\Container\\Params::SHOW_ATTACK_REPORT'), default_parameters[constant('App\\Classes\\Container\\Params::SHOW_ATTACK_REPORT')]) ? 'Rapports d\'attaque' : 'Rapports de défense') -}} + + + + {% set show_rebel_report = app.request.cookies.get( + 'p' ~ constant('App\\Classes\\Container\\Params::SHOW_REBEL_REPORT'), + default_parameters[constant('App\\Classes\\Container\\Params::SHOW_REBEL_REPORT')] + ) %} + + R + + + + × + +
    + + {% if combat_reports|length > 0 %} +
    + + {% for report in combat_reports %} + {% set report_data = get_report_data(report) %} + + + {% endfor %} +
    + {% else %} +

    Il n'y a aucun rapport de combat dans vos archives militaires.

    + {% endif %} + + {% if app.request.query.get('mode') == 'archived' %} + Voir tous les rapports + {% else %} + Voir les archives des rapports + {% endif %} +
    +
    +
    diff --git a/templates/components/fleet/commander_details.html.twig b/templates/components/fleet/commander_details.html.twig new file mode 100644 index 000000000..9c1672daf --- /dev/null +++ b/templates/components/fleet/commander_details.html.twig @@ -0,0 +1,111 @@ + +
    +
    + +
    + +
    +

    {{ commander.name }}

    + {{ commander|commander_rank }} +
    +
    + +
    + {% if commander.isAffected %} + + {% endif %} + +
    + État de l'officier + {% if commander.isInSchool %} + À l'école + {% elseif commander.isAffected %} + À quai + {% elseif commander.isMoving %} + En mission + {% else %} + Tombé au combat + {% endif %} +
    + + {% if commander.isMoving %} +
    + Mission + {% if commander.isTransferring %} + Déplacement +
    +
    + Vers + {{ commander.destinationPlace.base.name ?? 'colonie rebelle' }} + {% elseif commander.isLooting %} + Pillage +
    +
    + Cible + {{ commander.destinationPlace.base.name ?? 'colonie rebelle' }} + {% elseif commander.isInvading %} + Colonisation +
    +
    + Cible + {{ commander.destinationPlace.base.name ?? 'colonie rebelle' }} + {% elseif commander.isComingBack %} + Retour victorieux +
    +
    + Ressources transportées + {{ commander.resources|number }} + {% endif %} +
    + {% endif %} + +
    + +
    + Nom + {{ commander.name }} +
    +
    + Victoire{{ commander.palmares|plural }} + {{ commander.palmares }} +
    +
    + Grade + {{ commander|commander_rank }} +
    + + {% if commander.isAffected or commander.isMoving or commander.isInSchool %} +
    + Expérience + {% set missing_experience = get_commander_missing_experience(commander) %} + {% set percent = (commander.experience - missing_experience / 2)|percent(missing_experience - missing_experience / 2) %} + {{ commander.experience|number }} / {{ missing_experience|number }} + + + +
    + {% endif %} + +
    + +
    + Salaire de l'officier + + {{- (commander.level * constant('App\\Modules\\Ares\\Model\\Commander::LVLINCOMECOMMANDER'))|number -}} + crédits + +
    + +
    + Frais d'entretien des vaisseaux + + {{- get_fleet_cost(commander)|number -}} + crédits + +
    +
    +
    diff --git a/templates/components/fleet/commander_fleet.html.twig b/templates/components/fleet/commander_fleet.html.twig new file mode 100644 index 000000000..a5cf84eda --- /dev/null +++ b/templates/components/fleet/commander_fleet.html.twig @@ -0,0 +1,24 @@ +{% apply spaceless %} + +
    +

    + Ceci représente la composition de votre flotte. + Chaque carré montre une escadrille. + Vous pouvez remplir cette escadrille en cliquant dessus puis en cliquant sur un type de vaisseau dans les colonnes à droite. +

    +

    + La première colonne représente votre escadrille et la seconde votre hangar. +

    +

    + En pressant CTRL + clic (CMD + clic), vous pouvez transférer le maximum de vaisseaux possible. +

    +
    + + {% if commander.isAffected %} +
    + + +
    + {% endif %} +
    +{% endapply %} diff --git a/templates/components/fleet/list.html.twig b/templates/components/fleet/list.html.twig new file mode 100644 index 000000000..8881fd790 --- /dev/null +++ b/templates/components/fleet/list.html.twig @@ -0,0 +1,133 @@ + +
    + {% set list_all_fleets_param = constant('App\\Classes\\Container\\Params::LIST_ALL_FLEET') %} + + + {{- app.request.cookies.get('p' ~ list_all_fleets_param, default_parameters[list_all_fleets_param]) ? 'Afficher uniquement la base courante' : 'Afficher toutes les bases' -}} + + + + {% for base in obsets %} +
    +
    + {{ base.info.name }} +
    + +
    +
    +

    + {{ get_base_type_info(base.info.type, 'name') }} + {{ base.info.name }} +

    + + + (affecter un officier) + +
    + + {% for commander in base.fleets %} + {% set reversed = commander.player.id != current_player.id or commander.isComingBack %} + +
    +
    + {% if commander.player.id != current_player.id %} + + {% elseif commander.isAffected %} + + {% elseif commander.isMoving %} + {% if commander.isTransferring %} + + {% elseif commander.isLooting %} + + {% elseif commander.isInvading %} + + {% elseif commander.isComingBack %} + < + {% endif %} + {% endif %} + + {{ commander|commander_rank }} {{ commander.name }} + + {% if commander.player.id != current_player.id %} + {% if commander.isLooting %} + tente de vous piller + {% elseif commander.isInvading %} + tente de vous conquérir + {% else %} + erreur + {% endif %} + {% elseif commander.isAffected %} + à quai + {% elseif commander.isMoving %} + {% if commander.isTransferring %} + se déplace + {% elseif commander.isLooting %} + tente un pillage + {% elseif commander.isInvading %} + tente une colonisation + {% elseif commander.isComingBack %} + revient avec {{ commander.resources }} ressources + {% endif %} + {% endif %} + +   + {% if commander.player.id == current_player.id %} + {{ commander|pev|number ~ ' pev' }} + {% endif %} + + {% if commander.player.id == current_player.id and commander.isMoving and not commander.isComingBack %} + {{ ' '|raw }}annuler la mission + {% endif %} + +
    + +
    + {% if commander.isMoving %} + {% set spent_time = commander|travel_spent_time(reversed) %} + {% set remaining_time = commander|travel_remaining_time %} + {% set total_time = commander|travel_total_time %} + +
    +
    + + {{ remaining_time|lite_seconds }} +
    +
    + {% else %} + + {% endif %} +
    + + {% if commander.isMoving %} +
    + ' + + + {{- (reversed ? commander.startPlace.id : commander.destinationPlace.id) -}} + + + {% if commander.player.id != current_player.id %} + ({{ commander.player.name }}) + {% endif %} + +
    + {% endif %} + + {% if commander.player.id == current_player.id %} + + > + + {% endif %} +
    + {% endfor %} + + + {% if base.fleets|length == 0 %} + Aucun commandant affecté autour de cette planète + {% endif %} +
    +
    + {% endfor %} +
    +
    diff --git a/templates/components/fleet/manage_combat_report.html.twig b/templates/components/fleet/manage_combat_report.html.twig new file mode 100644 index 000000000..df521751e --- /dev/null +++ b/templates/components/fleet/manage_combat_report.html.twig @@ -0,0 +1,10 @@ + diff --git a/templates/components/fleet/overview.html.twig b/templates/components/fleet/overview.html.twig new file mode 100644 index 000000000..16df432ea --- /dev/null +++ b/templates/components/fleet/overview.html.twig @@ -0,0 +1,118 @@ +
    +
    +

    Aperçu des armées

    +
    +
    +
    + + + + + {% for i in range(0, 11) %} + + {% endfor %} + + + + {% set total_ships = range(0, 11)|map(v => 0) %} + + {% for base in obsets %} + {% set total_ships_base = range(0, 11)|map(v => 0) %} + + + + + + {% set line_pev = 0 %} + + {% for i in range(0, total_ships_base|length - 1) %} + {% set dock_storage = base.dock[i] ?? 0 %} + + + {% set line_pev = line_pev + get_ship_info(i, 'pev') * dock_storage %} + + {% set total_ships = {(i): total_ships[i] + dock_storage} + total_ships %} + {% set total_ships_base = {(i): (total_ships_base[i] + dock_storage)} + total_ships_base %} + {% endfor %} + + + + {% for commander in base.fleets %} + {% set commander_ships = commander.nbrShipByType %} + {% set line_pev = 0 %} + + + + {% for i in range(0, total_ships_base|length - 1) %} + + + {% set line_pev = line_pev + get_ship_info(i, 'pev') * commander_ships[i] %} + + {% set total_ships = {(i): total_ships[i] + commander_ships[i]} + total_ships %} + {% set total_ships_base = {(i): total_ships_base[i] + commander_ships[i]} + total_ships_base %} + {% endfor %} + + + {% endfor %} + + + + {% set line_pev = 0 %} + + {% for i in range(0, total_ships_base|length - 1) %} + {% set ships_count = total_ships_base[i] ?? 0 %} + + + {% set line_pev = line_pev + get_ship_info(i, 'pev') * ships_count %} + {% endfor %} + + + {% endfor %} + + + + + + {% set line_pev = 0 %} + + {% for i in range(0, total_ships|length - 1) %} + {% set ships_count = total_ships[i] ?? 0 %} + + + {% set line_pev = line_pev + get_ship_info(i, 'pev') * ships_count %} + {% endfor %} + + +
    {{ get_ship_info(i, 'codeName') }}PEV
    + + {{ get_base_type_info(base.info.type, 'name') }}
    + {{ base.info.name }} +
    +
    + + Vaisseaux dans les hangars + + + + {{- dock_storage -}} + + {{ line_pev }}
    + + {{ commander|commander_rank }} {{ commander.name }} + + + + {{- commander_ships[i] -}} + + {{ line_pev }}
    Total sur la planète + + {{- ships_count -}} + + {{ line_pev }}
    Total général + + {{- ships_count -}} + + {{ line_pev }}
    +
    +
    +
    diff --git a/templates/components/fleet/spy_report.html.twig b/templates/components/fleet/spy_report.html.twig new file mode 100644 index 000000000..bc46d16ad --- /dev/null +++ b/templates/components/fleet/spy_report.html.twig @@ -0,0 +1,137 @@ + +
    +
    + {# @TODO move the default NPC avatar to a constant #} + +

    + {{ spy_report.placeName }} +

    + {{ (spy_report.targetPlayer.name ?? 'Rebelle')|raw }} +
    + +
    + + Opération de {{ spy_report.price|number }} + + + + {% if spy_report.isNotCaught %} + L'ennemi ne sait rien + {% elseif spy_report.isAnonymouslyCaught %} + L'ennemi ne vous soupçonne pas + {% elseif spy_report.isCaught %} + L'ennemi vous a vu + {% endif %} + + {{ spy_report.successRate }} % de réussite de l'espionnage + + × + +
    +
    + +
    +

    Informations

    + +
    +
    +
    + {{ get_base_type_info(spy_report.place.typeOfPlace, 'name') }}
    + {% if spy_report.hasSpottedPoints %} + {{ spy_report.points|number }} + {% else %} + ??? + {% endif %} + points +
    + + + +
    + +
    +
    + Ressources dans les entrepôts + + {% if spy_report.hasSpottedResourcesStorage %} + {{- spy_report.resources -}} + {% else %} + ??? + {% endif %} + + +
    + +
    + Investissement dans le contre-espionnage + + {% if spy_report.hasSpottedAntiSpy %} + {{- spy_report.antiSpyInvest -}} + {% else %} + ??? + {% endif %} + + +
    + +
    + Revenus des routes commerciales + + {% if spy_report.hasSpottedCommercialRoutesIncome %} + {{- spy_report.commercialRouteIncome -}} + {% else %} + ??? + {% endif %} + + +
    +
    + +
    + {{ (place.population * 1000000)|number }} habitants
    + {{ place.coefResources }} % coeff. ressource
    + {{ get_place_technosphere_improvement_coeff(place) }} % de bonus scientifique +
    +
    +
    + +
    +
    + + + {% set orbital_base_type = spy_report.place.base.type ?? constant('App\\Modules\\Athena\\Model\\OrbitalBase::TYP_NEUTRAL') %} + + {% set commanders = spy_report.commanders %} + + {% if spy_report.hasSpottedFleets and commanders|length > 0 %} +

    Commandants en orbite

    + {% endif %} + + {% if spy_report.hasSpottedFleets %} + {% for commander in commanders %} + + {% endfor %} + {% endif %} + + {% if spy_report.place.typeOfPlace is not constant('App\\Modules\\Gaia\\Model\\Place::TYP_EMPTY') %} + + {% endif %} +
    +
    + + +
    diff --git a/templates/components/fleet/spy_reports.html.twig b/templates/components/fleet/spy_reports.html.twig new file mode 100644 index 000000000..053bcdd9d --- /dev/null +++ b/templates/components/fleet/spy_reports.html.twig @@ -0,0 +1,26 @@ + +
    +

    Archives d'espionnage

    +
    +
    +
    + + {% if spy_reports|length > 0 %} +
    + {% for spy_report in spy_reports %} + + {% endfor %} +
    + {% else %} +

    Il n'y a aucun rapport d'espionnage dans vos archives.

    + {% endif %} +
    +
    +
    diff --git a/templates/components/map/sectors.html.twig b/templates/components/map/sectors.html.twig new file mode 100644 index 000000000..a46662291 --- /dev/null +++ b/templates/components/map/sectors.html.twig @@ -0,0 +1,51 @@ +
    + + {% for sector in sectors %} + + {% endfor %} + +
    + +
    + {% for sector in sectors %} + {% set sectorCenterX = sector.xBarycentric * galaxy_configuration.scale %} + {% set sectorCenterY = sector.yBarycentric * galaxy_configuration.scale %} +
    + +

    {{ sector.name }}

    +

    + + + {% if sector.faction is not null %} + Revendiqué par {{ get_faction_info(sector.faction.identifier ?? 0, 'popularName') }} + | {{ sector.tax }}% de taxe + {% else %} + Non revendiqué + | Aucune taxe + {% endif %} + | rapporte {{ sector.points }} point{{ sector.points|plural }} +

    +
    +
    + {{ sector.identifier }} +
    +
    + {% endfor %} +
    diff --git a/templates/components/map/system_details.html.twig b/templates/components/map/system_details.html.twig new file mode 100644 index 000000000..d40ca21b4 --- /dev/null +++ b/templates/components/map/system_details.html.twig @@ -0,0 +1,92 @@ +{% apply spaceless %} + {% set systemFactionIdentifier = system.faction.identifier ?? 0 %} + +
    +
      +
    • Système #{{ system.id }}
    • +
    • Cordonnées {{ system|coords }}
    • +
    • + {% if systemFactionIdentifier == 0 %} + Non revendiqué + {% else %} + Revendiqué par {{ get_faction_info(systemFactionIdentifier, 'popularName') }} + {% endif %} +
    • +
    • + {{ get_system_info(system.typeOfSystem, 'frenchName') }} +
    • +
    + +
    ×
    +
    + +
    + + +
    +
    + star +
    + + {% for place in places %} + {% set playerFactionIdentifier = place.player.faction.identifier ?? 0 %} + {% set position = place.position - 1 %} + +
    +
    +
    + {% if place.player is not null %} + + {% endif %} +
    + +
    + {% if place.typeOfPlace == 1 %} + planet + {% else %} + {% if place.resources > 10000000 %} + {% set size = 3 %} + {% elseif place.resources > 5000000 %} + {% set size = 2 %} + {% else %} + {% set size = 1 %} + {% endif %} + recycling site + {% endif %} +
    + +
    + {{ position }} +
    +
    + + {# noAjax #} + {# This is the place panel deployed when the place is selected #} +
    +
    + + + {{ include('molecules/map/place_actions.html.twig', { + technologies, + moving_commanders, + colonization_cost, + conquest_cost, + recycling_missions, + }) }} +
    +
    +
    + {% endfor %} +
    +
    +{% endapply %} diff --git a/templates/components/modifiers/mathematical-basic-signs-of-plus-and-minus-with-a-slash-svgrepo-com.svg b/templates/components/modifiers/mathematical-basic-signs-of-plus-and-minus-with-a-slash-svgrepo-com.svg new file mode 100644 index 000000000..3f6c3f903 --- /dev/null +++ b/templates/components/modifiers/mathematical-basic-signs-of-plus-and-minus-with-a-slash-svgrepo-com.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/components/notifications/last.html.twig b/templates/components/notifications/last.html.twig new file mode 100644 index 000000000..25b70d148 --- /dev/null +++ b/templates/components/notifications/last.html.twig @@ -0,0 +1,58 @@ + +
    + Notifications +
    + +
    + + + + + {% if notifications|length > 0 %} +
    + {% for notification in notifications %} +
    + + {{ notification.title }} + + +
    +
    {{ notification.content|raw }}
    +
    + archiver ou + supprimer
    + — {{ notification.sentAt|game_date|raw }} +
    +
    +
    + {% endfor %} +
    + {% else %} +

    Il n\'y a aucune notification dans votre boîte de réception.

    + {% endif %} +
    +
    diff --git a/templates/components/rankings/faction/best_faction.html.twig b/templates/components/rankings/faction/best_faction.html.twig new file mode 100644 index 000000000..9b2a4e7a6 --- /dev/null +++ b/templates/components/rankings/faction/best_faction.html.twig @@ -0,0 +1,18 @@ + +
    + Meilleure faction +
    +
    +
    + {{ get_faction_info(best_faction.faction.identifier, 'popularName') }} +
    + +
    + +
    + +
    + "{{ get_faction_info(best_faction.faction.identifier, 'devise') }}" +
    +
    +
    diff --git a/templates/components/rankings/faction/general_rankings.html.twig b/templates/components/rankings/faction/general_rankings.html.twig new file mode 100644 index 000000000..ad538c911 --- /dev/null +++ b/templates/components/rankings/faction/general_rankings.html.twig @@ -0,0 +1,18 @@ + +
    + + Général + Somme des points des joueurs de la faction +
    + +
    + {% for faction_ranking in general_rankings %} + {{ include('molecules/rankings/faction_ranking_card.html.twig', { + faction_ranking, + 'value': faction_ranking.general|number(-1) ~ ' points', + 'position': faction_ranking.generalPosition, + 'variation': faction_ranking.generalVariation, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/faction/points_rankings.html.twig b/templates/components/rankings/faction/points_rankings.html.twig new file mode 100644 index 000000000..0a494ed5d --- /dev/null +++ b/templates/components/rankings/faction/points_rankings.html.twig @@ -0,0 +1,22 @@ + +
    + + Classement de victoire + Classement cumulatif. La victoire est remportée à {{ points_to_win }} points. +
    +
    + {% for faction_ranking in points_rankings %} + {% set value = faction_ranking.points|number(-1) ~ ' points' %} + {% if faction_ranking.newPoints > 0 %} + {% set value = value ~ ' (+' ~ faction_ranking.newPoints|number(-1) ~ ' points)' %} + {% endif %} + + {{ include('molecules/rankings/faction_ranking_card.html.twig', { + faction_ranking, + value, + 'position': faction_ranking.pointsPosition, + 'variation': faction_ranking.pointsVariation, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/faction/territorial_rankings.html.twig b/templates/components/rankings/faction/territorial_rankings.html.twig new file mode 100644 index 000000000..26220c80b --- /dev/null +++ b/templates/components/rankings/faction/territorial_rankings.html.twig @@ -0,0 +1,18 @@ + +
    + + Territorial + Nombre de points des secteurs controlés +
    + +
    + {% for faction_ranking in territorial_rankings %} + {{ include('molecules/rankings/faction_ranking_card.html.twig', { + faction_ranking, + 'value': faction_ranking.territorial|number(-1) ~ ' points', + 'position': faction_ranking.territorialPosition, + 'variation': faction_ranking.territorialVariation, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/faction/victory_info.html.twig b/templates/components/rankings/faction/victory_info.html.twig new file mode 100644 index 000000000..af33cb47d --- /dev/null +++ b/templates/components/rankings/faction/victory_info.html.twig @@ -0,0 +1,61 @@ + +
    + Informations sur les conditions de victoire +
    + +
    +

    + Les différents classements (général, richesse et territorial) rapportent des points à la faction chaque jour en fonction de la position de cette dernière dans les classements. + Ces points sont additionnés et font monter une jauge. Lorsqu'une faction atteint le nombre de point requis, le serveur se termine et la victoire est revendiquée. +

    + + + {{ points_to_win|number }} + + +

    + Les différents classements n'ont pas tous le même poids. + Les gain journaliers en fonction du classement et de la position dans ce dernier sont disponibles dans le tableau ci-dessous. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Position1er2ème3ème4ème5ème
    Général+4+3+2+1+0
    Richesse+16+12+8+4+0
    Territorial+20+15+10+5+0
    +
    +
    diff --git a/templates/components/rankings/faction/wealth_rankings.html.twig b/templates/components/rankings/faction/wealth_rankings.html.twig new file mode 100644 index 000000000..a6202e9c9 --- /dev/null +++ b/templates/components/rankings/faction/wealth_rankings.html.twig @@ -0,0 +1,18 @@ + +
    + + Richesse + Revenu des routes commerciales de la faction +
    + +
    + {% for faction_ranking in wealth_rankings %} + {{ include('molecules/rankings/faction_ranking_card.html.twig', { + faction_ranking, + 'value': faction_ranking.wealth|number(-1) ~ ' crédits', + 'position': faction_ranking.wealthPosition, + 'variation': faction_ranking.wealthVariation, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/armies.html.twig b/templates/components/rankings/player/armies.html.twig new file mode 100644 index 000000000..6613f3196 --- /dev/null +++ b/templates/components/rankings/player/armies.html.twig @@ -0,0 +1,29 @@ + +
    + + Armée + Total des PEV +
    +
    + {% for player_ranking in armies_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'armies', + 'current_position': player_ranking.armiesPosition, + loop, + }) }} + + {{include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.armiesPosition, + 'variation': player_ranking.armiesVariation, + 'value': '', + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'armies', + 'current_position': player_ranking.armiesPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/best_player.html.twig b/templates/components/rankings/player/best_player.html.twig new file mode 100644 index 000000000..9f013fcb5 --- /dev/null +++ b/templates/components/rankings/player/best_player.html.twig @@ -0,0 +1,18 @@ + +
    + Meilleur joueur +
    + +
    +
    + + {{ get_faction_info(best_player.faction.identifier, 'status')[best_player.status - 1] }} de {{ get_faction_info(best_player.faction.identifier, 'popularName') }} + + {{ best_player.name }} +
    + +
    + +
    +
    +
    diff --git a/templates/components/rankings/player/butcher.html.twig b/templates/components/rankings/player/butcher.html.twig new file mode 100644 index 000000000..7d60f92d6 --- /dev/null +++ b/templates/components/rankings/player/butcher.html.twig @@ -0,0 +1,30 @@ + +
    + + Boucher + PEV détruits moins PEV perdus +
    + +
    + {% for player_ranking in butcher_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'butcher', + 'current_position': player_ranking.butcherPosition, + loop, + }) }} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.butcherPosition, + 'variation': player_ranking.butcherVariation, + 'value': player_ranking.butcher|number ~ ' point' ~ player_ranking.butcher|plural, + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'butcher', + 'current_position': player_ranking.butcherPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/experience.html.twig b/templates/components/rankings/player/experience.html.twig new file mode 100644 index 000000000..0d25a00be --- /dev/null +++ b/templates/components/rankings/player/experience.html.twig @@ -0,0 +1,29 @@ + +
    + + Expérience + Total accumulé +
    +
    + {% for player_ranking in experience_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'xp', + 'current_position': player_ranking.experiencePosition, + loop, + }) }} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.experiencePosition, + 'variation': player_ranking.experienceVariation, + 'value': player_ranking.experience ~ ' xp', + }) }} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'xp', + 'current_position': player_ranking.experiencePosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/fight.html.twig b/templates/components/rankings/player/fight.html.twig new file mode 100644 index 000000000..1d8ce31d9 --- /dev/null +++ b/templates/components/rankings/player/fight.html.twig @@ -0,0 +1,29 @@ + +
    + + Combattant + Total des victoires moins les défaites +
    +
    + {% for player_ranking in fight_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'armies', + 'current_position': player_ranking.fightPosition, + loop, + }) }} + + {{include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.fightPosition, + 'variation': player_ranking.fightVariation, + 'value': player_ranking.fight|number ~ ' point' ~ player_ranking.fight|plural, + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'armies', + 'current_position': player_ranking.fightPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/general.html.twig b/templates/components/rankings/player/general.html.twig new file mode 100644 index 000000000..0c0805032 --- /dev/null +++ b/templates/components/rankings/player/general.html.twig @@ -0,0 +1,30 @@ + +
    + + Général + Total de vos possessions +
    + +
    + {% for player_ranking in general_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'general', + 'current_position': player_ranking.generalPosition, + loop, + }) }} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.generalPosition, + 'variation': player_ranking.generalVariation, + 'value': player_ranking.general|number ~ ' point' ~ player_ranking.general|plural, + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'general', + 'current_position': player_ranking.generalPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/rankings_part.html.twig b/templates/components/rankings/player/rankings_part.html.twig new file mode 100644 index 000000000..c1854076c --- /dev/null +++ b/templates/components/rankings/player/rankings_part.html.twig @@ -0,0 +1,26 @@ +{% for player_ranking in player_rankings %} + {% set data = get_player_ranking_data_by_type(player_ranking, type) %} + + {% if 'next' == direction and bot > 1 %} + {{ include('atoms/rankings/top_mover.html.twig', { + type, + 'current_position': data.position, + loop, + }) }} + {% endif %} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': data.position, + 'variation': data.variation, + 'value': data.value|number ~ ' point' ~ data.value|plural, + })}} + + {% if 'prev' == direction and constant('App\\Modules\\Atlas\\Model\\PlayerRanking::PAGE') == player_rankings|length %} + {{ include('atoms/rankings/bottom_mover.html.twig', { + type, + 'current_position': data.position, + loop, + }) }} + {% endif %} +{% endfor %} diff --git a/templates/components/rankings/player/resources.html.twig b/templates/components/rankings/player/resources.html.twig new file mode 100644 index 000000000..f7a521792 --- /dev/null +++ b/templates/components/rankings/player/resources.html.twig @@ -0,0 +1,29 @@ + +
    + + Mineur + Production totale par relève +
    +
    + {% for player_ranking in resources_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'resources', + 'current_position': player_ranking.resourcesPosition, + loop, + }) }} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.resourcesPosition, + 'variation': player_ranking.resourcesVariation, + 'value': player_ranking.resources|number ~ ' ressources', + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'resources', + 'current_position': player_ranking.resourcesPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/components/rankings/player/stats.html.twig b/templates/components/rankings/player/stats.html.twig new file mode 100644 index 000000000..bbc728718 --- /dev/null +++ b/templates/components/rankings/player/stats.html.twig @@ -0,0 +1,25 @@ + +
    + A propos +
    +
    + + {{ active_players_count|number }} + {# ? #} + + + + {{ all_players_count|number }} + + +

    Le classement est mis à jour tous les jours à 3h (UTC+1) du matin.

    + +
    + + + + Voir le haut du classement + + +
    +
    diff --git a/templates/components/rankings/player/trader.html.twig b/templates/components/rankings/player/trader.html.twig new file mode 100644 index 000000000..31e76633a --- /dev/null +++ b/templates/components/rankings/player/trader.html.twig @@ -0,0 +1,29 @@ + +
    + + Trader + Revenu de toutes les routes commerciales par relève +
    +
    + {% for player_ranking in trader_rankings %} + {{ include('atoms/rankings/top_mover.html.twig', { + 'type': 'trader', + 'current_position': player_ranking.traderPosition, + loop, + }) }} + + {{ include('molecules/rankings/player_ranking_card.html.twig', { + player_ranking, + 'position': player_ranking.traderPosition, + 'variation': player_ranking.traderVariation, + 'value': player_ranking.trader|number ~ ' crédits', + })}} + + {{ include('atoms/rankings/bottom_mover.html.twig', { + 'type': 'trader', + 'current_position': player_ranking.traderPosition, + loop, + }) }} + {% endfor %} +
    +
    diff --git a/templates/layouts/ares/fleet.html.twig b/templates/layouts/ares/fleet.html.twig new file mode 100644 index 000000000..11f40f6d0 --- /dev/null +++ b/templates/layouts/ares/fleet.html.twig @@ -0,0 +1,17 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + + + + + + + +{% endblock left_sidebar %} + +{% block body %} +
    + {% block content %}{% endblock content %} +
    +{% endblock body %} diff --git a/templates/layouts/athena/current_base.html.twig b/templates/layouts/athena/current_base.html.twig new file mode 100644 index 000000000..23ea09602 --- /dev/null +++ b/templates/layouts/athena/current_base.html.twig @@ -0,0 +1,100 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + + + {% if current_base.levelGenerator > 0 %} + + {% endif %} + {% if current_base.levelDock1 > 0 %} + + {% endif %} + + {% if current_base.levelDock2 > 0 %} + + {% endif %} + + {% if current_base.levelTechnosphere > 0 %} + + {% endif %} + + {% if current_base.levelCommercialPlateforme > 0 %} + + {% endif %} + + {% if current_base.levelSpatioport > 0 %} + + {% endif %} + + {% if current_base.levelRecycling > 0 %} + + {% endif %} + + {% if current_base.levelRefinery > 0 %} + + {% endif %} + + {% if current_base.levelStorage > 0 %} + + {% endif %} + + + +{% endblock left_sidebar %} + +{% block body %} + + {{ block(outerBlocks.content) }} + +{% endblock body %} diff --git a/templates/layouts/atlas/ranking.html.twig b/templates/layouts/atlas/ranking.html.twig new file mode 100644 index 000000000..b2878b94f --- /dev/null +++ b/templates/layouts/atlas/ranking.html.twig @@ -0,0 +1,18 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + + + + +{% endblock left_sidebar %} + +{% block body %} + + {{ block(outerBlocks.page_title) }} + + + + {{ block(outerBlocks.content) }} + +{% endblock body %} diff --git a/templates/layouts/base.html.twig b/templates/layouts/base.html.twig new file mode 100644 index 000000000..8fa5d58ba --- /dev/null +++ b/templates/layouts/base.html.twig @@ -0,0 +1,33 @@ +{% set faction_id = (app.session.get('inscription') is not null and app.session.get('inscription').has('ally')) + ? app.session.get('inscription').get('ally') + : current_player_faction_id is defined ? current_player_faction_id : 0 +%} + + + + + + {%- block title -%} + Kalaxia + {%- endblock title -%} + + + + + + + + + {# #} + {% block stylesheets %} + + {% endblock %} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + + {% block body %}{% endblock body %} + + diff --git a/templates/layouts/demeter/faction.html.twig b/templates/layouts/demeter/faction.html.twig new file mode 100644 index 000000000..b7bf2d837 --- /dev/null +++ b/templates/layouts/demeter/faction.html.twig @@ -0,0 +1,34 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + + + + {% if faction.hasOngoingElectionCampaign %} + + {% endif %} + + + + {% if current_player.isGovernmentMember %} + + {% endif %} + + {% if current_player.isParliamentMember %} + + {% endif %} + + + + +{% endblock left_sidebar %} + +{% block body %} + {% if block('page_title') is defined and block('page_title') is not empty %} + {{ block(outerBlocks.page_title) }} + {% endif %} + + + {{ block(outerBlocks.content) }} + +{% endblock body %} diff --git a/templates/layouts/game.html.twig b/templates/layouts/game.html.twig new file mode 100644 index 000000000..48e90547f --- /dev/null +++ b/templates/layouts/game.html.twig @@ -0,0 +1,45 @@ + + + + + {%- block title -%} + Kalaxia + {%- endblock title -%} + + + + + + + + + {% block stylesheets %} + + + {% endblock %} + + {# #} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + + + +
    + {{ include('components/common/navbar.html.twig') }} + {{ include('components/common/toolbar.html.twig') }} + + {% block body %}{% endblock body %} + + + + {{ include('components/common/alerts.html.twig') }} +
    + + diff --git a/templates/layouts/map.html.twig b/templates/layouts/map.html.twig new file mode 100644 index 000000000..c9028ca4d --- /dev/null +++ b/templates/layouts/map.html.twig @@ -0,0 +1,43 @@ + + + + + {%- block title -%} + Kalaxia + {%- endblock title -%} + + + + + + + + {% block stylesheets %} + + + {% endblock %} + + {# #} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + + {{ include('components/common/navbar.html.twig', { absolute: true }) }} +
    + {{ include('components/common/toolbar.html.twig') }} +
    + + {% block body %}{% endblock body %} + + + + {{ include('components/common/alerts.html.twig') }} +
    + + diff --git a/templates/layouts/zeus/registration.html.twig b/templates/layouts/zeus/registration.html.twig new file mode 100644 index 000000000..04c49b3a0 --- /dev/null +++ b/templates/layouts/zeus/registration.html.twig @@ -0,0 +1,42 @@ +{% extends 'layouts/base.html.twig' %} + +{% block body %} + + +
    + {% block content %}{% endblock content %} +
    +{% endblock body %} diff --git a/templates/molecules/base/production/storage_gauge.html.twig b/templates/molecules/base/production/storage_gauge.html.twig new file mode 100644 index 000000000..d360e3a6d --- /dev/null +++ b/templates/molecules/base/production/storage_gauge.html.twig @@ -0,0 +1,3 @@ + + {{ stored_resources|number }} + diff --git a/templates/molecules/base/trade/commercial_route_base.html.twig b/templates/molecules/base/trade/commercial_route_base.html.twig new file mode 100644 index 000000000..1b31fde6e --- /dev/null +++ b/templates/molecules/base/trade/commercial_route_base.html.twig @@ -0,0 +1,12 @@ +
    + {#{{ base.name }}#} + {{ base.typeOfBase|scalar_base_type }} + {{ base.name }}
    + + + + {{ base.player.name }} + + + {{ base.place.population|number }} millions de population +
    diff --git a/templates/molecules/base/trade/commercial_shipping.html.twig b/templates/molecules/base/trade/commercial_shipping.html.twig new file mode 100644 index 000000000..8995b76a6 --- /dev/null +++ b/templates/molecules/base/trade/commercial_shipping.html.twig @@ -0,0 +1,88 @@ +
    + {% if not commercial_shipping.isMovingBack %} +
    +
    + {% if commercial_shipping.hasResources %} + {##} +
    + {# @TODO seems that resources selling isn't sure about the used property #} + {# resourceTransported is used when giving resources, quantity is used when selling. @TODO use only one field #} + {{ (commercial_shipping.resourceTransported == 0 ? commercial_shipping.transaction.quantity : commercial_shipping.resourceTransported)|number }} + +
    + {% elseif commercial_shipping.hasCommander %} + {##} +
    + {{ commercial_shipping.transaction.commander|commander_rank }} {{ commercial_shipping.transaction.commander.name }}
    + {{ commercial_shipping.transaction.commander.experience|number }} xp | '{{ commercial_shipping.transaction.commander.palmares }} victoire{{ commercial_shipping.transaction.commander.palmares|plural }} +
    + {% elseif commercial_shipping.hasShips %} + {##} +
    + + {{ commercial_shipping.transaction.quantity }} + {{ get_ship_info(commercial_shipping.transaction.identifier, 'codeName') }}{{ commercial_shipping.transaction.quantity|plural }} + + {{ get_ship_info(commercial_shipping.transaction.identifier, 'name') }} / {{ get_ship_info(commercial_shipping.transaction.identifier, 'pev') }} pev +
    + {% endif %} + + {% if commercial_shipping.resourceTransported is null %} + {# transaction #} +
    + pour +
    +
    + {{ commercial_shipping.transaction.price|number }} + +
    + {% elseif commercial_shipping.resourceTransported == 0 %} + {# ships sending #} +
    +
    + envoi de vaisseaux +
    + {% else %} + {# resources sending #} +
    +
    + envoi de ressources +
    + {% endif %} +
    + + {% if commercial_shipping.isWaiting %} +
    + +
    + {% endif %} +
    + {% endif %} + + {% if not commercial_shipping.isWaiting %} +
    + + + + {% else %} +
    + {% endif %} + +
    + {{ commercial_shipping.shipQuantity }} + {##} +
    + + {% if commercial_shipping.isWaiting %} +
    à quai
    + {% else %} +
    + {% endif %} +
    +
    diff --git a/templates/molecules/common/advertising.html.twig b/templates/molecules/common/advertising.html.twig new file mode 100644 index 000000000..c39d020b8 --- /dev/null +++ b/templates/molecules/common/advertising.html.twig @@ -0,0 +1,5 @@ + diff --git a/templates/molecules/common/default.html.twig b/templates/molecules/common/default.html.twig new file mode 100644 index 000000000..6e36f2696 --- /dev/null +++ b/templates/molecules/common/default.html.twig @@ -0,0 +1,6 @@ +
    +
    +
    +
    +
    +
    diff --git a/templates/molecules/common/movers.html.twig b/templates/molecules/common/movers.html.twig new file mode 100644 index 000000000..d97522311 --- /dev/null +++ b/templates/molecules/common/movers.html.twig @@ -0,0 +1,4 @@ +
    +
    +
    +
    diff --git a/templates/molecules/common/subnav.html.twig b/templates/molecules/common/subnav.html.twig new file mode 100644 index 000000000..0426d557a --- /dev/null +++ b/templates/molecules/common/subnav.html.twig @@ -0,0 +1,4 @@ + diff --git a/templates/molecules/embassy/faction_flag.html.twig b/templates/molecules/embassy/faction_flag.html.twig new file mode 100644 index 000000000..ecf7f345a --- /dev/null +++ b/templates/molecules/embassy/faction_flag.html.twig @@ -0,0 +1,17 @@ + +
    + {{ get_faction_info(faction.identifier, 'officialName') }} +
    +
    +
    + "{{ get_faction_info(faction.identifier, 'devise')|raw }}" +
    + + + +

    {{ get_faction_info(faction.identifier, 'desc1')|raw }}

    +

    {{ get_faction_info(faction.identifier, 'desc2')|raw }}

    +

    {{ get_faction_info(faction.identifier, 'desc3')|raw }}

    +

    {{ get_faction_info(faction.identifier, 'desc4')|raw }}

    +
    +
    diff --git a/templates/molecules/embassy/faction_government.html.twig b/templates/molecules/embassy/faction_government.html.twig new file mode 100644 index 000000000..32f0b96b6 --- /dev/null +++ b/templates/molecules/embassy/faction_government.html.twig @@ -0,0 +1,47 @@ +{% set statuses = get_faction_info(faction.identifier, 'status') %} + + +
    + + Gouvernement + +
    + +
    +
    + {% for minister in government_members %} +
    + + + +
    + {{ statuses[minister.status - 1] }} + {{ minister.name }} +
    +
    + {% endfor %} + + {% if government_members|length == 0 %} +

    Aucun gouvernement formé

    + {% endif %} + + Informations + + + {{ faction.points|number }} + + + + {{ faction.credits|number }} + + + + {{ sectors_count }} + + + + {{ active_players_count }} + +
    +
    +
    diff --git a/templates/molecules/embassy/faction_infos.html.twig b/templates/molecules/embassy/faction_infos.html.twig new file mode 100644 index 000000000..25ad6941b --- /dev/null +++ b/templates/molecules/embassy/faction_infos.html.twig @@ -0,0 +1,7 @@ + +
    +
    +
    +
    +
    +
    diff --git a/templates/molecules/embassy/faction_nav.html.twig b/templates/molecules/embassy/faction_nav.html.twig new file mode 100644 index 000000000..587f7e528 --- /dev/null +++ b/templates/molecules/embassy/faction_nav.html.twig @@ -0,0 +1,19 @@ + +
    + {% for f in factions %} + + + +
    +
    + {{ get_faction_info(f.identifier, 'officialName') }} +
    + +
    + Ambassade des {{ get_faction_info(f.identifier, 'demonym')|capitalize }} +
    +
    +
    + {% endfor %} +
    +
    diff --git a/templates/molecules/embassy/player_bases.html.twig b/templates/molecules/embassy/player_bases.html.twig new file mode 100644 index 000000000..7821f039b --- /dev/null +++ b/templates/molecules/embassy/player_bases.html.twig @@ -0,0 +1,21 @@ + +
    + Liste des bases +
    +
    + {% for base in player_bases %} +
    +
    + {{ base.name }}
    + secteur {{ base.place.system.sector.identifier }} +
    + + + + → + + +
    + {% endfor %} +
    +
    diff --git a/templates/molecules/embassy/player_search.html.twig b/templates/molecules/embassy/player_search.html.twig new file mode 100644 index 000000000..a485e9eeb --- /dev/null +++ b/templates/molecules/embassy/player_search.html.twig @@ -0,0 +1,32 @@ +{% set faction_statuses = get_faction_info(player.faction.identifier, 'status') %} + + +
    + Recherchez un joueur +
    +
    +
    +
    + +
    +
    +
    + + +
    + {{ player.name }} +

    {{ faction_statuses[player.status - 1] }} de {{ get_faction_info(player.faction.identifier, 'popularName') }}

    +

    niveau {{ player.level }}

    + + {% if player.id != current_player.id %} +
    +

    Envoyer un message

    + {% endif %} +
    +
    +
    +
    diff --git a/templates/molecules/faction/government/law.html.twig b/templates/molecules/faction/government/law.html.twig new file mode 100644 index 000000000..db9d30b88 --- /dev/null +++ b/templates/molecules/faction/government/law.html.twig @@ -0,0 +1,133 @@ +
    +
    +
    +
    +
    +
    + + {{ get_law_info(law_id, 'name') }} +
    + +

    {{ get_law_info(law_id, 'shortDescription')|raw }}

    + +
    + {% if get_law_info(law_id, 'bonusLaw') %} + + + + {% else %} + {% if law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::SECTORTAX') %} + + + + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::SECTORNAME') %} + + + + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::NEUTRALPACT') %} + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::PEACEPACT') %} + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::WARDECLARATION') %} + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::TOTALALLIANCE') %} + + {% elseif law_id in [constant('App\\Modules\\Demeter\\Model\\Law\\Law::COMTAXEXPORT'), constant('App\\Modules\\Demeter\\Model\\Law\\Law::COMTAXIMPORT')] %} + + + {% elseif law_id == constant('App\\Modules\\Demeter\\Model\\Law\\Law::PUNITION') %} + + + + {% endif %} + + + {% endif %} +
    +
    + +

    {{ get_law_info(law_id, 'longDescription')|raw }}

    +
    +
    +
    diff --git a/templates/molecules/faction/senate/law.html.twig b/templates/molecules/faction/senate/law.html.twig new file mode 100644 index 000000000..6419970a6 --- /dev/null +++ b/templates/molecules/faction/senate/law.html.twig @@ -0,0 +1,72 @@ +{% set law_duration = get_law_duration(law) %} + +
    +
    +
    +
    +

    Object de la votation

    + +
    +
    + + {{ get_law_info(law.type, 'name') }} +
    + +

    {{ get_law_info(law.type, 'shortDescription')|raw }}

    + + + {% if has_voted_law(law, current_player) %} + + Vous avez déjà voté + + {% elseif current_player.isSenator %} + + Pour + + + + Contre + + {% else %} + + Seuls les sénateurs peuvent voter + + {% endif %} +
    + +

    Modalités d'application

    + +
      +
    • + Coût + + {% if get_law_info(law.type, 'bonusLaw') %} + {{ (get_law_info(law.type, 'price') * active_players_count * law_duration)|number }} + {% else %} + {{ get_law_info(law.type, 'price')|number }} + {% endif %} + crédits +
    • + + {% if get_law_info(law.type, 'bonusLaw') %} +
    • + Durée d'application + {{ law_duration|number }} relève{{ law_duration|plural }} +
    • + {% elseif law.options.display is defined %} + {% for label in law.options.display|keys %} + {% set value = law.options.display[label] %} + +
    • + {{ label }} + {{ value }} +
    • + {% endfor %} + {% endif %} +
    + +

    Date application

    +

    Mise en application {{ law.voteEndedAt|game_date|raw }}

    +
    +
    +
    diff --git a/templates/molecules/financial/subnav.html.twig b/templates/molecules/financial/subnav.html.twig new file mode 100644 index 000000000..8398da3bd --- /dev/null +++ b/templates/molecules/financial/subnav.html.twig @@ -0,0 +1,17 @@ + diff --git a/templates/molecules/fleet/combat_report_table.html.twig b/templates/molecules/fleet/combat_report_table.html.twig new file mode 100644 index 000000000..a222bb218 --- /dev/null +++ b/templates/molecules/fleet/combat_report_table.html.twig @@ -0,0 +1,51 @@ +{% set pev_begin = 0 %} +{% set pev_difference = 0 %} +{% set pev_end = 0 %} + +{% for i in range(0, 11) %} + {% set pev_begin = pev_begin + total_in_begin[i] * get_ship_info(i, 'pev') %} + {% set pev_difference = pev_difference + difference[i] * get_ship_info(i, 'pev') %} + {% set pev_end = pev_end + total_at_end[i] * get_ship_info(i, 'pev') %} +{% endfor %} + +
    + + + + + + + +
    Evolution des PEV{{ pev_begin == 0 ? '—' : pev_begin }}{{ pev_difference == 0 ? '—' : pev_difference }}{{ pev_end == 0 ? '—' : pev_end }}
    +
    + +
    + + {% for i in range(0, 11) %} + + + + + + + {% endfor %} +
    {{ get_ship_info(i, 'name') }} + {%- if total_in_begin[i] > 0 -%} + {{ total_in_begin[i] }} + {%- else -%} + — + {%- endif -%} + + {%- if difference[i] > 0 -%} + {{ difference[i] }} + {%- else -%} + — + {%- endif -%} + + {%- if total_at_end[i] > 0 -%} + {{ total_at_end[i] }} + {%- else -%} + — + {%- endif -%} +
    +
    diff --git a/templates/molecules/fleet/memorial_description.html.twig b/templates/molecules/fleet/memorial_description.html.twig new file mode 100644 index 000000000..3365386fe --- /dev/null +++ b/templates/molecules/fleet/memorial_description.html.twig @@ -0,0 +1,13 @@ +
    +
    +

    Mémorial

    +
    +
    +
    +
    En l'honneur de ceux qui ont servi notre faction.
    + En l'honneur de ceux qui sont morts dignement.
    + En l'honneur de ceux qui ont souffert pour nous libérer de l'oppression.
    + Nous leur devons le respect.
    +
    +
    +
    diff --git a/templates/molecules/map/attacks.html.twig b/templates/molecules/map/attacks.html.twig new file mode 100644 index 000000000..d49dabb72 --- /dev/null +++ b/templates/molecules/map/attacks.html.twig @@ -0,0 +1,26 @@ +{% set fleet_param = constant('App\\Classes\\Container\\Params::SHOW_MAP_FLEETIN') %} + +
    + + {% for commander in attacking_commanders|filter(c => c.travelType != constant('App\\Modules\\Ares\\Model\\Commander::BACK')) %} + {% set start_place = commander.startPlace %} + {% set destination_place = commander.destinationPlace %} + {% set x1 = start_place.system.xPosition * galaxy_configuration.scale %} + {% set x2 = destination_place.system.xPosition * galaxy_configuration.scale %} + {% set y1 = start_place.system.yPosition * galaxy_configuration.scale %} + {% set y2 = destination_place.system.yPosition * galaxy_configuration.scale %} + {% set commander_position = get_commander_position(commander, x1, x2, y1, y2) %} + {% set x3 = commander_position[0] %} + {% set y3 = commander_position[1] %} + {% set remaining_time = commander|travel_remaining_time %} + + + + + + + {% endfor %} + +
    diff --git a/templates/molecules/map/commanders.html.twig b/templates/molecules/map/commanders.html.twig new file mode 100644 index 000000000..372b22aad --- /dev/null +++ b/templates/molecules/map/commanders.html.twig @@ -0,0 +1,56 @@ +{% set break = false %} + +
    + {% for commander in local_commanders %} +
    +
    + + {{ commander.level }} +
    + +
    + {% endfor %} +
    diff --git a/templates/molecules/map/commercial_routes.html.twig b/templates/molecules/map/commercial_routes.html.twig new file mode 100644 index 000000000..3bce11502 --- /dev/null +++ b/templates/molecules/map/commercial_routes.html.twig @@ -0,0 +1,18 @@ +{% set commercial_routes_param = constant('App\\Classes\\Container\\Params::SHOW_MAP_RC') %} + +{# @TODO use a correct DTO for this view #} +
    + + {% for route in commercial_routes %} + {% set class = route.statement == constant('App\\Modules\\Athena\\Model\\CommercialRoute::ACTIVE') ? 'active' : 'standby' %} + + + {% endfor %} + +
    diff --git a/templates/molecules/map/current_base.html.twig b/templates/molecules/map/current_base.html.twig new file mode 100644 index 000000000..adad9988c --- /dev/null +++ b/templates/molecules/map/current_base.html.twig @@ -0,0 +1,26 @@ +
    + + {% for base in player_bases %} + {% set base_system = base.place.system %} + {% set centerX = base_system.xPosition * galaxy_configuration.scale %} + {% set centerY = base_system.yPosition * galaxy_configuration.scale %} + + + + {% if base.id == current_base.id %} + + + + + + + {% else %} + + {% endif %} + {% endfor %} + +
    diff --git a/templates/molecules/map/fleet_movements.html.twig b/templates/molecules/map/fleet_movements.html.twig new file mode 100644 index 000000000..6e81f8047 --- /dev/null +++ b/templates/molecules/map/fleet_movements.html.twig @@ -0,0 +1,26 @@ +{% set fleet_param = constant('App\\Classes\\Container\\Params::SHOW_MAP_FLEETOUT') %} + +
    + + {% for commander in moving_commanders|filter(c => c.destinationPlace is not null) %} + {% set start_place = commander.startPlace %} + {% set destination_place = commander.destinationPlace %} + {% set x1 = start_place.system.xPosition * galaxy_configuration.scale %} + {% set x2 = destination_place.system.xPosition * galaxy_configuration.scale %} + {% set y1 = start_place.system.yPosition * galaxy_configuration.scale %} + {% set y2 = destination_place.system.yPosition * galaxy_configuration.scale %} + {% set commander_position = get_commander_position(commander, x1, x2, y1, y2) %} + {% set x3 = commander_position[0] %} + {% set y3 = commander_position[1] %} + {% set remaining_time = commander|travel_remaining_time %} + + + + + + + {% endfor %} + +
    diff --git a/templates/molecules/map/legend.html.twig b/templates/molecules/map/legend.html.twig new file mode 100644 index 000000000..f6ea985a3 --- /dev/null +++ b/templates/molecules/map/legend.html.twig @@ -0,0 +1,40 @@ + diff --git a/templates/molecules/map/minimap/filters.html.twig b/templates/molecules/map/minimap/filters.html.twig new file mode 100644 index 000000000..e0c1dfb64 --- /dev/null +++ b/templates/molecules/map/minimap/filters.html.twig @@ -0,0 +1,43 @@ +
    + {% set filters_data = [ + { + 'picto': 'build/media/map/option/minimap.png', + 'param': constant('App\\Classes\\Container\\Params::SHOW_MAP_MINIMAP'), + 'tooltip': 'afficher/cacher la petite carte' + }, + { + 'picto': 'build/media/orbitalbase/commercialplateforme.png', + 'param': constant('App\\Classes\\Container\\Params::SHOW_MAP_RC'), + 'tooltip': 'afficher/cacher vos routes commerciales' + }, + { + 'picto': 'build/media/orbitalbase/antispy.png', + 'param': constant('App\\Classes\\Container\\Params::SHOW_MAP_ANTISPY'), + 'tooltip': 'afficher/cacher vos cercles de contre-espionnage' + }, + { + 'picto': 'build/media/fleet/general-quarter.png', + 'param': constant('App\\Classes\\Container\\Params::SHOW_MAP_FLEETOUT'), + 'tooltip': 'afficher/cacher vos mouvements de flotte' + }, + { + 'picto': 'build/media/fleet/movement.png', + 'param': constant('App\\Classes\\Container\\Params::SHOW_MAP_FLEETIN'), + 'tooltip': 'afficher/cacher les attaques entrantes' + }, + ] %} + {% for filter_data in filters_data %} + {{ include('atoms/map/minimap/filter.html.twig', filter_data) }} + {% endfor %} + + + information + +
    diff --git a/templates/molecules/map/minimap/minimap.html.twig b/templates/molecules/map/minimap/minimap.html.twig new file mode 100644 index 000000000..d151b7660 --- /dev/null +++ b/templates/molecules/map/minimap/minimap.html.twig @@ -0,0 +1,36 @@ +{% set rate = 400 / galaxy_configuration.galaxy.size %} +{% set minimap_param = constant('App\\Classes\\Container\\Params::SHOW_MAP_MINIMAP') %} + +
    +
    + + {% for sector in sectors %} + + {% endfor %} + +
    + {% for sector in sectors %} + {% set i = sector.identifier - 1 %} + {% set display_params = galaxy_configuration.sectors[i].display %} + + {{ sector.identifier }} + + {% endfor %} +
    + + {% for base in player_bases %} + {% set base_system = base.place.system %} + + {% endfor %} + +
    +
    +
    diff --git a/templates/molecules/map/place_actions.html.twig b/templates/molecules/map/place_actions.html.twig new file mode 100644 index 000000000..97d6d9117 --- /dev/null +++ b/templates/molecules/map/place_actions.html.twig @@ -0,0 +1,293 @@ +{% set travel_time = get_travel_time(current_base, place)|lite_seconds %} + +{% apply spaceless %} +
    +
    + {% if place.typeOfPlace == 1 %} + {% if place.player is null and place.typeOfPlace != 1 %} + {% set tooltip = 'Vous ne pouvez pas attaquer une planète non-habitable' %} + {% elseif place.typeOfPlace == 1 and place.player is not null and place.player.faction.id == current_player.faction.id %} + {% set tooltip = 'Vous ne pouvez pas attaquer un joueur de votre faction' %} + {% elseif place.typeOfPlace == 1 and place.player is not null and place.player.level == 1 and place.player is not null %} + {% set tooltip = 'Ce joueur est sous protection débutant' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + + {% set max_bases = technologies.getTechnology(constant('App\\Modules\\Promethee\\Model\\TechnologyId::BASE_QUANTITY')) + 1 %} + {% set total_bases = get_player_bases_count(moving_commanders) %} + + {% if place.player is null and place.typeOfPlace != 1 %} + {% set tooltip = 'Vous ne pouvez pas coloniser une planète non-habitable.' %} + {% elseif place.typeOfPlace == 1 and place.player is not null and place.player.faction.id == current_player.faction.id %} + {% set tooltip = 'Vous ne pouvez pas conquérir un joueur de votre faction.' %} + {% elseif place.typeOfPlace == 1 and place.player is not null and place.player.level <= 3 and place.player.level > 0 %} + {% set tooltip = 'Vous ne pouvez pas conquérir un joueur de niveau 3 ou inférieur.' %} + {% elseif place.player is null and technologies.getTechnology(constant('App\\Modules\\Promethee\\Model\\TechnologyId::COLONIZATION')) == 0 %} + {% set tooltip = 'Vous devez développer la technologie colonisation.' %} + {% elseif place.player is not null and technologies.getTechnology(constant('App\\Modules\\Promethee\\Model\\TechnologyId::COLONIZATION')) == 0 %} + {% set tooltip = 'Vous devez développer la technologie conquête.' %} + {% elseif total_bases >= max_bases %} + {% set tooltip = 'Vous devez améliorer le niveau de la technologie administration étendue pour disposer de planète supplémentaire.' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + + + + {% if place.id == current_base.id %} + {% set tooltip = 'Vous ne pouvez pas déplacer une flotte sur votre planète de départ' %} + {% elseif place.player is not null and place.player.faction.id != current_player.faction.id %} + {% set tooltip = 'Vous ne pouvez donner une de vos flotte qu\'a un membre de votre faction' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + + + {% if place.player is null %} + {% set tooltip = 'Vous ne pouvez proposer une route commerciale qu\'à des joueurs.' %} + {% elseif place.id == current_base.place.id %} + {% set tooltip = 'Vous ne pouvez pas proposer une route commerciale sur votre propre base.' %} + {% elseif current_base.levelSpatioport == 0 %} + {% set tooltip = 'Il vous faut un spatioport pour proposer une route commerciale.' %} + {% elseif place.base.levelSpatioport == 0 %} + {% set tooltip = 'Le joueur ne dispose pas d\'un spatioport.' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + + + {% if place.player is not null and place.player.faction.id == current_player.faction.id %} + {% set tooltip = 'Vous ne pouvez pas espionner un joueur de votre faction' %} + {% elseif place.player is null and place.typeOfPlace != 1 %} + {% set tooltip = 'Vous ne pouvez pas espionner une planète non-habitable' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + {% else %} + {% if place.system.sector.faction is not null and place.system.sector.faction.id != current_player.faction.id %} + {% set tooltip = 'Vous ne pouvez envoyer des recycleurs que dans des secteurs non-revendiqués ou contrôlés par votre faction.' %} + {% elseif place.typeOfPlace == constant('App\\Modules\\Gaia\\Model\\Place::EMPTYZONE') %} + {% set tooltip = 'Cet endroit regorgait autrefois de ressources ou de gaz mais de nombreux recycleurs sont déjà passés par là et n\'ont laissé que le vide de l\'espace.' %} + {% elseif current_base.levelRecycling == 0 %} + {% set tooltip = 'Vous devez disposer d\'un centre de recyclage.' %} + {% else %} + {% set tooltip = '' %} + {% endif %} + + + {% endif %} +
    + +
    + {% if place.typeOfPlace == 1 %} + + + + {{ parent() }} + + + + + + + {% if place.player is null %} + {% set cost = colonization_cost|number %} + {% set action_url = path('colonize', {'id': '{id}', 'placeId': place.id}) %} + {% set label = 'Lancer la colonisation' %} + {% else %} + {% set cost = conquest_cost|number %} + {% set action_url = path('conquer', {'id': '{id}', 'placeId': place.id}) %} + {% set label = 'Lancer la conquête' %} + {% endif %} + + + + {{ parent() }} + + + + + + + + + + {{ parent() }} + + {% if place.player is not null and place.player.id != current_player.id %} + + Attention, vous perdrez votre flotte ! + + {% endif %} + + + + {{ parent() }} + + + + + {% if place.base is not null %} + +
    + {% set commercial_route_data = get_commercial_route_data(current_base, place) %} + {% set distance = get_place_distance(current_base, place) %} + + {% set price = get_route_price(distance) %} + {% set income = get_route_income(current_base, place.base) %} + +
    + {##} + +
    + + {{ income|number }} + + + + + {{ price|number }} + + +
    + + {% if commercial_route_data.proposed == true %} + + + Annuler la proposition + + + {% elseif commercial_route_data.not_accepted == true %} + + + Accepter la proposition + + + {% elseif commercial_route_data.stand_by == true %} + + C'est la guerre. + + {% else %} + {% if price > current_player.credit %} + + Vous n'avez pas assez de crédits. + + {% elseif commercial_route_data.slots < get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::SPATIOPORT'), 'level', current_base.levelSpatioport, 'nbRoutesMax') %} + + + Proposer une route commerciale + + + {% else %} + + Pas assez de slots. + + {% endif %} + {% endif %} +
    +
    +
    + {% endif %} + + +
    + {% set prices = { + 'Impact faible': 1000, + 'Impact moyen': 2500, + 'Grand impact': 5000 + } %} + + {% for label in prices|keys %} + {% set price = prices[label] %} + + {{ label }} + + {{ price|number }} + + + + {% endfor %} + +
    + + + Espionner + + +
    +
    + {% else %} + +
    + {% set total_ships = get_building_info( + constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::RECYCLING'), + 'level', + current_base.levelRecycling, + 'nbRecyclers', + ) %} + {# @TODO move this logic to a dedicated service #} + {% set active_ships = recycling_missions|reduce((carry, rm) => carry + rm.recyclerQuantity + rm.addToNextMission) %} + {% set available_recyclers = total_ships - active_ships %} + + + {{ available_recyclers|number }} + + + + {{ get_recycling_mission_time(current_base, place)|lite_seconds }} + + +
    + + + Envoyer + + +
    +
    + {% endif %} +
    +
    +{% endapply %} diff --git a/templates/molecules/map/spying_circles.html.twig b/templates/molecules/map/spying_circles.html.twig new file mode 100644 index 000000000..2c5d36b08 --- /dev/null +++ b/templates/molecules/map/spying_circles.html.twig @@ -0,0 +1,16 @@ +{% set antispy_param = constant('App\\Classes\\Container\\Params::SHOW_MAP_ANTISPY') %} + +
    + + {% for base in player_bases %} + {% set base_system = base.place.system %} + {% set spy_radius = get_base_antispy_radius(base) %} + {% set centerX = base_system.xPosition * galaxy_configuration.scale %} + {% set centerY = base_system.yPosition * galaxy_configuration.scale %} + + + + + {% endfor %} + +
    diff --git a/templates/molecules/map/systems.html.twig b/templates/molecules/map/systems.html.twig new file mode 100644 index 000000000..7fd5cf794 --- /dev/null +++ b/templates/molecules/map/systems.html.twig @@ -0,0 +1,29 @@ +
    + {% set current_player_bases_sector_ids = player_bases|map(b => b.place.system) %} + + {% for system in systems %} + {% set has_bases_in = system.id in current_player_bases_sector_ids %} +
    + {# #} + +
    + {% endfor %} +
    diff --git a/templates/molecules/rankings/faction_ranking_card.html.twig b/templates/molecules/rankings/faction_ranking_card.html.twig new file mode 100644 index 000000000..162740f71 --- /dev/null +++ b/templates/molecules/rankings/faction_ranking_card.html.twig @@ -0,0 +1,28 @@ +{% extends 'components/Molecules/Ranking/RankingCard.html.twig' %} + +{% block picture %} + + + +{% endblock picture %} + +{% block name %} +
    + {{ get_faction_info(faction_ranking.faction.identifier, 'government') }} +
    +
    + {{ get_faction_info(faction_ranking.faction.identifier, 'popularName') }} +
    +{% endblock name %} + +{% block value %} + {{ value|raw }} +{% endblock value %} + +{% block extra_classes current_player.faction.id == faction_ranking.faction.id ? 'active' : '' %} + +{% block position_class current_player.faction.id == faction_ranking.faction.id ? 'bg-gray-200 text-gray-900' : 'bg-gray-800' %} + +{% block variation %} + {{ include('atoms/rankings/faction_position.html.twig', { position, variation })}} +{% endblock variation %} diff --git a/templates/molecules/rankings/player_ranking_card.html.twig b/templates/molecules/rankings/player_ranking_card.html.twig new file mode 100644 index 000000000..5fd8ff2ac --- /dev/null +++ b/templates/molecules/rankings/player_ranking_card.html.twig @@ -0,0 +1,24 @@ +{% extends 'components/Molecules/Ranking/RankingCard.html.twig' %} + +{% set statuses = get_faction_info(player_ranking.player.faction.identifier, 'status') %} + +{% block picture %} + + + +{% endblock picture %} + +{% block name %} + {{ statuses[player_ranking.player.status - 1] }} + {{ player_ranking.player.name }} +{% endblock name %} + +{% block value value|raw %} + +{% block extra_classes 'border-l-8 my-2 border-medium' ~ player_ranking.player.faction.identifier ~ current_player.id == player_ranking.player.id ? ' active' : '' %} + +{% block position_class current_player.id == player_ranking.player.id ? 'bg-gray-200 text-gray-900' : 'bg-gray-800' %} + +{% block variation %} + {{ include('atoms/rankings/faction_position.html.twig', { position, variation })}} +{% endblock variation %} diff --git a/templates/molecules/registration/invisible.html.twig b/templates/molecules/registration/invisible.html.twig new file mode 100644 index 000000000..8fa7fa70a --- /dev/null +++ b/templates/molecules/registration/invisible.html.twig @@ -0,0 +1,6 @@ +{# rename this file #} + diff --git a/templates/molecules/registration/subnav.html.twig b/templates/molecules/registration/subnav.html.twig new file mode 100644 index 000000000..467facb9a --- /dev/null +++ b/templates/molecules/registration/subnav.html.twig @@ -0,0 +1,20 @@ +
    +
    +
    +

    + {% if app.session.get('inscription').exist('pseudo') %} + {{- app.session.get('inscription').get('pseudo') -}} + {% endif %} +

    + {% if app.session.get('inscription').exist('avatar') %} + + {% else %} + + {% endif %} + 1 + + + +
    +
    +
    diff --git a/templates/molecules/technology/technology_card.html.twig b/templates/molecules/technology/technology_card.html.twig new file mode 100644 index 000000000..3a3bf35eb --- /dev/null +++ b/templates/molecules/technology/technology_card.html.twig @@ -0,0 +1,87 @@ +
    +
    + + + {##} + + {{ get_technology_info(data.identifier, 'name') }} + {% if not data.is_unblocking_technology and data.technology_level != 0 %} + [{{ data.technology_level }}] + {% endif %} + + {% if data.is_over %} +
    développement terminé + {% endif %} +
    +
    + {##} +
    + +
    + {% if not data.technosphere_requirements %} + + il vous faut augmenter votre technosphère au niveau {{ get_technology_info(data.identifier, 'requiredTechnosphere') }} + + {% elseif not data.research_requirements is same as (true) %} + + nécessite + {% for requirement in data.research_requirements.all %} + {{ requirement.get('techno') }} {{ requirement.get('level') }} + {% if not loop.last %},{% endif %} + {% endfor %} + + {% else %} + {% if data.in_queue %} + + technologie en cours
    de recherche + {% if data.is_unblocking_technology %} + vers le niveau {{ data.next_level }} + {% endif %} + {% if not data.in_local_queue %} + sur une autre de vos bases + {% endif %} +
    + {% elseif data.is_over %} + {% elseif not data.is_unblocking_technology and not data.max_level_requirements %} + + niveau maximum atteint
    +
    + {% else %} + {% set card_content %} + {{ get_technology_info(data.identifier, 'resource', data.next_level)|number }} + ressources, + {{ get_technology_info(data.identifier, 'credit', data.next_level)|number }} + crédits et + {{ data.time_to_build|lite_seconds }} + {#relèves#} + {% endset %} + {% if not data.queue_requirements %} + + file de recherche pleine
    + {{ card_content }} +
    + {% elseif not data.credit_requirements %} + + pas assez de crédits
    + {{ card_content }} +
    + {% elseif not data.resource_requirements %} + + pas assez de ressources
    + {{ card_content }} +
    + {% else %} + + + {% if data.is_unblocking_technology %} + rechercher la technologie
    + {% else %} + rechercher le niveau {{ data.next_level }}
    + {% endif %} + {{ card_content }} +
    +
    + {% endif %} + {% endif %} + {% endif %} +
    +
    diff --git a/templates/pages/ares/fleet/archives.html.twig b/templates/pages/ares/fleet/archives.html.twig new file mode 100644 index 000000000..9f8be277d --- /dev/null +++ b/templates/pages/ares/fleet/archives.html.twig @@ -0,0 +1,12 @@ +{% extends 'layouts/ares/fleet.html.twig' %} + +{% block content %} +
    + {{ include('components/fleet/combat_reports.html.twig') }} + + {% if report is not null %} + {{ include('components/fleet/combat_report.html.twig', { report, report_attacker, report_defender }) }} + {{ include('components/fleet/manage_combat_report.html.twig', { report }) }} + {% endif %} +
    +{% endblock content %} diff --git a/templates/pages/ares/fleet/headquarters.html.twig b/templates/pages/ares/fleet/headquarters.html.twig new file mode 100644 index 000000000..e55e51081 --- /dev/null +++ b/templates/pages/ares/fleet/headquarters.html.twig @@ -0,0 +1,17 @@ +{% extends 'layouts/ares/fleet.html.twig' %} + +{% block content %} + + Centre des opérations + + +
    + {{ include('components/fleet/list.html.twig') }} + + {% if commander is defined and commander is not null %} + {{ include('components/fleet/commander_details.html.twig') }} + {{ include('components/fleet/commander_fleet.html.twig') }} + {% endif %} +
    + +{% endblock content %} diff --git a/templates/pages/ares/fleet/memorial.html.twig b/templates/pages/ares/fleet/memorial.html.twig new file mode 100644 index 000000000..bdf3d8775 --- /dev/null +++ b/templates/pages/ares/fleet/memorial.html.twig @@ -0,0 +1,27 @@ +{% extends 'layouts/ares/fleet.html.twig' %} + +{% block content %} + {{ include('molecules/fleet/memorial_description.html.twig') }} + + {% for commander in commanders %} + {% if loop.index < 6 %} + {{ include('components/fleet/commander_details.html.twig', { commander }) }} + {% else %} + {{ include('molecules/common/default.html.twig') }} + {% endif %} + {% endfor %} + + {# + if (isset($commander_commanderDetail) && count($commander_commanderDetail) > 0) { + } else { + include $componentPath . 'default.php + include $componentPath . 'default.php + } + + if (isset($commander_shortMemorial) && count($commander_shortMemorial) > 0) { + } + } else { + $response->redirect('404'); + } + #} +{% endblock %} diff --git a/templates/pages/ares/fleet/overview.html.twig b/templates/pages/ares/fleet/overview.html.twig new file mode 100644 index 000000000..4c941f598 --- /dev/null +++ b/templates/pages/ares/fleet/overview.html.twig @@ -0,0 +1,5 @@ +{% extends 'layouts/ares/fleet.html.twig' %} + +{% block content %} + {{ include('components/fleet/overview.html.twig') }} +{% endblock content %} diff --git a/templates/pages/ares/fleet/spy_reports.html.twig b/templates/pages/ares/fleet/spy_reports.html.twig new file mode 100644 index 000000000..64f008f73 --- /dev/null +++ b/templates/pages/ares/fleet/spy_reports.html.twig @@ -0,0 +1,16 @@ +{% extends 'layouts/ares/fleet.html.twig' %} + +{% block content %} +
    + {{ include('components/fleet/spy_reports.html.twig') }} + {% if focused_spy_report is not null %} + {{ include('components/fleet/spy_report.html.twig', { + 'spy_report': focused_spy_report, + 'place': focused_spy_report.place + }) }} + {% else %} + {{ include('molecules/common/default.html.twig') }} + {{ include('molecules/common/default.html.twig') }} + {% endif %} +
    +{% endblock content %} diff --git a/templates/pages/athena/base/building/recycling.html.twig b/templates/pages/athena/base/building/recycling.html.twig new file mode 100644 index 000000000..7cf36f189 --- /dev/null +++ b/templates/pages/athena/base/building/recycling.html.twig @@ -0,0 +1,176 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} + {% set building_number = constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::RECYCLING') %} + {% set recycler_capacity = constant('App\\Modules\\Athena\\Model\\RecyclingMission::RECYCLER_CAPACTIY') %} + +
    + +
    + {##} + {{ get_building_info(building_number, 'frenchName') }} + Niveau {{ current_base.levelRecycling }} +
    + +
    + + {{ busy_recyclers }} / {{ total_recyclers }} + + + + {{ free_recyclers }} + + +
    + + capacité de transport d'un recycleur + + + {{ recycler_capacity|number }} + {#ressources#} + + + {{ (recycler_capacity * 10)|number }} + {#crédits#} + + +
    + + + {{ mission_quantity }} + +
    +
    + + {% for mission_data in base_missions %} + {% set mission = mission_data.mission %} +
    +
    + {% if loop.first %} + Mission{{ mission_quantity|plural }} en cours + {% endif %} +
    +
    +
    +
    + {##} + Mission
    {{ mission_data.mission_id }}
    +
    + +

    + La mission recycle la + {{ get_place_type(mission.target.typeOfPlace) }} + située aux coordonnées + + {{ mission_data.coords }} + .

    + Il reste {{ (mission.target.resources * mission.target.coefResources / 100)|number }} ressources, + {{ (mission.target.resources * mission.target.coefHistory / 100)|number }} débris et + {{ (mission.target.resources * mission.target.population / 100)|number }} gaz nobles. +

    + +

    Retour {{ mission.endedAt|game_date|raw }}

    +

    + +

    +
    + +
    + {% if mission.isBeingDeleted %} +

    Cette mission a été annulée, les recycleurs terminent la mission puis deviennent disponibles.

    + {% else %} + + + Annuler la mission + + + {% endif %} +
    + + +
      +
    • + + {% if mission.addToNextMission == 0 %} + {{ mission.recyclerQuantity|number }} + {% else %} + {{ mission.recyclerQuantity|number }} + {{ mission.addToNextMission|number }} + {% endif %} + + + {% if mission.isActive and free_recyclers > 0 %} + + +
      +

      + + + ok + +

      +
      + {% endif %} +
    • +
    • + + {{ (mission.recyclerQuantity * recycler_capacity)|number }} + {#ressources#} + +
    • +
    • + + {{ mission.cycleTime|short_seconds }} + +
    • +
    + + {% if mission_logs|length > 0 %} + Dernières livraisons + {% endif %} + + {% for log in mission_logs|filter(log => log.mission.id == mission.id) %} + {% set wedge = { + 'ressource': log.resources, + 'crédit': log.credits, + 'pégase': log.ship0, + 'satyre': log.ship1, + 'chimère': log.ship2, + 'sirène': log.ship3, + 'dryade': log.ship4, + 'méduse': log.ship5, + 'griffon': log.ship6, + 'cyclope': log.ship7, + 'minotaure': log.ship8, + 'hydre': log.ship9, + 'cerbère': log.ship10, + 'phénix': log.ship11, + }|filter(v => v > 0) %} + +

    + La mission a ramené + {% for type in wedge|keys %} + {% set number = wedge[type] %} + {{ number|number }} + {{ type ~ number|plural }} + {% if not loop.last %} + et + {% else -%} + , + {%- endif %} + {% endfor %} + {{ log.createdAt|game_date|raw }} +

    + {% endfor %} +
    +
    + {% endfor %} + +
    +
    + À propos +
    +
    +

    {{ get_building_info(building_number, 'description')|raw }}

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/base/building/technosphere.html.twig b/templates/pages/athena/base/building/technosphere.html.twig new file mode 100644 index 000000000..db934f56d --- /dev/null +++ b/templates/pages/athena/base/building/technosphere.html.twig @@ -0,0 +1,171 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} + {% set technosphere_building_number = constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::TECHNOSPHERE') %} + +
    + +
    + {##} + {{ get_building_info(technosphere_building_number, 'frenchName') }} + niveau {{ current_base.levelTechnosphere }} +
    +
    +
    + + {{ total_bonus }} % + + + File de construction + +
    + {% set total_time_techno = 0 %} + {% set base_queues_count = base_queues|length %} + + {% for queue in base_queues %} + {% set total_time_techno = total_time_techno + queue|technology_queue_time %} + {% set remaining_total_time = queue|queue_duration %} + +
    + × + {##} + {{ queue|queue_name }} + {% if queue|is_unblocking_technology %} + niv. {{ queue.targetLevel }} + {% endif %} +
    + + {{ remaining_total_time|lite_seconds }} + + {% if base_queues_count > 1 %} + + {% else %} + + {% endif %} +
    + {% endfor %} + + {% if base_queues_count < available_queues %} + {% for i in range(base_queues_count, available_queues - 1) %} +
    + + Emplacement libre + +
    + {% endfor %} + {% endif %} +
    +
    +
    +
    + + {% if has_financial_technologies %} +
    +
    + Améliorations industrielles I +
    + +
    + {% for data in technologies_data[4] %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + +
    +
    + Améliorations industrielles II +
    + +
    + {% for data in technologies_data[5] %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + {% endif %} + + {% if has_military_technologies %} +
    +
    + Améliorations militaires I +
    + +
    + {% for data in technologies_data[6] %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + +
    +
    + Améliorations militaires II +
    + +
    + {% for data in technologies_data[7] %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + {% endif %} + +
    +
    + Nouvelles technologies +
    +
    + {% for data in technologies_data[1]|filter(v => v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} + {% for data in technologies_data[1]|filter(v => not v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + +
    +
    + Châssis I +
    + +
    + {% for data in technologies_data[2]|filter(v => v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} + {% for data in technologies_data[2]|filter(v => not v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + +
    +
    + Châssis II +
    +
    + {% for data in technologies_data[3]|filter(v => v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} + {% for data in technologies_data[3]|filter(v => not v.is_over) %} + {{ include('molecules/technology/technology_card.html.twig', { data }) }} + {% endfor %} +
    +
    + +
    +
    + À propos +
    +
    +

    {{ get_building_info(technosphere_building_number, 'description')|raw }}

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/docks.html.twig b/templates/pages/athena/docks.html.twig new file mode 100644 index 000000000..22b47ab0a --- /dev/null +++ b/templates/pages/athena/docks.html.twig @@ -0,0 +1,113 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} + + {{ get_building_info(building_number, 'description')|raw }} + + +
    +
    + + + +

    + Hangar +

    + + +

    {{ in_storage }} / {{ total_space}}

    + + {% set percent = in_storage|percent(total_space) %} + + +
    + +
    + + + {# TODO enable this dialog with Stimulus #} + + Le hangar de votre chantier vous sert à stocker des vaisseaux. Les vaisseaux + sont stockés directement après leur construction. Si vous ne disposez pas suffisamment de place, vous ne pourrez plus en construire. Faites + donc bien attention de vider votre hangar régulièrement.
    + Chaque vaisseau prend une place différente dans votre hangar. Cette place correspond au point équivalent vaisseau (PEV). Le hangar dispose + d’un certain nombre de PEV qui augmente en fonction du niveau de votre chantier.
    + Le bouton intégration vous renverra à l’amirauté, ce qui vous permettra de vider votre hangar et de répartir vos vaisseaux dans vos flottes + en orbite autour de la planète sur laquelle vous avez construit votre chantier. +
    + +
    + {% for i in ships_range %} + {% set ships_count = current_base.shipStorage[i] ?? 0 %} +
    +
    + + {{ ships_count }} + {{ get_ship_info(i, 'codeName') ~ ships_count|plural }} + + {{ ships_count * get_ship_info(i, 'pev') }} PEV +
    +
    + + {# TODO Enable this dialog #} + {% if ships_count != 0 %} + + {% endif %} + {% endfor %} +
    +
    +
    +
    + + + + {% for ship_identifier in ships_range %} + + {% endfor %} + +
    +{% endblock content %} diff --git a/templates/pages/athena/financial/investments.html.twig b/templates/pages/athena/financial/investments.html.twig new file mode 100644 index 000000000..91bcd2cc1 --- /dev/null +++ b/templates/pages/athena/financial/investments.html.twig @@ -0,0 +1,21 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + {{ include('molecules/financial/subnav.html.twig') }} +{% endblock left_sidebar %} + +{% block body %} + + Finances + + + + {{ include('components/financial/reporting/general.html.twig') }} + {{ include('components/financial/reporting/imposition.html.twig') }} + {{ include('components/financial/reporting/commercial_routes.html.twig') }} + {{ include('components/financial/reporting/base_investments.html.twig') }} + {{ include('components/financial/reporting/taxes.html.twig') }} + {{ include('components/financial/reporting/ship_fees.html.twig', { commanders_by_base }) }} + {{ include('components/financial/reporting/commander_fees.html.twig') }} + +{% endblock body %} diff --git a/templates/pages/athena/financial/reports.html.twig b/templates/pages/athena/financial/reports.html.twig new file mode 100644 index 000000000..b5e7e5be4 --- /dev/null +++ b/templates/pages/athena/financial/reports.html.twig @@ -0,0 +1,83 @@ +{% extends 'layouts/game.html.twig' %} + +{% block body %} +
    + + {{ include('molecules/financial/subnav.html.twig') }} + {{ include('molecules/common/movers.html.twig') }} + +
    + {{ include ('molecules/common/advertising.html.twig') }} + +
    +
    +

    Rapports généraux

    +
    +
    +
    + + + +
    +
    +
    + +
    +
    + commerce +

    Commerce

    + Routes et échanges commerciaux +
    +
    +
    + + + +
    +
    +
    + +
    +
    + gestions planétaires +

    Gestion

    + Investissements et revenus des planètes sous votre contrôle +
    +
    +
    + + + +
    +
    +
    + +
    +
    + transferts +

    Transferts

    + Transferts de fond entre dirigeant-es et factions +
    +
    +
    + + + +
    +
    +
    + +
    +{% endblock body %} + + +{% block javascripts %} + {{ parent() }} + + + + {{ encore_entry_script_tags('financial_reports') }} +{% endblock javascripts %} diff --git a/templates/pages/athena/financial/transfers.html.twig b/templates/pages/athena/financial/transfers.html.twig new file mode 100644 index 000000000..91b071fbc --- /dev/null +++ b/templates/pages/athena/financial/transfers.html.twig @@ -0,0 +1,18 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + {{ include('molecules/financial/subnav.html.twig') }} +{% endblock left_sidebar %} + +{% block body %} + + Transferts de crédits + + + + {{ include('components/financial/transfers/player_sending.html.twig') }} + {{ include('components/financial/transfers/faction_sending.html.twig') }} + {{ include('components/financial/transfers/sendings_history.html.twig') }} + {{ include('components/financial/transfers/receivings_history.html.twig') }} + +{% endblock body %} diff --git a/templates/pages/athena/generator.html.twig b/templates/pages/athena/generator.html.twig new file mode 100644 index 000000000..d8d9ae361 --- /dev/null +++ b/templates/pages/athena/generator.html.twig @@ -0,0 +1,31 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% set generator_building_number = constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::GENERATOR') %} + +{% block content %} + + {{ get_building_info(generator_building_number, 'description')|raw }} + + +
    + + + + {% for building_identifier in constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::BUILDINGS') %} + + {% endfor %} + +
    +{% endblock %} diff --git a/templates/pages/athena/overview.html.twig b/templates/pages/athena/overview.html.twig new file mode 100644 index 000000000..4eda47c22 --- /dev/null +++ b/templates/pages/athena/overview.html.twig @@ -0,0 +1,15 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} +
    + + + {{ include('components/base/situation.html.twig') }} + + {{ include('components/base/type.html.twig') }} + + {% if current_player_bases|length > 1 %} + {{ include('components/base/leave_base.html.twig') }} + {% endif %} +
    +{% endblock %} diff --git a/templates/pages/athena/refinery.html.twig b/templates/pages/athena/refinery.html.twig new file mode 100644 index 000000000..b3d832619 --- /dev/null +++ b/templates/pages/athena/refinery.html.twig @@ -0,0 +1,65 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} +
    + +
    + {##} + + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::REFINERY'), 'frenchName') }} + + Niveau {{ current_base.levelRefinery }} +
    +
    + {# @TODO factorize with toolbar.html.twig #} + {% set production = get_base_production(current_base) %} + + {{ production|number }} + {#ressources#} + + +
    + + + {{ current_base.place.coefResources }} % + + + + {{ refining_bonus }} % + +
    +
    + +
    +
    + Contrôle du raffinage +
    + +
    + Production par relève +
    + {% set refinery_level = current_base.levelRefinery %} + + {% for level in get_building_level_range(refinery_level) %} + {% set production = get_base_production(current_base, level) %} + + {{ production|number }} + {#crédits#} + + {% endfor %} +
    +
    +
    + +
    +
    + À propos +
    +
    +

    + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::REFINERY'), 'description')|raw }} +

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/school.html.twig b/templates/pages/athena/school.html.twig new file mode 100644 index 000000000..1a1f4bbc4 --- /dev/null +++ b/templates/pages/athena/school.html.twig @@ -0,0 +1,167 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{# TODO de-duplicate code here #} + +{% block content %} +
    + +
    + {##} + + Ecole de Commandement + + + Formation des officiers + +
    + +
    + + {{ current_base.iSchool|number }} + {#crédits#} + + + + + + + + {{ commander_invest_bonus }} % + + +
    + +
    +
    + {##} + Former un nouvel officier +
    + + {# @TODO factorize these blocks #} + {% if commanders|length >= max_commanders_in_school %} + + trop d'officiers dans l'école
    + {{ commander_price }} + {#crédits#} +
    + {% elseif commander_price > current_player.credit %} + + vous ne disposez pas d'assez de crédit
    + {{ commander_price|number }} + {#crédits#} +
    + {% else %} + + créer l'officier pour + {{ commander_price|number }} + {#crédits#} + + {% endif %} + +
    +
    + + +
    + Salle de formation +
    +
    +
    + {% for commander in commanders %} + {% set missing_experience = get_commander_missing_experience(commander) %} +
    +
    + {##} +
    + {{ commander|commander_rank }} {{ commander.name }}
    + {{ commander.experience|number }} points d'expérience
    + ~ {{ earned_experience|number }}xp/relève +
    + + + + + +
    +
    + +
    +
    + {% endfor %} + + {% if commanders|length < max_commanders_in_school %} + {% for i in range(commanders|length, max_commanders_in_school - 1) %} +
    +
    + + Emplacement libre +
    + +
    + +
    +
    + {% endfor %} + {% endif %} +
    +
    +
    + + + +
    + Mess des officiers +
    +
    +
    + {% for commander in reserve_commanders %} + {% set missing_experience = get_commander_missing_experience(commander) %} +
    +
    + {##} +
    + {{ commander|commander_rank }} {{ commander.name }}
    + {{ commander.experience|number }} points d'expérience
    + ~ {{ earned_experience|number }}xp/relève +
    + + + + + +
    +
    + +
    +
    + {% endfor %} + +
    +
    + + Emplacement libre +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + À propos +
    + +
    +

    + L’Ecole de commandement est le centre de formation de vos officiers. Il suffit pour cela d’engager de jeunes recrues sans expérience et d’investir un peu d’argent dans l’école pour que de brillants stratèges issus de toute la galaxie viennent enseigner leur savoir aux jeunes commandants de votre école.

    + Au fil du temps ils gagneront de l’expérience et des niveaux. En gradant, ils acquerront la capacité de diriger une escadrille supplémentaire, ce qui augmentera la taille maximale de la flotte qu’ils dirigeront. L’investissement dans l’école de commandement s’applique à tout les commandants en formation.

    + Le nombre de place de formation est limité. Il est cepandant plus élevé sur les bases militaires et les capitales. Le mess des officiers permet de mettre vos officiers au repos. +

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/spatioport.html.twig b/templates/pages/athena/spatioport.html.twig new file mode 100644 index 000000000..1cb862b9b --- /dev/null +++ b/templates/pages/athena/spatioport.html.twig @@ -0,0 +1,312 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} +
    + +
    + {##} + + {{- get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::SPATIOPORT'), 'frenchName') -}} + + Niveau {{ current_base.levelSpatioport }} +
    + +
    + + {##} + Routes commerciales
    + Gérez vos routes commerciales +

    + + + {##} + Recherche
    + Trouvez des partenaires commerciaux +
    + +
    + + + {{ routes_data.total }} / {{ routes_data.max }} + + + + {{ routes_data.operational }} + + + + {{ routes_data.waiting_for_other }} + + + + {{ routes_data.waiting_for_me }} + + + {% if routes_data.stand_by > 0 %} + + {{ routes_data.stand_by }} + + {% endif %} + +
    + + + {{ routes_data.total_income|number }} + + +
    +
    + + {% if mode == 'search' %} + +
    + Recherche +
    + +
    +
    + Chercher des partenaires commerciaux... + {% for faction in in_game_factions %} +

    + +

    + {% endfor %} + A une distance... + +

    +

    + +

    + +

    +

    + +

    + + + Rechercher + +
    +
    +
    + + {% if search_results is not null %} +
    +
    + Résultats +
    + +
    + {% for base in search_results %} + + + +
    + {{ base.playerName }}
    + {{ base.baseName }} +
    + +
    + {{ base.distance}} al. +
    +
    + {% endfor %} + + {% if search_results|length == 0 %} +

    Aucun partenaire commercial trouvé selon les critères de recherche fournis.

    + {% endif %} +
    +
    + {% endif %} + {% else %} + {% for route in routes %} + {% if route.isProposed and route.destinationBase.player.id == current_player.id %} + {% set route_distance = get_route_distance(route) %} + {% set origin_base = include('molecules/base/trade/commercial_route_base.html.twig', { + 'base': route.originBase, + }) %} + {% set destination_base = include('molecules/base/trade/commercial_route_base.html.twig', { + 'base': route.destinationBase, + }) %} +
    +
    + {% if loop.index == 1 %} + Propositions + {% endif %} +
    + +
    +
    + {% set price = get_route_price(route_distance) %} + {% if price > current_player.credit %} + + pas assez de crédits pour accepter + + {% elseif routes_data.total >= routes_data.max %} + + pas d'emplacement libre pour accepter + + {% else %} + {# @TODO move this calculation in a dedicated service #} + {% if is_player_from_negora %} + {% set price = price - (price * negora_commercial_bonus / 100)|round %} + {% endif %} + + + accepter pour {{ price|number }} crédits + + + {% endif %} + + + x + + +
    + + + En attente + + +
    + {% if route.originBase.player.id == current_player.id %} + {{ destination_base|raw }} + {% else %} + {{ origin_base|raw }} + {% endif %} + +
      + + {{ route_distance }} al. + + + + {{ price|number }} + crédits + + + + {{ route.income|number }} + crédits + + + + {{ (route.originBase.place.population + route.destinationBase.place.population)|number }} millions + + + {% if not route.isProposed %} + + {{ route.acceptedAt|game_date|raw }} + + {% endif %} +
    + + {% if route.originBase.player.id == current_player.id %} + {{ origin_base|raw }} + {% else %} + {{ destination_base|raw }} + {% endif %} +
    +
    +
    + {% endif %} + {% endfor %} + + {% for route in routes %} + {% if not route.isProposed or route.destinationBase.player.id != current_player.id %} + {% set route_distance = get_route_distance(route) %} + {% set origin_base = include('molecules/base/trade/commercial_route_base.html.twig', { + 'base': route.originBase, + }) %} + {% set destination_base = include('molecules/base/trade/commercial_route_base.html.twig', { + 'base': route.destinationBase, + }) %} +
    +
    + {% if loop.index == 1 %} + Routes commerciales + {% endif %} +
    + +
    +
    + {% if route.isProposed %} + + + annuler la proposition commerciale + + + {% else %} + + + démanteler la route commerciale + + + {% endif %} +
    + + + {%- if route.isProposed -%} + En attente + {%- elseif route.isActive -%} + En activité + {%- elseif route.isInStandBy -%} + Gelée + {%- endif -%} + + +
    + {% if route.originBase.player.id == current_player.id %} + {{ destination_base|raw }} + {% else %} + {{ origin_base|raw }} + {% endif %} + +
      + + {{ route_distance }} al. + + + + {{ route.income|number }} + crédits + + + + {{ (route.originBase.place.population + route.destinationBase.place.population)|number }} millions + + + {% if not route.isProposed %} + + {{ route.acceptedAt|game_date|raw }} + + {% endif %} +
    + {% if route.originBase.player.id == current_player.id %} + {{ origin_base|raw }} + {% else %} + {{ destination_base|raw }} + {% endif %} +
    +
    +
    + {% endif %} + {% endfor %} + {% endif %} + +
    +
    + À propos +
    +
    +

    {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::SPATIOPORT'), 'description')|raw }}

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/storage.html.twig b/templates/pages/athena/storage.html.twig new file mode 100644 index 000000000..a16ee8933 --- /dev/null +++ b/templates/pages/athena/storage.html.twig @@ -0,0 +1,71 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} +
    + +
    + {##} + + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::STORAGE'), 'frenchName') }} + + Niveau {{ current_base.levelStorage }} +
    + +
    + {{ include('molecules/base/production/storage_gauge.html.twig', { + 'stored_resources': current_base.resourcesStorage, + 'percent': current_base|base_storage_percent, + }) }} + +
    + + + {{ storage_bonus }} % + +
    +
    + + +
    + Gestion des stocks +
    +
    + Stockage maximal de la raffinerie +
      + {% set storage_level = current_base.levelStorage %} + + {% for level in get_building_level_range(storage_level) %} +
    • + niveau {{ level }}
      + + {% set storage_space = get_building_info( + constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::STORAGE'), + 'level', + level, + 'storageSpace', + ) %} + {{ storage_space|number }} + {% if storage_bonus > 0 %} + +{{ (storage_space * storage_bonus / 100)|number }} + {% endif %} + {#ressources#} + +
    • + {% endfor %} +
    +
    +
    + +
    +
    + À propos +
    + +
    +

    + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::STORAGE'), 'description')|raw }} +

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/athena/trade_market.html.twig b/templates/pages/athena/trade_market.html.twig new file mode 100644 index 000000000..3cf6b9c0e --- /dev/null +++ b/templates/pages/athena/trade_market.html.twig @@ -0,0 +1,50 @@ +{% extends 'layouts/athena/current_base.html.twig' %} + +{% block content %} +
    + +
    + {##} + + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::COMMERCIAL_PLATEFORME'), 'frenchName') }} + + niveau {{ current_base.levelCommercialPlateforme }} +
    + +
    + + {##} + Place du commerce
    + Achetez sur le marché +
    + + + {##} + Salle des ventes
    + Vendez sur le marché +
    + + + {##} + Halle de transfert
    + Envoyez des ressources et des vaisseaux +
    +
    +
    + + {{ include('components/base/trade/commercial_shippings.html.twig') }} + + {{ include('components/base/trade/' ~ mode ~ '.html.twig', { resources_current_rate }) }} + +
    +
    + A propos +
    +
    +

    + {{ get_building_info(constant('App\\Modules\\Athena\\Resource\\OrbitalBaseResource::COMMERCIAL_PLATEFORME'), 'description')|raw }} +

    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/atlas/faction_rankings.html.twig b/templates/pages/atlas/faction_rankings.html.twig new file mode 100644 index 000000000..11972f034 --- /dev/null +++ b/templates/pages/atlas/faction_rankings.html.twig @@ -0,0 +1,14 @@ +{% extends 'layouts/atlas/ranking.html.twig' %} + +{% block page_title 'Classement faction' %} + +{% block content %} + {% if has_ranking %} + {{ include('components/rankings/faction/best_faction.html.twig', { best_faction }) }} + {{ include('components/rankings/faction/points_rankings.html.twig', { points_rankings, points_to_win }) }} + {{ include('components/rankings/faction/general_rankings.html.twig', { general_rankings }) }} + {{ include('components/rankings/faction/wealth_rankings.html.twig', { wealth_rankings }) }} + {{ include('components/rankings/faction/territorial_rankings.html.twig', { territorial_rankings }) }} + {{ include('components/rankings/faction/victory_info.html.twig') }} + {% endif %} +{% endblock content %} diff --git a/templates/pages/atlas/map.html.twig b/templates/pages/atlas/map.html.twig new file mode 100644 index 000000000..3fc470ccd --- /dev/null +++ b/templates/pages/atlas/map.html.twig @@ -0,0 +1,67 @@ +{% extends 'layouts/map.html.twig' %} + +{% set map_size = galaxy_configuration.scale * galaxy_configuration.galaxy.size %} + +{% block left_sidebar %} + {{ include('molecules/map/commanders.html.twig', { local_commanders }) }} +{% endblock left_sidebar %} + +{% block body %} + + + {# map sytems #} + +
    +
    + + {{ include('components/map/sectors.html.twig', { sectors, map_size, galaxy_configuration }) }} + {{ include('molecules/map/spying_circles.html.twig', { player_bases, map_size, galaxy_configuration }) }} + + {{ include('molecules/map/current_base.html.twig', { player_bases, map_size, galaxy_configuration }) }} + {{ include('molecules/map/commercial_routes.html.twig', { commercial_routes, default_map_parameters, map_size, galaxy_configuration }) }} + {{ include('molecules/map/fleet_movements.html.twig', { moving_commanders, default_map_parameters, map_size }) }} + {{ include('molecules/map/attacks.html.twig', { attacking_commanders, default_map_parameters, map_size }) }} + + {{ include('molecules/map/systems.html.twig', { 'current_system_id': default_position['system_id'], systems, sectors, map_size }) }} + {# {{ include('molecules/map/legend.html.twig') }} #} +
    +
    + + + +
    + + + {% if default_position.system is not null %} + {% set no_ajax = true %} + + {{ include('components/map/system_details.html.twig', { + places, + no_ajax, + moving_commanders, + recycling_missions, + technologies, + colonization_cost, + conquest_cost, + }) }} + {% endif %} + +{% endblock body %} diff --git a/templates/pages/atlas/player_rankings.html.twig b/templates/pages/atlas/player_rankings.html.twig new file mode 100644 index 000000000..176b34ad0 --- /dev/null +++ b/templates/pages/atlas/player_rankings.html.twig @@ -0,0 +1,17 @@ +{% extends 'layouts/atlas/ranking.html.twig' %} + +{% block page_title 'Classement joueur' %} + +{% block content %} + {% if has_ranking %} + {{ include('components/rankings/player/best_player.html.twig', { best_player }) }} + {{ include('components/rankings/player/general.html.twig', { general_rankings }) }} + {{ include('components/rankings/player/experience.html.twig', { experience_rankings }) }} + {{ include('components/rankings/player/fight.html.twig', { fight_rankings }) }} + {{ include('components/rankings/player/resources.html.twig', { resources_rankings }) }} + {{ include('components/rankings/player/armies.html.twig', { armies_rankings }) }} + {{ include('components/rankings/player/butcher.html.twig', { butcher_rankings }) }} + {{ include('components/rankings/player/trader.html.twig', { trader_rankings }) }} + {{ include('components/rankings/player/stats.html.twig', { all_players_count, active_players_count }) }} + {% endif %} +{% endblock content %} diff --git a/templates/pages/demeter/embassy.html.twig b/templates/pages/demeter/embassy.html.twig new file mode 100644 index 000000000..423a4a0ec --- /dev/null +++ b/templates/pages/demeter/embassy.html.twig @@ -0,0 +1,26 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + + + + +{% endblock left_sidebar %} + +{% block body %} + + Ambassades + + + + {% if player is defined %} + {{ include('molecules/embassy/player_search.html.twig') }} + {{ include('molecules/embassy/player_bases.html.twig') }} + {% else %} + {{ include('molecules/embassy/faction_nav.html.twig') }} + {{ include('molecules/embassy/faction_flag.html.twig') }} + {{ include('molecules/embassy/faction_government.html.twig') }} + {{ include('components/Faction/data/diplomacy/relations.html.twig') }} + {% endif %} + +{% endblock body %} diff --git a/templates/pages/demeter/faction/data.html.twig b/templates/pages/demeter/faction/data.html.twig new file mode 100644 index 000000000..f13970751 --- /dev/null +++ b/templates/pages/demeter/faction/data.html.twig @@ -0,0 +1,38 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title 'Registres' %} + +{% block content %} + {% set mode = app.request.query.get('mode', 'financial') %} + +
    + {{ include('components/Faction/data/nav.html.twig') }} + + {% if 'financial' == mode %} + {{ include('components/Faction/data/financial/stats.html.twig') }} + {{ include('components/Faction/data/financial/sector_taxes.html.twig') }} + {{ include('components/Faction/data/financial/donations.html.twig') }} + {% elseif 'trade' == mode %} + {{ include('components/Faction/data/trade/rc_stats.html.twig') }} + {{ include('components/Faction/data/trade/taxes.html.twig', {'label': "Taxes à l'achat", 'taxes': import_taxes}) }} + {{ include('components/Faction/data/trade/taxes.html.twig', {'label': 'Taxes à la vente', 'taxes': export_taxes}) }} + {% elseif 'war' == mode %} + {{ include('components/Faction/data/war/stats.html.twig') }} + {{ include('components/Faction/data/war/reports.html.twig', {'is_attack': true, 'reports': attack_reports}) }} + {{ include('components/Faction/data/war/reports.html.twig', {'is_attack': false, 'reports': defense_reports}) }} + {{ include('components/Faction/data/war/levels.html.twig') }} + {% elseif 'tactical' == mode %} + {{ include('components/Faction/data/tactical/map.html.twig') }} + {{ include('components/Faction/data/tactical/sectors.html.twig') }} + {{ include('components/Faction/data/tactical/targets.html.twig') }} + {% elseif 'diplomacy' == mode %} + {{ include('components/Faction/data/diplomacy/relations.html.twig') }} + {{ include('components/Faction/data/diplomacy/about.html.twig') }} + {% elseif 'law' == mode %} + {{ include('components/Faction/data/law/list.html.twig', {'law_status': 6}) }} + {{ include('components/Faction/data/law/list.html.twig', {'law_status': 3}) }} + {{ include('components/Faction/data/law/list.html.twig', {'law_status': 4}) }} + {{ include('components/Faction/data/law/list.html.twig', {'law_status': 5}) }} + {% endif %} +
    +{% endblock %} diff --git a/templates/pages/demeter/faction/election.html.twig b/templates/pages/demeter/faction/election.html.twig new file mode 100644 index 000000000..7d06e8093 --- /dev/null +++ b/templates/pages/demeter/faction/election.html.twig @@ -0,0 +1,43 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title %} + {% if faction.isInCampaign %} + Campagne + {% endif %} +{% endblock page_title %} + +{% block content %} +
    + {% if faction.isInCampaign %} + {{ include('components/Faction/election/campaign.html.twig') }} + {{ include('components/Faction/election/list.html.twig') }} + + {% if app.request.query.get('action') == 'postulate' %} + {{ include('components/Faction/election/postulate.html.twig') }} + {% elseif candidate is not null %} + {{ include('components/Faction/election/candidate.html.twig') }} + {% else %} + {{ include('molecules/common/default.html.twig') }} + {% endif %} + {% elseif faction.isInElection %} + {% if faction.isDemocratic %} + {{ include('components/Faction/election/election.html.twig') }} + {{ include('components/Faction/election/list.html.twig') }} + + {% if candidate is not null %} + {{ include('components/Faction/election/candidate.html.twig') }} + {% if topic is defined %} + {# {{ include('components/Faction/forum/topic.html.twig') }} #} + {% endif %} + {% else %} + {{ include('molecules/common/default.html.twig') }} + {% endif %} + {% elseif faction.isRoyalistic %} + {{ include('components/Faction/election/putsch.html.twig') }} + {{ include('components/Faction/election/candidate.html.twig') }} + {% else %} + {{ include('molecules/common/default.html.twig') }} + {% endif %} + {% endif %} +
    +{% endblock %} diff --git a/templates/pages/demeter/faction/forum.html.twig b/templates/pages/demeter/faction/forum.html.twig new file mode 100644 index 000000000..4337ce5ff --- /dev/null +++ b/templates/pages/demeter/faction/forum.html.twig @@ -0,0 +1,19 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title 'Forum' %} + +{% block content %} +
    + {% if show_home is same as(false) %} + {% include 'components/Faction/forum/navbar.html.twig' %} + {% endif %} + + {% for forumId, topics_with_last_views in topics_by_forum %} + {% include 'components/Faction/forum/topics.html.twig' with { forumId, topics_with_last_views } %} + {% endfor %} + + {% if 'create' == app.request.query.get('mode') %} + {% include 'components/Faction/forum/new_topic.html.twig' with { forumId: selected_forum_id } %} + {% endif %} +
    +{% endblock content %} diff --git a/templates/pages/demeter/faction/government.html.twig b/templates/pages/demeter/faction/government.html.twig new file mode 100644 index 000000000..09e0d1fbe --- /dev/null +++ b/templates/pages/demeter/faction/government.html.twig @@ -0,0 +1,46 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title 'Gouvernement' %} + +{% block content %} +
    + {{ include('components/Faction/government/nav.html.twig') }} + + {% set mode = app.request.query.get('mode', 'law') %} + + {% if 'law' == mode %} + {% set laws_count = 0 %} + + {# @TODO Implement more proper way to loop though the laws #} + {% for i in 1..total_laws_count %} + {% if get_law_info(i, 'department') == current_player.status and get_law_info(i, 'isImplemented') %} + {% set laws_count = laws_count + 1 %} + {{ include('molecules/faction/government/law.html.twig', {'law_id': i}) }} + {% endif %} + {% endfor %} + + {% if laws_count < 2 %} + {% for i in laws_count..1 %} + {{ include('molecules/common/default.html.twig') }} + {% endfor %} + {% endif %} + {% elseif 'news' == mode %} + {{ include('components/Faction/news/list.html.twig') }} + + {% if faction_news_to_edit is not null %} + {{ include('components/Faction/news/edit.html.twig', { news: faction_news_to_edit }) }} + {% else %} + {{ include('components/Faction/news/create.html.twig') }} + {% endif %} + {% elseif 'message' == mode %} + {{ include('components/Faction/government/message.html.twig') }} + {% elseif 'description' == mode %} + {{ include('components/Faction/government/description.html.twig') }} + {% elseif 'credit' == mode %} + {{ include('components/Faction/government/credit.html.twig') }} + {% elseif 'manage' == mode %} + {{ include('components/Faction/government/manage/main.html.twig') }} + {{ include('molecules/common/default.html.twig') }} + {% endif %} +
    +{% endblock content %} diff --git a/templates/pages/demeter/faction/members.html.twig b/templates/pages/demeter/faction/members.html.twig new file mode 100644 index 000000000..915cd9488 --- /dev/null +++ b/templates/pages/demeter/faction/members.html.twig @@ -0,0 +1,10 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title 'Membres' %} + +{% block content %} +
    + {% include('components/Faction/members/stats.html.twig') %} + {% include('components/Faction/members/list.html.twig') %} +
    +{% endblock content %} diff --git a/templates/pages/demeter/faction/overview.html.twig b/templates/pages/demeter/faction/overview.html.twig new file mode 100644 index 000000000..d27c965f6 --- /dev/null +++ b/templates/pages/demeter/faction/overview.html.twig @@ -0,0 +1,9 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block content %} +
    + {{ include('components/Faction/news.html.twig') }} + {{ include('components/Faction/stat.html.twig') }} + {{ include('components/Faction/laws.html.twig') }} +
    +{% endblock content %} diff --git a/templates/pages/demeter/faction/senate.html.twig b/templates/pages/demeter/faction/senate.html.twig new file mode 100644 index 000000000..96dee9b30 --- /dev/null +++ b/templates/pages/demeter/faction/senate.html.twig @@ -0,0 +1,14 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block page_title 'Sénat' %} + +{% block content %} +
    + {{ include('components/Faction/senate/stats.html.twig') }} + {% for law in voting_laws %} + {{ include('molecules/faction/senate/law.html.twig', { law }) }} + {% endfor %} + + {{ include('components/Faction/senate/historic.html.twig') }} +
    +{% endblock %} diff --git a/templates/pages/demeter/faction/topic.html.twig b/templates/pages/demeter/faction/topic.html.twig new file mode 100644 index 000000000..cecf25805 --- /dev/null +++ b/templates/pages/demeter/faction/topic.html.twig @@ -0,0 +1,84 @@ +{% extends 'layouts/demeter/faction.html.twig' %} + +{% block content %} +
    + {% include 'components/Faction/forum/navbar.html.twig' %} + + {% include 'components/Faction/forum/topics.html.twig' with { forumId: topic.forum, topics_with_last_views, display_standard_topics: true, is_archived: false } %} + + +
    + {{ topic.title }} +
    + +
    +
    +
    + +
    + +
    + {% if topic.isClosed %} +
    + +
    + {% else %} +
    +
    + + + {{ get_parser_toolbar()|raw }} +
    + + Envoyer le message +
    + {% endif %} +
    +
    + + {% for message in messages %} + {% if message.player.faction.identifier > 0 %} + {% set statuses = get_faction_info(message.player.faction.identifier, 'status') %} + {% set status = statuses[message.player.status - 1] %} + {% else %} + {% set status = 'Rebelle' %} + {% endif %} + + {% set can_edit = current_player.id == message.player.id or current_player.isGovernmentMember is same as(true) and topic.forum != 20 %} + +
    + + + +
    +

    + ≡ {{ status }} {{ message.player.name }}

    + {{ message.pContent|raw }} +

    + + {% if can_edit is same as (true) %} + + {% endif %} + + +
    +
    + {% endfor %} +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/gaia/map_sandbox.html.twig b/templates/pages/gaia/map_sandbox.html.twig new file mode 100644 index 000000000..cef003a8d --- /dev/null +++ b/templates/pages/gaia/map_sandbox.html.twig @@ -0,0 +1,101 @@ +{% extends 'layouts/map.html.twig' %} + +{% block body %} + + + {% set scale = 10 %} + {% set map_size = 100 * scale %} + +
    + + {# map systems #} +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock body %} diff --git a/templates/pages/hermes/communication_center.html.twig b/templates/pages/hermes/communication_center.html.twig new file mode 100644 index 000000000..b962c8cf2 --- /dev/null +++ b/templates/pages/hermes/communication_center.html.twig @@ -0,0 +1,212 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + {{ include('molecules/common/subnav.html.twig') }} +{% endblock left_sidebar %} + +{% block body %} + + Centre de communication + + + + +
    + Messagerie +
    +
    + + + {% for conv in conversations %} + {% set conv_name = [] %} + {% set counter = 0 %} + {% set remaining_players = 0 %} + {% set own_last_view = null %} + + {% if conv.isGroupConversation %} + {% set conversation_avatar = 'multi' %} + {% set conversation_faction_identifier = 0 %} + {% else %} + {% set conversation_avatar = conv.initiator.avatar %} + {% set conversation_faction_identifier = conv.initiator.faction.identifier ?? 0 %} + {% endif %} + + {% for conv_participant in conv.players %} + {% if conv_participant.player.id != current_player.id %} + {% if counter < 5 %} + {% set conv_name = conv_name|merge(['' ~ conv_participant.player.name ~ '']) %} + {% else %} + {% set remaining_players = remaining_players + 1 %} + {% endif %} + + {% if conv.type == constant('App\\Modules\\Hermes\\Model\\Conversation::TY_SYSTEM') %} + {% if conv_participant.playerStatus == constant('App\\Modules\\Hermes\\Model\\ConversationUser::US_ADMIN') %} + {% set conversation_avatar = conv_participant.player.avatar %} + {% set conversation_faction_identifier = conv_participant.player.faction.identifier ?? 0 %} + {% endif %} + {% endif %} + + {% set counter = counter + 1 %} + {% else %} + {% set own_last_view = conv_participant.lastViewedAt %} + {% endif %} + {% endfor %} + + + + + {{ conv.messagesCount }} + {% if own_last_view.timestamp ?? null < conv.lastMessageAt.timestamp %} + + {% endif %} + + + + {{ conv.lastMessageAt|game_date|raw }} +
    + {% if conv.title is not empty %} + {{ conv.title }} + {% else %} + {{ conv_name|join(',')|raw }} + {% endif %} +
    +
    + {% endfor %} + + {# TODO pagination is not done right here #} + {% if constant('App\\Modules\\Hermes\\Model\\Conversation::CONVERSATION_BY_PAGE') == conversations|length %} + + Afficher plus de conversations + + {% endif %} + + {% if constant('App\\Modules\\Hermes\\Model\\ConversationUser::CS_ARCHIVED') == mode %} + Retour aux conversations + {% else %} + Voir les conversations archivées + {% endif %} +
    +
    + + {% if start_new_conversation %} + +
    + Démarrer une nouvelle conversation +
    +
    +
    +

    Destinataire

    + +

    + + +

    + +

    + Message +

    +

    + + + {{ get_parser_toolbar()|raw }} + +

    + +
    + + Démarrer la conversation + +
    +
    +
    +
    + {% elseif conversation is not null %} +
    +
    + {% if conversation.title is not null %} +

    {{ conversation.title }}

    + {% endif %} +
    +
    +
    + {% if constant('App\\Modules\\Hermes\\Model\\Conversation::TY_SYSTEM') != conversation.type %} +
    + {{ current_player.name }} +
    +
    +
    + {{ get_parser_toolbar()|raw }} + +
    + + +
    +
    +
    + {% endif %} + + {% for message in messages %} + {% set player_faction_statuses = get_faction_info(message.player.faction.identifier, 'status') %} + {% set player_status = player_faction_statuses[message.player.status - 1] %} + + {% if 0 < loop.index0 and messages[loop.index0 - 1].createdAt > player_last_viewed_at and message.createdAt <= player_last_viewed_at %} +
    + Dernier message lu +
    + {% endif %} + + {% if constant('App\\Modules\\Hermes\\Model\\ConversationMessage::TY_STD') == message.type %} +
    + + {{ message.player.name }} + +
    +

    + {{ message.content|raw }} +

    + +
    +
    + {% else %} +
    + {{ message.content|raw }} +
    + {% endif %} + {% endfor %} + + {% if constant('App\\Modules\\Hermes\\Model\\ConversationMessage::MESSAGE_BY_PAGE') == messages|length %} + + Afficher les messages suivants + + {% endif %} +
    +
    +
    + {% endif %} + + {% include 'components/notifications/last.html.twig' with { notifications } %} + + {% if archived_notifications|length > 0 %} + + {% endif %} +
    +{% endblock body %} diff --git a/templates/pages/hermes/conversation/start.html.twig b/templates/pages/hermes/conversation/start.html.twig new file mode 100644 index 000000000..1f8d7b94e --- /dev/null +++ b/templates/pages/hermes/conversation/start.html.twig @@ -0,0 +1,34 @@ +{% extends 'layouts/game.html.twig' %} + +{% block body %} +
    +
    +

    Démarrer une nouvelle conversation

    +
    +
    +
    +
    +

    Destinataire

    + + +

    + + +

    + +

    + Message +

    +

    + + {{ get_parser_toolbar()|raw }} + + +

    + +

    +
    +
    +
    +
    +{% endblock body %} diff --git a/templates/pages/hermes/conversation/view.html.twig b/templates/pages/hermes/conversation/view.html.twig new file mode 100644 index 000000000..bed78dee2 --- /dev/null +++ b/templates/pages/hermes/conversation/view.html.twig @@ -0,0 +1,6 @@ +{% extends 'layouts/game.html.twig' %} + +{% block body %} + + +{% endblock body %} diff --git a/templates/pages/portal/homepage.html.twig b/templates/pages/portal/homepage.html.twig new file mode 100644 index 000000000..21eac53ad --- /dev/null +++ b/templates/pages/portal/homepage.html.twig @@ -0,0 +1,278 @@ +{% extends 'layouts/base.html.twig' %} + +{% block body %} + + +
    + +
    + + +
    +
    + +
    +

    Jeu de stratégie par factions

    +

    Créez votre personnage et rejoignez une des factions s'affrontant par les armes, la culture ou la richesse !

    + +
    +
    + + + +
    + +
    + + +
    +
    +
    +

    Partez à la conquête de la galaxie

    +

    + Comment vaincrez-vous ? +

    +

    + Découvrez les différents axes de gameplay proposés par Kalaxia dans votre quête pour la victoire ! +

    +
    +
    +
    +
    + {#App screenshot#} + +
    +
    +
    +
    +
    +

    Combattez vos adversaires

    + +
      +
    • + Constituez vos flottes : + Fabriquez vos vaisseaux, composez vos escadrilles et envoyez votre armada en mission aux quatre coins de la galaxie. +
    • +
    • + Menez la bataille : + Combattez les flottes ennemies pour protéger vos planètes, piller ou conquérir les bases adverses. + Battez-vous en temps réel aux côtés de vos alliés dans de gigantesques affrontements spatiaux. +
    • +
    • + Partez à la conquête de la galaxie : + Disputez la possession des systèmes stellaires et des secteurs de la galaxie aux autres factions +
    • +
    +
    +
    +

    Bâtissez votre empire

    + +
      +
    • + Développez votre base : + Construction de bâtiments, production de ressources +
    • +
    • + Découvrez de nouvelles technologies : + Grâce à la recherche, conservez l'avantage et boostez votre économie ou les capacités de vos flottes. +
    • +
    +
    +
    +

    Prenez la tête de votre faction

    + +
      +
    • + Conquérez le pouvoir : + Par l'élection démocratique, le choix des dieux ou bien le coup d'état, prenez le contrôle de votre faction pour la mener vers la victoire. +
    • +
    • + Prenez les décisions : + A l'aide des lois que vous et votre gouvernement ferez voter, aidez votre faction dans sa progression vers la suprématie. +
    • +
    +
    +
    +
    +
    + + + {#
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Gravida quam mi erat tortor neque molestie. Auctor aliquet at porttitor a enim nunc suscipit tincidunt nunc. Et non lorem tortor posuere. Nunc eu scelerisque interdum eget tellus non nibh scelerisque bibendum.

    +
    +
    +
    Judith Black
    +
    CEO of Tuple
    +
    +
    +
    +
    +
    #} + + +
    +
    +

    Questions/réponses

    +
    +
    +
    + + Le jeu propose-t-il du contenu payant ? + + +
    +

    + Non, Kalaxia est un jeu entièrement gratuit et ne propose pas de contenu payant. + Il n'y aura également pas de publicité en jeu, afin de proposer l'expérience la plus immersive possible. + Des publicités peuvent être présentes sur le portail de connexion, avant l'accès aux parties. +

    +
    +
    +
    +
    +
    + + Faut-il installer le jeu ? + + +
    +

    + Kalaxia est un jeu navigateur, vous n'avez donc pas besoin de réaliser une installation pour jouer au jeu. + Créez simplement votre compte avec votre adresse e-mail, votre identifiant et votre mot de passe, puis vous pourrez directement accéder aux parties en cours ! +

    +
    +
    +
    +
    +
    +
    +
    + + + {##} +{% endblock body %} diff --git a/templates/pages/portal/login.html.twig b/templates/pages/portal/login.html.twig new file mode 100644 index 000000000..9edc9cd93 --- /dev/null +++ b/templates/pages/portal/login.html.twig @@ -0,0 +1,105 @@ +{% extends 'layouts/base.html.twig' %} + +{% block body %} + + +
    +
    +
    +
    +
    +

    Se connecter

    +

    + Pas encore inscrit ? + Créer un compte +

    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    +
    +
    + + + + + +
    +
    + +
    + + +
    + + {% if error is not null %} +
    + {{ error.messageKey }} +
    + {% endif %} + + + +
    + +
    +
    +
    + +
    +
    + +
    + Or continue with +
    +
    + + +
    +
    +
    +
    + +
    +
    +{% endblock body %} diff --git a/templates/pages/portal/player_choice.html.twig b/templates/pages/portal/player_choice.html.twig new file mode 100644 index 000000000..3e451408f --- /dev/null +++ b/templates/pages/portal/player_choice.html.twig @@ -0,0 +1,53 @@ +{% extends 'layouts/base.html.twig' %} + +{% block bodyClasses 'overflow-y-auto relative pt-[7rem]' %} + +{% block body %} +
    +

    Kalaxia

    +
    + + +
    + +
    + + +
    +
    +{% endblock %} diff --git a/templates/pages/portal/registration.html.twig b/templates/pages/portal/registration.html.twig new file mode 100644 index 000000000..04ac5c98c --- /dev/null +++ b/templates/pages/portal/registration.html.twig @@ -0,0 +1,123 @@ +{% extends 'layouts/base.html.twig' %} + +{% block body %} + + +
    +
    +
    +
    +
    +

    Créez votre compte

    +

    + Vous avez déjà un compte ? + Connectez-vous +

    +
    + +
    +
    + {{ form_start(registrationForm, {'attr': {'class': 'space-y-6'}}) }} +
    + +
    + {{ form_widget(registrationForm.username, { 'attr': { 'class': 'block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-600 sm:text-sm/6' }}) }} +
    +
    + +
    + +
    + {{ form_widget(registrationForm.email, { 'attr': { 'class': 'block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-600 sm:text-sm/6' }}) }} +
    +
    + +
    + +
    + {{ form_widget(registrationForm.password.first, { 'attr': { 'class': 'block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-600 sm:text-sm/6' }}) }} +
    +
    + +
    + +
    + {{ form_widget(registrationForm.password.second, { 'attr': { 'class': 'block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-600 sm:text-sm/6' }}) }} +
    +
    + +
    +
    +
    +
    + + + + + +
    +
    + +
    + + +
    + +
    + {{ form_errors(registrationForm) }} +
    + +
    + +
    + {{ form_end(registrationForm) }} +
    + +
    +
    + +
    + Ou continuer avec +
    +
    + + +
    +
    +
    +
    + +
    +
    +{% endblock body %} diff --git a/templates/pages/promethee/tech_info.html.twig b/templates/pages/promethee/tech_info.html.twig new file mode 100644 index 000000000..2df2d7049 --- /dev/null +++ b/templates/pages/promethee/tech_info.html.twig @@ -0,0 +1,47 @@ +
    +
    +
    +
    +

    ' . $name . '

    + x + +

    ' . $shortDescription . '

    + +
    + + + + + + + + + + + + + + + + + +
    coût en ressource' . Format::numberFormat($resource) . ' ressource
    coût en crédit' . Format::numberFormat($credit) . ' credit
    temps' . Chronos::secondToFormat($time, 'lite') . ' relève
    points' . Format::numberFormat($points) . '
    +
    + + # description +

    Prérequis pour le prochain niveau

    +

    + Technosphère, niv. ' . $technosphere . '
    + foreach ($researchList as $research) { + echo $research[0] . ', niv. ' . $research[1]; + echo $research[2] ? '' : NULL; +
    + } +

    + + # description +

    Description

    +

    ' . $description . '

    +
    +
    +
    diff --git a/templates/pages/promethee/university.html.twig b/templates/pages/promethee/university.html.twig new file mode 100644 index 000000000..c8dbd84e6 --- /dev/null +++ b/templates/pages/promethee/university.html.twig @@ -0,0 +1,144 @@ +{% extends 'layouts/game.html.twig' %} + +{% block left_sidebar %} + {{ include('molecules/common/subnav.html.twig') }} +{% endblock left_sidebar %} + +{% block body %} + + Université + + + + + +
    + + {{ current_player.iUniversity|number }} + + + + + + + + {{ university_investment_bonus }} % + + +
    + + + {{ current_player.partNaturalSciences }} % + + +
    -
    +
    +
    +
    +
    + + + {{ current_player.partInformaticEngineering }} % + + +
    -
    +
    +
    +
    +
    + + + {{ current_player.partLifeSciences }} % + + +
    -
    +
    +
    +
    +
    + + + {{ current_player.partSocialPoliticalSciences }} % + + +
    -
    +
    +
    +
    +
    + + {% set rest = 100 - [ + current_player.partLifeSciences, + current_player.partNaturalSciences, + current_player.partInformaticEngineering, + current_player.partSocialPoliticalSciences, + ]|reduce((sum, v) => sum + v, 0) %} + + + {{ rest }} % + + +

    Augmente ou baisse tes investissements par 10% avec "CTRL + clic" ou "CMD + clic".

    +
    +
    + +
    + + + {{ (current_player.iUniversity * current_player.partNaturalSciences / 100)|round|number }} + + + + + + + +
    + + + + {{ (current_player.iUniversity * current_player.partLifeSciences / 100)|round|number }} + + + + + +
    + +
    + + + {{ (current_player.iUniversity * current_player.partInformaticEngineering / 100)|round|number }} + + + + + + + +
    + + + + {{ (current_player.iUniversity * current_player.partSocialPoliticalSciences / 100)|round|number }} + + + + + +
    + +
    +
    + À propos +
    + +
    +

    L’Université est une résidence qui assemble en son sein la recherche, la conservation et la transmission + de différents domaines de la connaissance. Ce bâtiment vous permettra d’attribuer des crédits dans différents domaines de recherche. + Ces différents domaines de recherche évolueront en fonction du nombre de crédits investis dans ceux-ci.

    + Cette résidence est la plus importante de votre planète, car en investissant des crédits elle permettra de débloquer, de donner des + bonus non seulement aux bâtiments de votre planète, mais également à ceux de votre base orbitale et à chacun de vos vaisseaux.

    + Chaque fois qu’un type de technologie est découvert dans votre université, une nouvelle technologie sera alors disponible dans la Technosphère.

    + Pensez à toujours allouer des crédits dans votre université pour optimiser au maximum vos flottes et vos infrastructures. +

    +
    +
    +
    +{% endblock body %} diff --git a/templates/pages/zeus/profile.html.twig b/templates/pages/zeus/profile.html.twig new file mode 100644 index 000000000..42e05d84c --- /dev/null +++ b/templates/pages/zeus/profile.html.twig @@ -0,0 +1,24 @@ +{% extends 'layouts/game.html.twig' %} + +{% block body %} + {% if has_splash_mode %} +
    + +
    + {% endif %} + + {{ include('molecules/common/movers.html.twig') }} + + + + + {# obFastView component #} + {% for orbital_base in player_bases %} + + {% endfor %} + +{% endblock body %} diff --git a/templates/pages/zeus/registration/faction_choice.html.twig b/templates/pages/zeus/registration/faction_choice.html.twig new file mode 100644 index 000000000..1924e4098 --- /dev/null +++ b/templates/pages/zeus/registration/faction_choice.html.twig @@ -0,0 +1,11 @@ +{% extends 'layouts/zeus/registration.html.twig' %} + +{% block content %} +
    +
    + {% for faction_data in sorted_factions|filter(data => data.faction.identifier != 0) %} + + {% endfor %} +
    +
    +{% endblock content %} diff --git a/templates/pages/zeus/registration/place_choice.html.twig b/templates/pages/zeus/registration/place_choice.html.twig new file mode 100644 index 000000000..a623733fc --- /dev/null +++ b/templates/pages/zeus/registration/place_choice.html.twig @@ -0,0 +1,75 @@ +{% extends 'layouts/zeus/registration.html.twig' %} + +{% block content %} +
    +
    +
    +

    Localisation

    +

    Choisissez le nom de votre première planète

    +

    +

    Vous pourrez changer ce nom plus tard.

    +
    +
    + + Choisir ce secteur
    + et commencer le jeu +
    +
    +
    + +
    +

    + Choisissez l'emplacement dans la galaxie +

    + +
    + {% set rate = 750 / galaxy_configuration.galaxy.size %} + +
    + + + {% for sector in sectors %} + {% set faction_identifier = sector.faction|default({identifier: 0}).identifier %} + {% set coords = galaxy_configuration.getSectorCentroid(sector, rate) %} + + + + + {{- sector.identifier -}} + + + + {% endfor %} + +
    +
    +
    +
    +{% endblock content %} diff --git a/templates/pages/zeus/registration/profile.html.twig b/templates/pages/zeus/registration/profile.html.twig new file mode 100644 index 000000000..3a0f0264b --- /dev/null +++ b/templates/pages/zeus/registration/profile.html.twig @@ -0,0 +1,70 @@ +{% extends 'layouts/zeus/registration.html.twig' %} + +{% block content %} +
    +
    +

    + Choisissez votre nom dans le jeu +

    + + {% if app.session.get('inscription').has('pseudo') %} + {% set value = app.session.get('inscription').get('pseudo') %} + {% elseif app.session.get('inscription').get('portalPseudo') %} + {% set value = app.session.get('inscription').get('portalPseudo') %} + {% else %} + {% set value = '' %} + {% endif %} + +
    + + +
    + + {% for label, messages in app.flashes %} + {% if label == 'error' %} +
    + {% for message in messages %} + {{ message }} + {% endfor %} +
    + {% endif %} + {% endfor %} + +

    Nous déconseillons les noms moins roleplay, essayez de coller avec l'histoire et les moeurs de votre faction.

    +

    Ce nom ne pourra pas être changé plus tard.

    + +
    +
    +

    Choisissez un avatar

    + +
    + {% for avatar in avatars %} +
    + + +
    + {% endfor %} +
    +
    +
    + + Définir son profil
    + et passer à l'étape suivante +
    +
    +
    +{% endblock content %} diff --git a/tests/Classes/Library/DateTimeConverterTest.php b/tests/Classes/Library/DateTimeConverterTest.php index 9d26df99d..e0ec4b357 100644 --- a/tests/Classes/Library/DateTimeConverterTest.php +++ b/tests/Classes/Library/DateTimeConverterTest.php @@ -1,8 +1,8 @@ assertEquals($expectedMs, DateTimeConverter::to_ms($dateTime)); + $this->assertEquals($expectedMs, DateTimeConverter::to_ms(new \DateTimeImmutable($dateTime))); } - public function provideMsData(): \Generator + public static function provideMsData(): \Generator { yield [ '+1 minute', diff --git a/tests/Modules/Ares/Application/Handler/CommanderArmyHandlerTest.php b/tests/Modules/Ares/Application/Handler/CommanderArmyHandlerTest.php new file mode 100644 index 000000000..bf4bb206a --- /dev/null +++ b/tests/Modules/Ares/Application/Handler/CommanderArmyHandlerTest.php @@ -0,0 +1,18 @@ +get(VirtualCommanderHandler::class); + $armyHandler = static::getContainer()->get(CommanderArmyHandler::class); + + $commander = $handler->createVirtualCommander($place); + + static::assertSame('rebelle', $commander->name); + static::assertTrue($commander->isAffected()); + static::assertSame($expectedSquadronsCount, $commander->level); + static::assertCount($expectedSquadronsCount, $commander->squadronsIds); + static::assertCount($expectedSquadronsCount, $commander->army); + static::assertSame($expectedPev, $armyHandler->getPev($commander)); + } + + public static function provideData(): \Generator + { + yield [ + static::getPlaceMock( + danger: 0, + maxDanger: 10, + population: 147, + position: 1, + historyCoeff: 20, + resourcesCoeff: 60, + ), + 3, + 18, + ]; + yield [ + static::getPlaceMock( + danger: 3, + maxDanger: 10, + population: 147, + position: 1, + historyCoeff: 20, + resourcesCoeff: 60, + ), + 3, + 36, + ]; + yield [ + static::getPlaceMock( + danger: 0, + maxDanger: 7, + population: 100, + position: 1, + historyCoeff: 10, + resourcesCoeff: 40, + ), + 3, + 18, + ]; + yield [ + static::getPlaceMock( + danger: 3, + maxDanger: 7, + population: 100, + position: 3, + historyCoeff: 70, + resourcesCoeff: 10, + ), + 3, + 36, + ]; + } + + private static function getPlaceMock( + int $danger, + int $maxDanger, + int $population, + int $position, + int $historyCoeff, + int $resourcesCoeff, + ): Place { + return new Place( + id: Uuid::v4(), + player: null, + base: null, + system: new System( + id: Uuid::v4(), + sector: new Sector( + id: Uuid::v4(), + identifier: 1, + faction: null, + xPosition: 10, + yPosition: 10, + xBarycentric: 0, + yBarycentric: 0, + tax: 5, + name: null, + points: 5, + population: 0, + lifePlanet: 10, + prime: 1, + ), + faction: null, + xPosition: 10, + yPosition: 10, + typeOfSystem: 0, + ), + typeOfPlace: Place::TERRESTRIAL, + position: $position, + population: $population, + coefResources: $resourcesCoeff, + coefHistory: $historyCoeff, + resources: 0, + danger: $danger, + maxDanger: $maxDanger, + updatedAt: new \DateTimeImmutable(), + ); + } +} diff --git a/tests/Modules/Ares/AresModuleTest.php b/tests/Modules/Ares/AresModuleTest.php deleted file mode 100644 index a36712d0d..000000000 --- a/tests/Modules/Ares/AresModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new AresModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Ares', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Ares/Manager/CommanderManagerTest.php b/tests/Modules/Ares/Manager/CommanderManagerTest.php deleted file mode 100644 index 4ffdc8b98..000000000 --- a/tests/Modules/Ares/Manager/CommanderManagerTest.php +++ /dev/null @@ -1,488 +0,0 @@ -manager = new CommanderManager( - $this->getEntityManagerMock(), - $this->getFightManagerMock(), - $this->getReportManagerMock(), - $this->getOrbitalBaseManagerMock(), - $this->getPlayerManagerMock(), - $this->getPlayerBonusManagerMock(), - $this->getPlaceManagerMock(), - $this->getColorManagerMock(), - $this->getNotificationManagerMock(), - $this->getSchedulerMock(), - $this->getEventDispatcherMock(), - 100 - ); - } - - public function testGet() - { - $commander = $this->manager->get(1); - - $this->assertInstanceOf(Commander::class, $commander); - $this->assertEquals(1, $commander->getId()); - $this->assertEquals('Avla', $commander->getName()); - } - - public function testGetBaseCommanders() - { - $commanders = $this->manager->getBaseCommanders(1); - - $this->assertCount(3, $commanders); - $this->assertEquals(1, $commanders[0]->getRBase()); - $this->assertEquals(2, $commanders[1]->getId()); - $this->assertEquals('Nievra', $commanders[2]->getName()); - } - - /** - * @dataProvider providePlaces - * @param Place $place - * @param array $expected - */ - public function testCreateVirtualCommander(Place $place, $expected) - { - $commander = $this->manager->createVirtualCommander($place); - - $this->assertEquals('Null', $commander->getId()); - $this->assertEquals('rebelle', $commander->getName()); - $this->assertEquals(ID_GAIA, $commander->getRPlayer()); - $this->assertEquals($expected['level'], $commander->getLevel()); - $this->assertEquals($expected['pev_in_begin'], $commander->getPevInBegin()); - $this->assertEquals($expected['pev'], $commander->getPev()); - $this->assertCount($expected['nb_squadrons'], $commander->squadronsIds); - } - - /** - * @return array - */ - public function providePlaces() - { - return [ - [ - (new Place()) - ->setPopulation(25) - ->setCoefHistory(32) - ->setCoefResources(60) - ->setPosition(3443) - ->setDanger(4) - ->setMaxDanger(15) - , - [ - 'level' => 3, - 'pev_in_begin' => 18, - 'pev' => 18, - 'nb_squadrons' => 3 - ] - ], - [ - (new Place()) - ->setPopulation(60) - ->setCoefHistory(14) - ->setCoefResources(70) - ->setPosition(34565) - ->setDanger(3) - ->setMaxDanger(15) - , - [ - 'level' => 4, - 'pev_in_begin' => 23, - 'pev' => 23, - 'nb_squadrons' => 4 - ] - ], - [ - (new Place()) - ->setPopulation(214) - ->setCoefHistory(14) - ->setCoefResources(84) - ->setPosition(2789) - ->setDanger(12) - ->setMaxDanger(15) - , - [ - 'level' => 5, - 'pev_in_begin' => 200, - 'pev' => 200, - 'nb_squadrons' => 5 - ] - ], - [ - (new Place()) - ->setPopulation(50) - ->setCoefHistory(20) - ->setCoefResources(85) - ->setPosition(26553) - ->setDanger(15) - ->setMaxDanger(15) - , - [ - 'level' => 4, - 'pev_in_begin' => 92, - 'pev' => 92, - 'nb_squadrons' => 4 - ] - ], - ]; - } - - /** - * @dataProvider provideMovements - * @param array $data - * @param array $expected - */ - public function testMove($data, $expected) - { - $commander = $data['commander']; - - $this->manager->move( - $commander, - $data['destination_place_id'], - $data['start_place_id'], - $data['type'], - $data['length'], - $data['duration'] - ); - - $this->assertEquals(Commander::MOVING, $commander->getStatement()); - $this->assertEquals($data['destination_place_id'], $commander->getRPlaceDestination()); - $this->assertEquals($data['start_place_id'], $commander->getStartPlaceId()); - $this->assertEquals($data['type'], $commander->getTravelType()); - $this->assertEquals($data['length'], $commander->getTravelLength()); - - $date = new \DateTime($commander->getStartedAt()); - $date->modify('+' . $data['duration'] . 'second'); - $this->assertEquals($commander->getArrivalDate(), $date->format('Y-m-d H:i:s')); - } - - public function provideMovements() - { - return [ - [ - [ - 'commander' => $this->getCommanderMock(1), - 'start_place_id' => 12, - 'destination_place_id' => 156, - 'type' => Commander::LOOT, - 'length' => 18, - 'duration' => 1800 - ], - [ - - ] - ], - [ - [ - 'commander' => $this->getCommanderMock(2), - 'start_place_id' => 132, - 'destination_place_id' => 546, - 'type' => Commander::LOOT, - 'length' => 24, - 'duration' => 2400 - ], - [ - - ] - ], - [ - [ - 'commander' => $this->getCommanderMock(64), - 'start_place_id' => 16, - 'destination_place_id' => 653, - 'type' => Commander::BACK, - 'length' => 30, - 'duration' => 3800 - ], - [ - - ] - ], - [ - [ - 'commander' => $this->getCommanderMock(12), - 'start_place_id' => 145, - 'destination_place_id' => 236, - 'type' => Commander::COLO, - 'length' => 30, - 'duration' => 3600 - ], - [ - - ] - ], - ]; - } - - public function testEndTravel() - { - $commander = $this->getCommanderMock(1); - - $this->manager->endTravel($commander, Commander::AFFECTED); - - $this->assertEquals(Commander::AFFECTED, $commander->getStatement()); - $this->assertNull($commander->getStartPlaceId()); - $this->assertNull($commander->getRPlaceDestination()); - $this->assertNull($commander->getStartedAt()); - $this->assertNull($commander->getArrivalDate()); - $this->assertNull($commander->getTravelType()); - $this->assertNull($commander->getTravelLength()); - } - - public function testEndTravelToReserve() - { - $commander = $this->getCommanderMock(1); - - $this->manager->endTravel($commander, Commander::RESERVE); - - $this->assertEquals(Commander::RESERVE, $commander->getStatement()); - $this->assertNull($commander->getStartPlaceId()); - $this->assertNull($commander->getRPlaceDestination()); - $this->assertNull($commander->getStartedAt()); - $this->assertNull($commander->getArrivalDate()); - $this->assertNull($commander->getTravelType()); - $this->assertNull($commander->getTravelLength()); - } - - public function getEntityManagerMock() - { - $entityManagerMock = $this - ->getMockBuilder('\Asylamba\Classes\Entity\EntityManager') - ->disableOriginalConstructor() - ->getMock() - ; - $entityManagerMock - ->expects($this->any()) - ->method('persist') - ->willReturn(true) - ; - $entityManagerMock - ->expects($this->any()) - ->method('remove') - ->willReturn(true) - ; - $entityManagerMock - ->expects($this->any()) - ->method('flush') - ->willReturn(true) - ; - $entityManagerMock - ->expects($this->any()) - ->method('getRepository') - ->willReturnCallback([$this, 'getRepositoryMock']) - ; - return $entityManagerMock; - } - - public function getRepositoryMock($repository) - { - return $this->{[ - 'Asylamba\Modules\Ares\Model\Commander' => 'getCommanderRepositoryMock' - ][$repository]}(); - } - - public function getCommanderRepositoryMock() - { - $repositoryMock = $this - ->getMockBuilder('\Asylamba\Modules\Ares\Repository\CommanderRepository') - ->disableOriginalConstructor() - ->getMock() - ; - $repositoryMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getCommanderMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getBaseCommanders') - ->willReturnCallback([$this, 'getCommandersMock']) - ; - return $repositoryMock; - } - - public function getCommanderMock($id) - { - return - (new Commander()) - ->setId($id) - ->setName('Avla') - ->setRPlaceDestination(15) - ->setStartPlaceId(16) - ->setTravelLength(18) - ->setTravelType(Commander::LOOT) - ->setArrivalDate((new \DateTime('+2 hours'))->format('Y-m-d H:i:s')) - ; - } - - public function getCommandersMock() - { - return [ - (new Commander()) - ->setId(1) - ->setName('Anvla') - ->setRBase(1), - (new Commander()) - ->setId(2) - ->setName('Zania') - ->setRBase(1), - (new Commander()) - ->setId(3) - ->setName('Nievra') - ->setRBase(1), - ]; - } - - public function getFightManagerMock() - { - $fightManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Ares\Manager\FightManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $fightManagerMock; - } - - public function getReportManagerMock() - { - $reportManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Ares\Manager\ReportManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $reportManagerMock; - } - - public function getOrbitalBaseManagerMock() - { - $orbitalBaseManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Athena\Manager\OrbitalBaseManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $orbitalBaseManagerMock; - } - - public function getPlayerManagerMock() - { - $playerManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Zeus\Manager\PlayerManager') - ->disableOriginalConstructor() - ->getMock() - ; - $playerManagerMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getPlayerMock']) - ; - return $playerManagerMock; - } - - public function getPlayerMock() - { - return - (new Player()) - ; - } - - public function getPlayerBonusManagerMock() - { - $playerBonusManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Zeus\Manager\PlayerBonusManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $playerBonusManagerMock; - } - - public function getPlaceManagerMock() - { - $placeManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Gaia\Manager\PlaceManager') - ->disableOriginalConstructor() - ->getMock() - ; - $placeManagerMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getPlaceMock']) - ; - return $placeManagerMock; - } - - public function getPlaceMock() - { - return - (new Place()) - ; - } - - public function getColorManagerMock() - { - $colorManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Manager\ColorManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $colorManagerMock; - } - - public function getNotificationManagerMock() - { - $notificationManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Hermes\Manager\NotificationManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $notificationManagerMock; - } - - public function getSessionMock() - { - $sessionMock = $this - ->getMockBuilder('Asylamba\Classes\Library\Session\SessionWrapper') - ->disableOriginalConstructor() - ->getMock() - ; - return $sessionMock; - } - - public function getSchedulerMock() - { - $schedulerMock = $this - ->getMockBuilder('\Asylamba\Classes\Scheduler\RealTimeActionScheduler') - ->disableOriginalConstructor() - ->getMock() - ; - $schedulerMock - ->expects($this->any()) - ->method('schedule') - ->willReturn(true) - ; - return $schedulerMock; - } - - public function getEventDispatcherMock() - { - $eventDispatcherMock = $this - ->getMockBuilder('Asylamba\Classes\Worker\EventDispatcher') - ->disableOriginalConstructor() - ->getMock() - ; - return $eventDispatcherMock; - } -} diff --git a/tests/Modules/Ares/Manager/FightManagerTest.php b/tests/Modules/Ares/Manager/FightManagerTest.php new file mode 100644 index 000000000..48e98e120 --- /dev/null +++ b/tests/Modules/Ares/Manager/FightManagerTest.php @@ -0,0 +1,120 @@ +get(FightManager::class); + + $commanderA = $this->getCommanderMock('attacker', 1); + $commanderD = $this->getCommanderMock('defender', 1); + + $fightManager->startFight( + $commanderA, + $commanderD, + ); + + LiveReport::$isLegal = true; + LiveReport::$dFight = new \DateTimeImmutable(); + + $report = Report::fromLiveReport($this->getPlaceMock()); + + dump($report); + } + + private function getCommanderMock(string $name, int $squadronsCount): Commander + { + $player = new Player(); + $player->victory = 5; + $player->defeat = 1; + + $commander = new Commander( + id: Uuid::v4(), + name: $name, + avatar: 't3-c4', + player: $player, + base: null, + enlistedAt: new \DateTimeImmutable(), + level: 1, + updatedAt: new \DateTimeImmutable(), + isVirtual: true, + ); + + for ($i = 0; $i < $squadronsCount; $i++) { + $commander->squadrons->add($this->getSquadronMock($commander)); + } + + return $commander; + } + + private function getSquadronMock(Commander $commander): Squadron + { + return new Squadron( + id: Uuid::v4(), + commander: $commander, + createdAt: new \DateTimeImmutable(), + updatedAt: new \DateTimeImmutable(), + ship0: 4, + ship1: 1, + ); + } + + private function getPlaceMock(): Place + { + return new Place( + id: Uuid::v4(), + player: null, + base: null, + system: new System( + id: Uuid::v4(), + sector: new Sector( + id: Uuid::v4(), + identifier: 1, + faction: null, + xPosition: 10, + yPosition: 10, + xBarycentric: 0, + yBarycentric: 0, + tax: 5, + name: null, + points: 5, + population: 0, + lifePlanet: 10, + prime: 1, + ), + faction: null, + xPosition: 10, + yPosition: 10, + typeOfSystem: 0, + ), + typeOfPlace: Place::TERRESTRIAL, + position: 1, + population: 100, + coefResources: 60, + coefHistory: 20, + resources: 0, + danger: 5, + maxDanger: 10, + updatedAt: new \DateTimeImmutable(), + ); + } +} diff --git a/tests/Modules/Ares/Model/CommanderTest.php b/tests/Modules/Ares/Model/CommanderTest.php deleted file mode 100644 index 048ee19ba..000000000 --- a/tests/Modules/Ares/Model/CommanderTest.php +++ /dev/null @@ -1,143 +0,0 @@ -setId(1) - ->setName('Theodorus') - ->setAge(40) - ->setSexe(1) - ->setAvatar('comm-12-1.png') - ->setLevel(2) - ->setExperience(200) - ->setComment('On my way !') - ->setDCreation($createdAt) - ->setDAffectation($affectedAt) - ->setDDeath(null) - ->setArrivalDate($arrivedAt) - ->setTravelType(Commander::LOOT) - ->setLengthTravel(15) - ->setRPlayer(1) - ->setRBase(18) - ->setBaseName('Zambia') - ->setRPlaceDestination(23) - ->setDestinationPlaceName('Planète rebelle') - ->setIsAttacker(true) - ->setPalmares(1) - ->setStatement(Commander::MOVING) - ->setUpdatedAt($updatedAt) - ; - $this->assertEquals(1, $commander->getId()); - $this->assertEquals('Theodorus', $commander->getName()); - $this->assertEquals(40, $commander->getAge()); - $this->assertEquals(1, $commander->getSexe()); - $this->assertEquals('comm-12-1.png', $commander->getAvatar()); - $this->assertEquals(2, $commander->getLevel()); - $this->assertEquals(200, $commander->getExperience()); - $this->assertEquals('On my way !', $commander->getComment()); - $this->assertEquals($createdAt, $commander->getDCreation()); - $this->assertEquals($affectedAt, $commander->getDAffectation()); - $this->assertNull($commander->getDDeath()); - $this->assertEquals($arrivedAt, $commander->getArrivalDate()); - $this->assertEquals(Commander::LOOT, $commander->getTravelType()); - $this->assertEquals(15, $commander->getLengthTravel()); - $this->assertEquals(1, $commander->getRPlayer()); - $this->assertEquals(18, $commander->getRBase()); - $this->assertEquals('Zambia', $commander->getBaseName()); - $this->assertEquals(23, $commander->getRPlaceDestination()); - $this->assertEquals('Planète rebelle', $commander->getDestinationPlaceName()); - $this->assertTrue($commander->getIsAttacker()); - $this->assertEquals(1, $commander->getPalmares()); - $this->assertEquals(Commander::MOVING, $commander->getStatement()); - $this->assertEquals($updatedAt, $commander->getUpdatedAt()); - } - - public function testArmy() - { - $commander = new Commander(); - foreach ($this->getSquadronsMock() as $squadron) { - $commander->addSquadronId($squadron['id']); - $commander->addArmyInBegin($squadron['data']); - } - $commander->setPevInBegin(); - - $this->assertCount(3, $commander->getArmyInBegin()); - $this->assertEquals(286, $commander->getPevInBegin()); - $this->assertEquals(3, $commander->getSizeArmy()); - $commander->setArmy(); - $this->assertCount(3, $commander->getArmy()); - } - - public function getSquadronsMock() - { - return [ - [ - 'id' => 1, - 'data' => [ - 2, - 0, - 17, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - '2017-05-16 20:00:00', - '2017-05-16 20:00:00' - ] - ], [ - 'id' => 2, - 'data' => [ - 2, - 0, - 17, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - '2017-05-16 20:00:00', - '2017-05-16 20:00:00' - ] - ], [ - 'id' => 3, - 'data' => [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - '2017-05-16 20:00:00', - '2017-05-16 20:00:00' - ] - ] - ]; - } -} \ No newline at end of file diff --git a/tests/Modules/Ares/Model/ShipTest.php b/tests/Modules/Ares/Model/ShipTest.php deleted file mode 100644 index e394294bc..000000000 --- a/tests/Modules/Ares/Model/ShipTest.php +++ /dev/null @@ -1,68 +0,0 @@ -setId(1); - - $this->assertEquals(1, $ship->getId()); - $this->assertEquals('Destroyer', $ship->getName()); - $this->assertEquals('Minotaure', $ship->getCodeName()); - $this->assertEquals(8, $ship->getNbrName()); - $this->assertEquals(1200, $ship->getLife()); - $this->assertEquals(88, $ship->getSpeed()); - $this->assertEquals(array(35, 35, 35, 35, 25, 10, 10), $ship->getAttack()); - $this->assertEquals(120, $ship->getDefense()); - $this->assertEquals(75, $ship->getPev()); - - } - - public function testFight() - { - /*$ship = new ship(); - $ship->engage($this->getSquadronMock());*/ - } - - public function testBonus() - { - - } - - protected function chooseEnemyMock($enemySquadron) { - return 0; - } - - public function getSquadronMock() - { - return [ - 'id' => 1, - 'data' => [ - 2, - 0, - 17, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - '2017-05-16 20:00:00', - '2017-05-16 20:00:00' - ] - ]; - } -} diff --git a/tests/Modules/Artemis/ArtemisModuleTest.php b/tests/Modules/Artemis/ArtemisModuleTest.php deleted file mode 100644 index f01525f08..000000000 --- a/tests/Modules/Artemis/ArtemisModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new ArtemisModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Artemis', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Athena/Application/Handler/Building/BuildingLevelHandlerTest.php b/tests/Modules/Athena/Application/Handler/Building/BuildingLevelHandlerTest.php new file mode 100644 index 000000000..4e1d072a3 --- /dev/null +++ b/tests/Modules/Athena/Application/Handler/Building/BuildingLevelHandlerTest.php @@ -0,0 +1,246 @@ +buildingLevelHandler = new BuildingLevelHandler(); + } + + public function testIncreaseBuildingLevel(): void + { + $orbitalBase = static::generateOrbitalBase(); + + $this->buildingLevelHandler->increaseBuildingLevel($orbitalBase, OrbitalBaseResource::GENERATOR); + $this->buildingLevelHandler->increaseBuildingLevel($orbitalBase, OrbitalBaseResource::SPATIOPORT); + $this->buildingLevelHandler->increaseBuildingLevel($orbitalBase, OrbitalBaseResource::REFINERY); + + static::assertEquals(4, $orbitalBase->levelGenerator); + static::assertEquals(1, $orbitalBase->levelSpatioport); + static::assertEquals(3, $orbitalBase->levelRefinery); + + $this->buildingLevelHandler->increaseBuildingLevel($orbitalBase, OrbitalBaseResource::GENERATOR); + + static::assertEquals(5, $orbitalBase->levelGenerator); + } + + public function testDecreaseBuildingLevel(): void + { + $orbitalBase = static::generateOrbitalBase(); + + $this->buildingLevelHandler->decreaseBuildingLevel($orbitalBase, OrbitalBaseResource::GENERATOR); + $this->buildingLevelHandler->decreaseBuildingLevel($orbitalBase, OrbitalBaseResource::SPATIOPORT); + $this->buildingLevelHandler->decreaseBuildingLevel($orbitalBase, OrbitalBaseResource::REFINERY); + + static::assertEquals(2, $orbitalBase->levelGenerator); + static::assertEquals(0, $orbitalBase->levelSpatioport); + static::assertEquals(1, $orbitalBase->levelRefinery); + + $this->buildingLevelHandler->decreaseBuildingLevel($orbitalBase, OrbitalBaseResource::GENERATOR); + + static::assertEquals(1, $orbitalBase->levelGenerator); + } + + public function testGetBuildingLevel(): void + { + $orbitalBase = $this->generateOrbitalBase(); + + static::assertEquals( + $orbitalBase->levelGenerator, + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, OrbitalBaseResource::GENERATOR), + ); + + static::assertEquals( + $orbitalBase->levelRefinery, + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, OrbitalBaseResource::REFINERY), + ); + + static::assertEquals( + $orbitalBase->levelStorage, + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, OrbitalBaseResource::STORAGE), + ); + + static::assertEquals( + $orbitalBase->levelDock1, + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, OrbitalBaseResource::DOCK1), + ); + + static::assertEquals( + $orbitalBase->levelCommercialPlateforme, + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, OrbitalBaseResource::COMMERCIAL_PLATEFORME), + ); + } + + /** + * @param list $buildingQueues + * + * @dataProvider provideData + */ + public function testGetBuildingRealLevel( + OrbitalBase $orbitalBase, + array $buildingQueues, + int $buildingIdentifier, + int $expectedRealLevel, + ): void { + $realLevel = $this->buildingLevelHandler->getBuildingRealLevel( + $orbitalBase, + $buildingIdentifier, + $buildingQueues, + ); + + static::assertEquals($realLevel, $expectedRealLevel); + } + + public function testGetInvalidBuildingLevel(): void + { + $orbitalBase = static::generateOrbitalBase(); + + static::expectException(\LogicException::class); + static::expectExceptionMessage('Building identifier 99 is not valid'); + + $this->buildingLevelHandler->getBuildingLevel($orbitalBase, 99); + } + + public function testGetInvalidBuildingRealLevel(): void + { + $orbitalBase = static::generateOrbitalBase(); + $buildingQueues = static::generateBuildingQueues($orbitalBase); + + static::expectException(\LogicException::class); + static::expectExceptionMessage('Building identifier 99 is not valid'); + + $this->buildingLevelHandler->getBuildingRealLevel($orbitalBase, 99, $buildingQueues); + } + + /** + * @return \Generator{0: OrbitalBase, 1: list, 2: int, 3: int} + */ + public static function provideData(): \Generator + { + $orbitalBase = static::generateOrbitalBase(); + $buildingQueues = static::generateBuildingQueues($orbitalBase); + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::GENERATOR, + 7, + ]; + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::REFINERY, + 4, + ]; + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::COMMERCIAL_PLATEFORME, + 1, + ]; + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::DOCK1, + 2, + ]; + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::STORAGE, + 5, + ]; + + yield [ + $orbitalBase, + $buildingQueues, + OrbitalBaseResource::DOCK2, + 0, + ]; + } + + private static function generateOrbitalBase(): OrbitalBase + { + return new OrbitalBase( + id: Uuid::v4(), + place: new Place( + id: Uuid::v4(), + player: new Player(), + base: null, + system: new System( + id: Uuid::v4(), + sector: null, + faction: null, + xPosition: 10, + yPosition: 20, + typeOfSystem: 0, + ), + typeOfPlace: Place::TERRESTRIAL, + position: 1, + population: 100, + coefResources: 60, + coefHistory: 20, + resources: 20000, + danger: 40, + maxDanger: 60, + updatedAt: new \DateTimeImmutable(), + ), + player: new Player(), + name: 'My wonderful base', + levelGenerator: 3, + levelRefinery: 2, + levelCommercialPlateforme: 0, + levelStorage: 5, + ); + } + + /** + * @return list + */ + private static function generateBuildingQueues(OrbitalBase $orbitalBase): array + { + return [ + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::GENERATOR, 6), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::GENERATOR, 5), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::REFINERY, 4), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::GENERATOR, 7), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::REFINERY, 3), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::COMMERCIAL_PLATEFORME, 1), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::DOCK1, 1), + static::generateBuildingQueue($orbitalBase, OrbitalBaseResource::DOCK1, 2), + ]; + } + + private static function generateBuildingQueue( + OrbitalBase $orbitalBase, + int $buildingIdentifier, + int $targetLevel, + ): BuildingQueue { + return new BuildingQueue( + id: Uuid::v4(), + base: $orbitalBase, + buildingNumber: $buildingIdentifier, + targetLevel: $targetLevel, + startedAt: new \DateTimeImmutable(), + endedAt: new \DateTimeImmutable(), + ); + } +} diff --git a/tests/Modules/Athena/AthenaModuleTest.php b/tests/Modules/Athena/AthenaModuleTest.php deleted file mode 100644 index 421063048..000000000 --- a/tests/Modules/Athena/AthenaModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new AthenaModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Athena', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandlerTest.php b/tests/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandlerTest.php new file mode 100644 index 000000000..e32affb43 --- /dev/null +++ b/tests/Modules/Athena/Domain/Service/Base/Building/BuildingDataHandlerTest.php @@ -0,0 +1,65 @@ +get(BuildingDataHandler::class); + + static::assertSame($handler->getBuildingTimeCost($identifier, $level), $costs['time']); + } + + #[DataProvider('provideTestDataForBuildingCost')] + public function testGetBuildingResourceCost(int $identifier, int $level, array $costs): void + { + static::bootKernel(); + /** @var BuildingDataHandler $handler */ + $handler = static::getContainer()->get(BuildingDataHandler::class); + + static::assertSame($handler->getBuildingResourceCost($identifier, $level), $costs['resources']); + } + + /** + * @return Generator + */ + public static function provideTestDataForBuildingCost(): Generator + { + yield [ + OrbitalBaseResource::GENERATOR, + 2, + [ + 'time' => 28, + 'resources' => 137, + ], + ]; + + yield [ + OrbitalBaseResource::REFINERY, + 14, + [ + 'time' => 800, + 'resources' => 4130, + ], + ]; + + yield [ + OrbitalBaseResource::SPATIOPORT, + 10, + [ + 'time' => 2066, + 'resources' => 27000, + ], + ]; + } +} diff --git a/tests/Modules/Athena/Infrastructure/Validator/CanMakeBuildingValidatorTest.php b/tests/Modules/Athena/Infrastructure/Validator/CanMakeBuildingValidatorTest.php new file mode 100644 index 000000000..de66e69d6 --- /dev/null +++ b/tests/Modules/Athena/Infrastructure/Validator/CanMakeBuildingValidatorTest.php @@ -0,0 +1,113 @@ +get(ValidatorInterface::class); + SmallMapStory::load(); + + $base = OrbitalBaseFactory::createOne([ + 'levelGenerator' => 9, + 'levelSpatioport' => 0, + ])->object(); + $targetLevel = 1; + $technology = TechnologyFactory::createOne()->object(); + $buildingIdentifier = OrbitalBaseResource::SPATIOPORT; + $buildingQueuesCount = 0; + $violationList = []; + + $buildingConstructionOrder = new BuildingConstructionOrder( + orbitalBase: $base, + technology: $technology, + buildingIdentifier: $buildingIdentifier, + targetLevel: $targetLevel, + ); + + $violations = $validator->validate($buildingConstructionOrder, new CanMakeBuilding($buildingQueuesCount)); + + static::assertCount(count($violationList), $violations); + + foreach ($violations as $violation) { + static::assertInstanceOf(HasUnlockedBuilding::class, $violation->getConstraint()); + } + } + + public function testValidatorManually(): void + { + static::markTestSkipped('Must fix usage of Foundry stories'); + + static::bootKernel(); + /** @var ValidatorInterface $validator */ + $validator = static::getContainer()->get(ValidatorInterface::class); + + SmallMapStory::load(); + + $base = OrbitalBaseFactory::createOne([ + 'levelGenerator' => 9, + 'levelSpatioport' => 0, + ])->object(); + $technology = TechnologyFactory::createOne()->object(); + $buildingIdentifier = OrbitalBaseResource::SPATIOPORT; + $targetLevel = 1; + $violationList = [ + + ]; + + $buildingConstructionOrder = new BuildingConstructionOrder( + orbitalBase: $base, + technology: $technology, + buildingIdentifier: $buildingIdentifier, + targetLevel: $targetLevel, + ); + + $violations = $validator->validate($buildingConstructionOrder, new CanMakeBuilding(0)); + + static::assertCount(count($violationList), $violations); + + foreach ($violations as $violation) { + static::assertInstanceOf(HasUnlockedBuilding::class, $violation->getConstraint()); + } + } + + private function provideData(): \Generator + { + yield [ + OrbitalBaseFactory::new()->withoutPersisting()->create([ + 'levelGenerator' => 9, + 'levelSpatioport' => 0, + ]), + TechnologyFactory::new()->withoutPersisting()->create(), + OrbitalBaseResource::SPATIOPORT, + 1, + [ + + ] + ]; + } +} diff --git a/tests/Modules/Atlas/AtlasModuleTest.php b/tests/Modules/Atlas/AtlasModuleTest.php deleted file mode 100644 index 8af13ddb4..000000000 --- a/tests/Modules/Atlas/AtlasModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new AtlasModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Atlas', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Atlas/Routine/FactionRoutineTest.php b/tests/Modules/Atlas/Routine/FactionRoutineTest.php index 3334a0091..ae1121870 100644 --- a/tests/Modules/Atlas/Routine/FactionRoutineTest.php +++ b/tests/Modules/Atlas/Routine/FactionRoutineTest.php @@ -1,45 +1,53 @@ 140, 2 => 142, 4 => 130, 5 => 135, ]; - + public function setUp(): void { - $this->routine = new FactionRoutine(); + static::bootKernel(); + + $this->routine = static::getContainer()->get(FactionRoutineHandler::class); $this->rankings = []; } - - public function testExecute() + + public function testExecute(): never { + static::markTestSkipped('Must migrate to the new domain model classes'); + $faction = $this->getFactionMock(1); - - $this->routine->execute($faction, $this->getPlayerRankingsMock(1), $this->getRoutesIncomeMock(1), $this->getSectorsMock()); - + + $this->routine->execute( + $faction, + $this->getPlayerRankingsMock(1), + $this->getRoutesIncomeMock(1), + $this->getSectorsMock()); + $results = $this->routine->getResults(); - + $this->assertCount(1, $results); $this->assertArrayHasKey(1, $results); $this->assertEquals(11634, $results[1]['general']); @@ -47,22 +55,44 @@ public function testExecute() $this->assertEquals(5, $results[1]['territorial']); $this->assertEquals(140, $results[1]['points']); } - - public function testProcessResults() + + public function testProcessResults(): never { + static::markTestSkipped('Must migrate to the new domain model classes'); + $factions = [ $this->getFactionMock(1), $this->getFactionMock(2), $this->getFactionMock(4), - $this->getFactionMock(5) + $this->getFactionMock(5), ]; - $this->routine->execute($factions[0], $this->getPlayerRankingsMock(1), $this->getRoutesIncomeMock(1), $this->getSectorsMock()); - $this->routine->execute($factions[1], $this->getPlayerRankingsMock(2), $this->getRoutesIncomeMock(3), $this->getSectorsMock()); - $this->routine->execute($factions[2], $this->getPlayerRankingsMock(4), $this->getRoutesIncomeMock(2), $this->getSectorsMock()); - $this->routine->execute($factions[3], $this->getPlayerRankingsMock(5), $this->getRoutesIncomeMock(4), $this->getSectorsMock()); - - $this->routine->processResults($this->getRankingMock(), $factions, $this->getFactionRankingManagerMock()); - + $this->routine->execute( + $factions[0], + $this->getPlayerRankingsMock(1), + $this->getRoutesIncomeMock(1), + $this->getSectorsMock(), + ); + $this->routine->execute( + $factions[1], + $this->getPlayerRankingsMock(2), + $this->getRoutesIncomeMock(3), + $this->getSectorsMock(), + ); + $this->routine->execute( + $factions[2], + $this->getPlayerRankingsMock(4), + $this->getRoutesIncomeMock(2), + $this->getSectorsMock(), + ); + $this->routine->execute( + $factions[3], + $this->getPlayerRankingsMock(5), + $this->getRoutesIncomeMock(4), + $this->getSectorsMock(), + ); + + $this->routine->processResults($this->getRankingMock(), $factions); + $this->assertCount(4, $this->rankings); $this->assertEquals(1, $this->rankings[0]->getFactionId()); $this->assertEquals(165, $this->rankings[0]->getPoints()); @@ -78,7 +108,7 @@ public function testProcessResults() $this->assertEquals(5, $this->rankings[0]->getTerritorial()); $this->assertEquals(1, $this->rankings[0]->getTerritorialPosition()); $this->assertEquals(3, $this->rankings[0]->getTerritorialVariation()); - + $this->assertEquals(2, $this->rankings[1]->getFactionId()); $this->assertEquals(171, $this->rankings[1]->getPoints()); $this->assertEquals(1, $this->rankings[1]->getPointsPosition()); @@ -93,7 +123,7 @@ public function testProcessResults() $this->assertEquals(1, $this->rankings[1]->getTerritorial()); $this->assertEquals(2, $this->rankings[1]->getTerritorialPosition()); $this->assertEquals(0, $this->rankings[1]->getTerritorialVariation()); - + $this->assertEquals(4, $this->rankings[2]->getFactionId()); $this->assertEquals(156, $this->rankings[2]->getPoints()); $this->assertEquals(4, $this->rankings[2]->getPointsPosition()); @@ -108,7 +138,7 @@ public function testProcessResults() $this->assertEquals(1, $this->rankings[2]->getTerritorial()); $this->assertEquals(2, $this->rankings[2]->getTerritorialPosition()); $this->assertEquals(1, $this->rankings[2]->getTerritorialVariation()); - + $this->assertEquals(5, $this->rankings[3]->getFactionId()); $this->assertEquals(170, $this->rankings[3]->getPoints()); $this->assertEquals(2, $this->rankings[3]->getPointsPosition()); @@ -124,59 +154,28 @@ public function testProcessResults() $this->assertEquals(2, $this->rankings[3]->getTerritorialPosition()); $this->assertEquals(-1, $this->rankings[3]->getTerritorialVariation()); } - - public function getFactionMock($id) - { - return - (new Color()) - ->setId($id) - ->setOfficialName(ColorResource::getInfo($id, 'officialName')) - ->setPopularName(ColorResource::getInfo($id, 'popularName')) - ->setDevise(ColorResource::getInfo($id, 'devise')) - ->setPlayers(11) - ->setActivePlayers(8) - ->setChiefId(3) - ->setCredits(15000) - ->setIsInGame(true) - ->setIsClosed(false) - ->setIsWinner(false) - ->setRankingPoints($this->rankingPoints[$id]) - ; - } - - public function getRankingMock() + + public function getFactionMock(int $identifier): Color { - return - (new Ranking()) - ->setId(1) - ; + return new Color( + id: Uuid::v4(), + identifier: $identifier, + isWinner: false, + credits: 15000, + rankingPoints: $this->rankingPoints[$identifier], + isClosed: false, + isInGame: true, + ); } - - public function getFactionRankingManagerMock() + + public function getRankingMock(): Ranking { - $factionRankingManager = $this - ->getMockBuilder('Asylamba\Modules\Atlas\Manager\FactionRankingManager') - ->disableOriginalConstructor() - ->getMock() - ; - $factionRankingManager - ->expects($this->any()) - ->method('size') - ->willReturn(4) - ; - $factionRankingManager - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getFactionRankingMock']) - ; - $factionRankingManager - ->expects($this->any()) - ->method('add') - ->willReturnCallback([$this, 'storeFactionRanking']) - ; - return $factionRankingManager; + return new Ranking( + id: 1, + createdAt: new \DateTimeImmutable(), + ); } - + public function getFactionRankingMock($id) { return [ @@ -210,12 +209,12 @@ public function getFactionRankingMock($id) ->setTerritorialPosition(1), ][$id]; } - + public function storeFactionRanking(FactionRanking $factionRanking) { $this->rankings[] = $factionRanking; } - + public function getPlayerRankingsMock($factionId) { return [ @@ -266,18 +265,18 @@ public function getPlayerRankingsMock($factionId) (new Player()) ->setRColor($factionId) ) - ->setGeneral(533) + ->setGeneral(533), ]; } - + public function getRoutesIncomeMock($coeff) { return [ 'nb' => 6, - 'income' => 22560 * $coeff + 'income' => 22560 * $coeff, ]; } - + public function getSectorsMock() { return [ diff --git a/tests/Modules/Demeter/Application/Election/NextElectionDateCalculatorTest.php b/tests/Modules/Demeter/Application/Election/NextElectionDateCalculatorTest.php new file mode 100644 index 000000000..f63b354be --- /dev/null +++ b/tests/Modules/Demeter/Application/Election/NextElectionDateCalculatorTest.php @@ -0,0 +1,148 @@ +value; + $nextElectionDateCalculator = static::getContainer()->get(NextElectionDateCalculator::class); + + $faction = FactionFactory::createOne([ + 'identifier' => $data['identifier'], + 'regime' => $data['regime'], + 'electionStatement' => $data['electionStatement'], + 'lastElectionHeldAt' => $data['lastElectionHeldAt'], + ])->object(); + ElectionFactory::createOne([ + 'faction' => $faction, + 'dElection' => $data['lastElectionHeldAt'], + ])->object(); + + $startDate = $nextElectionDateCalculator->getCampaignStartDate($faction); + + static::assertEquals($expected['campaign_start_date'], $startDate); + } + + #[DataProvider('provideData')] + public function testGetPutschEndDate(array $data, array $expected, TimeMode $timeMode): void + { + $_ENV['SERVER_TIME_MODE'] = $timeMode->value; + $nextElectionDateCalculator = static::getContainer()->get(NextElectionDateCalculator::class); + + $faction = FactionFactory::createOne([ + 'identifier' => $data['identifier'], + 'regime' => $data['regime'], + 'electionStatement' => $data['electionStatement'], + 'lastElectionHeldAt' => $data['lastElectionHeldAt'], + ])->object(); + ElectionFactory::createOne([ + 'faction' => $faction, + 'dElection' => $data['lastElectionHeldAt'], + ])->object(); + + $campaignEndDate = $nextElectionDateCalculator->getCampaignEndDate($faction); + + static::assertEquals($expected['putsch_end_date'], $campaignEndDate); + } + + public function testGetEndDate(): void + { + self::markTestIncomplete('Not Implemented'); + } + + public function testGetStartDate(): void + { + self::markTestIncomplete('Not Implemented'); + } + + public function testGetBallotDate(): void + { + self::markTestIncomplete('Not Implemented'); + } + + public function testGetSenateUpdateMessage(): void + { + self::markTestIncomplete('Not Implemented'); + } + + public function testGetCampaignEndDate(): void + { + self::markTestIncomplete('Not Implemented'); + } + + /** + * @return Generator>> + */ + public static function provideData(): Generator + { + Clock::set(new MockClock('2023-06-05 10:00:00')); + + yield 'Standard mode' => [ + [ + 'identifier' => ColorResource::EMPIRE, + 'regime' => Color::REGIME_DEMOCRATIC, + 'electionStatement' => Color::MANDATE, + 'lastElectionHeldAt' => new DatePoint('2023-06-01 17:00:00'), + ], + [ + 'campaign_start_date' => new DatePoint('2023-06-08 17:00:00'), + 'putsch_end_date' => new DatePoint('2023-06-12 17:00:00'), + ], + TimeMode::Standard, + ]; + + yield 'Standard mode with late elections' => [ + [ + 'identifier' => ColorResource::EMPIRE, + 'regime' => Color::REGIME_DEMOCRATIC, + 'electionStatement' => Color::MANDATE, + 'lastElectionHeldAt' => new DatePoint('2023-03-28 17:00:00'), + ], + [ + 'campaign_start_date' => new DatePoint('2023-06-06 17:00:00'), + 'putsch_end_date' => new DatePoint('2023-06-13 17:00:00'), + ], + TimeMode::Standard, + ]; + + yield 'Fast mode with late elections' => [ + [ + 'identifier' => ColorResource::EMPIRE, + 'regime' => Color::REGIME_DEMOCRATIC, + 'electionStatement' => Color::MANDATE, + 'lastElectionHeldAt' => new DatePoint('2023-06-04 17:00:00'), + ], + [ + 'campaign_start_date' => new DatePoint('2023-06-05 10:38:24'), + 'putsch_end_date' => new DatePoint('2023-06-05 10:32:36'), + ], + TimeMode::Fast, + ]; + } +} diff --git a/tests/Modules/Demeter/DemeterModuleTest.php b/tests/Modules/Demeter/DemeterModuleTest.php deleted file mode 100644 index 7a19d0216..000000000 --- a/tests/Modules/Demeter/DemeterModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new DemeterModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Demeter', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Demeter/Domain/Service/Law/GetApplicationDurationTest.php b/tests/Modules/Demeter/Domain/Service/Law/GetApplicationDurationTest.php new file mode 100644 index 000000000..52a2433d3 --- /dev/null +++ b/tests/Modules/Demeter/Domain/Service/Law/GetApplicationDurationTest.php @@ -0,0 +1,103 @@ +value; + static::bootKernel(); + + Clock::set(new MockClock('2024-01-01 10:00:00')); + + if ($expectedException) { + static::expectException(\InvalidArgumentException::class); + } + + /** @var GetApplicationDuration $getApplicationDuration */ + $getApplicationDuration = static::getContainer()->get(GetApplicationDuration::class); + + $duration = $getApplicationDuration($lawType, $cycles); + + static::assertEquals(new DatePoint($expectedEndDate), $duration); + } + + public static function provideData(): \Generator + { + yield 'Standard instantaneous law' => [ + Law::COMTAXEXPORT, + null, + '2024-01-01 10:00:00', + ]; + + yield 'Standard instaneous law with forbidden cycles argument' => [ + Law::COMTAXEXPORT, + 3, + '2024-01-01 10:00:00', + true, + ]; + + yield 'Standard duration law with missing cycles argument' => [ + Law::MILITARYSUBVENTION, + null, + '2024-01-01 10:00:00', + true, + ]; + + yield 'Standard duration law' => [ + Law::MILITARYSUBVENTION, + 5, + '2024-01-01 15:00:00', + ]; + + yield 'Fast duration law' => [ + Law::MILITARYSUBVENTION, + 6, + '2024-01-01 11:00:00', + false, + TimeMode::Fast, + ]; + + yield 'Standard duration law with minimum duration' => [ + Law::MILITARYSUBVENTION, + -4, + '2024-01-01 11:00:00', + false, + TimeMode::Fast, + ]; + + yield 'Fast duration law with minimum duration' => [ + Law::MILITARYSUBVENTION, + -4, + '2024-01-01 10:10:00', + false, + TimeMode::Fast, + ]; + + yield 'Standard duration law with exceeding duration' => [ + Law::MILITARYSUBVENTION, + 3000, + '+100 days', + ]; + + yield 'Fast duration law with exceeding duration' => [ + Law::MILITARYSUBVENTION, + 100000, + '+100 days', + false, + TimeMode::Fast, + ]; + } +} diff --git a/tests/Modules/Demeter/Manager/ColorManagerTest.php b/tests/Modules/Demeter/Manager/ColorManagerTest.php deleted file mode 100644 index 9a0081dfd..000000000 --- a/tests/Modules/Demeter/Manager/ColorManagerTest.php +++ /dev/null @@ -1,546 +0,0 @@ -manager = new ColorManager( - $this->getEntityManagerMock(), - $this->getPlayerManagerMock(), - $this->getVoteManagerMock(), - $this->getConversationManagerMock(), - $this->getCandidateManagerMock(), - $this->getElectionManagerMock(), - $this->getLawManagerMock(), - $this->getNotificationManagerMock(), - $this->getConversationMessageManagerMock(), - $this->getCommercialTaxManagerMock(), - $this->getSectorManagerMock(), - $this->getCommercialRouteManagerMock(), - $this->getParserMock(), - $this->getCTCMock(), - $this->getSchedulerMock() - ); - } - - public function testGet() - { - $faction = $this->manager->get(1); - - $this->assertEquals(1, $faction->getId()); - $this->assertEquals('Pokemon', $faction->getPopularName()); - $this->assertEquals('La Ligue', $faction->getOfficialName()); - $this->assertFalse($faction->getIsWinner()); - $this->assertFalse($faction->getIsClosed()); - $this->assertTrue($faction->getIsInGame()); - } - - public function testUpdateInfos() - { - $faction = $this->getFactionMock(1); - - $this->manager->updateInfos($faction); - - $this->assertEquals(18, $faction->getPlayers()); - $this->assertEquals(15, $faction->getActivePlayers()); - } - - public function testSendSenateNotif() - { - $this->assertNull($this->manager->sendSenateNotif($this->getFactionMock(1))); - $this->assertNull($this->manager->sendSenateNotif($this->getFactionMock(2), true)); - } - - public function testUpdateSenate() - { - $this->assertNull($this->manager->updateSenate(1)); - } - - public function testUpdateStatus() - { - $players = $this->getFactionPlayersByRankingMock(1); - - $this->manager->updateStatus($this->getFactionMock(1), $players); - - $this->assertEquals(Player::PARLIAMENT, $players[0]->getStatus()); - $this->assertEquals(Player::PARLIAMENT, $players[1]->getStatus()); - $this->assertEquals(Player::PARLIAMENT, $players[5]->getStatus()); - $this->assertEquals(Player::PARLIAMENT, $players[9]->getStatus()); - $this->assertEquals(Player::STANDARD, $players[10]->getStatus()); - $this->assertEquals(Player::STANDARD, $players[11]->getStatus()); - } - - public function getEntityManagerMock() - { - $entityManagerMock = $this - ->getMockBuilder('Asylamba\Classes\Entity\EntityManager') - ->disableOriginalConstructor() - ->getMock() - ; - $entityManagerMock - ->expects($this->any()) - ->method('getRepository') - ->willReturnCallback([$this, 'getRepositoryMock']) - ; - $entityManagerMock - ->expects($this->any()) - ->method('persist') - ->willReturn(true) - ; - $entityManagerMock - ->expects($this->any()) - ->method('remove') - ->willReturn(true) - ; - $entityManagerMock - ->expects($this->any()) - ->method('flush') - ->willReturn(true) - ; - return $entityManagerMock; - } - - public function getRepositoryMock() - { - $repositoryMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Repository\ColorRepository') - ->disableOriginalConstructor() - ->getMock() - ; - $repositoryMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getFactionMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getAll') - ->willReturnCallback([$this, 'getAllFactionsMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getOpenFactions') - ->willReturnCallback([$this, 'getOpenFactionsMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getInGameFactions') - ->willReturnCallback([$this, 'getInGameFactionsMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getAllByActivePlayersNumber') - ->willReturnCallback([$this, 'getAllByActivePlayersNumberMock']) - ; - $repositoryMock - ->expects($this->any()) - ->method('getByRegimeAndElectionStatement') - ->willReturnCallback([$this, 'getByRegimeAndElectionStatementMock']) - ; - return $repositoryMock; - } - - public function getFactionMock($id) - { - return - (new Color()) - ->setId($id) - ->setChiefId(1) - ->setCredits(10000) - ->setDevise('Ensemble pour la victoire !') - ->setElectionStatement(Color::MANDATE) - ->setMandateDuration(1800) - ->setPopularName('Pokemon') - ->setOfficialName('La Ligue') - ->setRegime(Color::ROYALISTIC) - ->setIsInGame(true) - ->setIsWinner(false) - ->setIsClosed(false) - ->setAlive(true) - ; - } - - public function getAllFactionsMock() - { - return []; - } - - public function getOpenFactionsMock() - { - return []; - } - - public function getInGameFactionsMock() - { - return []; - } - - public function getAllByActivePlayersNumberMock() - { - return []; - } - - public function getByRegimeAndElectionStatus() - { - return []; - } - - public function getPlayerManagerMock() - { - $playerManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Zeus\Manager\PlayerManager') - ->disableOriginalConstructor() - ->getMock() - ; - $playerManagerMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getPlayerMock']) - ; - $playerManagerMock - ->expects($this->any()) - ->method('countByFactionAndStatements') - ->willReturnCallback([$this, 'getFactionPlayersCountMock']) - ; - $playerManagerMock - ->expects($this->any()) - ->method('getFactionPlayersByRanking') - ->willReturnCallback([$this, 'getFactionPlayersByRankingMock']) - ; - $playerManagerMock - ->expects($this->any()) - ->method('getParliamentMembers') - ->willReturnCallback([$this, 'getParliamentMembersMock']) - ; - return $playerManagerMock; - } - - public function getPlayerMock($id) - { - return - (new Player()) - ->setId($id) - ->setName('Pokahontas') - ->setBind('8zg4zef6ef') - ->setCredit(5000000) - ->setAvatar('1-5.png') - ->setLevel(5) - ->setDefeat(10) - ->setVictory(15) - ->setStatement(Player::ACTIVE) - ->setStatus(Player::PARLIAMENT) - ; - } - - public function getFactionPlayersByRankingMock($factionId) - { - return [ - (new Player()) - ->setId(156) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(2500), - (new Player()) - ->setId(2) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(2450), - (new Player()) - ->setId(25) - ->setStatus(Player::STANDARD) - ->setFactionPoints(2300), - (new Player()) - ->setId(45) - ->setStatus(Player::STANDARD) - ->setFactionPoints(2220), - (new Player()) - ->setId(5) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1987), - (new Player()) - ->setId(62) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1658), - (new Player()) - ->setId(70) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1559), - (new Player()) - ->setId(8) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1550), - (new Player()) - ->setId(92) - ->setStatus(Player::STANDARD) - ->setFactionPoints(1450), - (new Player()) - ->setId(10) - ->setStatus(Player::STANDARD) - ->setFactionPoints(1400), - (new Player()) - ->setId(11) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1398), - (new Player()) - ->setId(12) - ->setStatus(Player::PARLIAMENT) - ->setFactionPoints(1364) - ]; - } - - public function getParliamentMembersMock() - { - return [ - (new Player())->setId(1), - (new Player())->setId(2), - (new Player())->setId(3), - (new Player())->setId(4), - (new Player())->setId(5), - (new Player())->setId(6), - (new Player())->setId(7), - (new Player())->setId(8), - (new Player())->setId(9), - (new Player())->setId(10), - ]; - } - - /** - * @param int $factionId - * @param array $statements - * @return int - */ - public function getFactionPlayersCountMock($factionId, $statements) - { - return - (count($statements) > 1) - ? 18 - : 15 - ; - } - - public function getVoteManagerMock() - { - $voteManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Manager\Election\VoteManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $voteManagerMock; - } - - public function getConversationManagerMock() - { - $conversationManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Hermes\Manager\ConversationManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $conversationManagerMock; - } - - public function getCandidateManagerMock() - { - $candidateManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Manager\Election\CandidateManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $candidateManagerMock; - } - - public function getElectionManagerMock() - { - $electionManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Manager\Election\ElectionManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $electionManagerMock; - } - - public function getLawManagerMock() - { - $lawManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Demeter\Manager\Law\LawManager') - ->disableOriginalConstructor() - ->getMock() - ; - $lawManagerMock - ->expects($this->any()) - ->method('getByFactionAndStatements') - ->willReturnCallback([$this, 'getLawsMock']) - ; - $lawManagerMock - ->expects($this->any()) - ->method('ballot') - ->willReturn(true) - ; - return $lawManagerMock; - } - - public function getLawsMock($factionId) - { - return [ - (new Law()) - ->setId(1) - ->setFactionId($factionId) - ->setStatement(Law::VOTATION) - ->setType(Law::PEACEPACT) - ->setOptions(['rColor' => 2]) - ->setCreatedAt((new \DateTime('-2 days'))->format('Y-m-d H:i:s')) - ->setVotedAt((new \DateTime('-2 hours'))->format('Y-m-d H:i:s')), - (new Law()) - ->setId(2) - ->setFactionId($factionId) - ->setStatement(Law::VOTATION) - ->setType(Law::SECTORNAME) - ->setOptions(['rSector' => 1]) - ->setCreatedAt((new \DateTime('-2 days'))->format('Y-m-d H:i:s')) - ->setVotedAt((new \DateTime('+2 hours'))->format('Y-m-d H:i:s')), - (new Law()) - ->setId(3) - ->setFactionId($factionId) - ->setStatement(Law::EFFECTIVE) - ->setType(Law::TECHNOLOGYTRANSFER) - ->setCreatedAt((new \DateTime('-2 days'))->format('Y-m-d H:i:s')) - ->setVotedAt((new \DateTime('-3 hours'))->format('Y-m-d H:i:s')) - ->setEndedAt((new \DateTime('+7 days'))->format('Y-m-d H:i:s')) - ]; - } - - public function getNotificationManagerMock() - { - $notificationManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Hermes\Manager\NotificationManager') - ->disableOriginalConstructor() - ->getMock() - ; - $notificationManagerMock - ->expects($this->any()) - ->method('add') - ->willReturn(true) - ; - return $notificationManagerMock; - } - - public function getConversationMessageManagerMock() - { - $conversationMessageManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Hermes\Manager\ConversationMessageManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $conversationMessageManagerMock; - } - - public function getCommercialTaxManagerMock() - { - $commercialTaxManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Athena\Manager\CommercialTaxManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $commercialTaxManagerMock; - } - - public function getSectorManagerMock() - { - $sectorManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Gaia\Manager\SectorManager') - ->disableOriginalConstructor() - ->getMock() - ; - $sectorManagerMock - ->expects($this->any()) - ->method('get') - ->willReturnCallback([$this, 'getSectorMock']) - ; - return $sectorManagerMock; - } - - public function getSectorMock($id) - { - return - (new Sector()) - ->setId($id) - ->setName('Secteur ' . $id) - ->setLifePlanet(500) - ->setPoints(2) - ->setPopulation(155000200) - ->setRColor(1) - ->setPrime(false) - ->setTax(5) - - ; - } - - public function getCommercialRouteManagerMock() - { - $commercialRouteManagerMock = $this - ->getMockBuilder('Asylamba\Modules\Athena\Manager\CommercialRouteManager') - ->disableOriginalConstructor() - ->getMock() - ; - return $commercialRouteManagerMock; - } - - public function getParserMock() - { - $parserMock = $this - ->getMockBuilder('Asylamba\Classes\Library\Parser') - ->disableOriginalConstructor() - ->getMock() - ; - return $parserMock; - } - - public function getCTCMock() - { - $ctcMock = $this - ->getMockBuilder('Asylamba\Classes\Worker\CTC') - ->disableOriginalConstructor() - ->getMock() - ; - $ctcMock - ->expects($this->any()) - ->method('createContext') - ->willReturn(true) - ; - $ctcMock - ->expects($this->any()) - ->method('add') - ->willReturn(true) - ; - $ctcMock - ->expects($this->any()) - ->method('applyContext') - ->willReturn(true) - ; - return $ctcMock; - } - - public function getSchedulerMock() - { - $schedulerMock = $this - ->getMockBuilder('Asylamba\Classes\Scheduler\RealTimeActionScheduler') - ->disableOriginalConstructor() - ->getMock() - ; - $schedulerMock - ->expects($this->any()) - ->method('schedule') - ->willReturn(true) - ; - return $schedulerMock; - } -} diff --git a/tests/Modules/Demeter/Model/ColorTest.php b/tests/Modules/Demeter/Model/ColorTest.php deleted file mode 100644 index bbdefa030..000000000 --- a/tests/Modules/Demeter/Model/ColorTest.php +++ /dev/null @@ -1,61 +0,0 @@ -setId(1) - ->setAlive(TRUE) - ->setisWinner(FALSE) - ->setCredits(1000) - //->setPlayers() - //->setActivePlayers() - ->setRankingPoints(820) - ->setPoints(1200) - //->setSectors() - //->setElectionStatement() - ->setIsClosed(TRUE) - ->setDescription("Descrip") - ->setDClaimVictory(TRUE) - ->setDLastElection('2017-05-06 21:20:30') - ->setIsInGame(TRUE) - ; - - $this->assertEquals(1, $color->getId()); - $this->assertEquals(TRUE, $color->getAlive()); - $this->assertEquals(FALSE, $color->getIsWinner()); - $this->assertEquals(1000, $color->getCredits()); - //$this->assertEquals(, $color->getPlayers()); - //$this->assertEquals(, $color->getActivePlayers()); - $this->assertEquals(820, $color->getRankingPoints()); - $this->assertEquals(1200, $color->getPoints()); - //$this->assertEquals(, $color->getSectors()); - //$this->assertEquals(, $color->getElectionStatement()); - $this->assertEquals(TRUE, $color->getIsClosed()); - $this->assertEquals("Descrip", $color->getDescription()); - $this->assertEquals(TRUE, $color->getDClaimVictory()); - $this->assertEquals('2017-05-06 21:20:30', $color->getDLastElection()); - $this->assertEquals(TRUE, $color->getIsInGame()); - } - - public function testIncreaseCredit() - { - $color = new color(); - $color->setCredits(1000); - $this->assertEquals(2324, $color->increaseCredit(1324)); - } - - public function testDecreaseCredit() - { - $color = new color(); - $color->setCredits(1000); - $this->assertEquals(505, $color->decreaseCredit(495)); - } -} diff --git a/tests/Modules/Gaia/Application/Handler/GetDistanceBetweenPlacesTest.php b/tests/Modules/Gaia/Application/Handler/GetDistanceBetweenPlacesTest.php new file mode 100644 index 000000000..609415303 --- /dev/null +++ b/tests/Modules/Gaia/Application/Handler/GetDistanceBetweenPlacesTest.php @@ -0,0 +1,68 @@ + SystemFactory::createOne([ + 'sector' => SectorFactory::createOne([])->object(), + 'xPosition' => $xA, + 'yPosition' => $yA, + ])->object(), + ])->object(); + + $to = PlaceFactory::createOne([ + 'system' => SystemFactory::createOne([ + 'sector' => SectorFactory::createOne([])->object(), + 'xPosition' => $xB, + 'yPosition' => $yB, + ])->object(), + ])->object(); + + static::assertSame($expectedDistance, $getDistanceBetweenPlaces($from, $to)); + } + + public static function provideData(): Generator + { + yield [ + 20, + 25, + 40, + 60, + 40.0, + ]; + + yield [ + 13, + 17, + 13, + 14, + 3.0, + ]; + + yield [ + 26, + 17, + 13, + 16, + 13.0, + ]; + } +} diff --git a/tests/Modules/Gaia/GaiaModuleTest.php b/tests/Modules/Gaia/GaiaModuleTest.php deleted file mode 100644 index 424746f7c..000000000 --- a/tests/Modules/Gaia/GaiaModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new GaiaModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Gaia', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Gaia/Handler/PlaceUpdateHandlerTest.php b/tests/Modules/Gaia/Handler/PlaceUpdateHandlerTest.php new file mode 100644 index 000000000..9f6841d17 --- /dev/null +++ b/tests/Modules/Gaia/Handler/PlaceUpdateHandlerTest.php @@ -0,0 +1,107 @@ + $placeData + */ + #[DataProvider('provideData')] + public function test(string $currentDate, string $timeMode, array $placeData, int $expectedResources, int $expectedDanger): void + { + $_ENV['SERVER_TIME_MODE'] = $timeMode; + Clock::set(new MockClock($currentDate)); + static::bootKernel(); + /** @var PlaceUpdateHandler $handler */ + $updatePlace = static::getContainer()->get(PlaceUpdateHandler::class); + + $sector = SectorFactory::createOne(); + $system = SystemFactory::createOne(['sector' => $sector->object()]); + $place = PlaceFactory::createOne([ + 'system' => $system->object(), + 'updatedAt' => new \DateTimeImmutable($placeData['updated_at']), + 'resources' => $placeData['resources'], + 'population' => $placeData['population'], + 'danger' => $placeData['danger'], + 'maxDanger' => $placeData['max_danger'], + 'coefResources' => $placeData['resources_coeff'], + ])->object(); + + $updatePlace(new PlaceUpdateMessage($place->id)); + + static::assertSame($expectedResources, $place->resources); + static::assertSame($expectedDanger, $place->danger); + } + + /** + * @return Generator, + * 3: int, + * 4: int + * }> + */ + public static function provideData(): Generator + { + yield 'Update once' => [ + '2024-05-01 10:10:00', + 'fast', + [ + 'resources' => 1890, + 'resources_coeff' => 29, + 'population' => 105.0, + 'danger' => 5, + 'max_danger' => 7, + 'updated_at' => '2024-05-01 10:00:00', + ], + 2100, + 7, + ]; + + yield 'Update once and reach place max resources' => [ + '2024-05-01 10:10:00', + 'fast', + [ + 'resources' => 14300, + 'resources_coeff' => 60, + 'population' => 105.0, + 'danger' => 4, + 'max_danger' => 7, + 'updated_at' => '2024-05-01 10:00:00', + ], + 14400, + 6, + ]; + + yield 'Multiple updates and reach max danger' => [ + '2024-05-01 10:32:00', + 'fast', + [ + 'resources' => 1890, + 'resources_coeff' => 29, + 'population' => 105.0, + 'danger' => 5, + 'max_danger' => 7, + 'updated_at' => '2024-05-01 10:00:00', + ], + 2520, + 7, + ]; + } +} diff --git a/tests/Modules/Hermes/HermesModuleTest.php b/tests/Modules/Hermes/HermesModuleTest.php deleted file mode 100644 index a68928ebd..000000000 --- a/tests/Modules/Hermes/HermesModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new HermesModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Hermes', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Promethee/Helper/ResearchHelperTest.php b/tests/Modules/Promethee/Helper/ResearchHelperTest.php new file mode 100644 index 000000000..418e0a9a6 --- /dev/null +++ b/tests/Modules/Promethee/Helper/ResearchHelperTest.php @@ -0,0 +1,39 @@ +getInfo($research, 'level', $level, 'price')); + } + + public static function provideData(): \Generator + { + yield [Research::MATH, 1, 1, 100]; + yield [Research::PHYS, 1, 1, 3000]; + yield [Research::PHYS, 1, 0.5, 1500]; + yield [Research::CHEM, 1, 1, 7000]; + yield [Research::LAW, 1, 1, 200]; + yield [Research::LAW, 1, 2, 400]; + yield [Research::COMM, 1, 1, 9000]; + yield [Research::ECONO, 1, 1, 200]; + yield [Research::PSYCHO, 1, 1, 9000]; + yield [Research::NETWORK, 1, 1, 200]; + yield [Research::ALGO, 1, 1, 4000]; + yield [Research::STAT, 1, 1, 6000]; + yield [Research::CHEM, 2, 1, 12582]; + yield [Research::STAT, 2, 1, 12582]; + yield [Research::ALGO, 10, 1, 142514]; + } +} diff --git a/tests/Modules/Promethee/PrometheeModuleTest.php b/tests/Modules/Promethee/PrometheeModuleTest.php deleted file mode 100644 index b171c5cc7..000000000 --- a/tests/Modules/Promethee/PrometheeModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new PrometheeModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Promethee', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Modules/Shared/Application/PercentageApplierTest.php b/tests/Modules/Shared/Application/PercentageApplierTest.php new file mode 100644 index 000000000..fd5b80d65 --- /dev/null +++ b/tests/Modules/Shared/Application/PercentageApplierTest.php @@ -0,0 +1,91 @@ +get(CountMissingSystemUpdates::class); + + FactionFactory::createOne(); + $player = PlayerFactory::createOne([ + 'uPlayer' => new \DateTimeImmutable($lastUpdatedAt), + ])->object(); + + static::assertSame($expectedMissingUpdatesCount, $countMissingSystemUpdates($player)); + } + + public static function provideData(): Generator + { + yield [ + '2024-05-01 10:00:00', + '2024-05-01 09:50:10', + 'fast', + 1, + ]; + + yield [ + '2024-05-01 09:53:00', + '2024-05-01 09:50:10', + 'fast', + 0, + ]; + + yield [ + '2024-05-01 10:00:00', + '2024-05-01 09:40:10', + 'fast', + 2, + ]; + + yield [ + '2024-05-01 10:01:00', + '2024-05-01 09:40:10', + 'fast', + 2, + ]; + } +} diff --git a/tests/Modules/Shared/Domain/Service/GameTimeConverterTest.php b/tests/Modules/Shared/Domain/Service/GameTimeConverterTest.php new file mode 100644 index 000000000..091cda5e0 --- /dev/null +++ b/tests/Modules/Shared/Domain/Service/GameTimeConverterTest.php @@ -0,0 +1,109 @@ +value; + static::bootKernel(); + /** @var GameTimeConverter $gameTimeConverter */ + $gameTimeConverter = static::getContainer()->get(GameTimeConverter::class); + + static::assertSame($gameCycles, $gameTimeConverter->convertSecondsToGameCycles($seconds)); + } + + #[DataProvider('provideGameCyclesConversionData')] + public function testConvertGameCyclesToSeconds(int $seconds, int $gameCycles, TimeMode $timeMode): void + { + $_ENV['SERVER_TIME_MODE'] = $timeMode->value; + static::bootKernel(); + /** @var GameTimeConverter $gameTimeConverter */ + $gameTimeConverter = static::getContainer()->get(GameTimeConverter::class); + + static::assertSame($seconds, $gameTimeConverter->convertGameCyclesToSeconds($gameCycles)); + } + + #[DataProvider('provideGameDateConversionData')] + public function testConvertDatetimeToGameDate(TimeMode $timeMode, string $serverStartDate, int $serverSegmentShift, string $currentDate, string $expectedGameDate): void + { + $_ENV['SERVER_TIME_MODE'] = $timeMode->value; + $_ENV['SERVER_START_TIME'] = (new \DateTimeImmutable($serverStartDate))->format('Y-m-d H:i:s'); + $_ENV['SERVER_SEGMENT_SHIFT'] = $serverSegmentShift; + static::bootKernel(); + /** @var GameTimeConverter $gameTimeConverter */ + $gameTimeConverter = static::getContainer()->get(GameTimeConverter::class); + + $gameDate = $gameTimeConverter->convertDatetimeToGameDate(new \DateTimeImmutable($currentDate), false); + + static::assertSame($expectedGameDate, $gameDate); + } + + /** + * @return \Generator + */ + public static function provideGameCyclesConversionData(): \Generator + { + yield [ + 3600, + 1, + TimeMode::Standard, + ]; + + yield [ + 600, + 1, + TimeMode::Fast, + ]; + + yield [ + 3600, + 6, + TimeMode::Fast, + ]; + + yield [ + 7200, + 2, + TimeMode::Standard, + ]; + } + + public static function provideGameDateConversionData(): \Generator + { + yield [ + TimeMode::Standard, + '-2 days', + 100, + '+4 hours', + 'SEG102 REL4', + ]; + + yield [ + TimeMode::Standard, + '-2 days', + 50, + '+36 hours', + 'SEG53 REL12', + ]; + + yield [ + TimeMode::Fast, + '-1 days', + 50, + '+1 hour', + 'SEG56 REL6', + ]; + } +} diff --git a/tests/Modules/Zeus/Application/Handler/CommanderWageHandlerTest.php b/tests/Modules/Zeus/Application/Handler/CommanderWageHandlerTest.php new file mode 100644 index 000000000..16881efa7 --- /dev/null +++ b/tests/Modules/Zeus/Application/Handler/CommanderWageHandlerTest.php @@ -0,0 +1,18 @@ +get(CommanderWageHandler::class); + + static::markTestIncomplete('Not implemented'); + } +} diff --git a/tests/Modules/Zeus/Application/Handler/ShipsWageHandlerTest.php b/tests/Modules/Zeus/Application/Handler/ShipsWageHandlerTest.php new file mode 100644 index 000000000..2ddae0d2f --- /dev/null +++ b/tests/Modules/Zeus/Application/Handler/ShipsWageHandlerTest.php @@ -0,0 +1,18 @@ +get(ShipsWageHandler::class); + + static::markTestIncomplete('Not implemented'); + } +} diff --git a/tests/Modules/Zeus/Application/Handler/UniversityInvestmentHandlerTest.php b/tests/Modules/Zeus/Application/Handler/UniversityInvestmentHandlerTest.php new file mode 100644 index 000000000..3b7fe9257 --- /dev/null +++ b/tests/Modules/Zeus/Application/Handler/UniversityInvestmentHandlerTest.php @@ -0,0 +1,18 @@ +get(UniversityInvestmentHandler::class); + + static::markTestIncomplete('Not implemented'); + } +} diff --git a/tests/Modules/Zeus/Infrastructure/GetAlivePlayersTest.php b/tests/Modules/Zeus/Infrastructure/GetAlivePlayersTest.php new file mode 100644 index 000000000..9dfdc4c9f --- /dev/null +++ b/tests/Modules/Zeus/Infrastructure/GetAlivePlayersTest.php @@ -0,0 +1,37 @@ +get(PlayerRepositoryInterface::class); + + PlayerFactory::createMany(5, ['statement' => Player::ACTIVE]); + PlayerFactory::createMany(3, ['statement' => Player::DEAD]); + + $alivePlayers = $playerRepository->getBySpecification(new IsPlayerAlive()); + + static::assertCount(5, $alivePlayers); + + foreach ($alivePlayers as $player) { + static::assertNotSame(Player::DEAD, $player->statement); + } + } +} diff --git a/tests/Modules/Zeus/ZeusModuleTest.php b/tests/Modules/Zeus/ZeusModuleTest.php deleted file mode 100644 index c79106c96..000000000 --- a/tests/Modules/Zeus/ZeusModuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ -module = new ZeusModule($this->getApplicationMock()); - } - - public function testGetName() - { - $this->assertEquals('Zeus', $this->module->getName()); - } - - public function getApplicationMock() - { - $applicationMock = $this - ->getMockBuilder(Application::class) - ->disableOriginalConstructor() - ->getMock() - ; - $applicationMock - ->expects($this->any()) - ->method('getContainer') - ->willReturnCallback([$this, 'getContainerMock']) - ; - return $applicationMock; - } - - public function getContainerMock() - { - $containerMock = $this - ->getMockBuilder(Container::class) - ->disableOriginalConstructor() - ->getMock() - ; - $containerMock - ->expects($this->any()) - ->method('getParameter') - ->willReturn(realpath('.')) - ; - return $containerMock; - } -} diff --git a/tests/Shared/Handler/DurationHandlerTest.php b/tests/Shared/Handler/DurationHandlerTest.php new file mode 100644 index 000000000..80a39ea58 --- /dev/null +++ b/tests/Shared/Handler/DurationHandlerTest.php @@ -0,0 +1,167 @@ +durationHandler = new DurationHandler(); + } + + /** + * @dataProvider provideGetHoursDiffData + */ + public function testGetHoursDiff(\DateTimeImmutable $from, \DateTimeImmutable $to, int $expectedHours): void + { + static::assertSame( + $expectedHours, + $this->durationHandler->getHoursDiff($from, $to), + ); + } + + /** + * @dataProvider provideGetRemainingTimeData + */ + public function testGetRemainingTime(DurationInterface $duration, int $expectedTime): void + { + static::assertSame( + round($expectedTime / 100), + round($this->durationHandler->getDurationRemainingTime($duration) / 100), + ); + } + + /** + * @dataProvider provideGetDurationEndData + */ + public function testGetDurationEnd(\DateTimeImmutable $startedAt, int $seconds, \DateTimeInterface $expected): void + { + static::assertSame( + $expected->getTimestamp(), + $this->durationHandler->getDurationEnd($startedAt, $seconds)->getTimestamp(), + ); + } + + /** + * @return Generator> + */ + public static function provideGetDurationEndData(): Generator + { + yield [ + new \DateTimeImmutable(), + 3600, + new \DateTimeImmutable('+3600 seconds'), + ]; + + yield [ + new \DateTimeImmutable(), + 10, + new \DateTimeImmutable('+10 seconds'), + ]; + + yield [ + new \DateTimeImmutable(), + 600, + new \DateTimeImmutable('+10 minutes'), + ]; + } + + /** + * @return Generator> + */ + public static function provideGetRemainingTimeData(): Generator + { + yield [ + static::generateBuildingQueue(new \DateTimeImmutable('+1 hour')), + 3600, + ]; + yield [ + static::generateBuildingQueue(new \DateTimeImmutable('+1 day')), + 3600 * 24, + ]; + yield [ + static::generateBuildingQueue(new \DateTimeImmutable('-1 hour')), + 0, + ]; + } + + /** + * @return Generator> + */ + public static function provideGetHoursDiffData(): Generator + { + yield [ + new \DateTimeImmutable('+2 hours'), + new \DateTimeImmutable('+4 hours'), + 2, + ]; + + yield [ + new \DateTimeImmutable('2022-01-05 10:00:00'), + new \DateTimeImmutable('2022-01-07 14:00:00'), + 52, + ]; + + yield [ + new \DateTimeImmutable('2022-01-07 14:00:00'), + new \DateTimeImmutable('2022-01-05 10:00:00'), + 52, + ]; + } + + private static function generateBuildingQueue(\DateTimeImmutable $endedAt): BuildingQueue + { + return new BuildingQueue( + id: Uuid::v4(), + base: new OrbitalBase( + id: Uuid::v4(), + place: new Place( + id: Uuid::v4(), + player: new Player(), + base: null, + system: new System( + id: Uuid::v4(), + sector: null, + faction: null, + xPosition: 10, + yPosition: 20, + typeOfSystem: 0, + ), + typeOfPlace: Place::TERRESTRIAL, + position: 1, + population: 100, + coefResources: 60, + coefHistory: 20, + resources: 20000, + danger: 40, + maxDanger: 60, + updatedAt: new \DateTimeImmutable(), + ), + player: new Player(), + name: 'My wonderful base', + levelGenerator: 3, + levelRefinery: 2, + levelCommercialPlateforme: 0, + levelStorage: 5, + ), + buildingNumber: OrbitalBaseResource::SPATIOPORT, + targetLevel: 10, + startedAt: new \DateTimeImmutable(), + endedAt: $endedAt, + ); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 000000000..725ac047c --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,15 @@ +bootEnv(dirname(__DIR__).'/.env'); +} + +if ($_SERVER['APP_DEBUG']) { + umask(0000); +} diff --git a/worker.php b/worker.php deleted file mode 100644 index a18150621..000000000 --- a/worker.php +++ /dev/null @@ -1,30 +0,0 @@ -usePutenv(false); -$dotenv->load($projectDir.'/.env'); - -$worker = new WorkerKernel($options['process'] ?? 'worker', $projectDir); -$worker->boot(); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..aec02b206 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,861 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.26.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@hotwired/stimulus-webpack-helpers@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz" + integrity sha512-wa/zupVG0eWxRYJjC1IiPBdt3Lruv0RqGN+/DTMmUWUyMAEB27KXmVY6a8YpUVTM7QwVuaLNGW4EqDgrS2upXQ== + +"@hotwired/stimulus@^3.0", "@hotwired/stimulus@^3.0.0", "@hotwired/stimulus@>= 3.0": + version "3.2.2" + resolved "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz" + integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== + +"@hotwired/turbo@^7.1.0 || ^8.0", "@hotwired/turbo@^8.0.13": + version "8.0.13" + resolved "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.13.tgz" + integrity sha512-M7qXUqcGab6G5PKOiwhgbByTtrPgKPFCTMNQ52QhzUEXEqmp0/ApEguUesh/FPiUjrmFec+3lq98KsWnYY2C7g== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@kurkle/color@^0.3.0": + version "0.3.4" + resolved "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz" + integrity sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w== + +"@symfony/stimulus-bridge@^3.2.0": + version "3.2.3" + resolved "https://registry.npmjs.org/@symfony/stimulus-bridge/-/stimulus-bridge-3.2.3.tgz" + integrity sha512-36rQTihQ2MGOn8EmdOYCr3DQfP3WS1CNcUUXKTPY5ghtFOeb7OVuhbc32AjRowE2/vaVDOUCPOTv3VLf5VtXBA== + dependencies: + "@hotwired/stimulus-webpack-helpers" "^1.0.1" + "@types/webpack-env" "^1.16.4" + acorn "^8.0.5" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +"@symfony/ux-turbo@file:vendor/symfony/ux-turbo/assets": + version "0.1.0" + resolved "file:vendor/symfony/ux-turbo/assets" + +"@tailwindcss/forms@^0.5": + version "0.5.1" + resolved "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.1.tgz" + integrity sha512-QSwsFORnC2BAP0lRzQkz1pw+EzIiiPdk4e27vGQjyXkwJPeC7iLIRVndJzf9CJVbcrrIcirb/TfxF3gRTyFEVA== + dependencies: + mini-svg-data-uri "^1.2.3" + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/node@*": + version "17.0.31" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== + +"@types/webpack-env@^1.16.4": + version "1.18.5" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz" + integrity sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA== + +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +acorn@^8.0.5, acorn@^8.14.0, acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0: + version "8.11.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.8.2, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +autoprefixer@^10.4: + version "10.4.7" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== + dependencies: + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +browserslist@^4.20.3, browserslist@^4.24.0, "browserslist@>= 4.21.0": + version "4.24.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001688: + version "1.0.30001695" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz" + integrity sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw== + +chart.js@^4.4.3: + version "4.4.7" + resolved "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz" + integrity sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw== + dependencies: + "@kurkle/color" "^0.3.0" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +core-js@^3.37: + version "3.40.0" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz" + integrity sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ== + +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + +electron-to-chromium@^1.5.73: + version "1.5.85" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.85.tgz" + integrity sha512-UgTI7ZHxtSjOUwV0vZLpqT604U1Z8L3bq8mAtAKtuRPlMZ/6dLFMYgYnLdXSi/urbVTP2ykDb9EDDUrdIzw4Qg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +enhanced-resolve@^5.17.1: + version "5.18.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz" + integrity sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-module-lexer@^1.2.1: + version "1.6.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^1.20.0: + version "1.21.7" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mini-svg-data-uri@^1.2.3: + version "1.4.4" + resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== + +nanoid@^3.3.8: + version "3.3.8" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +postcss-loader@^8.1: + version "8.1.1" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz" + integrity sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ== + dependencies: + cosmiconfig "^9.0.0" + jiti "^1.20.0" + semver "^7.5.4" + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +"postcss@^7.0.0 || ^8.0.1", postcss@^8.1.0, postcss@^8.4: + version "8.5.1" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz" + integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +raw-loader@^4.0: + version "4.0.2" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +regenerator-runtime@^0.14: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +safe-buffer@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +schema-utils@^3.0.0, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz" + integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +semver@^7.5.4: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +tailwindcss@^4.0.0, "tailwindcss@>=3.0.0 || >= 3.0.0-alpha.1": + version "4.0.0" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.0.tgz" + integrity sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.10: + version "5.3.11" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz" + integrity sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.37.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz" + integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +update-browserslist-db@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz" + integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +"webpack@^4.0.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0: + version "5.97.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3"